1f4c4dcf4SKowalski, Kamil /* 2f4c4dcf4SKowalski, Kamil // Copyright (c) 2018 Intel Corporation 3f4c4dcf4SKowalski, Kamil // 4f4c4dcf4SKowalski, Kamil // Licensed under the Apache License, Version 2.0 (the "License"); 5f4c4dcf4SKowalski, Kamil // you may not use this file except in compliance with the License. 6f4c4dcf4SKowalski, Kamil // You may obtain a copy of the License at 7f4c4dcf4SKowalski, Kamil // 8f4c4dcf4SKowalski, Kamil // http://www.apache.org/licenses/LICENSE-2.0 9f4c4dcf4SKowalski, Kamil // 10f4c4dcf4SKowalski, Kamil // Unless required by applicable law or agreed to in writing, software 11f4c4dcf4SKowalski, Kamil // distributed under the License is distributed on an "AS IS" BASIS, 12f4c4dcf4SKowalski, Kamil // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f4c4dcf4SKowalski, Kamil // See the License for the specific language governing permissions and 14f4c4dcf4SKowalski, Kamil // limitations under the License. 15f4c4dcf4SKowalski, Kamil */ 16f4c4dcf4SKowalski, Kamil #include <crow/logging.h> 17f4c4dcf4SKowalski, Kamil 181abe55efSEd Tanous #include <error_messages.hpp> 19f4c4dcf4SKowalski, Kamil 201abe55efSEd Tanous namespace redfish 211abe55efSEd Tanous { 221abe55efSEd Tanous 231abe55efSEd Tanous namespace messages 241abe55efSEd Tanous { 25f4c4dcf4SKowalski, Kamil 26f12894f8SJason M. Bills static void addMessageToErrorJson(nlohmann::json& target, 271abe55efSEd Tanous const nlohmann::json& message) 281abe55efSEd Tanous { 29f4c4dcf4SKowalski, Kamil auto& error = target["error"]; 30f4c4dcf4SKowalski, Kamil 311abe55efSEd Tanous // If this is the first error message, fill in the information from the 321abe55efSEd Tanous // first error message to the top level struct 331abe55efSEd Tanous if (!error.is_object()) 341abe55efSEd Tanous { 35f4c4dcf4SKowalski, Kamil auto message_id_iterator = message.find("MessageId"); 361abe55efSEd Tanous if (message_id_iterator == message.end()) 371abe55efSEd Tanous { 381abe55efSEd Tanous BMCWEB_LOG_CRITICAL 391abe55efSEd Tanous << "Attempt to add error message without MessageId"; 40f4c4dcf4SKowalski, Kamil return; 41f4c4dcf4SKowalski, Kamil } 42f4c4dcf4SKowalski, Kamil 43f4c4dcf4SKowalski, Kamil auto message_field_iterator = message.find("Message"); 441abe55efSEd Tanous if (message_field_iterator == message.end()) 451abe55efSEd Tanous { 461abe55efSEd Tanous BMCWEB_LOG_CRITICAL 471abe55efSEd Tanous << "Attempt to add error message without Message"; 48f4c4dcf4SKowalski, Kamil return; 49f4c4dcf4SKowalski, Kamil } 50f4c4dcf4SKowalski, Kamil // clang-format off 51f4c4dcf4SKowalski, Kamil error = { 52f4c4dcf4SKowalski, Kamil {"code", *message_id_iterator}, 53f4c4dcf4SKowalski, Kamil {"message", *message_field_iterator} 54f4c4dcf4SKowalski, Kamil }; 55f4c4dcf4SKowalski, Kamil // clang-format on 561abe55efSEd Tanous } 571abe55efSEd Tanous else 581abe55efSEd Tanous { 59f4c4dcf4SKowalski, Kamil // More than 1 error occurred, so the message has to be generic 6055c7b7a2SEd Tanous error["code"] = std::string(messageVersionPrefix) + "GeneralError"; 61cc9139ecSJason M. Bills error["message"] = "A general error has occurred. See Resolution for " 62cc9139ecSJason M. Bills "information on how to resolve the error."; 63f4c4dcf4SKowalski, Kamil } 64f4c4dcf4SKowalski, Kamil 65f4c4dcf4SKowalski, Kamil // This check could technically be done in in the default construction 66f4c4dcf4SKowalski, Kamil // branch above, but because we need the pointer to the extended info field 67f4c4dcf4SKowalski, Kamil // anyway, it's more efficient to do it here. 6855c7b7a2SEd Tanous auto& extended_info = error[messages::messageAnnotation]; 691abe55efSEd Tanous if (!extended_info.is_array()) 701abe55efSEd Tanous { 71f4c4dcf4SKowalski, Kamil extended_info = nlohmann::json::array(); 72f4c4dcf4SKowalski, Kamil } 73f4c4dcf4SKowalski, Kamil 74f4c4dcf4SKowalski, Kamil extended_info.push_back(message); 75f4c4dcf4SKowalski, Kamil } 76f4c4dcf4SKowalski, Kamil 77f12894f8SJason M. Bills static void addMessageToJsonRoot(nlohmann::json& target, 78f12894f8SJason M. Bills const nlohmann::json& message) 791abe55efSEd Tanous { 801abe55efSEd Tanous if (!target[messages::messageAnnotation].is_array()) 811abe55efSEd Tanous { 82f4c4dcf4SKowalski, Kamil // Force object to be an array 8355c7b7a2SEd Tanous target[messages::messageAnnotation] = nlohmann::json::array(); 84f4c4dcf4SKowalski, Kamil } 85f4c4dcf4SKowalski, Kamil 8655c7b7a2SEd Tanous target[messages::messageAnnotation].push_back(message); 87f4c4dcf4SKowalski, Kamil } 88f4c4dcf4SKowalski, Kamil 89f12894f8SJason M. Bills static void addMessageToJson(nlohmann::json& target, 90f12894f8SJason M. Bills const nlohmann::json& message, 911abe55efSEd Tanous const std::string& fieldPath) 921abe55efSEd Tanous { 93a08b46ccSJason M. Bills std::string extendedInfo(fieldPath + messages::messageAnnotation); 94f4c4dcf4SKowalski, Kamil 951abe55efSEd Tanous if (!target[extendedInfo].is_array()) 961abe55efSEd Tanous { 97f4c4dcf4SKowalski, Kamil // Force object to be an array 98f4c4dcf4SKowalski, Kamil target[extendedInfo] = nlohmann::json::array(); 99f4c4dcf4SKowalski, Kamil } 100f4c4dcf4SKowalski, Kamil 101f4c4dcf4SKowalski, Kamil // Object exists and it is an array so we can just push in the message 102f4c4dcf4SKowalski, Kamil target[extendedInfo].push_back(message); 103f4c4dcf4SKowalski, Kamil } 104f4c4dcf4SKowalski, Kamil 105f4c4dcf4SKowalski, Kamil /** 106f4c4dcf4SKowalski, Kamil * @internal 107f4c4dcf4SKowalski, Kamil * @brief Formats ResourceInUse message into JSON 108f4c4dcf4SKowalski, Kamil * 109f4c4dcf4SKowalski, Kamil * See header file for more information 110f4c4dcf4SKowalski, Kamil * @endinternal 111f4c4dcf4SKowalski, Kamil */ 112f12894f8SJason M. Bills void resourceInUse(crow::Response& res) 1131abe55efSEd Tanous { 114f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 115f12894f8SJason M. Bills addMessageToErrorJson( 116f12894f8SJason M. Bills res.jsonValue, 117f12894f8SJason M. Bills nlohmann::json{ 118f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 119cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceInUse"}, 12066ac2b8cSJason M. Bills {"Message", "The change to the requested resource failed because " 12166ac2b8cSJason M. Bills "the resource is in use or in transition."}, 122*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 123f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 12466ac2b8cSJason M. Bills {"Resolution", "Remove the condition and resubmit the request if " 12566ac2b8cSJason M. Bills "the operation failed."}}); 126f4c4dcf4SKowalski, Kamil } 127f4c4dcf4SKowalski, Kamil 128f4c4dcf4SKowalski, Kamil /** 129f4c4dcf4SKowalski, Kamil * @internal 130f4c4dcf4SKowalski, Kamil * @brief Formats MalformedJSON message into JSON 131f4c4dcf4SKowalski, Kamil * 132f4c4dcf4SKowalski, Kamil * See header file for more information 133f4c4dcf4SKowalski, Kamil * @endinternal 134f4c4dcf4SKowalski, Kamil */ 135f12894f8SJason M. Bills void malformedJSON(crow::Response& res) 1361abe55efSEd Tanous { 137f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 138f12894f8SJason M. Bills addMessageToErrorJson( 139f12894f8SJason M. Bills res.jsonValue, 140f12894f8SJason M. Bills nlohmann::json{ 141f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 142cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.MalformedJSON"}, 14366ac2b8cSJason M. Bills {"Message", "The request body submitted was malformed JSON and " 14466ac2b8cSJason M. Bills "could not be parsed by the receiving service."}, 145*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 146f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1471abe55efSEd Tanous {"Resolution", "Ensure that the request body is valid JSON and " 148f12894f8SJason M. Bills "resubmit the request."}}); 149f4c4dcf4SKowalski, Kamil } 150f4c4dcf4SKowalski, Kamil 151f4c4dcf4SKowalski, Kamil /** 152f4c4dcf4SKowalski, Kamil * @internal 153f4c4dcf4SKowalski, Kamil * @brief Formats ResourceMissingAtURI message into JSON 154f4c4dcf4SKowalski, Kamil * 155f4c4dcf4SKowalski, Kamil * See header file for more information 156f4c4dcf4SKowalski, Kamil * @endinternal 157f4c4dcf4SKowalski, Kamil */ 158f12894f8SJason M. Bills void resourceMissingAtURI(crow::Response& res, const std::string& arg1) 1591abe55efSEd Tanous { 160f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 161f12894f8SJason M. Bills addMessageToErrorJson( 162f12894f8SJason M. Bills res.jsonValue, 163f12894f8SJason M. Bills nlohmann::json{ 164f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 165cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceMissingAtURI"}, 166f4c4dcf4SKowalski, Kamil {"Message", "The resource at the URI " + arg1 + " was not found."}, 167*85659adfSJason M. Bills {"MessageArgs", {arg1}}, 168f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 16966ac2b8cSJason M. Bills {"Resolution", "Place a valid resource at the URI or correct the " 17066ac2b8cSJason M. Bills "URI and resubmit the request."}}); 171f4c4dcf4SKowalski, Kamil } 172f4c4dcf4SKowalski, Kamil 173f4c4dcf4SKowalski, Kamil /** 174f4c4dcf4SKowalski, Kamil * @internal 175f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterValueFormatError message into JSON 176f4c4dcf4SKowalski, Kamil * 177f4c4dcf4SKowalski, Kamil * See header file for more information 178f4c4dcf4SKowalski, Kamil * @endinternal 179f4c4dcf4SKowalski, Kamil */ 180f12894f8SJason M. Bills void actionParameterValueFormatError(crow::Response& res, 181f12894f8SJason M. Bills const std::string& arg1, 182f4c4dcf4SKowalski, Kamil const std::string& arg2, 1831abe55efSEd Tanous const std::string& arg3) 1841abe55efSEd Tanous { 185f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 186f12894f8SJason M. Bills addMessageToErrorJson( 187f12894f8SJason M. Bills res.jsonValue, 188f12894f8SJason M. Bills nlohmann::json{ 189f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 190cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterValueFormatError"}, 191f4c4dcf4SKowalski, Kamil {"Message", 1921abe55efSEd Tanous "The value " + arg1 + " for the parameter " + arg2 + 1931abe55efSEd Tanous " in the action " + arg3 + 1941abe55efSEd Tanous " is of a different format than the parameter can accept."}, 195*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2, arg3}}, 196f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 19766ac2b8cSJason M. Bills {"Resolution", 19866ac2b8cSJason M. Bills "Correct the value for the parameter in the request body and " 19966ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}); 200f4c4dcf4SKowalski, Kamil } 201f4c4dcf4SKowalski, Kamil 202f4c4dcf4SKowalski, Kamil /** 203f4c4dcf4SKowalski, Kamil * @internal 204f4c4dcf4SKowalski, Kamil * @brief Formats InternalError message into JSON 205f4c4dcf4SKowalski, Kamil * 206f4c4dcf4SKowalski, Kamil * See header file for more information 207f4c4dcf4SKowalski, Kamil * @endinternal 208f4c4dcf4SKowalski, Kamil */ 209f12894f8SJason M. Bills void internalError(crow::Response& res) 2101abe55efSEd Tanous { 211f12894f8SJason M. Bills res.result(boost::beast::http::status::internal_server_error); 212f12894f8SJason M. Bills addMessageToErrorJson( 213f12894f8SJason M. Bills res.jsonValue, 214f12894f8SJason M. Bills nlohmann::json{ 215f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 216cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.InternalError"}, 217f12894f8SJason M. Bills {"Message", "The request failed due to an internal service error. " 21866ac2b8cSJason M. Bills "The service is still operational."}, 219*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 220f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 2211abe55efSEd Tanous {"Resolution", "Resubmit the request. If the problem persists, " 22266ac2b8cSJason M. Bills "consider resetting the service."}}); 223f12894f8SJason M. Bills } 224f12894f8SJason M. Bills 225f12894f8SJason M. Bills /** 226f12894f8SJason M. Bills * @internal 227f4c4dcf4SKowalski, Kamil * @brief Formats UnrecognizedRequestBody message into JSON 228f4c4dcf4SKowalski, Kamil * 229f4c4dcf4SKowalski, Kamil * See header file for more information 230f4c4dcf4SKowalski, Kamil * @endinternal 231f4c4dcf4SKowalski, Kamil */ 232f12894f8SJason M. Bills void unrecognizedRequestBody(crow::Response& res) 2331abe55efSEd Tanous { 234f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 235f12894f8SJason M. Bills addMessageToErrorJson( 236f12894f8SJason M. Bills res.jsonValue, 237f12894f8SJason M. Bills nlohmann::json{ 238f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 239cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.UnrecognizedRequestBody"}, 240f12894f8SJason M. Bills {"Message", "The service detected a malformed request body that it " 24166ac2b8cSJason M. Bills "was unable to interpret."}, 242*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 243f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 244f12894f8SJason M. Bills {"Resolution", "Correct the request body and resubmit the request " 245f12894f8SJason M. Bills "if it failed."}}); 246f4c4dcf4SKowalski, Kamil } 247f4c4dcf4SKowalski, Kamil 248f4c4dcf4SKowalski, Kamil /** 249f4c4dcf4SKowalski, Kamil * @internal 250f4c4dcf4SKowalski, Kamil * @brief Formats ResourceAtUriUnauthorized message into JSON 251f4c4dcf4SKowalski, Kamil * 252f4c4dcf4SKowalski, Kamil * See header file for more information 253f4c4dcf4SKowalski, Kamil * @endinternal 254f4c4dcf4SKowalski, Kamil */ 255f12894f8SJason M. Bills void resourceAtUriUnauthorized(crow::Response& res, const std::string& arg1, 2561abe55efSEd Tanous const std::string& arg2) 2571abe55efSEd Tanous { 258f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 259f12894f8SJason M. Bills addMessageToErrorJson( 260f12894f8SJason M. Bills res.jsonValue, 261f12894f8SJason M. Bills nlohmann::json{ 262f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 263cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceAtUriUnauthorized"}, 264f4c4dcf4SKowalski, Kamil {"Message", "While accessing the resource at " + arg1 + 2651abe55efSEd Tanous ", the service received an authorization error " + 2661abe55efSEd Tanous arg2 + "."}, 267*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 268f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 269f12894f8SJason M. Bills {"Resolution", "Ensure that the appropriate access is provided for " 27066ac2b8cSJason M. Bills "the service in order for it to access the URI."}}); 271f4c4dcf4SKowalski, Kamil } 272f4c4dcf4SKowalski, Kamil 273f4c4dcf4SKowalski, Kamil /** 274f4c4dcf4SKowalski, Kamil * @internal 275f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterUnknown message into JSON 276f4c4dcf4SKowalski, Kamil * 277f4c4dcf4SKowalski, Kamil * See header file for more information 278f4c4dcf4SKowalski, Kamil * @endinternal 279f4c4dcf4SKowalski, Kamil */ 280f12894f8SJason M. Bills void actionParameterUnknown(crow::Response& res, const std::string& arg1, 2811abe55efSEd Tanous const std::string& arg2) 2821abe55efSEd Tanous { 283f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 284f12894f8SJason M. Bills addMessageToErrorJson( 285f12894f8SJason M. Bills res.jsonValue, 286f12894f8SJason M. Bills nlohmann::json{ 287f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 288cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterUnknown"}, 289f4c4dcf4SKowalski, Kamil {"Message", "The action " + arg1 + 290f12894f8SJason M. Bills " was submitted with the invalid parameter " + 291f12894f8SJason M. Bills arg2 + "."}, 292*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 293f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 29466ac2b8cSJason M. Bills {"Resolution", "Correct the invalid parameter and resubmit the " 29566ac2b8cSJason M. Bills "request if the operation failed."}}); 296f4c4dcf4SKowalski, Kamil } 297f4c4dcf4SKowalski, Kamil 298f4c4dcf4SKowalski, Kamil /** 299f4c4dcf4SKowalski, Kamil * @internal 300f4c4dcf4SKowalski, Kamil * @brief Formats ResourceCannotBeDeleted message into JSON 301f4c4dcf4SKowalski, Kamil * 302f4c4dcf4SKowalski, Kamil * See header file for more information 303f4c4dcf4SKowalski, Kamil * @endinternal 304f4c4dcf4SKowalski, Kamil */ 305f12894f8SJason M. Bills void resourceCannotBeDeleted(crow::Response& res) 3061abe55efSEd Tanous { 307f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 308f12894f8SJason M. Bills addMessageToErrorJson( 309f12894f8SJason M. Bills res.jsonValue, 310f12894f8SJason M. Bills nlohmann::json{ 311f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 312cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceCannotBeDeleted"}, 313f12894f8SJason M. Bills {"Message", "The delete request failed because the resource " 31466ac2b8cSJason M. Bills "requested cannot be deleted."}, 315*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 316f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 317f12894f8SJason M. Bills {"Resolution", 318f12894f8SJason M. Bills "Do not attempt to delete a non-deletable resource."}}); 319f4c4dcf4SKowalski, Kamil } 320f4c4dcf4SKowalski, Kamil 321f4c4dcf4SKowalski, Kamil /** 322f4c4dcf4SKowalski, Kamil * @internal 323f4c4dcf4SKowalski, Kamil * @brief Formats PropertyDuplicate message into JSON 324f4c4dcf4SKowalski, Kamil * 325f4c4dcf4SKowalski, Kamil * See header file for more information 326f4c4dcf4SKowalski, Kamil * @endinternal 327f4c4dcf4SKowalski, Kamil */ 328f12894f8SJason M. Bills void propertyDuplicate(crow::Response& res, const std::string& arg1) 3291abe55efSEd Tanous { 330f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 331a08b46ccSJason M. Bills addMessageToJson( 332f12894f8SJason M. Bills res.jsonValue, 333f12894f8SJason M. Bills nlohmann::json{ 334f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 335cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyDuplicate"}, 336f12894f8SJason M. Bills {"Message", 337f12894f8SJason M. Bills "The property " + arg1 + " was duplicated in the request."}, 338*85659adfSJason M. Bills {"MessageArgs", {arg1}}, 339f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 34066ac2b8cSJason M. Bills {"Resolution", 34166ac2b8cSJason M. Bills "Remove the duplicate property from the request body and resubmit " 342a08b46ccSJason M. Bills "the request if the operation failed."}}, 343a08b46ccSJason M. Bills arg1); 344f4c4dcf4SKowalski, Kamil } 345f4c4dcf4SKowalski, Kamil 346f4c4dcf4SKowalski, Kamil /** 347f4c4dcf4SKowalski, Kamil * @internal 348f4c4dcf4SKowalski, Kamil * @brief Formats ServiceTemporarilyUnavailable message into JSON 349f4c4dcf4SKowalski, Kamil * 350f4c4dcf4SKowalski, Kamil * See header file for more information 351f4c4dcf4SKowalski, Kamil * @endinternal 352f4c4dcf4SKowalski, Kamil */ 353f12894f8SJason M. Bills void serviceTemporarilyUnavailable(crow::Response& res, const std::string& arg1) 3541abe55efSEd Tanous { 355f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 356f12894f8SJason M. Bills addMessageToErrorJson( 357f12894f8SJason M. Bills res.jsonValue, 358f12894f8SJason M. Bills nlohmann::json{ 359f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 360cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ServiceTemporarilyUnavailable"}, 3611abe55efSEd Tanous {"Message", "The service is temporarily unavailable. Retry in " + 3621abe55efSEd Tanous arg1 + " seconds."}, 363*85659adfSJason M. Bills {"MessageArgs", {arg1}}, 364f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 365f12894f8SJason M. Bills {"Resolution", "Wait for the indicated retry duration and retry " 366f12894f8SJason M. Bills "the operation."}}); 367f4c4dcf4SKowalski, Kamil } 368f4c4dcf4SKowalski, Kamil 369f4c4dcf4SKowalski, Kamil /** 370f4c4dcf4SKowalski, Kamil * @internal 371f4c4dcf4SKowalski, Kamil * @brief Formats ResourceAlreadyExists message into JSON 372f4c4dcf4SKowalski, Kamil * 373f4c4dcf4SKowalski, Kamil * See header file for more information 374f4c4dcf4SKowalski, Kamil * @endinternal 375f4c4dcf4SKowalski, Kamil */ 376f12894f8SJason M. Bills void resourceAlreadyExists(crow::Response& res, const std::string& arg1, 377f12894f8SJason M. Bills const std::string& arg2, const std::string& arg3) 3781abe55efSEd Tanous { 379f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 380a08b46ccSJason M. Bills addMessageToJson( 381f12894f8SJason M. Bills res.jsonValue, 382f12894f8SJason M. Bills nlohmann::json{ 383f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 384cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceAlreadyExists"}, 385f4c4dcf4SKowalski, Kamil {"Message", "The requested resource of type " + arg1 + 3861abe55efSEd Tanous " with the property " + arg2 + " with the value " + 3871abe55efSEd Tanous arg3 + " already exists."}, 388*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2, arg3}}, 389f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 390f12894f8SJason M. Bills {"Resolution", "Do not repeat the create operation as the resource " 391a08b46ccSJason M. Bills "has already been created."}}, 392a08b46ccSJason M. Bills arg2); 393f4c4dcf4SKowalski, Kamil } 394f4c4dcf4SKowalski, Kamil 395f4c4dcf4SKowalski, Kamil /** 396f4c4dcf4SKowalski, Kamil * @internal 397f4c4dcf4SKowalski, Kamil * @brief Formats AccountForSessionNoLongerExists message into JSON 398f4c4dcf4SKowalski, Kamil * 399f4c4dcf4SKowalski, Kamil * See header file for more information 400f4c4dcf4SKowalski, Kamil * @endinternal 401f4c4dcf4SKowalski, Kamil */ 402a08b46ccSJason M. Bills void accountForSessionNoLongerExists(crow::Response& res) 4031abe55efSEd Tanous { 404f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 405a08b46ccSJason M. Bills addMessageToErrorJson( 406f12894f8SJason M. Bills res.jsonValue, 407f12894f8SJason M. Bills nlohmann::json{ 408f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 409cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccountForSessionNoLongerExists"}, 4101abe55efSEd Tanous {"Message", "The account for the current session has been removed, " 41166ac2b8cSJason M. Bills "thus the current session has been removed as well."}, 412*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 413f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 414a08b46ccSJason M. Bills {"Resolution", "Attempt to connect with a valid account."}}); 415f4c4dcf4SKowalski, Kamil } 416f4c4dcf4SKowalski, Kamil 417f4c4dcf4SKowalski, Kamil /** 418f4c4dcf4SKowalski, Kamil * @internal 419f4c4dcf4SKowalski, Kamil * @brief Formats CreateFailedMissingReqProperties message into JSON 420f4c4dcf4SKowalski, Kamil * 421f4c4dcf4SKowalski, Kamil * See header file for more information 422f4c4dcf4SKowalski, Kamil * @endinternal 423f4c4dcf4SKowalski, Kamil */ 424f12894f8SJason M. Bills void createFailedMissingReqProperties(crow::Response& res, 425f12894f8SJason M. Bills const std::string& arg1) 4261abe55efSEd Tanous { 427f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 428a08b46ccSJason M. Bills addMessageToJson( 429f12894f8SJason M. Bills res.jsonValue, 430f12894f8SJason M. Bills nlohmann::json{ 431f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 432cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.CreateFailedMissingReqProperties"}, 4331abe55efSEd Tanous {"Message", 434f12894f8SJason M. Bills "The create operation failed because the required property " + 435f12894f8SJason M. Bills arg1 + " was missing from the request."}, 436*85659adfSJason M. Bills {"MessageArgs", {arg1}}, 437f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 438f4c4dcf4SKowalski, Kamil {"Resolution", 439f12894f8SJason M. Bills "Correct the body to include the required property with a valid " 440a08b46ccSJason M. Bills "value and resubmit the request if the operation failed."}}, 441a08b46ccSJason M. Bills arg1); 442f12894f8SJason M. Bills } 443f12894f8SJason M. Bills 444f12894f8SJason M. Bills /** 445f12894f8SJason M. Bills * @internal 446f12894f8SJason M. Bills * @brief Formats PropertyValueFormatError message into JSON for the specified 447f12894f8SJason M. Bills * property 448f12894f8SJason M. Bills * 449f12894f8SJason M. Bills * See header file for more information 450f12894f8SJason M. Bills * @endinternal 451f12894f8SJason M. Bills */ 452f12894f8SJason M. Bills void propertyValueFormatError(crow::Response& res, const std::string& arg1, 453a08b46ccSJason M. Bills const std::string& arg2) 454f12894f8SJason M. Bills { 455f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 456f12894f8SJason M. Bills addMessageToJson( 457f12894f8SJason M. Bills res.jsonValue, 458f12894f8SJason M. Bills nlohmann::json{ 459f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 460cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyValueFormatError"}, 461f12894f8SJason M. Bills {"Message", 462f12894f8SJason M. Bills "The value " + arg1 + " for the property " + arg2 + 463f12894f8SJason M. Bills " is of a different format than the property can accept."}, 464*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 465f12894f8SJason M. Bills {"Severity", "Warning"}, 46666ac2b8cSJason M. Bills {"Resolution", 46766ac2b8cSJason M. Bills "Correct the value for the property in the request body and " 46866ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}, 469a08b46ccSJason M. Bills arg2); 470f12894f8SJason M. Bills } 471f12894f8SJason M. Bills 472f12894f8SJason M. Bills /** 473f12894f8SJason M. Bills * @internal 474f12894f8SJason M. Bills * @brief Formats PropertyValueNotInList message into JSON for the specified 475f12894f8SJason M. Bills * property 476f12894f8SJason M. Bills * 477f12894f8SJason M. Bills * See header file for more information 478f12894f8SJason M. Bills * @endinternal 479f12894f8SJason M. Bills */ 480f12894f8SJason M. Bills void propertyValueNotInList(crow::Response& res, const std::string& arg1, 481a08b46ccSJason M. Bills const std::string& arg2) 482f12894f8SJason M. Bills { 483f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 484f12894f8SJason M. Bills addMessageToJson( 485f12894f8SJason M. Bills res.jsonValue, 486f12894f8SJason M. Bills nlohmann::json{ 487f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 488cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyValueNotInList"}, 489f12894f8SJason M. Bills {"Message", "The value " + arg1 + " for the property " + arg2 + 490f12894f8SJason M. Bills " is not in the list of acceptable values."}, 491*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 492f12894f8SJason M. Bills {"Severity", "Warning"}, 493f12894f8SJason M. Bills {"Resolution", 494f12894f8SJason M. Bills "Choose a value from the enumeration list that the implementation " 49566ac2b8cSJason M. Bills "can support and resubmit the request if the operation failed."}}, 496a08b46ccSJason M. Bills arg2); 497f4c4dcf4SKowalski, Kamil } 498f4c4dcf4SKowalski, Kamil 499f4c4dcf4SKowalski, Kamil /** 500f4c4dcf4SKowalski, Kamil * @internal 501f4c4dcf4SKowalski, Kamil * @brief Formats ResourceAtUriInUnknownFormat message into JSON 502f4c4dcf4SKowalski, Kamil * 503f4c4dcf4SKowalski, Kamil * See header file for more information 504f4c4dcf4SKowalski, Kamil * @endinternal 505f4c4dcf4SKowalski, Kamil */ 506f12894f8SJason M. Bills void resourceAtUriInUnknownFormat(crow::Response& res, const std::string& arg1) 5071abe55efSEd Tanous { 508f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 509f12894f8SJason M. Bills addMessageToErrorJson( 510f12894f8SJason M. Bills res.jsonValue, 511f12894f8SJason M. Bills nlohmann::json{ 512f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 513cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceAtUriInUnknownFormat"}, 514f4c4dcf4SKowalski, Kamil {"Message", "The resource at " + arg1 + 515f4c4dcf4SKowalski, Kamil " is in a format not recognized by the service."}, 516*85659adfSJason M. Bills {"MessageArgs", {arg1}}, 517f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 518f12894f8SJason M. Bills {"Resolution", "Place an image or resource or file that is " 51966ac2b8cSJason M. Bills "recognized by the service at the URI."}}); 520f4c4dcf4SKowalski, Kamil } 521f4c4dcf4SKowalski, Kamil 522f4c4dcf4SKowalski, Kamil /** 523f4c4dcf4SKowalski, Kamil * @internal 524f4c4dcf4SKowalski, Kamil * @brief Formats ServiceInUnknownState message into JSON 525f4c4dcf4SKowalski, Kamil * 526f4c4dcf4SKowalski, Kamil * See header file for more information 527f4c4dcf4SKowalski, Kamil * @endinternal 528f4c4dcf4SKowalski, Kamil */ 529f12894f8SJason M. Bills void serviceInUnknownState(crow::Response& res) 5301abe55efSEd Tanous { 531f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 532f12894f8SJason M. Bills addMessageToErrorJson( 533f12894f8SJason M. Bills res.jsonValue, 534f12894f8SJason M. Bills nlohmann::json{ 535f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 536cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ServiceInUnknownState"}, 53766ac2b8cSJason M. Bills {"Message", 53866ac2b8cSJason M. Bills "The operation failed because the service is in an unknown state " 53966ac2b8cSJason M. Bills "and can no longer take incoming requests."}, 540*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 541f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 54266ac2b8cSJason M. Bills {"Resolution", "Restart the service and resubmit the request if " 54366ac2b8cSJason M. Bills "the operation failed."}}); 544f4c4dcf4SKowalski, Kamil } 545f4c4dcf4SKowalski, Kamil 546f4c4dcf4SKowalski, Kamil /** 547f4c4dcf4SKowalski, Kamil * @internal 548f4c4dcf4SKowalski, Kamil * @brief Formats EventSubscriptionLimitExceeded message into JSON 549f4c4dcf4SKowalski, Kamil * 550f4c4dcf4SKowalski, Kamil * See header file for more information 551f4c4dcf4SKowalski, Kamil * @endinternal 552f4c4dcf4SKowalski, Kamil */ 553f12894f8SJason M. Bills void eventSubscriptionLimitExceeded(crow::Response& res) 5541abe55efSEd Tanous { 555f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 556f12894f8SJason M. Bills addMessageToErrorJson( 557f12894f8SJason M. Bills res.jsonValue, 558f12894f8SJason M. Bills nlohmann::json{ 559f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 560cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.EventSubscriptionLimitExceeded"}, 561f4c4dcf4SKowalski, Kamil {"Message", 562f4c4dcf4SKowalski, Kamil "The event subscription failed due to the number of simultaneous " 563f4c4dcf4SKowalski, Kamil "subscriptions exceeding the limit of the implementation."}, 564*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 565f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 566f4c4dcf4SKowalski, Kamil {"Resolution", 567f12894f8SJason M. Bills "Reduce the number of other subscriptions before trying to " 56866ac2b8cSJason M. Bills "establish the event subscription or increase the limit of " 56966ac2b8cSJason M. Bills "simultaneous subscriptions (if supported)."}}); 570f4c4dcf4SKowalski, Kamil } 571f4c4dcf4SKowalski, Kamil 572f4c4dcf4SKowalski, Kamil /** 573f4c4dcf4SKowalski, Kamil * @internal 574f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterMissing message into JSON 575f4c4dcf4SKowalski, Kamil * 576f4c4dcf4SKowalski, Kamil * See header file for more information 577f4c4dcf4SKowalski, Kamil * @endinternal 578f4c4dcf4SKowalski, Kamil */ 579f12894f8SJason M. Bills void actionParameterMissing(crow::Response& res, const std::string& arg1, 5801abe55efSEd Tanous const std::string& arg2) 5811abe55efSEd Tanous { 582f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 583f12894f8SJason M. Bills addMessageToErrorJson( 584f12894f8SJason M. Bills res.jsonValue, 585f12894f8SJason M. Bills nlohmann::json{ 586f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 587cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterMissing"}, 588f12894f8SJason M. Bills {"Message", "The action " + arg1 + " requires the parameter " + 589f12894f8SJason M. Bills arg2 + " to be present in the request body."}, 590*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 591f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 592f12894f8SJason M. Bills {"Resolution", 59366ac2b8cSJason M. Bills "Supply the action with the required parameter in the request " 59466ac2b8cSJason M. Bills "body when the request is resubmitted."}}); 595f4c4dcf4SKowalski, Kamil } 596f4c4dcf4SKowalski, Kamil 597f4c4dcf4SKowalski, Kamil /** 598f4c4dcf4SKowalski, Kamil * @internal 599f4c4dcf4SKowalski, Kamil * @brief Formats StringValueTooLong message into JSON 600f4c4dcf4SKowalski, Kamil * 601f4c4dcf4SKowalski, Kamil * See header file for more information 602f4c4dcf4SKowalski, Kamil * @endinternal 603f4c4dcf4SKowalski, Kamil */ 604f12894f8SJason M. Bills void stringValueTooLong(crow::Response& res, const std::string& arg1, 605f12894f8SJason M. Bills const int& arg2) 6061abe55efSEd Tanous { 607f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 608f12894f8SJason M. Bills addMessageToErrorJson( 609f12894f8SJason M. Bills res.jsonValue, 610f12894f8SJason M. Bills nlohmann::json{ 611f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 612cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.StringValueTooLong"}, 613f4c4dcf4SKowalski, Kamil {"Message", "The string " + arg1 + " exceeds the length limit " + 614f4c4dcf4SKowalski, Kamil std::to_string(arg2) + "."}, 615*85659adfSJason M. Bills {"MessageArgs", {arg1, std::to_string(arg2)}}, 616f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 617f4c4dcf4SKowalski, Kamil {"Resolution", 618f12894f8SJason M. Bills "Resubmit the request with an appropriate string length."}}); 619f4c4dcf4SKowalski, Kamil } 620f4c4dcf4SKowalski, Kamil 621f4c4dcf4SKowalski, Kamil /** 622f4c4dcf4SKowalski, Kamil * @internal 623cc9139ecSJason M. Bills * @brief Formats SessionTerminated message into JSON 624cc9139ecSJason M. Bills * 625cc9139ecSJason M. Bills * See header file for more information 626cc9139ecSJason M. Bills * @endinternal 627cc9139ecSJason M. Bills */ 628cc9139ecSJason M. Bills void sessionTerminated(crow::Response& res) 629cc9139ecSJason M. Bills { 630cc9139ecSJason M. Bills res.result(boost::beast::http::status::ok); 631cc9139ecSJason M. Bills addMessageToJsonRoot( 632cc9139ecSJason M. Bills res.jsonValue, 633cc9139ecSJason M. Bills nlohmann::json{ 634cc9139ecSJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 635cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.SessionTerminated"}, 636cc9139ecSJason M. Bills {"Message", "The session was successfully terminated."}, 637*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 638cc9139ecSJason M. Bills {"Severity", "OK"}, 639cc9139ecSJason M. Bills {"Resolution", "No resolution is required."}}); 640cc9139ecSJason M. Bills } 641cc9139ecSJason M. Bills 642cc9139ecSJason M. Bills /** 643cc9139ecSJason M. Bills * @internal 644cc9139ecSJason M. Bills * @brief Formats ResourceTypeIncompatible message into JSON 645cc9139ecSJason M. Bills * 646cc9139ecSJason M. Bills * See header file for more information 647cc9139ecSJason M. Bills * @endinternal 648cc9139ecSJason M. Bills */ 649cc9139ecSJason M. Bills void resourceTypeIncompatible(crow::Response& res, const std::string& arg1, 650cc9139ecSJason M. Bills const std::string& arg2) 651cc9139ecSJason M. Bills { 652cc9139ecSJason M. Bills res.result(boost::beast::http::status::bad_request); 653cc9139ecSJason M. Bills addMessageToErrorJson( 654cc9139ecSJason M. Bills res.jsonValue, 655cc9139ecSJason M. Bills nlohmann::json{ 656cc9139ecSJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 657cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceTypeIncompatible"}, 658cc9139ecSJason M. Bills {"Message", "The @odata.type of the request body " + arg1 + 659cc9139ecSJason M. Bills " is incompatible with the @odata.type of the " 660cc9139ecSJason M. Bills "resource which is " + 661cc9139ecSJason M. Bills arg2 + "."}, 662*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 663cc9139ecSJason M. Bills {"Severity", "Critical"}, 664cc9139ecSJason M. Bills {"Resolution", "Resubmit the request with a payload compatible " 665cc9139ecSJason M. Bills "with the resource's schema."}}); 666cc9139ecSJason M. Bills } 667cc9139ecSJason M. Bills 668cc9139ecSJason M. Bills /** 669cc9139ecSJason M. Bills * @internal 670f12894f8SJason M. Bills * @brief Formats PropertyValueTypeError message into JSON for the specified 671f12894f8SJason M. Bills * property 672f12894f8SJason M. Bills * 673f12894f8SJason M. Bills * See header file for more information 674f12894f8SJason M. Bills * @endinternal 675f12894f8SJason M. Bills */ 676f12894f8SJason M. Bills void propertyValueTypeError(crow::Response& res, const std::string& arg1, 677a08b46ccSJason M. Bills const std::string& arg2) 678f12894f8SJason M. Bills { 679f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 680f12894f8SJason M. Bills addMessageToJson( 681f12894f8SJason M. Bills res.jsonValue, 682f12894f8SJason M. Bills nlohmann::json{ 683f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 684cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyValueTypeError"}, 685f12894f8SJason M. Bills {"Message", 686f12894f8SJason M. Bills "The value " + arg1 + " for the property " + arg2 + 687f12894f8SJason M. Bills " is of a different type than the property can accept."}, 688*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 689f12894f8SJason M. Bills {"Severity", "Warning"}, 69066ac2b8cSJason M. Bills {"Resolution", 69166ac2b8cSJason M. Bills "Correct the value for the property in the request body and " 69266ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}, 693a08b46ccSJason M. Bills arg2); 694f4c4dcf4SKowalski, Kamil } 695f4c4dcf4SKowalski, Kamil 696f4c4dcf4SKowalski, Kamil /** 697f4c4dcf4SKowalski, Kamil * @internal 698f4c4dcf4SKowalski, Kamil * @brief Formats ResourceNotFound message into JSON 699f4c4dcf4SKowalski, Kamil * 700f4c4dcf4SKowalski, Kamil * See header file for more information 701f4c4dcf4SKowalski, Kamil * @endinternal 702f4c4dcf4SKowalski, Kamil */ 703f12894f8SJason M. Bills void resourceNotFound(crow::Response& res, const std::string& arg1, 7041abe55efSEd Tanous const std::string& arg2) 7051abe55efSEd Tanous { 706f12894f8SJason M. Bills res.result(boost::beast::http::status::not_found); 707f12894f8SJason M. Bills addMessageToErrorJson( 708f12894f8SJason M. Bills res.jsonValue, 709f12894f8SJason M. Bills nlohmann::json{ 710f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 711cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceNotFound"}, 7121abe55efSEd Tanous {"Message", "The requested resource of type " + arg1 + " named " + 7131abe55efSEd Tanous arg2 + " was not found."}, 714*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 715f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 716f4c4dcf4SKowalski, Kamil {"Resolution", 717f12894f8SJason M. Bills "Provide a valid resource identifier and resubmit the request."}}); 718f4c4dcf4SKowalski, Kamil } 719f4c4dcf4SKowalski, Kamil 720f4c4dcf4SKowalski, Kamil /** 721f4c4dcf4SKowalski, Kamil * @internal 722f4c4dcf4SKowalski, Kamil * @brief Formats CouldNotEstablishConnection message into JSON 723f4c4dcf4SKowalski, Kamil * 724f4c4dcf4SKowalski, Kamil * See header file for more information 725f4c4dcf4SKowalski, Kamil * @endinternal 726f4c4dcf4SKowalski, Kamil */ 727f12894f8SJason M. Bills void couldNotEstablishConnection(crow::Response& res, const std::string& arg1) 7281abe55efSEd Tanous { 729f12894f8SJason M. Bills res.result(boost::beast::http::status::not_found); 730f12894f8SJason M. Bills addMessageToErrorJson( 731f12894f8SJason M. Bills res.jsonValue, 732f12894f8SJason M. Bills nlohmann::json{ 733f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 734cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.CouldNotEstablishConnection"}, 7351abe55efSEd Tanous {"Message", 736f12894f8SJason M. Bills "The service failed to establish a Connection with the URI " + 737f12894f8SJason M. Bills arg1 + "."}, 738*85659adfSJason M. Bills {"MessageArgs", {arg1}}, 739f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 74066ac2b8cSJason M. Bills {"Resolution", 74166ac2b8cSJason M. Bills "Ensure that the URI contains a valid and reachable node name, " 74266ac2b8cSJason M. Bills "protocol information and other URI components."}}); 743f4c4dcf4SKowalski, Kamil } 744f4c4dcf4SKowalski, Kamil 745f4c4dcf4SKowalski, Kamil /** 746f4c4dcf4SKowalski, Kamil * @internal 747f12894f8SJason M. Bills * @brief Formats PropertyNotWritable message into JSON for the specified 748f12894f8SJason M. Bills * property 749f12894f8SJason M. Bills * 750f12894f8SJason M. Bills * See header file for more information 751f12894f8SJason M. Bills * @endinternal 752f12894f8SJason M. Bills */ 753a08b46ccSJason M. Bills void propertyNotWritable(crow::Response& res, const std::string& arg1) 754f12894f8SJason M. Bills { 755f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 756f12894f8SJason M. Bills addMessageToJson( 757f12894f8SJason M. Bills res.jsonValue, 758f12894f8SJason M. Bills nlohmann::json{ 759f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 760cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyNotWritable"}, 761f12894f8SJason M. Bills {"Message", 762f12894f8SJason M. Bills "The property " + arg1 + 763f12894f8SJason M. Bills " is a read only property and cannot be assigned a value."}, 764*85659adfSJason M. Bills {"MessageArgs", {arg1}}, 765f12894f8SJason M. Bills {"Severity", "Warning"}, 76666ac2b8cSJason M. Bills {"Resolution", "Remove the property from the request body and " 76766ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}, 768a08b46ccSJason M. Bills arg1); 769f4c4dcf4SKowalski, Kamil } 770f4c4dcf4SKowalski, Kamil 771f4c4dcf4SKowalski, Kamil /** 772f4c4dcf4SKowalski, Kamil * @internal 773f4c4dcf4SKowalski, Kamil * @brief Formats QueryParameterValueTypeError message into JSON 774f4c4dcf4SKowalski, Kamil * 775f4c4dcf4SKowalski, Kamil * See header file for more information 776f4c4dcf4SKowalski, Kamil * @endinternal 777f4c4dcf4SKowalski, Kamil */ 778f12894f8SJason M. Bills void queryParameterValueTypeError(crow::Response& res, const std::string& arg1, 7791abe55efSEd Tanous const std::string& arg2) 7801abe55efSEd Tanous { 781f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 782f12894f8SJason M. Bills addMessageToErrorJson( 783f12894f8SJason M. Bills res.jsonValue, 784f12894f8SJason M. Bills nlohmann::json{ 785f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 786cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.QueryParameterValueTypeError"}, 7871abe55efSEd Tanous {"Message", 7881abe55efSEd Tanous "The value " + arg1 + " for the query parameter " + arg2 + 789f4c4dcf4SKowalski, Kamil " is of a different type than the parameter can accept."}, 790*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 791f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 79266ac2b8cSJason M. Bills {"Resolution", 79366ac2b8cSJason M. Bills "Correct the value for the query parameter in the request and " 79466ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}); 795f4c4dcf4SKowalski, Kamil } 796f4c4dcf4SKowalski, Kamil 797f4c4dcf4SKowalski, Kamil /** 798f4c4dcf4SKowalski, Kamil * @internal 799f4c4dcf4SKowalski, Kamil * @brief Formats ServiceShuttingDown message into JSON 800f4c4dcf4SKowalski, Kamil * 801f4c4dcf4SKowalski, Kamil * See header file for more information 802f4c4dcf4SKowalski, Kamil * @endinternal 803f4c4dcf4SKowalski, Kamil */ 804f12894f8SJason M. Bills void serviceShuttingDown(crow::Response& res) 8051abe55efSEd Tanous { 806f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 807f12894f8SJason M. Bills addMessageToErrorJson( 808f12894f8SJason M. Bills res.jsonValue, 809f12894f8SJason M. Bills nlohmann::json{ 810f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 811cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ServiceShuttingDown"}, 812f12894f8SJason M. Bills {"Message", "The operation failed because the service is shutting " 81366ac2b8cSJason M. Bills "down and can no longer take incoming requests."}, 814*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 815f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 81666ac2b8cSJason M. Bills {"Resolution", "When the service becomes available, resubmit the " 81766ac2b8cSJason M. Bills "request if the operation failed."}}); 818f4c4dcf4SKowalski, Kamil } 819f4c4dcf4SKowalski, Kamil 820f4c4dcf4SKowalski, Kamil /** 821f4c4dcf4SKowalski, Kamil * @internal 822f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterDuplicate message into JSON 823f4c4dcf4SKowalski, Kamil * 824f4c4dcf4SKowalski, Kamil * See header file for more information 825f4c4dcf4SKowalski, Kamil * @endinternal 826f4c4dcf4SKowalski, Kamil */ 827f12894f8SJason M. Bills void actionParameterDuplicate(crow::Response& res, const std::string& arg1, 8281abe55efSEd Tanous const std::string& arg2) 8291abe55efSEd Tanous { 830f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 831f12894f8SJason M. Bills addMessageToErrorJson( 832f12894f8SJason M. Bills res.jsonValue, 833f12894f8SJason M. Bills nlohmann::json{ 834f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 835cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterDuplicate"}, 836f4c4dcf4SKowalski, Kamil {"Message", 837f4c4dcf4SKowalski, Kamil "The action " + arg1 + 8381abe55efSEd Tanous " was submitted with more than one value for the parameter " + 8391abe55efSEd Tanous arg2 + "."}, 840*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 841f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 84266ac2b8cSJason M. Bills {"Resolution", 84366ac2b8cSJason M. Bills "Resubmit the action with only one instance of the parameter in " 84466ac2b8cSJason M. Bills "the request body if the operation failed."}}); 845f4c4dcf4SKowalski, Kamil } 846f4c4dcf4SKowalski, Kamil 847f4c4dcf4SKowalski, Kamil /** 848f4c4dcf4SKowalski, Kamil * @internal 849f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterNotSupported message into JSON 850f4c4dcf4SKowalski, Kamil * 851f4c4dcf4SKowalski, Kamil * See header file for more information 852f4c4dcf4SKowalski, Kamil * @endinternal 853f4c4dcf4SKowalski, Kamil */ 854f12894f8SJason M. Bills void actionParameterNotSupported(crow::Response& res, const std::string& arg1, 8551abe55efSEd Tanous const std::string& arg2) 8561abe55efSEd Tanous { 857f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 858f12894f8SJason M. Bills addMessageToErrorJson( 859f12894f8SJason M. Bills res.jsonValue, 860f12894f8SJason M. Bills nlohmann::json{ 861f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 862cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterNotSupported"}, 863f4c4dcf4SKowalski, Kamil {"Message", "The parameter " + arg1 + " for the action " + arg2 + 864f4c4dcf4SKowalski, Kamil " is not supported on the target resource."}, 865*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 866f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 86766ac2b8cSJason M. Bills {"Resolution", "Remove the parameter supplied and resubmit the " 86866ac2b8cSJason M. Bills "request if the operation failed."}}); 869f4c4dcf4SKowalski, Kamil } 870f4c4dcf4SKowalski, Kamil 871f4c4dcf4SKowalski, Kamil /** 872f4c4dcf4SKowalski, Kamil * @internal 873f4c4dcf4SKowalski, Kamil * @brief Formats SourceDoesNotSupportProtocol message into JSON 874f4c4dcf4SKowalski, Kamil * 875f4c4dcf4SKowalski, Kamil * See header file for more information 876f4c4dcf4SKowalski, Kamil * @endinternal 877f4c4dcf4SKowalski, Kamil */ 878f12894f8SJason M. Bills void sourceDoesNotSupportProtocol(crow::Response& res, const std::string& arg1, 8791abe55efSEd Tanous const std::string& arg2) 8801abe55efSEd Tanous { 881f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 882f12894f8SJason M. Bills addMessageToErrorJson( 883f12894f8SJason M. Bills res.jsonValue, 884f12894f8SJason M. Bills nlohmann::json{ 885f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 886cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.SourceDoesNotSupportProtocol"}, 88755c7b7a2SEd Tanous {"Message", "The other end of the Connection at " + arg1 + 8881abe55efSEd Tanous " does not support the specified protocol " + arg2 + 8891abe55efSEd Tanous "."}, 890*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 891f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 892f12894f8SJason M. Bills {"Resolution", "Change protocols or URIs. "}}); 893f4c4dcf4SKowalski, Kamil } 894f4c4dcf4SKowalski, Kamil 895f4c4dcf4SKowalski, Kamil /** 896f4c4dcf4SKowalski, Kamil * @internal 897f4c4dcf4SKowalski, Kamil * @brief Formats AccountRemoved message into JSON 898f4c4dcf4SKowalski, Kamil * 899f4c4dcf4SKowalski, Kamil * See header file for more information 900f4c4dcf4SKowalski, Kamil * @endinternal 901f4c4dcf4SKowalski, Kamil */ 902f12894f8SJason M. Bills void accountRemoved(crow::Response& res) 9031abe55efSEd Tanous { 904f12894f8SJason M. Bills res.result(boost::beast::http::status::ok); 905f12894f8SJason M. Bills addMessageToJsonRoot( 906f12894f8SJason M. Bills res.jsonValue, 907f12894f8SJason M. Bills nlohmann::json{ 908f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 909cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccountRemoved"}, 910f4c4dcf4SKowalski, Kamil {"Message", "The account was successfully removed."}, 911*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 912f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 913f12894f8SJason M. Bills {"Resolution", "No resolution is required."}}); 914f4c4dcf4SKowalski, Kamil } 915f4c4dcf4SKowalski, Kamil 916f4c4dcf4SKowalski, Kamil /** 917f4c4dcf4SKowalski, Kamil * @internal 918f4c4dcf4SKowalski, Kamil * @brief Formats AccessDenied message into JSON 919f4c4dcf4SKowalski, Kamil * 920f4c4dcf4SKowalski, Kamil * See header file for more information 921f4c4dcf4SKowalski, Kamil * @endinternal 922f4c4dcf4SKowalski, Kamil */ 923f12894f8SJason M. Bills void accessDenied(crow::Response& res, const std::string& arg1) 9241abe55efSEd Tanous { 925f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 926f12894f8SJason M. Bills addMessageToErrorJson( 927f12894f8SJason M. Bills res.jsonValue, 928f12894f8SJason M. Bills nlohmann::json{ 929f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 930cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccessDenied"}, 931f12894f8SJason M. Bills {"Message", "While attempting to establish a Connection to " + 932f12894f8SJason M. Bills arg1 + ", the service denied access."}, 933*85659adfSJason M. Bills {"MessageArgs", {arg1}}, 934f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 93566ac2b8cSJason M. Bills {"Resolution", "Attempt to ensure that the URI is correct and that " 93666ac2b8cSJason M. Bills "the service has the appropriate credentials."}}); 937f4c4dcf4SKowalski, Kamil } 938f4c4dcf4SKowalski, Kamil 939f4c4dcf4SKowalski, Kamil /** 940f4c4dcf4SKowalski, Kamil * @internal 941f4c4dcf4SKowalski, Kamil * @brief Formats QueryNotSupported message into JSON 942f4c4dcf4SKowalski, Kamil * 943f4c4dcf4SKowalski, Kamil * See header file for more information 944f4c4dcf4SKowalski, Kamil * @endinternal 945f4c4dcf4SKowalski, Kamil */ 946f12894f8SJason M. Bills void queryNotSupported(crow::Response& res) 9471abe55efSEd Tanous { 948f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 949f12894f8SJason M. Bills addMessageToErrorJson( 950f12894f8SJason M. Bills res.jsonValue, 951f12894f8SJason M. Bills nlohmann::json{ 952f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 953cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.QueryNotSupported"}, 954f4c4dcf4SKowalski, Kamil {"Message", "Querying is not supported by the implementation."}, 955*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 956f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 95766ac2b8cSJason M. Bills {"Resolution", "Remove the query parameters and resubmit the " 95866ac2b8cSJason M. Bills "request if the operation failed."}}); 959f4c4dcf4SKowalski, Kamil } 960f4c4dcf4SKowalski, Kamil 961f4c4dcf4SKowalski, Kamil /** 962f4c4dcf4SKowalski, Kamil * @internal 963f4c4dcf4SKowalski, Kamil * @brief Formats CreateLimitReachedForResource message into JSON 964f4c4dcf4SKowalski, Kamil * 965f4c4dcf4SKowalski, Kamil * See header file for more information 966f4c4dcf4SKowalski, Kamil * @endinternal 967f4c4dcf4SKowalski, Kamil */ 968f12894f8SJason M. Bills void createLimitReachedForResource(crow::Response& res) 9691abe55efSEd Tanous { 970f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 971f12894f8SJason M. Bills addMessageToErrorJson( 972f12894f8SJason M. Bills res.jsonValue, 973f12894f8SJason M. Bills nlohmann::json{ 974f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 975cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.CreateLimitReachedForResource"}, 9761abe55efSEd Tanous {"Message", "The create operation failed because the resource has " 97766ac2b8cSJason M. Bills "reached the limit of possible resources."}, 978*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 979f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 98066ac2b8cSJason M. Bills {"Resolution", 98166ac2b8cSJason M. Bills "Either delete resources and resubmit the request if the " 98266ac2b8cSJason M. Bills "operation failed or do not resubmit the request."}}); 983f4c4dcf4SKowalski, Kamil } 984f4c4dcf4SKowalski, Kamil 985f4c4dcf4SKowalski, Kamil /** 986f4c4dcf4SKowalski, Kamil * @internal 987f4c4dcf4SKowalski, Kamil * @brief Formats GeneralError message into JSON 988f4c4dcf4SKowalski, Kamil * 989f4c4dcf4SKowalski, Kamil * See header file for more information 990f4c4dcf4SKowalski, Kamil * @endinternal 991f4c4dcf4SKowalski, Kamil */ 992f12894f8SJason M. Bills void generalError(crow::Response& res) 9931abe55efSEd Tanous { 994f12894f8SJason M. Bills res.result(boost::beast::http::status::internal_server_error); 995f12894f8SJason M. Bills addMessageToErrorJson( 996f12894f8SJason M. Bills res.jsonValue, 997f12894f8SJason M. Bills nlohmann::json{ 998f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 999cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.GeneralError"}, 1000cc9139ecSJason M. Bills {"Message", "A general error has occurred. See Resolution for " 1001cc9139ecSJason M. Bills "information on how to resolve the error."}, 1002*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1003f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1004cc9139ecSJason M. Bills {"Resolution", "None."}}); 1005f4c4dcf4SKowalski, Kamil } 1006f4c4dcf4SKowalski, Kamil 1007f4c4dcf4SKowalski, Kamil /** 1008f4c4dcf4SKowalski, Kamil * @internal 1009f4c4dcf4SKowalski, Kamil * @brief Formats Success message into JSON 1010f4c4dcf4SKowalski, Kamil * 1011f4c4dcf4SKowalski, Kamil * See header file for more information 1012f4c4dcf4SKowalski, Kamil * @endinternal 1013f4c4dcf4SKowalski, Kamil */ 1014f12894f8SJason M. Bills void success(crow::Response& res) 10151abe55efSEd Tanous { 1016f12894f8SJason M. Bills res.result(boost::beast::http::status::ok); 1017f12894f8SJason M. Bills addMessageToJsonRoot( 1018f12894f8SJason M. Bills res.jsonValue, 1019f12894f8SJason M. Bills nlohmann::json{ 1020f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1021cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.Success"}, 1022f4c4dcf4SKowalski, Kamil {"Message", "Successfully Completed Request"}, 1023*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1024f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 1025f12894f8SJason M. Bills {"Resolution", "None"}}); 1026f12894f8SJason M. Bills } 1027f12894f8SJason M. Bills 1028f12894f8SJason M. Bills /** 1029f12894f8SJason M. Bills * @internal 1030f4c4dcf4SKowalski, Kamil * @brief Formats Created message into JSON 1031f4c4dcf4SKowalski, Kamil * 1032f4c4dcf4SKowalski, Kamil * See header file for more information 1033f4c4dcf4SKowalski, Kamil * @endinternal 1034f4c4dcf4SKowalski, Kamil */ 1035f12894f8SJason M. Bills void created(crow::Response& res) 10361abe55efSEd Tanous { 1037f12894f8SJason M. Bills res.result(boost::beast::http::status::created); 1038f12894f8SJason M. Bills addMessageToJsonRoot( 1039f12894f8SJason M. Bills res.jsonValue, 1040f12894f8SJason M. Bills nlohmann::json{ 1041f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1042cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.Created"}, 1043f4c4dcf4SKowalski, Kamil {"Message", "The resource has been created successfully"}, 1044*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1045f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 1046f12894f8SJason M. Bills {"Resolution", "None"}}); 1047f4c4dcf4SKowalski, Kamil } 1048f4c4dcf4SKowalski, Kamil 1049f4c4dcf4SKowalski, Kamil /** 1050f4c4dcf4SKowalski, Kamil * @internal 1051cc9139ecSJason M. Bills * @brief Formats NoOperation message into JSON 1052cc9139ecSJason M. Bills * 1053cc9139ecSJason M. Bills * See header file for more information 1054cc9139ecSJason M. Bills * @endinternal 1055cc9139ecSJason M. Bills */ 1056cc9139ecSJason M. Bills void noOperation(crow::Response& res) 1057cc9139ecSJason M. Bills { 1058cc9139ecSJason M. Bills res.result(boost::beast::http::status::bad_request); 1059cc9139ecSJason M. Bills addMessageToErrorJson( 1060cc9139ecSJason M. Bills res.jsonValue, 1061cc9139ecSJason M. Bills nlohmann::json{ 1062cc9139ecSJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1063cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.NoOperation"}, 1064cc9139ecSJason M. Bills {"Message", "The request body submitted contain no data to act " 1065cc9139ecSJason M. Bills "upon and no changes to the resource took place."}, 1066*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1067cc9139ecSJason M. Bills {"Severity", "Warning"}, 1068cc9139ecSJason M. Bills {"Resolution", 1069cc9139ecSJason M. Bills "Add properties in the JSON object and resubmit the request."}}); 1070cc9139ecSJason M. Bills } 1071cc9139ecSJason M. Bills 1072cc9139ecSJason M. Bills /** 1073cc9139ecSJason M. Bills * @internal 1074f12894f8SJason M. Bills * @brief Formats PropertyUnknown message into JSON for the specified property 1075f12894f8SJason M. Bills * 1076f12894f8SJason M. Bills * See header file for more information 1077f12894f8SJason M. Bills * @endinternal 1078f12894f8SJason M. Bills */ 1079a08b46ccSJason M. Bills void propertyUnknown(crow::Response& res, const std::string& arg1) 1080f12894f8SJason M. Bills { 1081f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1082f12894f8SJason M. Bills addMessageToJson( 1083f12894f8SJason M. Bills res.jsonValue, 1084f12894f8SJason M. Bills nlohmann::json{ 1085f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1086cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyUnknown"}, 1087f12894f8SJason M. Bills {"Message", 1088f12894f8SJason M. Bills "The property " + arg1 + 1089f12894f8SJason M. Bills " is not in the list of valid properties for the resource."}, 1090*85659adfSJason M. Bills {"MessageArgs", {arg1}}, 1091f12894f8SJason M. Bills {"Severity", "Warning"}, 109266ac2b8cSJason M. Bills {"Resolution", 109366ac2b8cSJason M. Bills "Remove the unknown property from the request body and resubmit " 109466ac2b8cSJason M. Bills "the request if the operation failed."}}, 1095a08b46ccSJason M. Bills arg1); 1096f4c4dcf4SKowalski, Kamil } 1097f4c4dcf4SKowalski, Kamil 1098f4c4dcf4SKowalski, Kamil /** 1099f4c4dcf4SKowalski, Kamil * @internal 1100f4c4dcf4SKowalski, Kamil * @brief Formats NoValidSession message into JSON 1101f4c4dcf4SKowalski, Kamil * 1102f4c4dcf4SKowalski, Kamil * See header file for more information 1103f4c4dcf4SKowalski, Kamil * @endinternal 1104f4c4dcf4SKowalski, Kamil */ 1105f12894f8SJason M. Bills void noValidSession(crow::Response& res) 11061abe55efSEd Tanous { 1107f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 1108f12894f8SJason M. Bills addMessageToErrorJson( 1109f12894f8SJason M. Bills res.jsonValue, 1110f12894f8SJason M. Bills nlohmann::json{ 1111f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1112cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.NoValidSession"}, 1113f4c4dcf4SKowalski, Kamil {"Message", 1114f4c4dcf4SKowalski, Kamil "There is no valid session established with the implementation."}, 1115*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1116f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 11171abe55efSEd Tanous {"Resolution", 1118f12894f8SJason M. Bills "Establish as session before attempting any operations."}}); 1119f4c4dcf4SKowalski, Kamil } 1120f4c4dcf4SKowalski, Kamil 1121f4c4dcf4SKowalski, Kamil /** 1122f4c4dcf4SKowalski, Kamil * @internal 1123f4c4dcf4SKowalski, Kamil * @brief Formats InvalidObject message into JSON 1124f4c4dcf4SKowalski, Kamil * 1125f4c4dcf4SKowalski, Kamil * See header file for more information 1126f4c4dcf4SKowalski, Kamil * @endinternal 1127f4c4dcf4SKowalski, Kamil */ 1128f12894f8SJason M. Bills void invalidObject(crow::Response& res, const std::string& arg1) 11291abe55efSEd Tanous { 1130f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1131f12894f8SJason M. Bills addMessageToErrorJson( 1132f12894f8SJason M. Bills res.jsonValue, 1133f12894f8SJason M. Bills nlohmann::json{ 1134f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1135cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.InvalidObject"}, 1136f4c4dcf4SKowalski, Kamil {"Message", "The object at " + arg1 + " is invalid."}, 1137*85659adfSJason M. Bills {"MessageArgs", {arg1}}, 1138f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1139f12894f8SJason M. Bills {"Resolution", 114066ac2b8cSJason M. Bills "Either the object is malformed or the URI is not correct. " 114166ac2b8cSJason M. Bills "Correct the condition and resubmit the request if it failed."}}); 1142f4c4dcf4SKowalski, Kamil } 1143f4c4dcf4SKowalski, Kamil 1144f4c4dcf4SKowalski, Kamil /** 1145f4c4dcf4SKowalski, Kamil * @internal 1146f4c4dcf4SKowalski, Kamil * @brief Formats ResourceInStandby message into JSON 1147f4c4dcf4SKowalski, Kamil * 1148f4c4dcf4SKowalski, Kamil * See header file for more information 1149f4c4dcf4SKowalski, Kamil * @endinternal 1150f4c4dcf4SKowalski, Kamil */ 1151f12894f8SJason M. Bills void resourceInStandby(crow::Response& res) 11521abe55efSEd Tanous { 1153f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 1154f12894f8SJason M. Bills addMessageToErrorJson( 1155f12894f8SJason M. Bills res.jsonValue, 1156f12894f8SJason M. Bills nlohmann::json{ 1157f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1158cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceInStandby"}, 115966ac2b8cSJason M. Bills {"Message", "The request could not be performed because the " 116066ac2b8cSJason M. Bills "resource is in standby."}, 1161*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1162f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1163f12894f8SJason M. Bills {"Resolution", "Ensure that the resource is in the correct power " 116466ac2b8cSJason M. Bills "state and resubmit the request."}}); 1165f4c4dcf4SKowalski, Kamil } 1166f4c4dcf4SKowalski, Kamil 1167f4c4dcf4SKowalski, Kamil /** 1168f4c4dcf4SKowalski, Kamil * @internal 1169f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterValueTypeError message into JSON 1170f4c4dcf4SKowalski, Kamil * 1171f4c4dcf4SKowalski, Kamil * See header file for more information 1172f4c4dcf4SKowalski, Kamil * @endinternal 1173f4c4dcf4SKowalski, Kamil */ 1174f12894f8SJason M. Bills void actionParameterValueTypeError(crow::Response& res, const std::string& arg1, 1175f4c4dcf4SKowalski, Kamil const std::string& arg2, 11761abe55efSEd Tanous const std::string& arg3) 11771abe55efSEd Tanous { 1178f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1179f12894f8SJason M. Bills addMessageToErrorJson( 1180f12894f8SJason M. Bills res.jsonValue, 1181f12894f8SJason M. Bills nlohmann::json{ 1182f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1183cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterValueTypeError"}, 11841abe55efSEd Tanous {"Message", 11851abe55efSEd Tanous "The value " + arg1 + " for the parameter " + arg2 + 1186f4c4dcf4SKowalski, Kamil " in the action " + arg3 + 1187f4c4dcf4SKowalski, Kamil " is of a different type than the parameter can accept."}, 1188*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2, arg3}}, 1189f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 119066ac2b8cSJason M. Bills {"Resolution", 119166ac2b8cSJason M. Bills "Correct the value for the parameter in the request body and " 119266ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}); 1193f4c4dcf4SKowalski, Kamil } 1194f4c4dcf4SKowalski, Kamil 1195f4c4dcf4SKowalski, Kamil /** 1196f4c4dcf4SKowalski, Kamil * @internal 1197f4c4dcf4SKowalski, Kamil * @brief Formats SessionLimitExceeded message into JSON 1198f4c4dcf4SKowalski, Kamil * 1199f4c4dcf4SKowalski, Kamil * See header file for more information 1200f4c4dcf4SKowalski, Kamil * @endinternal 1201f4c4dcf4SKowalski, Kamil */ 1202f12894f8SJason M. Bills void sessionLimitExceeded(crow::Response& res) 12031abe55efSEd Tanous { 1204f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 1205f12894f8SJason M. Bills addMessageToErrorJson( 1206f12894f8SJason M. Bills res.jsonValue, 1207f12894f8SJason M. Bills nlohmann::json{ 1208f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1209cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.SessionLimitExceeded"}, 1210f12894f8SJason M. Bills {"Message", "The session establishment failed due to the number of " 121166ac2b8cSJason M. Bills "simultaneous sessions exceeding the limit of the " 121266ac2b8cSJason M. Bills "implementation."}, 1213*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1214f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 121566ac2b8cSJason M. Bills {"Resolution", "Reduce the number of other sessions before trying " 121666ac2b8cSJason M. Bills "to establish the session or increase the limit of " 121766ac2b8cSJason M. Bills "simultaneous sessions (if supported)."}}); 1218f4c4dcf4SKowalski, Kamil } 1219f4c4dcf4SKowalski, Kamil 1220f4c4dcf4SKowalski, Kamil /** 1221f4c4dcf4SKowalski, Kamil * @internal 1222f4c4dcf4SKowalski, Kamil * @brief Formats ActionNotSupported message into JSON 1223f4c4dcf4SKowalski, Kamil * 1224f4c4dcf4SKowalski, Kamil * See header file for more information 1225f4c4dcf4SKowalski, Kamil * @endinternal 1226f4c4dcf4SKowalski, Kamil */ 1227f12894f8SJason M. Bills void actionNotSupported(crow::Response& res, const std::string& arg1) 12281abe55efSEd Tanous { 1229f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1230f12894f8SJason M. Bills addMessageToErrorJson( 1231f12894f8SJason M. Bills res.jsonValue, 1232f12894f8SJason M. Bills nlohmann::json{ 1233f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1234cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionNotSupported"}, 12351abe55efSEd Tanous {"Message", 12361abe55efSEd Tanous "The action " + arg1 + " is not supported by the resource."}, 1237*85659adfSJason M. Bills {"MessageArgs", {arg1}}, 1238f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1239f4c4dcf4SKowalski, Kamil {"Resolution", 1240f4c4dcf4SKowalski, Kamil "The action supplied cannot be resubmitted to the implementation. " 1241f12894f8SJason M. Bills " Perhaps the action was invalid, the wrong resource was the " 124266ac2b8cSJason M. Bills "target or the implementation documentation may be of " 124366ac2b8cSJason M. Bills "assistance."}}); 1244f4c4dcf4SKowalski, Kamil } 1245f4c4dcf4SKowalski, Kamil 1246f4c4dcf4SKowalski, Kamil /** 1247f4c4dcf4SKowalski, Kamil * @internal 1248f4c4dcf4SKowalski, Kamil * @brief Formats InvalidIndex message into JSON 1249f4c4dcf4SKowalski, Kamil * 1250f4c4dcf4SKowalski, Kamil * See header file for more information 1251f4c4dcf4SKowalski, Kamil * @endinternal 1252f4c4dcf4SKowalski, Kamil */ 1253f12894f8SJason M. Bills void invalidIndex(crow::Response& res, const int& arg1) 12541abe55efSEd Tanous { 1255f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1256f12894f8SJason M. Bills addMessageToErrorJson( 1257f12894f8SJason M. Bills res.jsonValue, 1258f12894f8SJason M. Bills nlohmann::json{ 1259f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1260cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.InvalidIndex"}, 126155c7b7a2SEd Tanous {"Message", "The index " + std::to_string(arg1) + 1262f4c4dcf4SKowalski, Kamil " is not a valid offset into the array."}, 1263*85659adfSJason M. Bills {"MessageArgs", {std::to_string(arg1)}}, 1264f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1265f12894f8SJason M. Bills {"Resolution", "Verify the index value provided is within the " 1266f12894f8SJason M. Bills "bounds of the array."}}); 1267f4c4dcf4SKowalski, Kamil } 1268f4c4dcf4SKowalski, Kamil 1269f4c4dcf4SKowalski, Kamil /** 1270f4c4dcf4SKowalski, Kamil * @internal 1271f4c4dcf4SKowalski, Kamil * @brief Formats EmptyJSON message into JSON 1272f4c4dcf4SKowalski, Kamil * 1273f4c4dcf4SKowalski, Kamil * See header file for more information 1274f4c4dcf4SKowalski, Kamil * @endinternal 1275f4c4dcf4SKowalski, Kamil */ 1276f12894f8SJason M. Bills void emptyJSON(crow::Response& res) 12771abe55efSEd Tanous { 1278f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1279f12894f8SJason M. Bills addMessageToErrorJson( 1280f12894f8SJason M. Bills res.jsonValue, 1281f12894f8SJason M. Bills nlohmann::json{ 1282f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1283cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.EmptyJSON"}, 1284f12894f8SJason M. Bills {"Message", "The request body submitted contained an empty JSON " 128566ac2b8cSJason M. Bills "object and the service is unable to process it."}, 1286*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1287f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1288f4c4dcf4SKowalski, Kamil {"Resolution", 1289f12894f8SJason M. Bills "Add properties in the JSON object and resubmit the request."}}); 1290f4c4dcf4SKowalski, Kamil } 1291f4c4dcf4SKowalski, Kamil 1292f4c4dcf4SKowalski, Kamil /** 1293f4c4dcf4SKowalski, Kamil * @internal 1294f4c4dcf4SKowalski, Kamil * @brief Formats QueryNotSupportedOnResource message into JSON 1295f4c4dcf4SKowalski, Kamil * 1296f4c4dcf4SKowalski, Kamil * See header file for more information 1297f4c4dcf4SKowalski, Kamil * @endinternal 1298f4c4dcf4SKowalski, Kamil */ 1299f12894f8SJason M. Bills void queryNotSupportedOnResource(crow::Response& res) 13001abe55efSEd Tanous { 1301f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 1302f12894f8SJason M. Bills addMessageToErrorJson( 1303f12894f8SJason M. Bills res.jsonValue, 1304f12894f8SJason M. Bills nlohmann::json{ 1305f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1306cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.QueryNotSupportedOnResource"}, 1307f4c4dcf4SKowalski, Kamil {"Message", "Querying is not supported on the requested resource."}, 1308*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1309f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 131066ac2b8cSJason M. Bills {"Resolution", "Remove the query parameters and resubmit the " 131166ac2b8cSJason M. Bills "request if the operation failed."}}); 1312f4c4dcf4SKowalski, Kamil } 1313f4c4dcf4SKowalski, Kamil 1314f4c4dcf4SKowalski, Kamil /** 1315f4c4dcf4SKowalski, Kamil * @internal 1316f4c4dcf4SKowalski, Kamil * @brief Formats InsufficientPrivilege message into JSON 1317f4c4dcf4SKowalski, Kamil * 1318f4c4dcf4SKowalski, Kamil * See header file for more information 1319f4c4dcf4SKowalski, Kamil * @endinternal 1320f4c4dcf4SKowalski, Kamil */ 1321f12894f8SJason M. Bills void insufficientPrivilege(crow::Response& res) 13221abe55efSEd Tanous { 1323f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 1324f12894f8SJason M. Bills addMessageToErrorJson( 1325f12894f8SJason M. Bills res.jsonValue, 1326f12894f8SJason M. Bills nlohmann::json{ 1327f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1328cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.InsufficientPrivilege"}, 132966ac2b8cSJason M. Bills {"Message", "There are insufficient privileges for the account or " 133066ac2b8cSJason M. Bills "credentials associated with the current session to " 133166ac2b8cSJason M. Bills "perform the requested operation."}, 1332*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1333f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1334f4c4dcf4SKowalski, Kamil {"Resolution", 1335f12894f8SJason M. Bills "Either abandon the operation or change the associated access " 133666ac2b8cSJason M. Bills "rights and resubmit the request if the operation failed."}}); 1337f4c4dcf4SKowalski, Kamil } 1338f4c4dcf4SKowalski, Kamil 1339f4c4dcf4SKowalski, Kamil /** 1340f4c4dcf4SKowalski, Kamil * @internal 1341f4c4dcf4SKowalski, Kamil * @brief Formats PropertyValueModified message into JSON 1342f4c4dcf4SKowalski, Kamil * 1343f4c4dcf4SKowalski, Kamil * See header file for more information 1344f4c4dcf4SKowalski, Kamil * @endinternal 1345f4c4dcf4SKowalski, Kamil */ 1346f12894f8SJason M. Bills void propertyValueModified(crow::Response& res, const std::string& arg1, 1347a08b46ccSJason M. Bills const std::string& arg2) 13481abe55efSEd Tanous { 1349f12894f8SJason M. Bills res.result(boost::beast::http::status::ok); 1350f12894f8SJason M. Bills addMessageToJson( 1351f12894f8SJason M. Bills res.jsonValue, 1352f12894f8SJason M. Bills nlohmann::json{ 1353f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1354cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyValueModified"}, 1355f12894f8SJason M. Bills {"Message", "The property " + arg1 + " was assigned the value " + 1356f12894f8SJason M. Bills arg2 + " due to modification by the service."}, 1357*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 1358f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1359f12894f8SJason M. Bills {"Resolution", "No resolution is required."}}, 1360a08b46ccSJason M. Bills arg1); 1361f4c4dcf4SKowalski, Kamil } 1362f4c4dcf4SKowalski, Kamil 1363f4c4dcf4SKowalski, Kamil /** 1364f4c4dcf4SKowalski, Kamil * @internal 1365f4c4dcf4SKowalski, Kamil * @brief Formats AccountNotModified message into JSON 1366f4c4dcf4SKowalski, Kamil * 1367f4c4dcf4SKowalski, Kamil * See header file for more information 1368f4c4dcf4SKowalski, Kamil * @endinternal 1369f4c4dcf4SKowalski, Kamil */ 1370f12894f8SJason M. Bills void accountNotModified(crow::Response& res) 13711abe55efSEd Tanous { 1372f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1373f12894f8SJason M. Bills addMessageToErrorJson( 1374f12894f8SJason M. Bills res.jsonValue, 1375f12894f8SJason M. Bills nlohmann::json{ 1376f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1377cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccountNotModified"}, 1378f4c4dcf4SKowalski, Kamil {"Message", "The account modification request failed."}, 1379*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1380f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1381f12894f8SJason M. Bills {"Resolution", "The modification may have failed due to permission " 138266ac2b8cSJason M. Bills "issues or issues with the request body."}}); 1383f4c4dcf4SKowalski, Kamil } 1384f4c4dcf4SKowalski, Kamil 1385f4c4dcf4SKowalski, Kamil /** 1386f4c4dcf4SKowalski, Kamil * @internal 1387f4c4dcf4SKowalski, Kamil * @brief Formats QueryParameterValueFormatError message into JSON 1388f4c4dcf4SKowalski, Kamil * 1389f4c4dcf4SKowalski, Kamil * See header file for more information 1390f4c4dcf4SKowalski, Kamil * @endinternal 1391f4c4dcf4SKowalski, Kamil */ 1392f12894f8SJason M. Bills void queryParameterValueFormatError(crow::Response& res, 1393f12894f8SJason M. Bills const std::string& arg1, 13941abe55efSEd Tanous const std::string& arg2) 13951abe55efSEd Tanous { 1396f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1397f12894f8SJason M. Bills addMessageToErrorJson( 1398f12894f8SJason M. Bills res.jsonValue, 1399f12894f8SJason M. Bills nlohmann::json{ 1400f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1401cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.QueryParameterValueFormatError"}, 1402f4c4dcf4SKowalski, Kamil {"Message", 1403f4c4dcf4SKowalski, Kamil "The value " + arg1 + " for the parameter " + arg2 + 1404f4c4dcf4SKowalski, Kamil " is of a different format than the parameter can accept."}, 1405*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 1406f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 140766ac2b8cSJason M. Bills {"Resolution", 140866ac2b8cSJason M. Bills "Correct the value for the query parameter in the request and " 140966ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}); 1410f4c4dcf4SKowalski, Kamil } 1411f4c4dcf4SKowalski, Kamil 1412f4c4dcf4SKowalski, Kamil /** 1413f4c4dcf4SKowalski, Kamil * @internal 1414f12894f8SJason M. Bills * @brief Formats PropertyMissing message into JSON for the specified property 1415f12894f8SJason M. Bills * 1416f12894f8SJason M. Bills * See header file for more information 1417f12894f8SJason M. Bills * @endinternal 1418f12894f8SJason M. Bills */ 1419a08b46ccSJason M. Bills void propertyMissing(crow::Response& res, const std::string& arg1) 1420f12894f8SJason M. Bills { 1421f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1422f12894f8SJason M. Bills addMessageToJson( 1423f12894f8SJason M. Bills res.jsonValue, 1424f12894f8SJason M. Bills nlohmann::json{ 1425f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1426cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyMissing"}, 1427f12894f8SJason M. Bills {"Message", "The property " + arg1 + 1428f12894f8SJason M. Bills " is a required property and must be included in " 1429f12894f8SJason M. Bills "the request."}, 1430*85659adfSJason M. Bills {"MessageArgs", {arg1}}, 1431f12894f8SJason M. Bills {"Severity", "Warning"}, 1432f12894f8SJason M. Bills {"Resolution", 143366ac2b8cSJason M. Bills "Ensure that the property is in the request body and has a valid " 143466ac2b8cSJason M. Bills "value and resubmit the request if the operation failed."}}, 1435a08b46ccSJason M. Bills arg1); 1436f4c4dcf4SKowalski, Kamil } 1437f4c4dcf4SKowalski, Kamil 1438f4c4dcf4SKowalski, Kamil /** 1439f4c4dcf4SKowalski, Kamil * @internal 1440f4c4dcf4SKowalski, Kamil * @brief Formats ResourceExhaustion message into JSON 1441f4c4dcf4SKowalski, Kamil * 1442f4c4dcf4SKowalski, Kamil * See header file for more information 1443f4c4dcf4SKowalski, Kamil * @endinternal 1444f4c4dcf4SKowalski, Kamil */ 1445f12894f8SJason M. Bills void resourceExhaustion(crow::Response& res, const std::string& arg1) 14461abe55efSEd Tanous { 1447f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 1448f12894f8SJason M. Bills addMessageToErrorJson( 1449f12894f8SJason M. Bills res.jsonValue, 1450f12894f8SJason M. Bills nlohmann::json{ 1451f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1452cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceExhaustion"}, 1453d425c6f6SEd Tanous {"Message", "The resource " + arg1 + 145466ac2b8cSJason M. Bills " was unable to satisfy the request due to " 145566ac2b8cSJason M. Bills "unavailability of resources."}, 1456*85659adfSJason M. Bills {"MessageArgs", {arg1}}, 1457f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1458f12894f8SJason M. Bills {"Resolution", "Ensure that the resources are available and " 1459f12894f8SJason M. Bills "resubmit the request."}}); 1460f4c4dcf4SKowalski, Kamil } 1461f4c4dcf4SKowalski, Kamil 1462f4c4dcf4SKowalski, Kamil /** 1463f4c4dcf4SKowalski, Kamil * @internal 1464f4c4dcf4SKowalski, Kamil * @brief Formats AccountModified message into JSON 1465f4c4dcf4SKowalski, Kamil * 1466f4c4dcf4SKowalski, Kamil * See header file for more information 1467f4c4dcf4SKowalski, Kamil * @endinternal 1468f4c4dcf4SKowalski, Kamil */ 1469a08b46ccSJason M. Bills void accountModified(crow::Response& res) 14701abe55efSEd Tanous { 1471f12894f8SJason M. Bills res.result(boost::beast::http::status::ok); 1472a08b46ccSJason M. Bills addMessageToErrorJson( 1473f12894f8SJason M. Bills res.jsonValue, 1474f12894f8SJason M. Bills nlohmann::json{ 1475f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1476cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccountModified"}, 1477f4c4dcf4SKowalski, Kamil {"Message", "The account was successfully modified."}, 1478*85659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1479f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 1480a08b46ccSJason M. Bills {"Resolution", "No resolution is required."}}); 1481f4c4dcf4SKowalski, Kamil } 1482f4c4dcf4SKowalski, Kamil 1483f4c4dcf4SKowalski, Kamil /** 1484f4c4dcf4SKowalski, Kamil * @internal 1485f4c4dcf4SKowalski, Kamil * @brief Formats QueryParameterOutOfRange message into JSON 1486f4c4dcf4SKowalski, Kamil * 1487f4c4dcf4SKowalski, Kamil * See header file for more information 1488f4c4dcf4SKowalski, Kamil * @endinternal 1489f4c4dcf4SKowalski, Kamil */ 1490f12894f8SJason M. Bills void queryParameterOutOfRange(crow::Response& res, const std::string& arg1, 1491f12894f8SJason M. Bills const std::string& arg2, const std::string& arg3) 14921abe55efSEd Tanous { 1493f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1494f12894f8SJason M. Bills addMessageToErrorJson( 1495f12894f8SJason M. Bills res.jsonValue, 1496f12894f8SJason M. Bills nlohmann::json{ 1497f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1498cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.QueryParameterOutOfRange"}, 1499f12894f8SJason M. Bills {"Message", "The value " + arg1 + " for the query parameter " + 1500f12894f8SJason M. Bills arg2 + " is out of range " + arg3 + "."}, 1501*85659adfSJason M. Bills {"MessageArgs", {arg1, arg2, arg3}}, 1502f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1503f4c4dcf4SKowalski, Kamil {"Resolution", 1504f12894f8SJason M. Bills "Reduce the value for the query parameter to a value that is " 150566ac2b8cSJason M. Bills "within range, such as a start or count value that is within " 150666ac2b8cSJason M. Bills "bounds of the number of resources in a collection or a page that " 150766ac2b8cSJason M. Bills "is within the range of valid pages."}}); 1508f4c4dcf4SKowalski, Kamil } 1509f4c4dcf4SKowalski, Kamil 1510f4c4dcf4SKowalski, Kamil } // namespace messages 1511f4c4dcf4SKowalski, Kamil 1512d425c6f6SEd Tanous } // namespace redfish 1513