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 { 93*a08b46ccSJason 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."}, 122f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 12366ac2b8cSJason M. Bills {"Resolution", "Remove the condition and resubmit the request if " 12466ac2b8cSJason M. Bills "the operation failed."}}); 125f4c4dcf4SKowalski, Kamil } 126f4c4dcf4SKowalski, Kamil 127f4c4dcf4SKowalski, Kamil /** 128f4c4dcf4SKowalski, Kamil * @internal 129f4c4dcf4SKowalski, Kamil * @brief Formats MalformedJSON message into JSON 130f4c4dcf4SKowalski, Kamil * 131f4c4dcf4SKowalski, Kamil * See header file for more information 132f4c4dcf4SKowalski, Kamil * @endinternal 133f4c4dcf4SKowalski, Kamil */ 134f12894f8SJason M. Bills void malformedJSON(crow::Response& res) 1351abe55efSEd Tanous { 136f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 137f12894f8SJason M. Bills addMessageToErrorJson( 138f12894f8SJason M. Bills res.jsonValue, 139f12894f8SJason M. Bills nlohmann::json{ 140f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 141cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.MalformedJSON"}, 14266ac2b8cSJason M. Bills {"Message", "The request body submitted was malformed JSON and " 14366ac2b8cSJason M. Bills "could not be parsed by the receiving service."}, 144f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1451abe55efSEd Tanous {"Resolution", "Ensure that the request body is valid JSON and " 146f12894f8SJason M. Bills "resubmit the request."}}); 147f4c4dcf4SKowalski, Kamil } 148f4c4dcf4SKowalski, Kamil 149f4c4dcf4SKowalski, Kamil /** 150f4c4dcf4SKowalski, Kamil * @internal 151f4c4dcf4SKowalski, Kamil * @brief Formats ResourceMissingAtURI message into JSON 152f4c4dcf4SKowalski, Kamil * 153f4c4dcf4SKowalski, Kamil * See header file for more information 154f4c4dcf4SKowalski, Kamil * @endinternal 155f4c4dcf4SKowalski, Kamil */ 156f12894f8SJason M. Bills void resourceMissingAtURI(crow::Response& res, const std::string& arg1) 1571abe55efSEd Tanous { 158f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 159f12894f8SJason M. Bills addMessageToErrorJson( 160f12894f8SJason M. Bills res.jsonValue, 161f12894f8SJason M. Bills nlohmann::json{ 162f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 163cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceMissingAtURI"}, 164f4c4dcf4SKowalski, Kamil {"Message", "The resource at the URI " + arg1 + " was not found."}, 165f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 16666ac2b8cSJason M. Bills {"Resolution", "Place a valid resource at the URI or correct the " 16766ac2b8cSJason M. Bills "URI and resubmit the request."}}); 168f4c4dcf4SKowalski, Kamil } 169f4c4dcf4SKowalski, Kamil 170f4c4dcf4SKowalski, Kamil /** 171f4c4dcf4SKowalski, Kamil * @internal 172f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterValueFormatError message into JSON 173f4c4dcf4SKowalski, Kamil * 174f4c4dcf4SKowalski, Kamil * See header file for more information 175f4c4dcf4SKowalski, Kamil * @endinternal 176f4c4dcf4SKowalski, Kamil */ 177f12894f8SJason M. Bills void actionParameterValueFormatError(crow::Response& res, 178f12894f8SJason M. Bills const std::string& arg1, 179f4c4dcf4SKowalski, Kamil const std::string& arg2, 1801abe55efSEd Tanous const std::string& arg3) 1811abe55efSEd Tanous { 182f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 183f12894f8SJason M. Bills addMessageToErrorJson( 184f12894f8SJason M. Bills res.jsonValue, 185f12894f8SJason M. Bills nlohmann::json{ 186f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 187cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterValueFormatError"}, 188f4c4dcf4SKowalski, Kamil {"Message", 1891abe55efSEd Tanous "The value " + arg1 + " for the parameter " + arg2 + 1901abe55efSEd Tanous " in the action " + arg3 + 1911abe55efSEd Tanous " is of a different format than the parameter can accept."}, 192f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 19366ac2b8cSJason M. Bills {"Resolution", 19466ac2b8cSJason M. Bills "Correct the value for the parameter in the request body and " 19566ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}); 196f4c4dcf4SKowalski, Kamil } 197f4c4dcf4SKowalski, Kamil 198f4c4dcf4SKowalski, Kamil /** 199f4c4dcf4SKowalski, Kamil * @internal 200f4c4dcf4SKowalski, Kamil * @brief Formats InternalError message into JSON 201f4c4dcf4SKowalski, Kamil * 202f4c4dcf4SKowalski, Kamil * See header file for more information 203f4c4dcf4SKowalski, Kamil * @endinternal 204f4c4dcf4SKowalski, Kamil */ 205f12894f8SJason M. Bills void internalError(crow::Response& res) 2061abe55efSEd Tanous { 207f12894f8SJason M. Bills res.result(boost::beast::http::status::internal_server_error); 208f12894f8SJason M. Bills addMessageToErrorJson( 209f12894f8SJason M. Bills res.jsonValue, 210f12894f8SJason M. Bills nlohmann::json{ 211f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 212cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.InternalError"}, 213f12894f8SJason M. Bills {"Message", "The request failed due to an internal service error. " 21466ac2b8cSJason M. Bills "The service is still operational."}, 215f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 2161abe55efSEd Tanous {"Resolution", "Resubmit the request. If the problem persists, " 21766ac2b8cSJason M. Bills "consider resetting the service."}}); 218f12894f8SJason M. Bills } 219f12894f8SJason M. Bills 220f12894f8SJason M. Bills /** 221f12894f8SJason M. Bills * @internal 222f4c4dcf4SKowalski, Kamil * @brief Formats UnrecognizedRequestBody message into JSON 223f4c4dcf4SKowalski, Kamil * 224f4c4dcf4SKowalski, Kamil * See header file for more information 225f4c4dcf4SKowalski, Kamil * @endinternal 226f4c4dcf4SKowalski, Kamil */ 227f12894f8SJason M. Bills void unrecognizedRequestBody(crow::Response& res) 2281abe55efSEd Tanous { 229f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 230f12894f8SJason M. Bills addMessageToErrorJson( 231f12894f8SJason M. Bills res.jsonValue, 232f12894f8SJason M. Bills nlohmann::json{ 233f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 234cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.UnrecognizedRequestBody"}, 235f12894f8SJason M. Bills {"Message", "The service detected a malformed request body that it " 23666ac2b8cSJason M. Bills "was unable to interpret."}, 237f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 238f12894f8SJason M. Bills {"Resolution", "Correct the request body and resubmit the request " 239f12894f8SJason M. Bills "if it failed."}}); 240f4c4dcf4SKowalski, Kamil } 241f4c4dcf4SKowalski, Kamil 242f4c4dcf4SKowalski, Kamil /** 243f4c4dcf4SKowalski, Kamil * @internal 244f4c4dcf4SKowalski, Kamil * @brief Formats ResourceAtUriUnauthorized message into JSON 245f4c4dcf4SKowalski, Kamil * 246f4c4dcf4SKowalski, Kamil * See header file for more information 247f4c4dcf4SKowalski, Kamil * @endinternal 248f4c4dcf4SKowalski, Kamil */ 249f12894f8SJason M. Bills void resourceAtUriUnauthorized(crow::Response& res, const std::string& arg1, 2501abe55efSEd Tanous const std::string& arg2) 2511abe55efSEd Tanous { 252f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 253f12894f8SJason M. Bills addMessageToErrorJson( 254f12894f8SJason M. Bills res.jsonValue, 255f12894f8SJason M. Bills nlohmann::json{ 256f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 257cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceAtUriUnauthorized"}, 258f4c4dcf4SKowalski, Kamil {"Message", "While accessing the resource at " + arg1 + 2591abe55efSEd Tanous ", the service received an authorization error " + 2601abe55efSEd Tanous arg2 + "."}, 261f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 262f12894f8SJason M. Bills {"Resolution", "Ensure that the appropriate access is provided for " 26366ac2b8cSJason M. Bills "the service in order for it to access the URI."}}); 264f4c4dcf4SKowalski, Kamil } 265f4c4dcf4SKowalski, Kamil 266f4c4dcf4SKowalski, Kamil /** 267f4c4dcf4SKowalski, Kamil * @internal 268f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterUnknown message into JSON 269f4c4dcf4SKowalski, Kamil * 270f4c4dcf4SKowalski, Kamil * See header file for more information 271f4c4dcf4SKowalski, Kamil * @endinternal 272f4c4dcf4SKowalski, Kamil */ 273f12894f8SJason M. Bills void actionParameterUnknown(crow::Response& res, const std::string& arg1, 2741abe55efSEd Tanous const std::string& arg2) 2751abe55efSEd Tanous { 276f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 277f12894f8SJason M. Bills addMessageToErrorJson( 278f12894f8SJason M. Bills res.jsonValue, 279f12894f8SJason M. Bills nlohmann::json{ 280f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 281cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterUnknown"}, 282f4c4dcf4SKowalski, Kamil {"Message", "The action " + arg1 + 283f12894f8SJason M. Bills " was submitted with the invalid parameter " + 284f12894f8SJason M. Bills arg2 + "."}, 285f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 28666ac2b8cSJason M. Bills {"Resolution", "Correct the invalid parameter and resubmit the " 28766ac2b8cSJason M. Bills "request if the operation failed."}}); 288f4c4dcf4SKowalski, Kamil } 289f4c4dcf4SKowalski, Kamil 290f4c4dcf4SKowalski, Kamil /** 291f4c4dcf4SKowalski, Kamil * @internal 292f4c4dcf4SKowalski, Kamil * @brief Formats ResourceCannotBeDeleted message into JSON 293f4c4dcf4SKowalski, Kamil * 294f4c4dcf4SKowalski, Kamil * See header file for more information 295f4c4dcf4SKowalski, Kamil * @endinternal 296f4c4dcf4SKowalski, Kamil */ 297f12894f8SJason M. Bills void resourceCannotBeDeleted(crow::Response& res) 2981abe55efSEd Tanous { 299f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 300f12894f8SJason M. Bills addMessageToErrorJson( 301f12894f8SJason M. Bills res.jsonValue, 302f12894f8SJason M. Bills nlohmann::json{ 303f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 304cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceCannotBeDeleted"}, 305f12894f8SJason M. Bills {"Message", "The delete request failed because the resource " 30666ac2b8cSJason M. Bills "requested cannot be deleted."}, 307f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 308f12894f8SJason M. Bills {"Resolution", 309f12894f8SJason M. Bills "Do not attempt to delete a non-deletable resource."}}); 310f4c4dcf4SKowalski, Kamil } 311f4c4dcf4SKowalski, Kamil 312f4c4dcf4SKowalski, Kamil /** 313f4c4dcf4SKowalski, Kamil * @internal 314f4c4dcf4SKowalski, Kamil * @brief Formats PropertyDuplicate message into JSON 315f4c4dcf4SKowalski, Kamil * 316f4c4dcf4SKowalski, Kamil * See header file for more information 317f4c4dcf4SKowalski, Kamil * @endinternal 318f4c4dcf4SKowalski, Kamil */ 319f12894f8SJason M. Bills void propertyDuplicate(crow::Response& res, const std::string& arg1) 3201abe55efSEd Tanous { 321f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 322*a08b46ccSJason M. Bills addMessageToJson( 323f12894f8SJason M. Bills res.jsonValue, 324f12894f8SJason M. Bills nlohmann::json{ 325f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 326cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyDuplicate"}, 327f12894f8SJason M. Bills {"Message", 328f12894f8SJason M. Bills "The property " + arg1 + " was duplicated in the request."}, 329f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 33066ac2b8cSJason M. Bills {"Resolution", 33166ac2b8cSJason M. Bills "Remove the duplicate property from the request body and resubmit " 332*a08b46ccSJason M. Bills "the request if the operation failed."}}, 333*a08b46ccSJason M. Bills arg1); 334f4c4dcf4SKowalski, Kamil } 335f4c4dcf4SKowalski, Kamil 336f4c4dcf4SKowalski, Kamil /** 337f4c4dcf4SKowalski, Kamil * @internal 338f4c4dcf4SKowalski, Kamil * @brief Formats ServiceTemporarilyUnavailable message into JSON 339f4c4dcf4SKowalski, Kamil * 340f4c4dcf4SKowalski, Kamil * See header file for more information 341f4c4dcf4SKowalski, Kamil * @endinternal 342f4c4dcf4SKowalski, Kamil */ 343f12894f8SJason M. Bills void serviceTemporarilyUnavailable(crow::Response& res, const std::string& arg1) 3441abe55efSEd Tanous { 345f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 346f12894f8SJason M. Bills addMessageToErrorJson( 347f12894f8SJason M. Bills res.jsonValue, 348f12894f8SJason M. Bills nlohmann::json{ 349f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 350cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ServiceTemporarilyUnavailable"}, 3511abe55efSEd Tanous {"Message", "The service is temporarily unavailable. Retry in " + 3521abe55efSEd Tanous arg1 + " seconds."}, 353f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 354f12894f8SJason M. Bills {"Resolution", "Wait for the indicated retry duration and retry " 355f12894f8SJason M. Bills "the operation."}}); 356f4c4dcf4SKowalski, Kamil } 357f4c4dcf4SKowalski, Kamil 358f4c4dcf4SKowalski, Kamil /** 359f4c4dcf4SKowalski, Kamil * @internal 360f4c4dcf4SKowalski, Kamil * @brief Formats ResourceAlreadyExists message into JSON 361f4c4dcf4SKowalski, Kamil * 362f4c4dcf4SKowalski, Kamil * See header file for more information 363f4c4dcf4SKowalski, Kamil * @endinternal 364f4c4dcf4SKowalski, Kamil */ 365f12894f8SJason M. Bills void resourceAlreadyExists(crow::Response& res, const std::string& arg1, 366f12894f8SJason M. Bills const std::string& arg2, const std::string& arg3) 3671abe55efSEd Tanous { 368f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 369*a08b46ccSJason M. Bills addMessageToJson( 370f12894f8SJason M. Bills res.jsonValue, 371f12894f8SJason M. Bills nlohmann::json{ 372f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 373cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceAlreadyExists"}, 374f4c4dcf4SKowalski, Kamil {"Message", "The requested resource of type " + arg1 + 3751abe55efSEd Tanous " with the property " + arg2 + " with the value " + 3761abe55efSEd Tanous arg3 + " already exists."}, 377f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 378f12894f8SJason M. Bills {"Resolution", "Do not repeat the create operation as the resource " 379*a08b46ccSJason M. Bills "has already been created."}}, 380*a08b46ccSJason M. Bills arg2); 381f4c4dcf4SKowalski, Kamil } 382f4c4dcf4SKowalski, Kamil 383f4c4dcf4SKowalski, Kamil /** 384f4c4dcf4SKowalski, Kamil * @internal 385f4c4dcf4SKowalski, Kamil * @brief Formats AccountForSessionNoLongerExists message into JSON 386f4c4dcf4SKowalski, Kamil * 387f4c4dcf4SKowalski, Kamil * See header file for more information 388f4c4dcf4SKowalski, Kamil * @endinternal 389f4c4dcf4SKowalski, Kamil */ 390*a08b46ccSJason M. Bills void accountForSessionNoLongerExists(crow::Response& res) 3911abe55efSEd Tanous { 392f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 393*a08b46ccSJason M. Bills addMessageToErrorJson( 394f12894f8SJason M. Bills res.jsonValue, 395f12894f8SJason M. Bills nlohmann::json{ 396f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 397cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccountForSessionNoLongerExists"}, 3981abe55efSEd Tanous {"Message", "The account for the current session has been removed, " 39966ac2b8cSJason M. Bills "thus the current session has been removed as well."}, 400f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 401*a08b46ccSJason M. Bills {"Resolution", "Attempt to connect with a valid account."}}); 402f4c4dcf4SKowalski, Kamil } 403f4c4dcf4SKowalski, Kamil 404f4c4dcf4SKowalski, Kamil /** 405f4c4dcf4SKowalski, Kamil * @internal 406f4c4dcf4SKowalski, Kamil * @brief Formats CreateFailedMissingReqProperties message into JSON 407f4c4dcf4SKowalski, Kamil * 408f4c4dcf4SKowalski, Kamil * See header file for more information 409f4c4dcf4SKowalski, Kamil * @endinternal 410f4c4dcf4SKowalski, Kamil */ 411f12894f8SJason M. Bills void createFailedMissingReqProperties(crow::Response& res, 412f12894f8SJason M. Bills const std::string& arg1) 4131abe55efSEd Tanous { 414f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 415*a08b46ccSJason M. Bills addMessageToJson( 416f12894f8SJason M. Bills res.jsonValue, 417f12894f8SJason M. Bills nlohmann::json{ 418f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 419cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.CreateFailedMissingReqProperties"}, 4201abe55efSEd Tanous {"Message", 421f12894f8SJason M. Bills "The create operation failed because the required property " + 422f12894f8SJason M. Bills arg1 + " was missing from the request."}, 423f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 424f4c4dcf4SKowalski, Kamil {"Resolution", 425f12894f8SJason M. Bills "Correct the body to include the required property with a valid " 426*a08b46ccSJason M. Bills "value and resubmit the request if the operation failed."}}, 427*a08b46ccSJason M. Bills arg1); 428f12894f8SJason M. Bills } 429f12894f8SJason M. Bills 430f12894f8SJason M. Bills /** 431f12894f8SJason M. Bills * @internal 432f12894f8SJason M. Bills * @brief Formats PropertyValueFormatError message into JSON for the specified 433f12894f8SJason M. Bills * property 434f12894f8SJason M. Bills * 435f12894f8SJason M. Bills * See header file for more information 436f12894f8SJason M. Bills * @endinternal 437f12894f8SJason M. Bills */ 438f12894f8SJason M. Bills void propertyValueFormatError(crow::Response& res, const std::string& arg1, 439*a08b46ccSJason M. Bills const std::string& arg2) 440f12894f8SJason M. Bills { 441f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 442f12894f8SJason M. Bills addMessageToJson( 443f12894f8SJason M. Bills res.jsonValue, 444f12894f8SJason M. Bills nlohmann::json{ 445f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 446cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyValueFormatError"}, 447f12894f8SJason M. Bills {"Message", 448f12894f8SJason M. Bills "The value " + arg1 + " for the property " + arg2 + 449f12894f8SJason M. Bills " is of a different format than the property can accept."}, 450f12894f8SJason M. Bills {"Severity", "Warning"}, 45166ac2b8cSJason M. Bills {"Resolution", 45266ac2b8cSJason M. Bills "Correct the value for the property in the request body and " 45366ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}, 454*a08b46ccSJason M. Bills arg2); 455f12894f8SJason M. Bills } 456f12894f8SJason M. Bills 457f12894f8SJason M. Bills /** 458f12894f8SJason M. Bills * @internal 459f12894f8SJason M. Bills * @brief Formats PropertyValueNotInList message into JSON for the specified 460f12894f8SJason M. Bills * property 461f12894f8SJason M. Bills * 462f12894f8SJason M. Bills * See header file for more information 463f12894f8SJason M. Bills * @endinternal 464f12894f8SJason M. Bills */ 465f12894f8SJason M. Bills void propertyValueNotInList(crow::Response& res, const std::string& arg1, 466*a08b46ccSJason M. Bills const std::string& arg2) 467f12894f8SJason M. Bills { 468f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 469f12894f8SJason M. Bills addMessageToJson( 470f12894f8SJason M. Bills res.jsonValue, 471f12894f8SJason M. Bills nlohmann::json{ 472f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 473cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyValueNotInList"}, 474f12894f8SJason M. Bills {"Message", "The value " + arg1 + " for the property " + arg2 + 475f12894f8SJason M. Bills " is not in the list of acceptable values."}, 476f12894f8SJason M. Bills {"Severity", "Warning"}, 477f12894f8SJason M. Bills {"Resolution", 478f12894f8SJason M. Bills "Choose a value from the enumeration list that the implementation " 47966ac2b8cSJason M. Bills "can support and resubmit the request if the operation failed."}}, 480*a08b46ccSJason M. Bills arg2); 481f4c4dcf4SKowalski, Kamil } 482f4c4dcf4SKowalski, Kamil 483f4c4dcf4SKowalski, Kamil /** 484f4c4dcf4SKowalski, Kamil * @internal 485f4c4dcf4SKowalski, Kamil * @brief Formats ResourceAtUriInUnknownFormat message into JSON 486f4c4dcf4SKowalski, Kamil * 487f4c4dcf4SKowalski, Kamil * See header file for more information 488f4c4dcf4SKowalski, Kamil * @endinternal 489f4c4dcf4SKowalski, Kamil */ 490f12894f8SJason M. Bills void resourceAtUriInUnknownFormat(crow::Response& res, const std::string& arg1) 4911abe55efSEd Tanous { 492f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 493f12894f8SJason M. Bills addMessageToErrorJson( 494f12894f8SJason M. Bills res.jsonValue, 495f12894f8SJason M. Bills nlohmann::json{ 496f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 497cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceAtUriInUnknownFormat"}, 498f4c4dcf4SKowalski, Kamil {"Message", "The resource at " + arg1 + 499f4c4dcf4SKowalski, Kamil " is in a format not recognized by the service."}, 500f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 501f12894f8SJason M. Bills {"Resolution", "Place an image or resource or file that is " 50266ac2b8cSJason M. Bills "recognized by the service at the URI."}}); 503f4c4dcf4SKowalski, Kamil } 504f4c4dcf4SKowalski, Kamil 505f4c4dcf4SKowalski, Kamil /** 506f4c4dcf4SKowalski, Kamil * @internal 507f4c4dcf4SKowalski, Kamil * @brief Formats ServiceInUnknownState message into JSON 508f4c4dcf4SKowalski, Kamil * 509f4c4dcf4SKowalski, Kamil * See header file for more information 510f4c4dcf4SKowalski, Kamil * @endinternal 511f4c4dcf4SKowalski, Kamil */ 512f12894f8SJason M. Bills void serviceInUnknownState(crow::Response& res) 5131abe55efSEd Tanous { 514f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 515f12894f8SJason M. Bills addMessageToErrorJson( 516f12894f8SJason M. Bills res.jsonValue, 517f12894f8SJason M. Bills nlohmann::json{ 518f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 519cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ServiceInUnknownState"}, 52066ac2b8cSJason M. Bills {"Message", 52166ac2b8cSJason M. Bills "The operation failed because the service is in an unknown state " 52266ac2b8cSJason M. Bills "and can no longer take incoming requests."}, 523f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 52466ac2b8cSJason M. Bills {"Resolution", "Restart the service and resubmit the request if " 52566ac2b8cSJason M. Bills "the operation failed."}}); 526f4c4dcf4SKowalski, Kamil } 527f4c4dcf4SKowalski, Kamil 528f4c4dcf4SKowalski, Kamil /** 529f4c4dcf4SKowalski, Kamil * @internal 530f4c4dcf4SKowalski, Kamil * @brief Formats EventSubscriptionLimitExceeded message into JSON 531f4c4dcf4SKowalski, Kamil * 532f4c4dcf4SKowalski, Kamil * See header file for more information 533f4c4dcf4SKowalski, Kamil * @endinternal 534f4c4dcf4SKowalski, Kamil */ 535f12894f8SJason M. Bills void eventSubscriptionLimitExceeded(crow::Response& res) 5361abe55efSEd Tanous { 537f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 538f12894f8SJason M. Bills addMessageToErrorJson( 539f12894f8SJason M. Bills res.jsonValue, 540f12894f8SJason M. Bills nlohmann::json{ 541f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 542cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.EventSubscriptionLimitExceeded"}, 543f4c4dcf4SKowalski, Kamil {"Message", 544f4c4dcf4SKowalski, Kamil "The event subscription failed due to the number of simultaneous " 545f4c4dcf4SKowalski, Kamil "subscriptions exceeding the limit of the implementation."}, 546f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 547f4c4dcf4SKowalski, Kamil {"Resolution", 548f12894f8SJason M. Bills "Reduce the number of other subscriptions before trying to " 54966ac2b8cSJason M. Bills "establish the event subscription or increase the limit of " 55066ac2b8cSJason M. Bills "simultaneous subscriptions (if supported)."}}); 551f4c4dcf4SKowalski, Kamil } 552f4c4dcf4SKowalski, Kamil 553f4c4dcf4SKowalski, Kamil /** 554f4c4dcf4SKowalski, Kamil * @internal 555f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterMissing message into JSON 556f4c4dcf4SKowalski, Kamil * 557f4c4dcf4SKowalski, Kamil * See header file for more information 558f4c4dcf4SKowalski, Kamil * @endinternal 559f4c4dcf4SKowalski, Kamil */ 560f12894f8SJason M. Bills void actionParameterMissing(crow::Response& res, const std::string& arg1, 5611abe55efSEd Tanous const std::string& arg2) 5621abe55efSEd Tanous { 563f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 564f12894f8SJason M. Bills addMessageToErrorJson( 565f12894f8SJason M. Bills res.jsonValue, 566f12894f8SJason M. Bills nlohmann::json{ 567f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 568cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterMissing"}, 569f12894f8SJason M. Bills {"Message", "The action " + arg1 + " requires the parameter " + 570f12894f8SJason M. Bills arg2 + " to be present in the request body."}, 571f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 572f12894f8SJason M. Bills {"Resolution", 57366ac2b8cSJason M. Bills "Supply the action with the required parameter in the request " 57466ac2b8cSJason M. Bills "body when the request is resubmitted."}}); 575f4c4dcf4SKowalski, Kamil } 576f4c4dcf4SKowalski, Kamil 577f4c4dcf4SKowalski, Kamil /** 578f4c4dcf4SKowalski, Kamil * @internal 579f4c4dcf4SKowalski, Kamil * @brief Formats StringValueTooLong message into JSON 580f4c4dcf4SKowalski, Kamil * 581f4c4dcf4SKowalski, Kamil * See header file for more information 582f4c4dcf4SKowalski, Kamil * @endinternal 583f4c4dcf4SKowalski, Kamil */ 584f12894f8SJason M. Bills void stringValueTooLong(crow::Response& res, const std::string& arg1, 585f12894f8SJason M. Bills const int& arg2) 5861abe55efSEd Tanous { 587f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 588f12894f8SJason M. Bills addMessageToErrorJson( 589f12894f8SJason M. Bills res.jsonValue, 590f12894f8SJason M. Bills nlohmann::json{ 591f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 592cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.StringValueTooLong"}, 593f4c4dcf4SKowalski, Kamil {"Message", "The string " + arg1 + " exceeds the length limit " + 594f4c4dcf4SKowalski, Kamil std::to_string(arg2) + "."}, 595f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 596f4c4dcf4SKowalski, Kamil {"Resolution", 597f12894f8SJason M. Bills "Resubmit the request with an appropriate string length."}}); 598f4c4dcf4SKowalski, Kamil } 599f4c4dcf4SKowalski, Kamil 600f4c4dcf4SKowalski, Kamil /** 601f4c4dcf4SKowalski, Kamil * @internal 602cc9139ecSJason M. Bills * @brief Formats SessionTerminated message into JSON 603cc9139ecSJason M. Bills * 604cc9139ecSJason M. Bills * See header file for more information 605cc9139ecSJason M. Bills * @endinternal 606cc9139ecSJason M. Bills */ 607cc9139ecSJason M. Bills void sessionTerminated(crow::Response& res) 608cc9139ecSJason M. Bills { 609cc9139ecSJason M. Bills res.result(boost::beast::http::status::ok); 610cc9139ecSJason M. Bills addMessageToJsonRoot( 611cc9139ecSJason M. Bills res.jsonValue, 612cc9139ecSJason M. Bills nlohmann::json{ 613cc9139ecSJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 614cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.SessionTerminated"}, 615cc9139ecSJason M. Bills {"Message", "The session was successfully terminated."}, 616cc9139ecSJason M. Bills {"Severity", "OK"}, 617cc9139ecSJason M. Bills {"Resolution", "No resolution is required."}}); 618cc9139ecSJason M. Bills } 619cc9139ecSJason M. Bills 620cc9139ecSJason M. Bills /** 621cc9139ecSJason M. Bills * @internal 622cc9139ecSJason M. Bills * @brief Formats ResourceTypeIncompatible message into JSON 623cc9139ecSJason M. Bills * 624cc9139ecSJason M. Bills * See header file for more information 625cc9139ecSJason M. Bills * @endinternal 626cc9139ecSJason M. Bills */ 627cc9139ecSJason M. Bills void resourceTypeIncompatible(crow::Response& res, const std::string& arg1, 628cc9139ecSJason M. Bills const std::string& arg2) 629cc9139ecSJason M. Bills { 630cc9139ecSJason M. Bills res.result(boost::beast::http::status::bad_request); 631cc9139ecSJason M. Bills addMessageToErrorJson( 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.ResourceTypeIncompatible"}, 636cc9139ecSJason M. Bills {"Message", "The @odata.type of the request body " + arg1 + 637cc9139ecSJason M. Bills " is incompatible with the @odata.type of the " 638cc9139ecSJason M. Bills "resource which is " + 639cc9139ecSJason M. Bills arg2 + "."}, 640cc9139ecSJason M. Bills {"Severity", "Critical"}, 641cc9139ecSJason M. Bills {"Resolution", "Resubmit the request with a payload compatible " 642cc9139ecSJason M. Bills "with the resource's schema."}}); 643cc9139ecSJason M. Bills } 644cc9139ecSJason M. Bills 645cc9139ecSJason M. Bills /** 646cc9139ecSJason M. Bills * @internal 647f12894f8SJason M. Bills * @brief Formats PropertyValueTypeError message into JSON for the specified 648f12894f8SJason M. Bills * property 649f12894f8SJason M. Bills * 650f12894f8SJason M. Bills * See header file for more information 651f12894f8SJason M. Bills * @endinternal 652f12894f8SJason M. Bills */ 653f12894f8SJason M. Bills void propertyValueTypeError(crow::Response& res, const std::string& arg1, 654*a08b46ccSJason M. Bills const std::string& arg2) 655f12894f8SJason M. Bills { 656f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 657f12894f8SJason M. Bills addMessageToJson( 658f12894f8SJason M. Bills res.jsonValue, 659f12894f8SJason M. Bills nlohmann::json{ 660f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 661cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyValueTypeError"}, 662f12894f8SJason M. Bills {"Message", 663f12894f8SJason M. Bills "The value " + arg1 + " for the property " + arg2 + 664f12894f8SJason M. Bills " is of a different type than the property can accept."}, 665f12894f8SJason M. Bills {"Severity", "Warning"}, 66666ac2b8cSJason M. Bills {"Resolution", 66766ac2b8cSJason M. Bills "Correct the value for the property in the request body and " 66866ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}, 669*a08b46ccSJason M. Bills arg2); 670f4c4dcf4SKowalski, Kamil } 671f4c4dcf4SKowalski, Kamil 672f4c4dcf4SKowalski, Kamil /** 673f4c4dcf4SKowalski, Kamil * @internal 674f4c4dcf4SKowalski, Kamil * @brief Formats ResourceNotFound message into JSON 675f4c4dcf4SKowalski, Kamil * 676f4c4dcf4SKowalski, Kamil * See header file for more information 677f4c4dcf4SKowalski, Kamil * @endinternal 678f4c4dcf4SKowalski, Kamil */ 679f12894f8SJason M. Bills void resourceNotFound(crow::Response& res, const std::string& arg1, 6801abe55efSEd Tanous const std::string& arg2) 6811abe55efSEd Tanous { 682f12894f8SJason M. Bills res.result(boost::beast::http::status::not_found); 683f12894f8SJason M. Bills addMessageToErrorJson( 684f12894f8SJason M. Bills res.jsonValue, 685f12894f8SJason M. Bills nlohmann::json{ 686f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 687cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceNotFound"}, 6881abe55efSEd Tanous {"Message", "The requested resource of type " + arg1 + " named " + 6891abe55efSEd Tanous arg2 + " was not found."}, 690f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 691f4c4dcf4SKowalski, Kamil {"Resolution", 692f12894f8SJason M. Bills "Provide a valid resource identifier and resubmit the request."}}); 693f4c4dcf4SKowalski, Kamil } 694f4c4dcf4SKowalski, Kamil 695f4c4dcf4SKowalski, Kamil /** 696f4c4dcf4SKowalski, Kamil * @internal 697f4c4dcf4SKowalski, Kamil * @brief Formats CouldNotEstablishConnection message into JSON 698f4c4dcf4SKowalski, Kamil * 699f4c4dcf4SKowalski, Kamil * See header file for more information 700f4c4dcf4SKowalski, Kamil * @endinternal 701f4c4dcf4SKowalski, Kamil */ 702f12894f8SJason M. Bills void couldNotEstablishConnection(crow::Response& res, const std::string& arg1) 7031abe55efSEd Tanous { 704f12894f8SJason M. Bills res.result(boost::beast::http::status::not_found); 705f12894f8SJason M. Bills addMessageToErrorJson( 706f12894f8SJason M. Bills res.jsonValue, 707f12894f8SJason M. Bills nlohmann::json{ 708f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 709cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.CouldNotEstablishConnection"}, 7101abe55efSEd Tanous {"Message", 711f12894f8SJason M. Bills "The service failed to establish a Connection with the URI " + 712f12894f8SJason M. Bills arg1 + "."}, 713f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 71466ac2b8cSJason M. Bills {"Resolution", 71566ac2b8cSJason M. Bills "Ensure that the URI contains a valid and reachable node name, " 71666ac2b8cSJason M. Bills "protocol information and other URI components."}}); 717f4c4dcf4SKowalski, Kamil } 718f4c4dcf4SKowalski, Kamil 719f4c4dcf4SKowalski, Kamil /** 720f4c4dcf4SKowalski, Kamil * @internal 721f12894f8SJason M. Bills * @brief Formats PropertyNotWritable message into JSON for the specified 722f12894f8SJason M. Bills * property 723f12894f8SJason M. Bills * 724f12894f8SJason M. Bills * See header file for more information 725f12894f8SJason M. Bills * @endinternal 726f12894f8SJason M. Bills */ 727*a08b46ccSJason M. Bills void propertyNotWritable(crow::Response& res, const std::string& arg1) 728f12894f8SJason M. Bills { 729f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 730f12894f8SJason M. Bills addMessageToJson( 731f12894f8SJason M. Bills res.jsonValue, 732f12894f8SJason M. Bills nlohmann::json{ 733f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 734cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyNotWritable"}, 735f12894f8SJason M. Bills {"Message", 736f12894f8SJason M. Bills "The property " + arg1 + 737f12894f8SJason M. Bills " is a read only property and cannot be assigned a value."}, 738f12894f8SJason M. Bills {"Severity", "Warning"}, 73966ac2b8cSJason M. Bills {"Resolution", "Remove the property from the request body and " 74066ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}, 741*a08b46ccSJason M. Bills arg1); 742f4c4dcf4SKowalski, Kamil } 743f4c4dcf4SKowalski, Kamil 744f4c4dcf4SKowalski, Kamil /** 745f4c4dcf4SKowalski, Kamil * @internal 746f4c4dcf4SKowalski, Kamil * @brief Formats QueryParameterValueTypeError message into JSON 747f4c4dcf4SKowalski, Kamil * 748f4c4dcf4SKowalski, Kamil * See header file for more information 749f4c4dcf4SKowalski, Kamil * @endinternal 750f4c4dcf4SKowalski, Kamil */ 751f12894f8SJason M. Bills void queryParameterValueTypeError(crow::Response& res, const std::string& arg1, 7521abe55efSEd Tanous const std::string& arg2) 7531abe55efSEd Tanous { 754f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 755f12894f8SJason M. Bills addMessageToErrorJson( 756f12894f8SJason M. Bills res.jsonValue, 757f12894f8SJason M. Bills nlohmann::json{ 758f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 759cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.QueryParameterValueTypeError"}, 7601abe55efSEd Tanous {"Message", 7611abe55efSEd Tanous "The value " + arg1 + " for the query parameter " + arg2 + 762f4c4dcf4SKowalski, Kamil " is of a different type than the parameter can accept."}, 763f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 76466ac2b8cSJason M. Bills {"Resolution", 76566ac2b8cSJason M. Bills "Correct the value for the query parameter in the request and " 76666ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}); 767f4c4dcf4SKowalski, Kamil } 768f4c4dcf4SKowalski, Kamil 769f4c4dcf4SKowalski, Kamil /** 770f4c4dcf4SKowalski, Kamil * @internal 771f4c4dcf4SKowalski, Kamil * @brief Formats ServiceShuttingDown message into JSON 772f4c4dcf4SKowalski, Kamil * 773f4c4dcf4SKowalski, Kamil * See header file for more information 774f4c4dcf4SKowalski, Kamil * @endinternal 775f4c4dcf4SKowalski, Kamil */ 776f12894f8SJason M. Bills void serviceShuttingDown(crow::Response& res) 7771abe55efSEd Tanous { 778f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 779f12894f8SJason M. Bills addMessageToErrorJson( 780f12894f8SJason M. Bills res.jsonValue, 781f12894f8SJason M. Bills nlohmann::json{ 782f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 783cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ServiceShuttingDown"}, 784f12894f8SJason M. Bills {"Message", "The operation failed because the service is shutting " 78566ac2b8cSJason M. Bills "down and can no longer take incoming requests."}, 786f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 78766ac2b8cSJason M. Bills {"Resolution", "When the service becomes available, resubmit the " 78866ac2b8cSJason M. Bills "request if the operation failed."}}); 789f4c4dcf4SKowalski, Kamil } 790f4c4dcf4SKowalski, Kamil 791f4c4dcf4SKowalski, Kamil /** 792f4c4dcf4SKowalski, Kamil * @internal 793f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterDuplicate message into JSON 794f4c4dcf4SKowalski, Kamil * 795f4c4dcf4SKowalski, Kamil * See header file for more information 796f4c4dcf4SKowalski, Kamil * @endinternal 797f4c4dcf4SKowalski, Kamil */ 798f12894f8SJason M. Bills void actionParameterDuplicate(crow::Response& res, const std::string& arg1, 7991abe55efSEd Tanous const std::string& arg2) 8001abe55efSEd Tanous { 801f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 802f12894f8SJason M. Bills addMessageToErrorJson( 803f12894f8SJason M. Bills res.jsonValue, 804f12894f8SJason M. Bills nlohmann::json{ 805f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 806cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterDuplicate"}, 807f4c4dcf4SKowalski, Kamil {"Message", 808f4c4dcf4SKowalski, Kamil "The action " + arg1 + 8091abe55efSEd Tanous " was submitted with more than one value for the parameter " + 8101abe55efSEd Tanous arg2 + "."}, 811f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 81266ac2b8cSJason M. Bills {"Resolution", 81366ac2b8cSJason M. Bills "Resubmit the action with only one instance of the parameter in " 81466ac2b8cSJason M. Bills "the request body if the operation failed."}}); 815f4c4dcf4SKowalski, Kamil } 816f4c4dcf4SKowalski, Kamil 817f4c4dcf4SKowalski, Kamil /** 818f4c4dcf4SKowalski, Kamil * @internal 819f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterNotSupported message into JSON 820f4c4dcf4SKowalski, Kamil * 821f4c4dcf4SKowalski, Kamil * See header file for more information 822f4c4dcf4SKowalski, Kamil * @endinternal 823f4c4dcf4SKowalski, Kamil */ 824f12894f8SJason M. Bills void actionParameterNotSupported(crow::Response& res, const std::string& arg1, 8251abe55efSEd Tanous const std::string& arg2) 8261abe55efSEd Tanous { 827f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 828f12894f8SJason M. Bills addMessageToErrorJson( 829f12894f8SJason M. Bills res.jsonValue, 830f12894f8SJason M. Bills nlohmann::json{ 831f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 832cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterNotSupported"}, 833f4c4dcf4SKowalski, Kamil {"Message", "The parameter " + arg1 + " for the action " + arg2 + 834f4c4dcf4SKowalski, Kamil " is not supported on the target resource."}, 835f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 83666ac2b8cSJason M. Bills {"Resolution", "Remove the parameter supplied and resubmit the " 83766ac2b8cSJason M. Bills "request if the operation failed."}}); 838f4c4dcf4SKowalski, Kamil } 839f4c4dcf4SKowalski, Kamil 840f4c4dcf4SKowalski, Kamil /** 841f4c4dcf4SKowalski, Kamil * @internal 842f4c4dcf4SKowalski, Kamil * @brief Formats SourceDoesNotSupportProtocol message into JSON 843f4c4dcf4SKowalski, Kamil * 844f4c4dcf4SKowalski, Kamil * See header file for more information 845f4c4dcf4SKowalski, Kamil * @endinternal 846f4c4dcf4SKowalski, Kamil */ 847f12894f8SJason M. Bills void sourceDoesNotSupportProtocol(crow::Response& res, const std::string& arg1, 8481abe55efSEd Tanous const std::string& arg2) 8491abe55efSEd Tanous { 850f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 851f12894f8SJason M. Bills addMessageToErrorJson( 852f12894f8SJason M. Bills res.jsonValue, 853f12894f8SJason M. Bills nlohmann::json{ 854f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 855cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.SourceDoesNotSupportProtocol"}, 85655c7b7a2SEd Tanous {"Message", "The other end of the Connection at " + arg1 + 8571abe55efSEd Tanous " does not support the specified protocol " + arg2 + 8581abe55efSEd Tanous "."}, 859f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 860f12894f8SJason M. Bills {"Resolution", "Change protocols or URIs. "}}); 861f4c4dcf4SKowalski, Kamil } 862f4c4dcf4SKowalski, Kamil 863f4c4dcf4SKowalski, Kamil /** 864f4c4dcf4SKowalski, Kamil * @internal 865f4c4dcf4SKowalski, Kamil * @brief Formats AccountRemoved message into JSON 866f4c4dcf4SKowalski, Kamil * 867f4c4dcf4SKowalski, Kamil * See header file for more information 868f4c4dcf4SKowalski, Kamil * @endinternal 869f4c4dcf4SKowalski, Kamil */ 870f12894f8SJason M. Bills void accountRemoved(crow::Response& res) 8711abe55efSEd Tanous { 872f12894f8SJason M. Bills res.result(boost::beast::http::status::ok); 873f12894f8SJason M. Bills addMessageToJsonRoot( 874f12894f8SJason M. Bills res.jsonValue, 875f12894f8SJason M. Bills nlohmann::json{ 876f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 877cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccountRemoved"}, 878f4c4dcf4SKowalski, Kamil {"Message", "The account was successfully removed."}, 879f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 880f12894f8SJason M. Bills {"Resolution", "No resolution is required."}}); 881f4c4dcf4SKowalski, Kamil } 882f4c4dcf4SKowalski, Kamil 883f4c4dcf4SKowalski, Kamil /** 884f4c4dcf4SKowalski, Kamil * @internal 885f4c4dcf4SKowalski, Kamil * @brief Formats AccessDenied message into JSON 886f4c4dcf4SKowalski, Kamil * 887f4c4dcf4SKowalski, Kamil * See header file for more information 888f4c4dcf4SKowalski, Kamil * @endinternal 889f4c4dcf4SKowalski, Kamil */ 890f12894f8SJason M. Bills void accessDenied(crow::Response& res, const std::string& arg1) 8911abe55efSEd Tanous { 892f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 893f12894f8SJason M. Bills addMessageToErrorJson( 894f12894f8SJason M. Bills res.jsonValue, 895f12894f8SJason M. Bills nlohmann::json{ 896f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 897cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccessDenied"}, 898f12894f8SJason M. Bills {"Message", "While attempting to establish a Connection to " + 899f12894f8SJason M. Bills arg1 + ", the service denied access."}, 900f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 90166ac2b8cSJason M. Bills {"Resolution", "Attempt to ensure that the URI is correct and that " 90266ac2b8cSJason M. Bills "the service has the appropriate credentials."}}); 903f4c4dcf4SKowalski, Kamil } 904f4c4dcf4SKowalski, Kamil 905f4c4dcf4SKowalski, Kamil /** 906f4c4dcf4SKowalski, Kamil * @internal 907f4c4dcf4SKowalski, Kamil * @brief Formats QueryNotSupported message into JSON 908f4c4dcf4SKowalski, Kamil * 909f4c4dcf4SKowalski, Kamil * See header file for more information 910f4c4dcf4SKowalski, Kamil * @endinternal 911f4c4dcf4SKowalski, Kamil */ 912f12894f8SJason M. Bills void queryNotSupported(crow::Response& res) 9131abe55efSEd Tanous { 914f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 915f12894f8SJason M. Bills addMessageToErrorJson( 916f12894f8SJason M. Bills res.jsonValue, 917f12894f8SJason M. Bills nlohmann::json{ 918f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 919cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.QueryNotSupported"}, 920f4c4dcf4SKowalski, Kamil {"Message", "Querying is not supported by the implementation."}, 921f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 92266ac2b8cSJason M. Bills {"Resolution", "Remove the query parameters and resubmit the " 92366ac2b8cSJason M. Bills "request if the operation failed."}}); 924f4c4dcf4SKowalski, Kamil } 925f4c4dcf4SKowalski, Kamil 926f4c4dcf4SKowalski, Kamil /** 927f4c4dcf4SKowalski, Kamil * @internal 928f4c4dcf4SKowalski, Kamil * @brief Formats CreateLimitReachedForResource message into JSON 929f4c4dcf4SKowalski, Kamil * 930f4c4dcf4SKowalski, Kamil * See header file for more information 931f4c4dcf4SKowalski, Kamil * @endinternal 932f4c4dcf4SKowalski, Kamil */ 933f12894f8SJason M. Bills void createLimitReachedForResource(crow::Response& res) 9341abe55efSEd Tanous { 935f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 936f12894f8SJason M. Bills addMessageToErrorJson( 937f12894f8SJason M. Bills res.jsonValue, 938f12894f8SJason M. Bills nlohmann::json{ 939f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 940cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.CreateLimitReachedForResource"}, 9411abe55efSEd Tanous {"Message", "The create operation failed because the resource has " 94266ac2b8cSJason M. Bills "reached the limit of possible resources."}, 943f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 94466ac2b8cSJason M. Bills {"Resolution", 94566ac2b8cSJason M. Bills "Either delete resources and resubmit the request if the " 94666ac2b8cSJason M. Bills "operation failed or do not resubmit the request."}}); 947f4c4dcf4SKowalski, Kamil } 948f4c4dcf4SKowalski, Kamil 949f4c4dcf4SKowalski, Kamil /** 950f4c4dcf4SKowalski, Kamil * @internal 951f4c4dcf4SKowalski, Kamil * @brief Formats GeneralError message into JSON 952f4c4dcf4SKowalski, Kamil * 953f4c4dcf4SKowalski, Kamil * See header file for more information 954f4c4dcf4SKowalski, Kamil * @endinternal 955f4c4dcf4SKowalski, Kamil */ 956f12894f8SJason M. Bills void generalError(crow::Response& res) 9571abe55efSEd Tanous { 958f12894f8SJason M. Bills res.result(boost::beast::http::status::internal_server_error); 959f12894f8SJason M. Bills addMessageToErrorJson( 960f12894f8SJason M. Bills res.jsonValue, 961f12894f8SJason M. Bills nlohmann::json{ 962f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 963cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.GeneralError"}, 964cc9139ecSJason M. Bills {"Message", "A general error has occurred. See Resolution for " 965cc9139ecSJason M. Bills "information on how to resolve the error."}, 966f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 967cc9139ecSJason M. Bills {"Resolution", "None."}}); 968f4c4dcf4SKowalski, Kamil } 969f4c4dcf4SKowalski, Kamil 970f4c4dcf4SKowalski, Kamil /** 971f4c4dcf4SKowalski, Kamil * @internal 972f4c4dcf4SKowalski, Kamil * @brief Formats Success message into JSON 973f4c4dcf4SKowalski, Kamil * 974f4c4dcf4SKowalski, Kamil * See header file for more information 975f4c4dcf4SKowalski, Kamil * @endinternal 976f4c4dcf4SKowalski, Kamil */ 977f12894f8SJason M. Bills void success(crow::Response& res) 9781abe55efSEd Tanous { 979f12894f8SJason M. Bills res.result(boost::beast::http::status::ok); 980f12894f8SJason M. Bills addMessageToJsonRoot( 981f12894f8SJason M. Bills res.jsonValue, 982f12894f8SJason M. Bills nlohmann::json{ 983f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 984cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.Success"}, 985f4c4dcf4SKowalski, Kamil {"Message", "Successfully Completed Request"}, 986f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 987f12894f8SJason M. Bills {"Resolution", "None"}}); 988f12894f8SJason M. Bills } 989f12894f8SJason M. Bills 990f12894f8SJason M. Bills /** 991f12894f8SJason M. Bills * @internal 992f4c4dcf4SKowalski, Kamil * @brief Formats Created message into JSON 993f4c4dcf4SKowalski, Kamil * 994f4c4dcf4SKowalski, Kamil * See header file for more information 995f4c4dcf4SKowalski, Kamil * @endinternal 996f4c4dcf4SKowalski, Kamil */ 997f12894f8SJason M. Bills void created(crow::Response& res) 9981abe55efSEd Tanous { 999f12894f8SJason M. Bills res.result(boost::beast::http::status::created); 1000f12894f8SJason M. Bills addMessageToJsonRoot( 1001f12894f8SJason M. Bills res.jsonValue, 1002f12894f8SJason M. Bills nlohmann::json{ 1003f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1004cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.Created"}, 1005f4c4dcf4SKowalski, Kamil {"Message", "The resource has been created successfully"}, 1006f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 1007f12894f8SJason M. Bills {"Resolution", "None"}}); 1008f4c4dcf4SKowalski, Kamil } 1009f4c4dcf4SKowalski, Kamil 1010f4c4dcf4SKowalski, Kamil /** 1011f4c4dcf4SKowalski, Kamil * @internal 1012cc9139ecSJason M. Bills * @brief Formats NoOperation message into JSON 1013cc9139ecSJason M. Bills * 1014cc9139ecSJason M. Bills * See header file for more information 1015cc9139ecSJason M. Bills * @endinternal 1016cc9139ecSJason M. Bills */ 1017cc9139ecSJason M. Bills void noOperation(crow::Response& res) 1018cc9139ecSJason M. Bills { 1019cc9139ecSJason M. Bills res.result(boost::beast::http::status::bad_request); 1020cc9139ecSJason M. Bills addMessageToErrorJson( 1021cc9139ecSJason M. Bills res.jsonValue, 1022cc9139ecSJason M. Bills nlohmann::json{ 1023cc9139ecSJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1024cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.NoOperation"}, 1025cc9139ecSJason M. Bills {"Message", "The request body submitted contain no data to act " 1026cc9139ecSJason M. Bills "upon and no changes to the resource took place."}, 1027cc9139ecSJason M. Bills {"Severity", "Warning"}, 1028cc9139ecSJason M. Bills {"Resolution", 1029cc9139ecSJason M. Bills "Add properties in the JSON object and resubmit the request."}}); 1030cc9139ecSJason M. Bills } 1031cc9139ecSJason M. Bills 1032cc9139ecSJason M. Bills /** 1033cc9139ecSJason M. Bills * @internal 1034f12894f8SJason M. Bills * @brief Formats PropertyUnknown message into JSON for the specified property 1035f12894f8SJason M. Bills * 1036f12894f8SJason M. Bills * See header file for more information 1037f12894f8SJason M. Bills * @endinternal 1038f12894f8SJason M. Bills */ 1039*a08b46ccSJason M. Bills void propertyUnknown(crow::Response& res, const std::string& arg1) 1040f12894f8SJason M. Bills { 1041f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1042f12894f8SJason M. Bills addMessageToJson( 1043f12894f8SJason M. Bills res.jsonValue, 1044f12894f8SJason M. Bills nlohmann::json{ 1045f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1046cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyUnknown"}, 1047f12894f8SJason M. Bills {"Message", 1048f12894f8SJason M. Bills "The property " + arg1 + 1049f12894f8SJason M. Bills " is not in the list of valid properties for the resource."}, 1050f12894f8SJason M. Bills {"Severity", "Warning"}, 105166ac2b8cSJason M. Bills {"Resolution", 105266ac2b8cSJason M. Bills "Remove the unknown property from the request body and resubmit " 105366ac2b8cSJason M. Bills "the request if the operation failed."}}, 1054*a08b46ccSJason M. Bills arg1); 1055f4c4dcf4SKowalski, Kamil } 1056f4c4dcf4SKowalski, Kamil 1057f4c4dcf4SKowalski, Kamil /** 1058f4c4dcf4SKowalski, Kamil * @internal 1059f4c4dcf4SKowalski, Kamil * @brief Formats NoValidSession message into JSON 1060f4c4dcf4SKowalski, Kamil * 1061f4c4dcf4SKowalski, Kamil * See header file for more information 1062f4c4dcf4SKowalski, Kamil * @endinternal 1063f4c4dcf4SKowalski, Kamil */ 1064f12894f8SJason M. Bills void noValidSession(crow::Response& res) 10651abe55efSEd Tanous { 1066f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 1067f12894f8SJason M. Bills addMessageToErrorJson( 1068f12894f8SJason M. Bills res.jsonValue, 1069f12894f8SJason M. Bills nlohmann::json{ 1070f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1071cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.NoValidSession"}, 1072f4c4dcf4SKowalski, Kamil {"Message", 1073f4c4dcf4SKowalski, Kamil "There is no valid session established with the implementation."}, 1074f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 10751abe55efSEd Tanous {"Resolution", 1076f12894f8SJason M. Bills "Establish as session before attempting any operations."}}); 1077f4c4dcf4SKowalski, Kamil } 1078f4c4dcf4SKowalski, Kamil 1079f4c4dcf4SKowalski, Kamil /** 1080f4c4dcf4SKowalski, Kamil * @internal 1081f4c4dcf4SKowalski, Kamil * @brief Formats InvalidObject message into JSON 1082f4c4dcf4SKowalski, Kamil * 1083f4c4dcf4SKowalski, Kamil * See header file for more information 1084f4c4dcf4SKowalski, Kamil * @endinternal 1085f4c4dcf4SKowalski, Kamil */ 1086f12894f8SJason M. Bills void invalidObject(crow::Response& res, const std::string& arg1) 10871abe55efSEd Tanous { 1088f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1089f12894f8SJason M. Bills addMessageToErrorJson( 1090f12894f8SJason M. Bills res.jsonValue, 1091f12894f8SJason M. Bills nlohmann::json{ 1092f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1093cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.InvalidObject"}, 1094f4c4dcf4SKowalski, Kamil {"Message", "The object at " + arg1 + " is invalid."}, 1095f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1096f12894f8SJason M. Bills {"Resolution", 109766ac2b8cSJason M. Bills "Either the object is malformed or the URI is not correct. " 109866ac2b8cSJason M. Bills "Correct the condition and resubmit the request if it failed."}}); 1099f4c4dcf4SKowalski, Kamil } 1100f4c4dcf4SKowalski, Kamil 1101f4c4dcf4SKowalski, Kamil /** 1102f4c4dcf4SKowalski, Kamil * @internal 1103f4c4dcf4SKowalski, Kamil * @brief Formats ResourceInStandby message into JSON 1104f4c4dcf4SKowalski, Kamil * 1105f4c4dcf4SKowalski, Kamil * See header file for more information 1106f4c4dcf4SKowalski, Kamil * @endinternal 1107f4c4dcf4SKowalski, Kamil */ 1108f12894f8SJason M. Bills void resourceInStandby(crow::Response& res) 11091abe55efSEd Tanous { 1110f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 1111f12894f8SJason M. Bills addMessageToErrorJson( 1112f12894f8SJason M. Bills res.jsonValue, 1113f12894f8SJason M. Bills nlohmann::json{ 1114f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1115cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceInStandby"}, 111666ac2b8cSJason M. Bills {"Message", "The request could not be performed because the " 111766ac2b8cSJason M. Bills "resource is in standby."}, 1118f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1119f12894f8SJason M. Bills {"Resolution", "Ensure that the resource is in the correct power " 112066ac2b8cSJason M. Bills "state and resubmit the request."}}); 1121f4c4dcf4SKowalski, Kamil } 1122f4c4dcf4SKowalski, Kamil 1123f4c4dcf4SKowalski, Kamil /** 1124f4c4dcf4SKowalski, Kamil * @internal 1125f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterValueTypeError message into JSON 1126f4c4dcf4SKowalski, Kamil * 1127f4c4dcf4SKowalski, Kamil * See header file for more information 1128f4c4dcf4SKowalski, Kamil * @endinternal 1129f4c4dcf4SKowalski, Kamil */ 1130f12894f8SJason M. Bills void actionParameterValueTypeError(crow::Response& res, const std::string& arg1, 1131f4c4dcf4SKowalski, Kamil const std::string& arg2, 11321abe55efSEd Tanous const std::string& arg3) 11331abe55efSEd Tanous { 1134f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1135f12894f8SJason M. Bills addMessageToErrorJson( 1136f12894f8SJason M. Bills res.jsonValue, 1137f12894f8SJason M. Bills nlohmann::json{ 1138f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1139cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterValueTypeError"}, 11401abe55efSEd Tanous {"Message", 11411abe55efSEd Tanous "The value " + arg1 + " for the parameter " + arg2 + 1142f4c4dcf4SKowalski, Kamil " in the action " + arg3 + 1143f4c4dcf4SKowalski, Kamil " is of a different type than the parameter can accept."}, 1144f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 114566ac2b8cSJason M. Bills {"Resolution", 114666ac2b8cSJason M. Bills "Correct the value for the parameter in the request body and " 114766ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}); 1148f4c4dcf4SKowalski, Kamil } 1149f4c4dcf4SKowalski, Kamil 1150f4c4dcf4SKowalski, Kamil /** 1151f4c4dcf4SKowalski, Kamil * @internal 1152f4c4dcf4SKowalski, Kamil * @brief Formats SessionLimitExceeded message into JSON 1153f4c4dcf4SKowalski, Kamil * 1154f4c4dcf4SKowalski, Kamil * See header file for more information 1155f4c4dcf4SKowalski, Kamil * @endinternal 1156f4c4dcf4SKowalski, Kamil */ 1157f12894f8SJason M. Bills void sessionLimitExceeded(crow::Response& res) 11581abe55efSEd Tanous { 1159f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 1160f12894f8SJason M. Bills addMessageToErrorJson( 1161f12894f8SJason M. Bills res.jsonValue, 1162f12894f8SJason M. Bills nlohmann::json{ 1163f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1164cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.SessionLimitExceeded"}, 1165f12894f8SJason M. Bills {"Message", "The session establishment failed due to the number of " 116666ac2b8cSJason M. Bills "simultaneous sessions exceeding the limit of the " 116766ac2b8cSJason M. Bills "implementation."}, 1168f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 116966ac2b8cSJason M. Bills {"Resolution", "Reduce the number of other sessions before trying " 117066ac2b8cSJason M. Bills "to establish the session or increase the limit of " 117166ac2b8cSJason M. Bills "simultaneous sessions (if supported)."}}); 1172f4c4dcf4SKowalski, Kamil } 1173f4c4dcf4SKowalski, Kamil 1174f4c4dcf4SKowalski, Kamil /** 1175f4c4dcf4SKowalski, Kamil * @internal 1176f4c4dcf4SKowalski, Kamil * @brief Formats ActionNotSupported message into JSON 1177f4c4dcf4SKowalski, Kamil * 1178f4c4dcf4SKowalski, Kamil * See header file for more information 1179f4c4dcf4SKowalski, Kamil * @endinternal 1180f4c4dcf4SKowalski, Kamil */ 1181f12894f8SJason M. Bills void actionNotSupported(crow::Response& res, const std::string& arg1) 11821abe55efSEd Tanous { 1183f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1184f12894f8SJason M. Bills addMessageToErrorJson( 1185f12894f8SJason M. Bills res.jsonValue, 1186f12894f8SJason M. Bills nlohmann::json{ 1187f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1188cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionNotSupported"}, 11891abe55efSEd Tanous {"Message", 11901abe55efSEd Tanous "The action " + arg1 + " is not supported by the resource."}, 1191f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1192f4c4dcf4SKowalski, Kamil {"Resolution", 1193f4c4dcf4SKowalski, Kamil "The action supplied cannot be resubmitted to the implementation. " 1194f12894f8SJason M. Bills " Perhaps the action was invalid, the wrong resource was the " 119566ac2b8cSJason M. Bills "target or the implementation documentation may be of " 119666ac2b8cSJason M. Bills "assistance."}}); 1197f4c4dcf4SKowalski, Kamil } 1198f4c4dcf4SKowalski, Kamil 1199f4c4dcf4SKowalski, Kamil /** 1200f4c4dcf4SKowalski, Kamil * @internal 1201f4c4dcf4SKowalski, Kamil * @brief Formats InvalidIndex message into JSON 1202f4c4dcf4SKowalski, Kamil * 1203f4c4dcf4SKowalski, Kamil * See header file for more information 1204f4c4dcf4SKowalski, Kamil * @endinternal 1205f4c4dcf4SKowalski, Kamil */ 1206f12894f8SJason M. Bills void invalidIndex(crow::Response& res, const int& arg1) 12071abe55efSEd Tanous { 1208f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1209f12894f8SJason M. Bills addMessageToErrorJson( 1210f12894f8SJason M. Bills res.jsonValue, 1211f12894f8SJason M. Bills nlohmann::json{ 1212f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1213cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.InvalidIndex"}, 121455c7b7a2SEd Tanous {"Message", "The index " + std::to_string(arg1) + 1215f4c4dcf4SKowalski, Kamil " is not a valid offset into the array."}, 1216f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1217f12894f8SJason M. Bills {"Resolution", "Verify the index value provided is within the " 1218f12894f8SJason M. Bills "bounds of the array."}}); 1219f4c4dcf4SKowalski, Kamil } 1220f4c4dcf4SKowalski, Kamil 1221f4c4dcf4SKowalski, Kamil /** 1222f4c4dcf4SKowalski, Kamil * @internal 1223f4c4dcf4SKowalski, Kamil * @brief Formats EmptyJSON message into JSON 1224f4c4dcf4SKowalski, Kamil * 1225f4c4dcf4SKowalski, Kamil * See header file for more information 1226f4c4dcf4SKowalski, Kamil * @endinternal 1227f4c4dcf4SKowalski, Kamil */ 1228f12894f8SJason M. Bills void emptyJSON(crow::Response& res) 12291abe55efSEd Tanous { 1230f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1231f12894f8SJason M. Bills addMessageToErrorJson( 1232f12894f8SJason M. Bills res.jsonValue, 1233f12894f8SJason M. Bills nlohmann::json{ 1234f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1235cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.EmptyJSON"}, 1236f12894f8SJason M. Bills {"Message", "The request body submitted contained an empty JSON " 123766ac2b8cSJason M. Bills "object and the service is unable to process it."}, 1238f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1239f4c4dcf4SKowalski, Kamil {"Resolution", 1240f12894f8SJason M. Bills "Add properties in the JSON object and resubmit the request."}}); 1241f4c4dcf4SKowalski, Kamil } 1242f4c4dcf4SKowalski, Kamil 1243f4c4dcf4SKowalski, Kamil /** 1244f4c4dcf4SKowalski, Kamil * @internal 1245f4c4dcf4SKowalski, Kamil * @brief Formats QueryNotSupportedOnResource message into JSON 1246f4c4dcf4SKowalski, Kamil * 1247f4c4dcf4SKowalski, Kamil * See header file for more information 1248f4c4dcf4SKowalski, Kamil * @endinternal 1249f4c4dcf4SKowalski, Kamil */ 1250f12894f8SJason M. Bills void queryNotSupportedOnResource(crow::Response& res) 12511abe55efSEd Tanous { 1252f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 1253f12894f8SJason M. Bills addMessageToErrorJson( 1254f12894f8SJason M. Bills res.jsonValue, 1255f12894f8SJason M. Bills nlohmann::json{ 1256f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1257cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.QueryNotSupportedOnResource"}, 1258f4c4dcf4SKowalski, Kamil {"Message", "Querying is not supported on the requested resource."}, 1259f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 126066ac2b8cSJason M. Bills {"Resolution", "Remove the query parameters and resubmit the " 126166ac2b8cSJason M. Bills "request if the operation failed."}}); 1262f4c4dcf4SKowalski, Kamil } 1263f4c4dcf4SKowalski, Kamil 1264f4c4dcf4SKowalski, Kamil /** 1265f4c4dcf4SKowalski, Kamil * @internal 1266f4c4dcf4SKowalski, Kamil * @brief Formats InsufficientPrivilege message into JSON 1267f4c4dcf4SKowalski, Kamil * 1268f4c4dcf4SKowalski, Kamil * See header file for more information 1269f4c4dcf4SKowalski, Kamil * @endinternal 1270f4c4dcf4SKowalski, Kamil */ 1271f12894f8SJason M. Bills void insufficientPrivilege(crow::Response& res) 12721abe55efSEd Tanous { 1273f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 1274f12894f8SJason M. Bills addMessageToErrorJson( 1275f12894f8SJason M. Bills res.jsonValue, 1276f12894f8SJason M. Bills nlohmann::json{ 1277f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1278cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.InsufficientPrivilege"}, 127966ac2b8cSJason M. Bills {"Message", "There are insufficient privileges for the account or " 128066ac2b8cSJason M. Bills "credentials associated with the current session to " 128166ac2b8cSJason M. Bills "perform the requested operation."}, 1282f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1283f4c4dcf4SKowalski, Kamil {"Resolution", 1284f12894f8SJason M. Bills "Either abandon the operation or change the associated access " 128566ac2b8cSJason M. Bills "rights and resubmit the request if the operation failed."}}); 1286f4c4dcf4SKowalski, Kamil } 1287f4c4dcf4SKowalski, Kamil 1288f4c4dcf4SKowalski, Kamil /** 1289f4c4dcf4SKowalski, Kamil * @internal 1290f4c4dcf4SKowalski, Kamil * @brief Formats PropertyValueModified message into JSON 1291f4c4dcf4SKowalski, Kamil * 1292f4c4dcf4SKowalski, Kamil * See header file for more information 1293f4c4dcf4SKowalski, Kamil * @endinternal 1294f4c4dcf4SKowalski, Kamil */ 1295f12894f8SJason M. Bills void propertyValueModified(crow::Response& res, const std::string& arg1, 1296*a08b46ccSJason M. Bills const std::string& arg2) 12971abe55efSEd Tanous { 1298f12894f8SJason M. Bills res.result(boost::beast::http::status::ok); 1299f12894f8SJason M. Bills addMessageToJson( 1300f12894f8SJason M. Bills res.jsonValue, 1301f12894f8SJason M. Bills nlohmann::json{ 1302f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1303cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyValueModified"}, 1304f12894f8SJason M. Bills {"Message", "The property " + arg1 + " was assigned the value " + 1305f12894f8SJason M. Bills arg2 + " due to modification by the service."}, 1306f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1307f12894f8SJason M. Bills {"Resolution", "No resolution is required."}}, 1308*a08b46ccSJason M. Bills arg1); 1309f4c4dcf4SKowalski, Kamil } 1310f4c4dcf4SKowalski, Kamil 1311f4c4dcf4SKowalski, Kamil /** 1312f4c4dcf4SKowalski, Kamil * @internal 1313f4c4dcf4SKowalski, Kamil * @brief Formats AccountNotModified message into JSON 1314f4c4dcf4SKowalski, Kamil * 1315f4c4dcf4SKowalski, Kamil * See header file for more information 1316f4c4dcf4SKowalski, Kamil * @endinternal 1317f4c4dcf4SKowalski, Kamil */ 1318f12894f8SJason M. Bills void accountNotModified(crow::Response& res) 13191abe55efSEd Tanous { 1320f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1321f12894f8SJason M. Bills addMessageToErrorJson( 1322f12894f8SJason M. Bills res.jsonValue, 1323f12894f8SJason M. Bills nlohmann::json{ 1324f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1325cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccountNotModified"}, 1326f4c4dcf4SKowalski, Kamil {"Message", "The account modification request failed."}, 1327f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1328f12894f8SJason M. Bills {"Resolution", "The modification may have failed due to permission " 132966ac2b8cSJason M. Bills "issues or issues with the request body."}}); 1330f4c4dcf4SKowalski, Kamil } 1331f4c4dcf4SKowalski, Kamil 1332f4c4dcf4SKowalski, Kamil /** 1333f4c4dcf4SKowalski, Kamil * @internal 1334f4c4dcf4SKowalski, Kamil * @brief Formats QueryParameterValueFormatError message into JSON 1335f4c4dcf4SKowalski, Kamil * 1336f4c4dcf4SKowalski, Kamil * See header file for more information 1337f4c4dcf4SKowalski, Kamil * @endinternal 1338f4c4dcf4SKowalski, Kamil */ 1339f12894f8SJason M. Bills void queryParameterValueFormatError(crow::Response& res, 1340f12894f8SJason M. Bills const std::string& arg1, 13411abe55efSEd Tanous const std::string& arg2) 13421abe55efSEd Tanous { 1343f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1344f12894f8SJason M. Bills addMessageToErrorJson( 1345f12894f8SJason M. Bills res.jsonValue, 1346f12894f8SJason M. Bills nlohmann::json{ 1347f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1348cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.QueryParameterValueFormatError"}, 1349f4c4dcf4SKowalski, Kamil {"Message", 1350f4c4dcf4SKowalski, Kamil "The value " + arg1 + " for the parameter " + arg2 + 1351f4c4dcf4SKowalski, Kamil " is of a different format than the parameter can accept."}, 1352f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 135366ac2b8cSJason M. Bills {"Resolution", 135466ac2b8cSJason M. Bills "Correct the value for the query parameter in the request and " 135566ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}); 1356f4c4dcf4SKowalski, Kamil } 1357f4c4dcf4SKowalski, Kamil 1358f4c4dcf4SKowalski, Kamil /** 1359f4c4dcf4SKowalski, Kamil * @internal 1360f12894f8SJason M. Bills * @brief Formats PropertyMissing message into JSON for the specified property 1361f12894f8SJason M. Bills * 1362f12894f8SJason M. Bills * See header file for more information 1363f12894f8SJason M. Bills * @endinternal 1364f12894f8SJason M. Bills */ 1365*a08b46ccSJason M. Bills void propertyMissing(crow::Response& res, const std::string& arg1) 1366f12894f8SJason M. Bills { 1367f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1368f12894f8SJason M. Bills addMessageToJson( 1369f12894f8SJason M. Bills res.jsonValue, 1370f12894f8SJason M. Bills nlohmann::json{ 1371f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1372cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyMissing"}, 1373f12894f8SJason M. Bills {"Message", "The property " + arg1 + 1374f12894f8SJason M. Bills " is a required property and must be included in " 1375f12894f8SJason M. Bills "the request."}, 1376f12894f8SJason M. Bills {"Severity", "Warning"}, 1377f12894f8SJason M. Bills {"Resolution", 137866ac2b8cSJason M. Bills "Ensure that the property is in the request body and has a valid " 137966ac2b8cSJason M. Bills "value and resubmit the request if the operation failed."}}, 1380*a08b46ccSJason M. Bills arg1); 1381f4c4dcf4SKowalski, Kamil } 1382f4c4dcf4SKowalski, Kamil 1383f4c4dcf4SKowalski, Kamil /** 1384f4c4dcf4SKowalski, Kamil * @internal 1385f4c4dcf4SKowalski, Kamil * @brief Formats ResourceExhaustion message into JSON 1386f4c4dcf4SKowalski, Kamil * 1387f4c4dcf4SKowalski, Kamil * See header file for more information 1388f4c4dcf4SKowalski, Kamil * @endinternal 1389f4c4dcf4SKowalski, Kamil */ 1390f12894f8SJason M. Bills void resourceExhaustion(crow::Response& res, const std::string& arg1) 13911abe55efSEd Tanous { 1392f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 1393f12894f8SJason M. Bills addMessageToErrorJson( 1394f12894f8SJason M. Bills res.jsonValue, 1395f12894f8SJason M. Bills nlohmann::json{ 1396f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1397cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceExhaustion"}, 1398d425c6f6SEd Tanous {"Message", "The resource " + arg1 + 139966ac2b8cSJason M. Bills " was unable to satisfy the request due to " 140066ac2b8cSJason M. Bills "unavailability of resources."}, 1401f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1402f12894f8SJason M. Bills {"Resolution", "Ensure that the resources are available and " 1403f12894f8SJason M. Bills "resubmit the request."}}); 1404f4c4dcf4SKowalski, Kamil } 1405f4c4dcf4SKowalski, Kamil 1406f4c4dcf4SKowalski, Kamil /** 1407f4c4dcf4SKowalski, Kamil * @internal 1408f4c4dcf4SKowalski, Kamil * @brief Formats AccountModified message into JSON 1409f4c4dcf4SKowalski, Kamil * 1410f4c4dcf4SKowalski, Kamil * See header file for more information 1411f4c4dcf4SKowalski, Kamil * @endinternal 1412f4c4dcf4SKowalski, Kamil */ 1413*a08b46ccSJason M. Bills void accountModified(crow::Response& res) 14141abe55efSEd Tanous { 1415f12894f8SJason M. Bills res.result(boost::beast::http::status::ok); 1416*a08b46ccSJason M. Bills addMessageToErrorJson( 1417f12894f8SJason M. Bills res.jsonValue, 1418f12894f8SJason M. Bills nlohmann::json{ 1419f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1420cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccountModified"}, 1421f4c4dcf4SKowalski, Kamil {"Message", "The account was successfully modified."}, 1422f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 1423*a08b46ccSJason M. Bills {"Resolution", "No resolution is required."}}); 1424f4c4dcf4SKowalski, Kamil } 1425f4c4dcf4SKowalski, Kamil 1426f4c4dcf4SKowalski, Kamil /** 1427f4c4dcf4SKowalski, Kamil * @internal 1428f4c4dcf4SKowalski, Kamil * @brief Formats QueryParameterOutOfRange message into JSON 1429f4c4dcf4SKowalski, Kamil * 1430f4c4dcf4SKowalski, Kamil * See header file for more information 1431f4c4dcf4SKowalski, Kamil * @endinternal 1432f4c4dcf4SKowalski, Kamil */ 1433f12894f8SJason M. Bills void queryParameterOutOfRange(crow::Response& res, const std::string& arg1, 1434f12894f8SJason M. Bills const std::string& arg2, const std::string& arg3) 14351abe55efSEd Tanous { 1436f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1437f12894f8SJason M. Bills addMessageToErrorJson( 1438f12894f8SJason M. Bills res.jsonValue, 1439f12894f8SJason M. Bills nlohmann::json{ 1440f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1441cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.QueryParameterOutOfRange"}, 1442f12894f8SJason M. Bills {"Message", "The value " + arg1 + " for the query parameter " + 1443f12894f8SJason M. Bills arg2 + " is out of range " + arg3 + "."}, 1444f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1445f4c4dcf4SKowalski, Kamil {"Resolution", 1446f12894f8SJason M. Bills "Reduce the value for the query parameter to a value that is " 144766ac2b8cSJason M. Bills "within range, such as a start or count value that is within " 144866ac2b8cSJason M. Bills "bounds of the number of resources in a collection or a page that " 144966ac2b8cSJason M. Bills "is within the range of valid pages."}}); 1450f4c4dcf4SKowalski, Kamil } 1451f4c4dcf4SKowalski, Kamil 1452f4c4dcf4SKowalski, Kamil } // namespace messages 1453f4c4dcf4SKowalski, Kamil 1454d425c6f6SEd Tanous } // namespace redfish 1455