From 2b865ad20ce0616b79a453d1571976bb2303050c Mon Sep 17 00:00:00 2001 From: Krzysztof Grobelny Date: Wed, 14 Jul 2021 13:55:27 +0000 Subject: [PATCH] Add generic message - PropertySizeExceeded Adding a generic error message "PropertySizeExceeded" to address properties which exceed there defined size limit. Tested: No functional change. Build passed. Verified by explicitly sending this message as a response. Change-Id: I0e9f85f82a69c598e169fc8e9a68c3f66c0084d8 Signed-off-by: Nitin Wankhade --- redfish-core/include/error_messages.hpp | 12 +++++++++ .../registries/base_message_registry.hpp | 17 +++++++++++- redfish-core/src/error_messages.cpp | 27 +++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/redfish-core/include/error_messages.hpp b/redfish-core/include/error_messages.hpp index 922dae9..f29e326 100644 --- a/redfish-core/include/error_messages.hpp +++ b/redfish-core/include/error_messages.hpp @@ -222,6 +222,18 @@ nlohmann::json propertyValueFormatError(const std::string& arg1, void propertyValueFormatError(crow::Response& res, const std::string& arg1, const std::string& arg2); +/** + * @brief Formats PropertySizeExceeded message into JSON + * Message body: "The property is too long. The value exceeds its size + * limit." + * + * @param[in] arg1 Parameter of message that will replace %1 in its body. + * + * @returns Message PropertySizeExceeded formatted to JSON */ +nlohmann::json propertySizeExceeded(const std::string& arg1); + +void propertySizeExceeded(crow::Response& res, const std::string& arg1); + /** * @brief Formats PropertyValueNotInList message into JSON * Message body: "The value for the property is not in the list of diff --git a/redfish-core/include/registries/base_message_registry.hpp b/redfish-core/include/registries/base_message_registry.hpp index 58156c8..ab9b046 100644 --- a/redfish-core/include/registries/base_message_registry.hpp +++ b/redfish-core/include/registries/base_message_registry.hpp @@ -36,7 +36,7 @@ const Header header = { constexpr const char* url = "https://redfish.dmtf.org/registries/Base.1.10.0.json"; -constexpr std::array registry = { +constexpr std::array registry = { MessageEntry{ "AccessDenied", { @@ -664,6 +664,21 @@ constexpr std::array registry = { "Remove the property from the request body and resubmit " "the request if the operation failed.", }}, + MessageEntry{"PropertySizeExceeded", + { + "Indicates that a given property exceeds the size " + "limit imposed.", + "The property %1 is too long. The value exceeds " + "its size limit.", + "Warning", + "Warning", + 1, + { + "string", + }, + "Correct the value for the property in the request body " + "and resubmit the request if the operation failed.", + }}, MessageEntry{"PropertyUnknown", { "Indicates that an unknown property was included in the " diff --git a/redfish-core/src/error_messages.cpp b/redfish-core/src/error_messages.cpp index 409adb1..bebb6d8 100644 --- a/redfish-core/src/error_messages.cpp +++ b/redfish-core/src/error_messages.cpp @@ -514,6 +514,33 @@ void propertyValueFormatError(crow::Response& res, const std::string& arg1, addMessageToJson(res.jsonValue, propertyValueFormatError(arg1, arg2), arg2); } +/** + * @internal + * @brief Formats PropertySizeExceeded message into JSON for the specified + * property + * + * See header file for more information + * @endinternal + */ +nlohmann::json propertySizeExceeded(const std::string& arg1) +{ + return nlohmann::json{ + {"@odata.type", "#Message.v1_1_1.Message"}, + {"MessageId", "Base.1.8.1.PropertySizeExceeded"}, + {"Message", "The property " + arg1 + + " is too long. The value exceeds its size limit."}, + {"MessageArgs", {arg1}}, + {"MessageSeverity", "Warning"}, + {"Resolution", "Correct the value for the property in the request body " + "and resubmit the request if the operation failed."}}; +} + +void propertySizeExceeded(crow::Response& res, const std::string& arg1) +{ + res.result(boost::beast::http::status::bad_request); + addMessageToJson(res.jsonValue, propertySizeExceeded(arg1), arg1); +} + /** * @internal * @brief Formats PropertyValueNotInList message into JSON for the specified -- 2.25.1