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 */ 16*c94ad49bSEd Tanous #include <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 { 35c074230bSJason M. Bills auto messageIdIterator = message.find("MessageId"); 36c074230bSJason M. Bills if (messageIdIterator == 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 43c074230bSJason M. Bills auto messageFieldIterator = message.find("Message"); 44c074230bSJason M. Bills if (messageFieldIterator == message.end()) 451abe55efSEd Tanous { 461abe55efSEd Tanous BMCWEB_LOG_CRITICAL 471abe55efSEd Tanous << "Attempt to add error message without Message"; 48f4c4dcf4SKowalski, Kamil return; 49f4c4dcf4SKowalski, Kamil } 50c21055aaSEd Tanous error = {{"code", *messageIdIterator}, 51c21055aaSEd Tanous {"message", *messageFieldIterator}}; 521abe55efSEd Tanous } 531abe55efSEd Tanous else 541abe55efSEd Tanous { 55f4c4dcf4SKowalski, Kamil // More than 1 error occurred, so the message has to be generic 5655c7b7a2SEd Tanous error["code"] = std::string(messageVersionPrefix) + "GeneralError"; 57cc9139ecSJason M. Bills error["message"] = "A general error has occurred. See Resolution for " 58cc9139ecSJason M. Bills "information on how to resolve the error."; 59f4c4dcf4SKowalski, Kamil } 60f4c4dcf4SKowalski, Kamil 61f4c4dcf4SKowalski, Kamil // This check could technically be done in in the default construction 62f4c4dcf4SKowalski, Kamil // branch above, but because we need the pointer to the extended info field 63f4c4dcf4SKowalski, Kamil // anyway, it's more efficient to do it here. 64c074230bSJason M. Bills auto& extendedInfo = error[messages::messageAnnotation]; 65c074230bSJason M. Bills if (!extendedInfo.is_array()) 661abe55efSEd Tanous { 67c074230bSJason M. Bills extendedInfo = nlohmann::json::array(); 68f4c4dcf4SKowalski, Kamil } 69f4c4dcf4SKowalski, Kamil 70c074230bSJason M. Bills extendedInfo.push_back(message); 71f4c4dcf4SKowalski, Kamil } 72f4c4dcf4SKowalski, Kamil 73f12894f8SJason M. Bills static void addMessageToJsonRoot(nlohmann::json& target, 74f12894f8SJason M. Bills const nlohmann::json& message) 751abe55efSEd Tanous { 761abe55efSEd Tanous if (!target[messages::messageAnnotation].is_array()) 771abe55efSEd Tanous { 78f4c4dcf4SKowalski, Kamil // Force object to be an array 7955c7b7a2SEd Tanous target[messages::messageAnnotation] = nlohmann::json::array(); 80f4c4dcf4SKowalski, Kamil } 81f4c4dcf4SKowalski, Kamil 8255c7b7a2SEd Tanous target[messages::messageAnnotation].push_back(message); 83f4c4dcf4SKowalski, Kamil } 84f4c4dcf4SKowalski, Kamil 85f12894f8SJason M. Bills static void addMessageToJson(nlohmann::json& target, 86f12894f8SJason M. Bills const nlohmann::json& message, 871abe55efSEd Tanous const std::string& fieldPath) 881abe55efSEd Tanous { 89a08b46ccSJason M. Bills std::string extendedInfo(fieldPath + messages::messageAnnotation); 90f4c4dcf4SKowalski, Kamil 911abe55efSEd Tanous if (!target[extendedInfo].is_array()) 921abe55efSEd Tanous { 93f4c4dcf4SKowalski, Kamil // Force object to be an array 94f4c4dcf4SKowalski, Kamil target[extendedInfo] = nlohmann::json::array(); 95f4c4dcf4SKowalski, Kamil } 96f4c4dcf4SKowalski, Kamil 97f4c4dcf4SKowalski, Kamil // Object exists and it is an array so we can just push in the message 98f4c4dcf4SKowalski, Kamil target[extendedInfo].push_back(message); 99f4c4dcf4SKowalski, Kamil } 100f4c4dcf4SKowalski, Kamil 101f4c4dcf4SKowalski, Kamil /** 102f4c4dcf4SKowalski, Kamil * @internal 103f4c4dcf4SKowalski, Kamil * @brief Formats ResourceInUse message into JSON 104f4c4dcf4SKowalski, Kamil * 105f4c4dcf4SKowalski, Kamil * See header file for more information 106f4c4dcf4SKowalski, Kamil * @endinternal 107f4c4dcf4SKowalski, Kamil */ 108f12894f8SJason M. Bills void resourceInUse(crow::Response& res) 1091abe55efSEd Tanous { 110f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 111f12894f8SJason M. Bills addMessageToErrorJson( 112f12894f8SJason M. Bills res.jsonValue, 113f12894f8SJason M. Bills nlohmann::json{ 114f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 115cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceInUse"}, 11666ac2b8cSJason M. Bills {"Message", "The change to the requested resource failed because " 11766ac2b8cSJason M. Bills "the resource is in use or in transition."}, 11885659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 119f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 12066ac2b8cSJason M. Bills {"Resolution", "Remove the condition and resubmit the request if " 12166ac2b8cSJason M. Bills "the operation failed."}}); 122f4c4dcf4SKowalski, Kamil } 123f4c4dcf4SKowalski, Kamil 124f4c4dcf4SKowalski, Kamil /** 125f4c4dcf4SKowalski, Kamil * @internal 126f4c4dcf4SKowalski, Kamil * @brief Formats MalformedJSON message into JSON 127f4c4dcf4SKowalski, Kamil * 128f4c4dcf4SKowalski, Kamil * See header file for more information 129f4c4dcf4SKowalski, Kamil * @endinternal 130f4c4dcf4SKowalski, Kamil */ 131f12894f8SJason M. Bills void malformedJSON(crow::Response& res) 1321abe55efSEd Tanous { 133f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 134f12894f8SJason M. Bills addMessageToErrorJson( 135f12894f8SJason M. Bills res.jsonValue, 136f12894f8SJason M. Bills nlohmann::json{ 137f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 138cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.MalformedJSON"}, 13966ac2b8cSJason M. Bills {"Message", "The request body submitted was malformed JSON and " 14066ac2b8cSJason M. Bills "could not be parsed by the receiving service."}, 14185659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 142f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1431abe55efSEd Tanous {"Resolution", "Ensure that the request body is valid JSON and " 144f12894f8SJason M. Bills "resubmit the request."}}); 145f4c4dcf4SKowalski, Kamil } 146f4c4dcf4SKowalski, Kamil 147f4c4dcf4SKowalski, Kamil /** 148f4c4dcf4SKowalski, Kamil * @internal 149f4c4dcf4SKowalski, Kamil * @brief Formats ResourceMissingAtURI message into JSON 150f4c4dcf4SKowalski, Kamil * 151f4c4dcf4SKowalski, Kamil * See header file for more information 152f4c4dcf4SKowalski, Kamil * @endinternal 153f4c4dcf4SKowalski, Kamil */ 154f12894f8SJason M. Bills void resourceMissingAtURI(crow::Response& res, const std::string& arg1) 1551abe55efSEd Tanous { 156f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 157f12894f8SJason M. Bills addMessageToErrorJson( 158f12894f8SJason M. Bills res.jsonValue, 159f12894f8SJason M. Bills nlohmann::json{ 160f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 161cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceMissingAtURI"}, 162f4c4dcf4SKowalski, Kamil {"Message", "The resource at the URI " + arg1 + " was not found."}, 16385659adfSJason M. Bills {"MessageArgs", {arg1}}, 164f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 16566ac2b8cSJason M. Bills {"Resolution", "Place a valid resource at the URI or correct the " 16666ac2b8cSJason M. Bills "URI and resubmit the request."}}); 167f4c4dcf4SKowalski, Kamil } 168f4c4dcf4SKowalski, Kamil 169f4c4dcf4SKowalski, Kamil /** 170f4c4dcf4SKowalski, Kamil * @internal 171f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterValueFormatError message into JSON 172f4c4dcf4SKowalski, Kamil * 173f4c4dcf4SKowalski, Kamil * See header file for more information 174f4c4dcf4SKowalski, Kamil * @endinternal 175f4c4dcf4SKowalski, Kamil */ 176f12894f8SJason M. Bills void actionParameterValueFormatError(crow::Response& res, 177f12894f8SJason M. Bills const std::string& arg1, 178f4c4dcf4SKowalski, Kamil const std::string& arg2, 1791abe55efSEd Tanous const std::string& arg3) 1801abe55efSEd Tanous { 181f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 182f12894f8SJason M. Bills addMessageToErrorJson( 183f12894f8SJason M. Bills res.jsonValue, 184f12894f8SJason M. Bills nlohmann::json{ 185f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 186cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterValueFormatError"}, 187f4c4dcf4SKowalski, Kamil {"Message", 1881abe55efSEd Tanous "The value " + arg1 + " for the parameter " + arg2 + 1891abe55efSEd Tanous " in the action " + arg3 + 1901abe55efSEd Tanous " is of a different format than the parameter can accept."}, 19185659adfSJason M. Bills {"MessageArgs", {arg1, arg2, arg3}}, 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."}, 21585659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 216f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 2171abe55efSEd Tanous {"Resolution", "Resubmit the request. If the problem persists, " 21866ac2b8cSJason M. Bills "consider resetting the service."}}); 219f12894f8SJason M. Bills } 220f12894f8SJason M. Bills 221f12894f8SJason M. Bills /** 222f12894f8SJason M. Bills * @internal 223f4c4dcf4SKowalski, Kamil * @brief Formats UnrecognizedRequestBody message into JSON 224f4c4dcf4SKowalski, Kamil * 225f4c4dcf4SKowalski, Kamil * See header file for more information 226f4c4dcf4SKowalski, Kamil * @endinternal 227f4c4dcf4SKowalski, Kamil */ 228f12894f8SJason M. Bills void unrecognizedRequestBody(crow::Response& res) 2291abe55efSEd Tanous { 230f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 231f12894f8SJason M. Bills addMessageToErrorJson( 232f12894f8SJason M. Bills res.jsonValue, 233f12894f8SJason M. Bills nlohmann::json{ 234f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 235cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.UnrecognizedRequestBody"}, 236f12894f8SJason M. Bills {"Message", "The service detected a malformed request body that it " 23766ac2b8cSJason M. Bills "was unable to interpret."}, 23885659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 239f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 240f12894f8SJason M. Bills {"Resolution", "Correct the request body and resubmit the request " 241f12894f8SJason M. Bills "if it failed."}}); 242f4c4dcf4SKowalski, Kamil } 243f4c4dcf4SKowalski, Kamil 244f4c4dcf4SKowalski, Kamil /** 245f4c4dcf4SKowalski, Kamil * @internal 246f4c4dcf4SKowalski, Kamil * @brief Formats ResourceAtUriUnauthorized message into JSON 247f4c4dcf4SKowalski, Kamil * 248f4c4dcf4SKowalski, Kamil * See header file for more information 249f4c4dcf4SKowalski, Kamil * @endinternal 250f4c4dcf4SKowalski, Kamil */ 251f12894f8SJason M. Bills void resourceAtUriUnauthorized(crow::Response& res, const std::string& arg1, 2521abe55efSEd Tanous const std::string& arg2) 2531abe55efSEd Tanous { 254f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 255f12894f8SJason M. Bills addMessageToErrorJson( 256f12894f8SJason M. Bills res.jsonValue, 257f12894f8SJason M. Bills nlohmann::json{ 258f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 259cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceAtUriUnauthorized"}, 260f4c4dcf4SKowalski, Kamil {"Message", "While accessing the resource at " + arg1 + 2611abe55efSEd Tanous ", the service received an authorization error " + 2621abe55efSEd Tanous arg2 + "."}, 26385659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 264f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 265f12894f8SJason M. Bills {"Resolution", "Ensure that the appropriate access is provided for " 26666ac2b8cSJason M. Bills "the service in order for it to access the URI."}}); 267f4c4dcf4SKowalski, Kamil } 268f4c4dcf4SKowalski, Kamil 269f4c4dcf4SKowalski, Kamil /** 270f4c4dcf4SKowalski, Kamil * @internal 271f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterUnknown message into JSON 272f4c4dcf4SKowalski, Kamil * 273f4c4dcf4SKowalski, Kamil * See header file for more information 274f4c4dcf4SKowalski, Kamil * @endinternal 275f4c4dcf4SKowalski, Kamil */ 276f12894f8SJason M. Bills void actionParameterUnknown(crow::Response& res, const std::string& arg1, 2771abe55efSEd Tanous const std::string& arg2) 2781abe55efSEd Tanous { 279f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 280f12894f8SJason M. Bills addMessageToErrorJson( 281f12894f8SJason M. Bills res.jsonValue, 282f12894f8SJason M. Bills nlohmann::json{ 283f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 284cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterUnknown"}, 285f4c4dcf4SKowalski, Kamil {"Message", "The action " + arg1 + 286f12894f8SJason M. Bills " was submitted with the invalid parameter " + 287f12894f8SJason M. Bills arg2 + "."}, 28885659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 289f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 29066ac2b8cSJason M. Bills {"Resolution", "Correct the invalid parameter and resubmit the " 29166ac2b8cSJason M. Bills "request if the operation failed."}}); 292f4c4dcf4SKowalski, Kamil } 293f4c4dcf4SKowalski, Kamil 294f4c4dcf4SKowalski, Kamil /** 295f4c4dcf4SKowalski, Kamil * @internal 296f4c4dcf4SKowalski, Kamil * @brief Formats ResourceCannotBeDeleted message into JSON 297f4c4dcf4SKowalski, Kamil * 298f4c4dcf4SKowalski, Kamil * See header file for more information 299f4c4dcf4SKowalski, Kamil * @endinternal 300f4c4dcf4SKowalski, Kamil */ 301f12894f8SJason M. Bills void resourceCannotBeDeleted(crow::Response& res) 3021abe55efSEd Tanous { 303f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 304f12894f8SJason M. Bills addMessageToErrorJson( 305f12894f8SJason M. Bills res.jsonValue, 306f12894f8SJason M. Bills nlohmann::json{ 307f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 308cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceCannotBeDeleted"}, 309f12894f8SJason M. Bills {"Message", "The delete request failed because the resource " 31066ac2b8cSJason M. Bills "requested cannot be deleted."}, 31185659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 312f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 313f12894f8SJason M. Bills {"Resolution", 314f12894f8SJason M. Bills "Do not attempt to delete a non-deletable resource."}}); 315f4c4dcf4SKowalski, Kamil } 316f4c4dcf4SKowalski, Kamil 317f4c4dcf4SKowalski, Kamil /** 318f4c4dcf4SKowalski, Kamil * @internal 319f4c4dcf4SKowalski, Kamil * @brief Formats PropertyDuplicate message into JSON 320f4c4dcf4SKowalski, Kamil * 321f4c4dcf4SKowalski, Kamil * See header file for more information 322f4c4dcf4SKowalski, Kamil * @endinternal 323f4c4dcf4SKowalski, Kamil */ 324f12894f8SJason M. Bills void propertyDuplicate(crow::Response& res, const std::string& arg1) 3251abe55efSEd Tanous { 326f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 327a08b46ccSJason M. Bills addMessageToJson( 328f12894f8SJason M. Bills res.jsonValue, 329f12894f8SJason M. Bills nlohmann::json{ 330f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 331cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyDuplicate"}, 332f12894f8SJason M. Bills {"Message", 333f12894f8SJason M. Bills "The property " + arg1 + " was duplicated in the request."}, 33485659adfSJason M. Bills {"MessageArgs", {arg1}}, 335f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 33666ac2b8cSJason M. Bills {"Resolution", 33766ac2b8cSJason M. Bills "Remove the duplicate property from the request body and resubmit " 338a08b46ccSJason M. Bills "the request if the operation failed."}}, 339a08b46ccSJason M. Bills arg1); 340f4c4dcf4SKowalski, Kamil } 341f4c4dcf4SKowalski, Kamil 342f4c4dcf4SKowalski, Kamil /** 343f4c4dcf4SKowalski, Kamil * @internal 344f4c4dcf4SKowalski, Kamil * @brief Formats ServiceTemporarilyUnavailable message into JSON 345f4c4dcf4SKowalski, Kamil * 346f4c4dcf4SKowalski, Kamil * See header file for more information 347f4c4dcf4SKowalski, Kamil * @endinternal 348f4c4dcf4SKowalski, Kamil */ 349f12894f8SJason M. Bills void serviceTemporarilyUnavailable(crow::Response& res, const std::string& arg1) 3501abe55efSEd Tanous { 351f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 352f12894f8SJason M. Bills addMessageToErrorJson( 353f12894f8SJason M. Bills res.jsonValue, 354f12894f8SJason M. Bills nlohmann::json{ 355f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 356cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ServiceTemporarilyUnavailable"}, 3571abe55efSEd Tanous {"Message", "The service is temporarily unavailable. Retry in " + 3581abe55efSEd Tanous arg1 + " seconds."}, 35985659adfSJason M. Bills {"MessageArgs", {arg1}}, 360f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 361f12894f8SJason M. Bills {"Resolution", "Wait for the indicated retry duration and retry " 362f12894f8SJason M. Bills "the operation."}}); 363f4c4dcf4SKowalski, Kamil } 364f4c4dcf4SKowalski, Kamil 365f4c4dcf4SKowalski, Kamil /** 366f4c4dcf4SKowalski, Kamil * @internal 367f4c4dcf4SKowalski, Kamil * @brief Formats ResourceAlreadyExists message into JSON 368f4c4dcf4SKowalski, Kamil * 369f4c4dcf4SKowalski, Kamil * See header file for more information 370f4c4dcf4SKowalski, Kamil * @endinternal 371f4c4dcf4SKowalski, Kamil */ 372f12894f8SJason M. Bills void resourceAlreadyExists(crow::Response& res, const std::string& arg1, 373f12894f8SJason M. Bills const std::string& arg2, const std::string& arg3) 3741abe55efSEd Tanous { 375f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 376a08b46ccSJason M. Bills addMessageToJson( 377f12894f8SJason M. Bills res.jsonValue, 378f12894f8SJason M. Bills nlohmann::json{ 379f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 380cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceAlreadyExists"}, 381f4c4dcf4SKowalski, Kamil {"Message", "The requested resource of type " + arg1 + 3821abe55efSEd Tanous " with the property " + arg2 + " with the value " + 3831abe55efSEd Tanous arg3 + " already exists."}, 38485659adfSJason M. Bills {"MessageArgs", {arg1, arg2, arg3}}, 385f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 386f12894f8SJason M. Bills {"Resolution", "Do not repeat the create operation as the resource " 387a08b46ccSJason M. Bills "has already been created."}}, 388a08b46ccSJason M. Bills arg2); 389f4c4dcf4SKowalski, Kamil } 390f4c4dcf4SKowalski, Kamil 391f4c4dcf4SKowalski, Kamil /** 392f4c4dcf4SKowalski, Kamil * @internal 393f4c4dcf4SKowalski, Kamil * @brief Formats AccountForSessionNoLongerExists message into JSON 394f4c4dcf4SKowalski, Kamil * 395f4c4dcf4SKowalski, Kamil * See header file for more information 396f4c4dcf4SKowalski, Kamil * @endinternal 397f4c4dcf4SKowalski, Kamil */ 398a08b46ccSJason M. Bills void accountForSessionNoLongerExists(crow::Response& res) 3991abe55efSEd Tanous { 400f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 401a08b46ccSJason M. Bills addMessageToErrorJson( 402f12894f8SJason M. Bills res.jsonValue, 403f12894f8SJason M. Bills nlohmann::json{ 404f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 405cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccountForSessionNoLongerExists"}, 4061abe55efSEd Tanous {"Message", "The account for the current session has been removed, " 40766ac2b8cSJason M. Bills "thus the current session has been removed as well."}, 40885659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 409f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 410a08b46ccSJason M. Bills {"Resolution", "Attempt to connect with a valid account."}}); 411f4c4dcf4SKowalski, Kamil } 412f4c4dcf4SKowalski, Kamil 413f4c4dcf4SKowalski, Kamil /** 414f4c4dcf4SKowalski, Kamil * @internal 415f4c4dcf4SKowalski, Kamil * @brief Formats CreateFailedMissingReqProperties message into JSON 416f4c4dcf4SKowalski, Kamil * 417f4c4dcf4SKowalski, Kamil * See header file for more information 418f4c4dcf4SKowalski, Kamil * @endinternal 419f4c4dcf4SKowalski, Kamil */ 420f12894f8SJason M. Bills void createFailedMissingReqProperties(crow::Response& res, 421f12894f8SJason M. Bills const std::string& arg1) 4221abe55efSEd Tanous { 423f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 424a08b46ccSJason M. Bills addMessageToJson( 425f12894f8SJason M. Bills res.jsonValue, 426f12894f8SJason M. Bills nlohmann::json{ 427f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 428cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.CreateFailedMissingReqProperties"}, 4291abe55efSEd Tanous {"Message", 430f12894f8SJason M. Bills "The create operation failed because the required property " + 431f12894f8SJason M. Bills arg1 + " was missing from the request."}, 43285659adfSJason M. Bills {"MessageArgs", {arg1}}, 433f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 434f4c4dcf4SKowalski, Kamil {"Resolution", 435f12894f8SJason M. Bills "Correct the body to include the required property with a valid " 436a08b46ccSJason M. Bills "value and resubmit the request if the operation failed."}}, 437a08b46ccSJason M. Bills arg1); 438f12894f8SJason M. Bills } 439f12894f8SJason M. Bills 440f12894f8SJason M. Bills /** 441f12894f8SJason M. Bills * @internal 442f12894f8SJason M. Bills * @brief Formats PropertyValueFormatError message into JSON for the specified 443f12894f8SJason M. Bills * property 444f12894f8SJason M. Bills * 445f12894f8SJason M. Bills * See header file for more information 446f12894f8SJason M. Bills * @endinternal 447f12894f8SJason M. Bills */ 448f12894f8SJason M. Bills void propertyValueFormatError(crow::Response& res, const std::string& arg1, 449a08b46ccSJason M. Bills const std::string& arg2) 450f12894f8SJason M. Bills { 451f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 452f12894f8SJason M. Bills addMessageToJson( 453f12894f8SJason M. Bills res.jsonValue, 454f12894f8SJason M. Bills nlohmann::json{ 455f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 456cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyValueFormatError"}, 457f12894f8SJason M. Bills {"Message", 458f12894f8SJason M. Bills "The value " + arg1 + " for the property " + arg2 + 459f12894f8SJason M. Bills " is of a different format than the property can accept."}, 46085659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 461f12894f8SJason M. Bills {"Severity", "Warning"}, 46266ac2b8cSJason M. Bills {"Resolution", 46366ac2b8cSJason M. Bills "Correct the value for the property in the request body and " 46466ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}, 465a08b46ccSJason M. Bills arg2); 466f12894f8SJason M. Bills } 467f12894f8SJason M. Bills 468f12894f8SJason M. Bills /** 469f12894f8SJason M. Bills * @internal 470f12894f8SJason M. Bills * @brief Formats PropertyValueNotInList message into JSON for the specified 471f12894f8SJason M. Bills * property 472f12894f8SJason M. Bills * 473f12894f8SJason M. Bills * See header file for more information 474f12894f8SJason M. Bills * @endinternal 475f12894f8SJason M. Bills */ 476f12894f8SJason M. Bills void propertyValueNotInList(crow::Response& res, const std::string& arg1, 477a08b46ccSJason M. Bills const std::string& arg2) 478f12894f8SJason M. Bills { 479f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 480f12894f8SJason M. Bills addMessageToJson( 481f12894f8SJason M. Bills res.jsonValue, 482f12894f8SJason M. Bills nlohmann::json{ 483f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 484cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyValueNotInList"}, 485f12894f8SJason M. Bills {"Message", "The value " + arg1 + " for the property " + arg2 + 486f12894f8SJason M. Bills " is not in the list of acceptable values."}, 48785659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 488f12894f8SJason M. Bills {"Severity", "Warning"}, 489f12894f8SJason M. Bills {"Resolution", 490f12894f8SJason M. Bills "Choose a value from the enumeration list that the implementation " 49166ac2b8cSJason M. Bills "can support and resubmit the request if the operation failed."}}, 492a08b46ccSJason M. Bills arg2); 493f4c4dcf4SKowalski, Kamil } 494f4c4dcf4SKowalski, Kamil 495f4c4dcf4SKowalski, Kamil /** 496f4c4dcf4SKowalski, Kamil * @internal 497f4c4dcf4SKowalski, Kamil * @brief Formats ResourceAtUriInUnknownFormat message into JSON 498f4c4dcf4SKowalski, Kamil * 499f4c4dcf4SKowalski, Kamil * See header file for more information 500f4c4dcf4SKowalski, Kamil * @endinternal 501f4c4dcf4SKowalski, Kamil */ 502f12894f8SJason M. Bills void resourceAtUriInUnknownFormat(crow::Response& res, const std::string& arg1) 5031abe55efSEd Tanous { 504f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 505f12894f8SJason M. Bills addMessageToErrorJson( 506f12894f8SJason M. Bills res.jsonValue, 507f12894f8SJason M. Bills nlohmann::json{ 508f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 509cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceAtUriInUnknownFormat"}, 510f4c4dcf4SKowalski, Kamil {"Message", "The resource at " + arg1 + 511f4c4dcf4SKowalski, Kamil " is in a format not recognized by the service."}, 51285659adfSJason M. Bills {"MessageArgs", {arg1}}, 513f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 514f12894f8SJason M. Bills {"Resolution", "Place an image or resource or file that is " 51566ac2b8cSJason M. Bills "recognized by the service at the URI."}}); 516f4c4dcf4SKowalski, Kamil } 517f4c4dcf4SKowalski, Kamil 518f4c4dcf4SKowalski, Kamil /** 519f4c4dcf4SKowalski, Kamil * @internal 520f4c4dcf4SKowalski, Kamil * @brief Formats ServiceInUnknownState message into JSON 521f4c4dcf4SKowalski, Kamil * 522f4c4dcf4SKowalski, Kamil * See header file for more information 523f4c4dcf4SKowalski, Kamil * @endinternal 524f4c4dcf4SKowalski, Kamil */ 525f12894f8SJason M. Bills void serviceInUnknownState(crow::Response& res) 5261abe55efSEd Tanous { 527f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 528f12894f8SJason M. Bills addMessageToErrorJson( 529f12894f8SJason M. Bills res.jsonValue, 530f12894f8SJason M. Bills nlohmann::json{ 531f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 532cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ServiceInUnknownState"}, 53366ac2b8cSJason M. Bills {"Message", 53466ac2b8cSJason M. Bills "The operation failed because the service is in an unknown state " 53566ac2b8cSJason M. Bills "and can no longer take incoming requests."}, 53685659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 537f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 53866ac2b8cSJason M. Bills {"Resolution", "Restart the service and resubmit the request if " 53966ac2b8cSJason M. Bills "the operation failed."}}); 540f4c4dcf4SKowalski, Kamil } 541f4c4dcf4SKowalski, Kamil 542f4c4dcf4SKowalski, Kamil /** 543f4c4dcf4SKowalski, Kamil * @internal 544f4c4dcf4SKowalski, Kamil * @brief Formats EventSubscriptionLimitExceeded message into JSON 545f4c4dcf4SKowalski, Kamil * 546f4c4dcf4SKowalski, Kamil * See header file for more information 547f4c4dcf4SKowalski, Kamil * @endinternal 548f4c4dcf4SKowalski, Kamil */ 549f12894f8SJason M. Bills void eventSubscriptionLimitExceeded(crow::Response& res) 5501abe55efSEd Tanous { 551f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 552f12894f8SJason M. Bills addMessageToErrorJson( 553f12894f8SJason M. Bills res.jsonValue, 554f12894f8SJason M. Bills nlohmann::json{ 555f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 556cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.EventSubscriptionLimitExceeded"}, 557f4c4dcf4SKowalski, Kamil {"Message", 558f4c4dcf4SKowalski, Kamil "The event subscription failed due to the number of simultaneous " 559f4c4dcf4SKowalski, Kamil "subscriptions exceeding the limit of the implementation."}, 56085659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 561f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 562f4c4dcf4SKowalski, Kamil {"Resolution", 563f12894f8SJason M. Bills "Reduce the number of other subscriptions before trying to " 56466ac2b8cSJason M. Bills "establish the event subscription or increase the limit of " 56566ac2b8cSJason M. Bills "simultaneous subscriptions (if supported)."}}); 566f4c4dcf4SKowalski, Kamil } 567f4c4dcf4SKowalski, Kamil 568f4c4dcf4SKowalski, Kamil /** 569f4c4dcf4SKowalski, Kamil * @internal 570f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterMissing message into JSON 571f4c4dcf4SKowalski, Kamil * 572f4c4dcf4SKowalski, Kamil * See header file for more information 573f4c4dcf4SKowalski, Kamil * @endinternal 574f4c4dcf4SKowalski, Kamil */ 575f12894f8SJason M. Bills void actionParameterMissing(crow::Response& res, const std::string& arg1, 5761abe55efSEd Tanous const std::string& arg2) 5771abe55efSEd Tanous { 578f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 579f12894f8SJason M. Bills addMessageToErrorJson( 580f12894f8SJason M. Bills res.jsonValue, 581f12894f8SJason M. Bills nlohmann::json{ 582f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 583cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterMissing"}, 584f12894f8SJason M. Bills {"Message", "The action " + arg1 + " requires the parameter " + 585f12894f8SJason M. Bills arg2 + " to be present in the request body."}, 58685659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 587f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 588f12894f8SJason M. Bills {"Resolution", 58966ac2b8cSJason M. Bills "Supply the action with the required parameter in the request " 59066ac2b8cSJason M. Bills "body when the request is resubmitted."}}); 591f4c4dcf4SKowalski, Kamil } 592f4c4dcf4SKowalski, Kamil 593f4c4dcf4SKowalski, Kamil /** 594f4c4dcf4SKowalski, Kamil * @internal 595f4c4dcf4SKowalski, Kamil * @brief Formats StringValueTooLong message into JSON 596f4c4dcf4SKowalski, Kamil * 597f4c4dcf4SKowalski, Kamil * See header file for more information 598f4c4dcf4SKowalski, Kamil * @endinternal 599f4c4dcf4SKowalski, Kamil */ 600f12894f8SJason M. Bills void stringValueTooLong(crow::Response& res, const std::string& arg1, 601f12894f8SJason M. Bills const int& arg2) 6021abe55efSEd Tanous { 603f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 604f12894f8SJason M. Bills addMessageToErrorJson( 605f12894f8SJason M. Bills res.jsonValue, 606f12894f8SJason M. Bills nlohmann::json{ 607f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 608cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.StringValueTooLong"}, 609f4c4dcf4SKowalski, Kamil {"Message", "The string " + arg1 + " exceeds the length limit " + 610f4c4dcf4SKowalski, Kamil std::to_string(arg2) + "."}, 61185659adfSJason M. Bills {"MessageArgs", {arg1, std::to_string(arg2)}}, 612f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 613f4c4dcf4SKowalski, Kamil {"Resolution", 614f12894f8SJason M. Bills "Resubmit the request with an appropriate string length."}}); 615f4c4dcf4SKowalski, Kamil } 616f4c4dcf4SKowalski, Kamil 617f4c4dcf4SKowalski, Kamil /** 618f4c4dcf4SKowalski, Kamil * @internal 619cc9139ecSJason M. Bills * @brief Formats SessionTerminated message into JSON 620cc9139ecSJason M. Bills * 621cc9139ecSJason M. Bills * See header file for more information 622cc9139ecSJason M. Bills * @endinternal 623cc9139ecSJason M. Bills */ 624cc9139ecSJason M. Bills void sessionTerminated(crow::Response& res) 625cc9139ecSJason M. Bills { 626cc9139ecSJason M. Bills res.result(boost::beast::http::status::ok); 627cc9139ecSJason M. Bills addMessageToJsonRoot( 628cc9139ecSJason M. Bills res.jsonValue, 629cc9139ecSJason M. Bills nlohmann::json{ 630cc9139ecSJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 631cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.SessionTerminated"}, 632cc9139ecSJason M. Bills {"Message", "The session was successfully terminated."}, 63385659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 634cc9139ecSJason M. Bills {"Severity", "OK"}, 635cc9139ecSJason M. Bills {"Resolution", "No resolution is required."}}); 636cc9139ecSJason M. Bills } 637cc9139ecSJason M. Bills 638cc9139ecSJason M. Bills /** 639cc9139ecSJason M. Bills * @internal 640cc9139ecSJason M. Bills * @brief Formats ResourceTypeIncompatible message into JSON 641cc9139ecSJason M. Bills * 642cc9139ecSJason M. Bills * See header file for more information 643cc9139ecSJason M. Bills * @endinternal 644cc9139ecSJason M. Bills */ 645cc9139ecSJason M. Bills void resourceTypeIncompatible(crow::Response& res, const std::string& arg1, 646cc9139ecSJason M. Bills const std::string& arg2) 647cc9139ecSJason M. Bills { 648cc9139ecSJason M. Bills res.result(boost::beast::http::status::bad_request); 649cc9139ecSJason M. Bills addMessageToErrorJson( 650cc9139ecSJason M. Bills res.jsonValue, 651cc9139ecSJason M. Bills nlohmann::json{ 652cc9139ecSJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 653cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceTypeIncompatible"}, 654cc9139ecSJason M. Bills {"Message", "The @odata.type of the request body " + arg1 + 655cc9139ecSJason M. Bills " is incompatible with the @odata.type of the " 656cc9139ecSJason M. Bills "resource which is " + 657cc9139ecSJason M. Bills arg2 + "."}, 65885659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 659cc9139ecSJason M. Bills {"Severity", "Critical"}, 660cc9139ecSJason M. Bills {"Resolution", "Resubmit the request with a payload compatible " 661cc9139ecSJason M. Bills "with the resource's schema."}}); 662cc9139ecSJason M. Bills } 663cc9139ecSJason M. Bills 664cc9139ecSJason M. Bills /** 665cc9139ecSJason M. Bills * @internal 666f12894f8SJason M. Bills * @brief Formats PropertyValueTypeError message into JSON for the specified 667f12894f8SJason M. Bills * property 668f12894f8SJason M. Bills * 669f12894f8SJason M. Bills * See header file for more information 670f12894f8SJason M. Bills * @endinternal 671f12894f8SJason M. Bills */ 672f12894f8SJason M. Bills void propertyValueTypeError(crow::Response& res, const std::string& arg1, 673a08b46ccSJason M. Bills const std::string& arg2) 674f12894f8SJason M. Bills { 675f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 676f12894f8SJason M. Bills addMessageToJson( 677f12894f8SJason M. Bills res.jsonValue, 678f12894f8SJason M. Bills nlohmann::json{ 679f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 680cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyValueTypeError"}, 681f12894f8SJason M. Bills {"Message", 682f12894f8SJason M. Bills "The value " + arg1 + " for the property " + arg2 + 683f12894f8SJason M. Bills " is of a different type than the property can accept."}, 68485659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 685f12894f8SJason M. Bills {"Severity", "Warning"}, 68666ac2b8cSJason M. Bills {"Resolution", 68766ac2b8cSJason M. Bills "Correct the value for the property in the request body and " 68866ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}, 689a08b46ccSJason M. Bills arg2); 690f4c4dcf4SKowalski, Kamil } 691f4c4dcf4SKowalski, Kamil 692f4c4dcf4SKowalski, Kamil /** 693f4c4dcf4SKowalski, Kamil * @internal 694f4c4dcf4SKowalski, Kamil * @brief Formats ResourceNotFound message into JSON 695f4c4dcf4SKowalski, Kamil * 696f4c4dcf4SKowalski, Kamil * See header file for more information 697f4c4dcf4SKowalski, Kamil * @endinternal 698f4c4dcf4SKowalski, Kamil */ 699f12894f8SJason M. Bills void resourceNotFound(crow::Response& res, const std::string& arg1, 7001abe55efSEd Tanous const std::string& arg2) 7011abe55efSEd Tanous { 702f12894f8SJason M. Bills res.result(boost::beast::http::status::not_found); 703f12894f8SJason M. Bills addMessageToErrorJson( 704f12894f8SJason M. Bills res.jsonValue, 705f12894f8SJason M. Bills nlohmann::json{ 706f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 707cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceNotFound"}, 7081abe55efSEd Tanous {"Message", "The requested resource of type " + arg1 + " named " + 7091abe55efSEd Tanous arg2 + " was not found."}, 71085659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 711f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 712f4c4dcf4SKowalski, Kamil {"Resolution", 713f12894f8SJason M. Bills "Provide a valid resource identifier and resubmit the request."}}); 714f4c4dcf4SKowalski, Kamil } 715f4c4dcf4SKowalski, Kamil 716f4c4dcf4SKowalski, Kamil /** 717f4c4dcf4SKowalski, Kamil * @internal 718f4c4dcf4SKowalski, Kamil * @brief Formats CouldNotEstablishConnection message into JSON 719f4c4dcf4SKowalski, Kamil * 720f4c4dcf4SKowalski, Kamil * See header file for more information 721f4c4dcf4SKowalski, Kamil * @endinternal 722f4c4dcf4SKowalski, Kamil */ 723f12894f8SJason M. Bills void couldNotEstablishConnection(crow::Response& res, const std::string& arg1) 7241abe55efSEd Tanous { 725f12894f8SJason M. Bills res.result(boost::beast::http::status::not_found); 726f12894f8SJason M. Bills addMessageToErrorJson( 727f12894f8SJason M. Bills res.jsonValue, 728f12894f8SJason M. Bills nlohmann::json{ 729f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 730cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.CouldNotEstablishConnection"}, 7311abe55efSEd Tanous {"Message", 732f12894f8SJason M. Bills "The service failed to establish a Connection with the URI " + 733f12894f8SJason M. Bills arg1 + "."}, 73485659adfSJason M. Bills {"MessageArgs", {arg1}}, 735f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 73666ac2b8cSJason M. Bills {"Resolution", 73766ac2b8cSJason M. Bills "Ensure that the URI contains a valid and reachable node name, " 73866ac2b8cSJason M. Bills "protocol information and other URI components."}}); 739f4c4dcf4SKowalski, Kamil } 740f4c4dcf4SKowalski, Kamil 741f4c4dcf4SKowalski, Kamil /** 742f4c4dcf4SKowalski, Kamil * @internal 743f12894f8SJason M. Bills * @brief Formats PropertyNotWritable message into JSON for the specified 744f12894f8SJason M. Bills * property 745f12894f8SJason M. Bills * 746f12894f8SJason M. Bills * See header file for more information 747f12894f8SJason M. Bills * @endinternal 748f12894f8SJason M. Bills */ 749a08b46ccSJason M. Bills void propertyNotWritable(crow::Response& res, const std::string& arg1) 750f12894f8SJason M. Bills { 751f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 752f12894f8SJason M. Bills addMessageToJson( 753f12894f8SJason M. Bills res.jsonValue, 754f12894f8SJason M. Bills nlohmann::json{ 755f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 756cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyNotWritable"}, 757f12894f8SJason M. Bills {"Message", 758f12894f8SJason M. Bills "The property " + arg1 + 759f12894f8SJason M. Bills " is a read only property and cannot be assigned a value."}, 76085659adfSJason M. Bills {"MessageArgs", {arg1}}, 761f12894f8SJason M. Bills {"Severity", "Warning"}, 76266ac2b8cSJason M. Bills {"Resolution", "Remove the property from the request body and " 76366ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}, 764a08b46ccSJason M. Bills arg1); 765f4c4dcf4SKowalski, Kamil } 766f4c4dcf4SKowalski, Kamil 767f4c4dcf4SKowalski, Kamil /** 768f4c4dcf4SKowalski, Kamil * @internal 769f4c4dcf4SKowalski, Kamil * @brief Formats QueryParameterValueTypeError message into JSON 770f4c4dcf4SKowalski, Kamil * 771f4c4dcf4SKowalski, Kamil * See header file for more information 772f4c4dcf4SKowalski, Kamil * @endinternal 773f4c4dcf4SKowalski, Kamil */ 774f12894f8SJason M. Bills void queryParameterValueTypeError(crow::Response& res, const std::string& arg1, 7751abe55efSEd Tanous const std::string& arg2) 7761abe55efSEd Tanous { 777f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 778f12894f8SJason M. Bills addMessageToErrorJson( 779f12894f8SJason M. Bills res.jsonValue, 780f12894f8SJason M. Bills nlohmann::json{ 781f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 782cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.QueryParameterValueTypeError"}, 7831abe55efSEd Tanous {"Message", 7841abe55efSEd Tanous "The value " + arg1 + " for the query parameter " + arg2 + 785f4c4dcf4SKowalski, Kamil " is of a different type than the parameter can accept."}, 78685659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 787f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 78866ac2b8cSJason M. Bills {"Resolution", 78966ac2b8cSJason M. Bills "Correct the value for the query parameter in the request and " 79066ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}); 791f4c4dcf4SKowalski, Kamil } 792f4c4dcf4SKowalski, Kamil 793f4c4dcf4SKowalski, Kamil /** 794f4c4dcf4SKowalski, Kamil * @internal 795f4c4dcf4SKowalski, Kamil * @brief Formats ServiceShuttingDown message into JSON 796f4c4dcf4SKowalski, Kamil * 797f4c4dcf4SKowalski, Kamil * See header file for more information 798f4c4dcf4SKowalski, Kamil * @endinternal 799f4c4dcf4SKowalski, Kamil */ 800f12894f8SJason M. Bills void serviceShuttingDown(crow::Response& res) 8011abe55efSEd Tanous { 802f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 803f12894f8SJason M. Bills addMessageToErrorJson( 804f12894f8SJason M. Bills res.jsonValue, 805f12894f8SJason M. Bills nlohmann::json{ 806f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 807cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ServiceShuttingDown"}, 808f12894f8SJason M. Bills {"Message", "The operation failed because the service is shutting " 80966ac2b8cSJason M. Bills "down and can no longer take incoming requests."}, 81085659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 811f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 81266ac2b8cSJason M. Bills {"Resolution", "When the service becomes available, resubmit the " 81366ac2b8cSJason M. Bills "request if the operation failed."}}); 814f4c4dcf4SKowalski, Kamil } 815f4c4dcf4SKowalski, Kamil 816f4c4dcf4SKowalski, Kamil /** 817f4c4dcf4SKowalski, Kamil * @internal 818f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterDuplicate message into JSON 819f4c4dcf4SKowalski, Kamil * 820f4c4dcf4SKowalski, Kamil * See header file for more information 821f4c4dcf4SKowalski, Kamil * @endinternal 822f4c4dcf4SKowalski, Kamil */ 823f12894f8SJason M. Bills void actionParameterDuplicate(crow::Response& res, const std::string& arg1, 8241abe55efSEd Tanous const std::string& arg2) 8251abe55efSEd Tanous { 826f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 827f12894f8SJason M. Bills addMessageToErrorJson( 828f12894f8SJason M. Bills res.jsonValue, 829f12894f8SJason M. Bills nlohmann::json{ 830f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 831cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterDuplicate"}, 832f4c4dcf4SKowalski, Kamil {"Message", 833f4c4dcf4SKowalski, Kamil "The action " + arg1 + 8341abe55efSEd Tanous " was submitted with more than one value for the parameter " + 8351abe55efSEd Tanous arg2 + "."}, 83685659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 837f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 83866ac2b8cSJason M. Bills {"Resolution", 83966ac2b8cSJason M. Bills "Resubmit the action with only one instance of the parameter in " 84066ac2b8cSJason M. Bills "the request body if the operation failed."}}); 841f4c4dcf4SKowalski, Kamil } 842f4c4dcf4SKowalski, Kamil 843f4c4dcf4SKowalski, Kamil /** 844f4c4dcf4SKowalski, Kamil * @internal 845f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterNotSupported message into JSON 846f4c4dcf4SKowalski, Kamil * 847f4c4dcf4SKowalski, Kamil * See header file for more information 848f4c4dcf4SKowalski, Kamil * @endinternal 849f4c4dcf4SKowalski, Kamil */ 850f12894f8SJason M. Bills void actionParameterNotSupported(crow::Response& res, const std::string& arg1, 8511abe55efSEd Tanous const std::string& arg2) 8521abe55efSEd Tanous { 853f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 854f12894f8SJason M. Bills addMessageToErrorJson( 855f12894f8SJason M. Bills res.jsonValue, 856f12894f8SJason M. Bills nlohmann::json{ 857f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 858cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterNotSupported"}, 859f4c4dcf4SKowalski, Kamil {"Message", "The parameter " + arg1 + " for the action " + arg2 + 860f4c4dcf4SKowalski, Kamil " is not supported on the target resource."}, 86185659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 862f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 86366ac2b8cSJason M. Bills {"Resolution", "Remove the parameter supplied and resubmit the " 86466ac2b8cSJason M. Bills "request if the operation failed."}}); 865f4c4dcf4SKowalski, Kamil } 866f4c4dcf4SKowalski, Kamil 867f4c4dcf4SKowalski, Kamil /** 868f4c4dcf4SKowalski, Kamil * @internal 869f4c4dcf4SKowalski, Kamil * @brief Formats SourceDoesNotSupportProtocol message into JSON 870f4c4dcf4SKowalski, Kamil * 871f4c4dcf4SKowalski, Kamil * See header file for more information 872f4c4dcf4SKowalski, Kamil * @endinternal 873f4c4dcf4SKowalski, Kamil */ 874f12894f8SJason M. Bills void sourceDoesNotSupportProtocol(crow::Response& res, const std::string& arg1, 8751abe55efSEd Tanous const std::string& arg2) 8761abe55efSEd Tanous { 877f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 878f12894f8SJason M. Bills addMessageToErrorJson( 879f12894f8SJason M. Bills res.jsonValue, 880f12894f8SJason M. Bills nlohmann::json{ 881f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 882cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.SourceDoesNotSupportProtocol"}, 88355c7b7a2SEd Tanous {"Message", "The other end of the Connection at " + arg1 + 8841abe55efSEd Tanous " does not support the specified protocol " + arg2 + 8851abe55efSEd Tanous "."}, 88685659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 887f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 888f12894f8SJason M. Bills {"Resolution", "Change protocols or URIs. "}}); 889f4c4dcf4SKowalski, Kamil } 890f4c4dcf4SKowalski, Kamil 891f4c4dcf4SKowalski, Kamil /** 892f4c4dcf4SKowalski, Kamil * @internal 893f4c4dcf4SKowalski, Kamil * @brief Formats AccountRemoved message into JSON 894f4c4dcf4SKowalski, Kamil * 895f4c4dcf4SKowalski, Kamil * See header file for more information 896f4c4dcf4SKowalski, Kamil * @endinternal 897f4c4dcf4SKowalski, Kamil */ 898f12894f8SJason M. Bills void accountRemoved(crow::Response& res) 8991abe55efSEd Tanous { 900f12894f8SJason M. Bills res.result(boost::beast::http::status::ok); 901f12894f8SJason M. Bills addMessageToJsonRoot( 902f12894f8SJason M. Bills res.jsonValue, 903f12894f8SJason M. Bills nlohmann::json{ 904f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 905cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccountRemoved"}, 906f4c4dcf4SKowalski, Kamil {"Message", "The account was successfully removed."}, 90785659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 908f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 909f12894f8SJason M. Bills {"Resolution", "No resolution is required."}}); 910f4c4dcf4SKowalski, Kamil } 911f4c4dcf4SKowalski, Kamil 912f4c4dcf4SKowalski, Kamil /** 913f4c4dcf4SKowalski, Kamil * @internal 914f4c4dcf4SKowalski, Kamil * @brief Formats AccessDenied message into JSON 915f4c4dcf4SKowalski, Kamil * 916f4c4dcf4SKowalski, Kamil * See header file for more information 917f4c4dcf4SKowalski, Kamil * @endinternal 918f4c4dcf4SKowalski, Kamil */ 919f12894f8SJason M. Bills void accessDenied(crow::Response& res, const std::string& arg1) 9201abe55efSEd Tanous { 921f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 922f12894f8SJason M. Bills addMessageToErrorJson( 923f12894f8SJason M. Bills res.jsonValue, 924f12894f8SJason M. Bills nlohmann::json{ 925f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 926cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccessDenied"}, 927f12894f8SJason M. Bills {"Message", "While attempting to establish a Connection to " + 928f12894f8SJason M. Bills arg1 + ", the service denied access."}, 92985659adfSJason M. Bills {"MessageArgs", {arg1}}, 930f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 93166ac2b8cSJason M. Bills {"Resolution", "Attempt to ensure that the URI is correct and that " 93266ac2b8cSJason M. Bills "the service has the appropriate credentials."}}); 933f4c4dcf4SKowalski, Kamil } 934f4c4dcf4SKowalski, Kamil 935f4c4dcf4SKowalski, Kamil /** 936f4c4dcf4SKowalski, Kamil * @internal 937f4c4dcf4SKowalski, Kamil * @brief Formats QueryNotSupported message into JSON 938f4c4dcf4SKowalski, Kamil * 939f4c4dcf4SKowalski, Kamil * See header file for more information 940f4c4dcf4SKowalski, Kamil * @endinternal 941f4c4dcf4SKowalski, Kamil */ 942f12894f8SJason M. Bills void queryNotSupported(crow::Response& res) 9431abe55efSEd Tanous { 944f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 945f12894f8SJason M. Bills addMessageToErrorJson( 946f12894f8SJason M. Bills res.jsonValue, 947f12894f8SJason M. Bills nlohmann::json{ 948f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 949cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.QueryNotSupported"}, 950f4c4dcf4SKowalski, Kamil {"Message", "Querying is not supported by the implementation."}, 95185659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 952f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 95366ac2b8cSJason M. Bills {"Resolution", "Remove the query parameters and resubmit the " 95466ac2b8cSJason M. Bills "request if the operation failed."}}); 955f4c4dcf4SKowalski, Kamil } 956f4c4dcf4SKowalski, Kamil 957f4c4dcf4SKowalski, Kamil /** 958f4c4dcf4SKowalski, Kamil * @internal 959f4c4dcf4SKowalski, Kamil * @brief Formats CreateLimitReachedForResource message into JSON 960f4c4dcf4SKowalski, Kamil * 961f4c4dcf4SKowalski, Kamil * See header file for more information 962f4c4dcf4SKowalski, Kamil * @endinternal 963f4c4dcf4SKowalski, Kamil */ 964f12894f8SJason M. Bills void createLimitReachedForResource(crow::Response& res) 9651abe55efSEd Tanous { 966f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 967f12894f8SJason M. Bills addMessageToErrorJson( 968f12894f8SJason M. Bills res.jsonValue, 969f12894f8SJason M. Bills nlohmann::json{ 970f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 971cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.CreateLimitReachedForResource"}, 9721abe55efSEd Tanous {"Message", "The create operation failed because the resource has " 97366ac2b8cSJason M. Bills "reached the limit of possible resources."}, 97485659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 975f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 97666ac2b8cSJason M. Bills {"Resolution", 97766ac2b8cSJason M. Bills "Either delete resources and resubmit the request if the " 97866ac2b8cSJason M. Bills "operation failed or do not resubmit the request."}}); 979f4c4dcf4SKowalski, Kamil } 980f4c4dcf4SKowalski, Kamil 981f4c4dcf4SKowalski, Kamil /** 982f4c4dcf4SKowalski, Kamil * @internal 983f4c4dcf4SKowalski, Kamil * @brief Formats GeneralError message into JSON 984f4c4dcf4SKowalski, Kamil * 985f4c4dcf4SKowalski, Kamil * See header file for more information 986f4c4dcf4SKowalski, Kamil * @endinternal 987f4c4dcf4SKowalski, Kamil */ 988f12894f8SJason M. Bills void generalError(crow::Response& res) 9891abe55efSEd Tanous { 990f12894f8SJason M. Bills res.result(boost::beast::http::status::internal_server_error); 991f12894f8SJason M. Bills addMessageToErrorJson( 992f12894f8SJason M. Bills res.jsonValue, 993f12894f8SJason M. Bills nlohmann::json{ 994f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 995cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.GeneralError"}, 996cc9139ecSJason M. Bills {"Message", "A general error has occurred. See Resolution for " 997cc9139ecSJason M. Bills "information on how to resolve the error."}, 99885659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 999f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1000cc9139ecSJason M. Bills {"Resolution", "None."}}); 1001f4c4dcf4SKowalski, Kamil } 1002f4c4dcf4SKowalski, Kamil 1003f4c4dcf4SKowalski, Kamil /** 1004f4c4dcf4SKowalski, Kamil * @internal 1005f4c4dcf4SKowalski, Kamil * @brief Formats Success message into JSON 1006f4c4dcf4SKowalski, Kamil * 1007f4c4dcf4SKowalski, Kamil * See header file for more information 1008f4c4dcf4SKowalski, Kamil * @endinternal 1009f4c4dcf4SKowalski, Kamil */ 1010f12894f8SJason M. Bills void success(crow::Response& res) 10111abe55efSEd Tanous { 1012be12c729SJames Feist // don't set res.result here because success is the default and any error 1013be12c729SJames Feist // should overwrite the default 1014f12894f8SJason M. Bills addMessageToJsonRoot( 1015f12894f8SJason M. Bills res.jsonValue, 1016f12894f8SJason M. Bills nlohmann::json{ 1017f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1018cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.Success"}, 1019f4c4dcf4SKowalski, Kamil {"Message", "Successfully Completed Request"}, 102085659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1021f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 1022f12894f8SJason M. Bills {"Resolution", "None"}}); 1023f12894f8SJason M. Bills } 1024f12894f8SJason M. Bills 1025f12894f8SJason M. Bills /** 1026f12894f8SJason M. Bills * @internal 1027f4c4dcf4SKowalski, Kamil * @brief Formats Created message into JSON 1028f4c4dcf4SKowalski, Kamil * 1029f4c4dcf4SKowalski, Kamil * See header file for more information 1030f4c4dcf4SKowalski, Kamil * @endinternal 1031f4c4dcf4SKowalski, Kamil */ 1032f12894f8SJason M. Bills void created(crow::Response& res) 10331abe55efSEd Tanous { 1034f12894f8SJason M. Bills res.result(boost::beast::http::status::created); 1035f12894f8SJason M. Bills addMessageToJsonRoot( 1036f12894f8SJason M. Bills res.jsonValue, 1037f12894f8SJason M. Bills nlohmann::json{ 1038f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1039cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.Created"}, 1040f4c4dcf4SKowalski, Kamil {"Message", "The resource has been created successfully"}, 104185659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1042f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 1043f12894f8SJason M. Bills {"Resolution", "None"}}); 1044f4c4dcf4SKowalski, Kamil } 1045f4c4dcf4SKowalski, Kamil 1046f4c4dcf4SKowalski, Kamil /** 1047f4c4dcf4SKowalski, Kamil * @internal 1048cc9139ecSJason M. Bills * @brief Formats NoOperation message into JSON 1049cc9139ecSJason M. Bills * 1050cc9139ecSJason M. Bills * See header file for more information 1051cc9139ecSJason M. Bills * @endinternal 1052cc9139ecSJason M. Bills */ 1053cc9139ecSJason M. Bills void noOperation(crow::Response& res) 1054cc9139ecSJason M. Bills { 1055cc9139ecSJason M. Bills res.result(boost::beast::http::status::bad_request); 1056cc9139ecSJason M. Bills addMessageToErrorJson( 1057cc9139ecSJason M. Bills res.jsonValue, 1058cc9139ecSJason M. Bills nlohmann::json{ 1059cc9139ecSJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1060cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.NoOperation"}, 1061cc9139ecSJason M. Bills {"Message", "The request body submitted contain no data to act " 1062cc9139ecSJason M. Bills "upon and no changes to the resource took place."}, 106385659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1064cc9139ecSJason M. Bills {"Severity", "Warning"}, 1065cc9139ecSJason M. Bills {"Resolution", 1066cc9139ecSJason M. Bills "Add properties in the JSON object and resubmit the request."}}); 1067cc9139ecSJason M. Bills } 1068cc9139ecSJason M. Bills 1069cc9139ecSJason M. Bills /** 1070cc9139ecSJason M. Bills * @internal 1071f12894f8SJason M. Bills * @brief Formats PropertyUnknown message into JSON for the specified property 1072f12894f8SJason M. Bills * 1073f12894f8SJason M. Bills * See header file for more information 1074f12894f8SJason M. Bills * @endinternal 1075f12894f8SJason M. Bills */ 1076a08b46ccSJason M. Bills void propertyUnknown(crow::Response& res, const std::string& arg1) 1077f12894f8SJason M. Bills { 1078f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1079f12894f8SJason M. Bills addMessageToJson( 1080f12894f8SJason M. Bills res.jsonValue, 1081f12894f8SJason M. Bills nlohmann::json{ 1082f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1083cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyUnknown"}, 1084f12894f8SJason M. Bills {"Message", 1085f12894f8SJason M. Bills "The property " + arg1 + 1086f12894f8SJason M. Bills " is not in the list of valid properties for the resource."}, 108785659adfSJason M. Bills {"MessageArgs", {arg1}}, 1088f12894f8SJason M. Bills {"Severity", "Warning"}, 108966ac2b8cSJason M. Bills {"Resolution", 109066ac2b8cSJason M. Bills "Remove the unknown property from the request body and resubmit " 109166ac2b8cSJason M. Bills "the request if the operation failed."}}, 1092a08b46ccSJason M. Bills arg1); 1093f4c4dcf4SKowalski, Kamil } 1094f4c4dcf4SKowalski, Kamil 1095f4c4dcf4SKowalski, Kamil /** 1096f4c4dcf4SKowalski, Kamil * @internal 1097f4c4dcf4SKowalski, Kamil * @brief Formats NoValidSession message into JSON 1098f4c4dcf4SKowalski, Kamil * 1099f4c4dcf4SKowalski, Kamil * See header file for more information 1100f4c4dcf4SKowalski, Kamil * @endinternal 1101f4c4dcf4SKowalski, Kamil */ 1102f12894f8SJason M. Bills void noValidSession(crow::Response& res) 11031abe55efSEd Tanous { 1104f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 1105f12894f8SJason M. Bills addMessageToErrorJson( 1106f12894f8SJason M. Bills res.jsonValue, 1107f12894f8SJason M. Bills nlohmann::json{ 1108f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1109cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.NoValidSession"}, 1110f4c4dcf4SKowalski, Kamil {"Message", 1111f4c4dcf4SKowalski, Kamil "There is no valid session established with the implementation."}, 111285659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1113f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 11141abe55efSEd Tanous {"Resolution", 1115f12894f8SJason M. Bills "Establish as session before attempting any operations."}}); 1116f4c4dcf4SKowalski, Kamil } 1117f4c4dcf4SKowalski, Kamil 1118f4c4dcf4SKowalski, Kamil /** 1119f4c4dcf4SKowalski, Kamil * @internal 1120f4c4dcf4SKowalski, Kamil * @brief Formats InvalidObject message into JSON 1121f4c4dcf4SKowalski, Kamil * 1122f4c4dcf4SKowalski, Kamil * See header file for more information 1123f4c4dcf4SKowalski, Kamil * @endinternal 1124f4c4dcf4SKowalski, Kamil */ 1125f12894f8SJason M. Bills void invalidObject(crow::Response& res, const std::string& arg1) 11261abe55efSEd Tanous { 1127f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1128f12894f8SJason M. Bills addMessageToErrorJson( 1129f12894f8SJason M. Bills res.jsonValue, 1130f12894f8SJason M. Bills nlohmann::json{ 1131f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1132cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.InvalidObject"}, 1133f4c4dcf4SKowalski, Kamil {"Message", "The object at " + arg1 + " is invalid."}, 113485659adfSJason M. Bills {"MessageArgs", {arg1}}, 1135f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1136f12894f8SJason M. Bills {"Resolution", 113766ac2b8cSJason M. Bills "Either the object is malformed or the URI is not correct. " 113866ac2b8cSJason M. Bills "Correct the condition and resubmit the request if it failed."}}); 1139f4c4dcf4SKowalski, Kamil } 1140f4c4dcf4SKowalski, Kamil 1141f4c4dcf4SKowalski, Kamil /** 1142f4c4dcf4SKowalski, Kamil * @internal 1143f4c4dcf4SKowalski, Kamil * @brief Formats ResourceInStandby message into JSON 1144f4c4dcf4SKowalski, Kamil * 1145f4c4dcf4SKowalski, Kamil * See header file for more information 1146f4c4dcf4SKowalski, Kamil * @endinternal 1147f4c4dcf4SKowalski, Kamil */ 1148f12894f8SJason M. Bills void resourceInStandby(crow::Response& res) 11491abe55efSEd Tanous { 1150f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 1151f12894f8SJason M. Bills addMessageToErrorJson( 1152f12894f8SJason M. Bills res.jsonValue, 1153f12894f8SJason M. Bills nlohmann::json{ 1154f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1155cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceInStandby"}, 115666ac2b8cSJason M. Bills {"Message", "The request could not be performed because the " 115766ac2b8cSJason M. Bills "resource is in standby."}, 115885659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1159f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1160f12894f8SJason M. Bills {"Resolution", "Ensure that the resource is in the correct power " 116166ac2b8cSJason M. Bills "state and resubmit the request."}}); 1162f4c4dcf4SKowalski, Kamil } 1163f4c4dcf4SKowalski, Kamil 1164f4c4dcf4SKowalski, Kamil /** 1165f4c4dcf4SKowalski, Kamil * @internal 1166f4c4dcf4SKowalski, Kamil * @brief Formats ActionParameterValueTypeError message into JSON 1167f4c4dcf4SKowalski, Kamil * 1168f4c4dcf4SKowalski, Kamil * See header file for more information 1169f4c4dcf4SKowalski, Kamil * @endinternal 1170f4c4dcf4SKowalski, Kamil */ 1171f12894f8SJason M. Bills void actionParameterValueTypeError(crow::Response& res, const std::string& arg1, 1172f4c4dcf4SKowalski, Kamil const std::string& arg2, 11731abe55efSEd Tanous const std::string& arg3) 11741abe55efSEd Tanous { 1175f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1176f12894f8SJason M. Bills addMessageToErrorJson( 1177f12894f8SJason M. Bills res.jsonValue, 1178f12894f8SJason M. Bills nlohmann::json{ 1179f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1180cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionParameterValueTypeError"}, 11811abe55efSEd Tanous {"Message", 11821abe55efSEd Tanous "The value " + arg1 + " for the parameter " + arg2 + 1183f4c4dcf4SKowalski, Kamil " in the action " + arg3 + 1184f4c4dcf4SKowalski, Kamil " is of a different type than the parameter can accept."}, 118585659adfSJason M. Bills {"MessageArgs", {arg1, arg2, arg3}}, 1186f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 118766ac2b8cSJason M. Bills {"Resolution", 118866ac2b8cSJason M. Bills "Correct the value for the parameter in the request body and " 118966ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}); 1190f4c4dcf4SKowalski, Kamil } 1191f4c4dcf4SKowalski, Kamil 1192f4c4dcf4SKowalski, Kamil /** 1193f4c4dcf4SKowalski, Kamil * @internal 1194f4c4dcf4SKowalski, Kamil * @brief Formats SessionLimitExceeded message into JSON 1195f4c4dcf4SKowalski, Kamil * 1196f4c4dcf4SKowalski, Kamil * See header file for more information 1197f4c4dcf4SKowalski, Kamil * @endinternal 1198f4c4dcf4SKowalski, Kamil */ 1199f12894f8SJason M. Bills void sessionLimitExceeded(crow::Response& res) 12001abe55efSEd Tanous { 1201f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 1202f12894f8SJason M. Bills addMessageToErrorJson( 1203f12894f8SJason M. Bills res.jsonValue, 1204f12894f8SJason M. Bills nlohmann::json{ 1205f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1206cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.SessionLimitExceeded"}, 1207f12894f8SJason M. Bills {"Message", "The session establishment failed due to the number of " 120866ac2b8cSJason M. Bills "simultaneous sessions exceeding the limit of the " 120966ac2b8cSJason M. Bills "implementation."}, 121085659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1211f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 121266ac2b8cSJason M. Bills {"Resolution", "Reduce the number of other sessions before trying " 121366ac2b8cSJason M. Bills "to establish the session or increase the limit of " 121466ac2b8cSJason M. Bills "simultaneous sessions (if supported)."}}); 1215f4c4dcf4SKowalski, Kamil } 1216f4c4dcf4SKowalski, Kamil 1217f4c4dcf4SKowalski, Kamil /** 1218f4c4dcf4SKowalski, Kamil * @internal 1219f4c4dcf4SKowalski, Kamil * @brief Formats ActionNotSupported message into JSON 1220f4c4dcf4SKowalski, Kamil * 1221f4c4dcf4SKowalski, Kamil * See header file for more information 1222f4c4dcf4SKowalski, Kamil * @endinternal 1223f4c4dcf4SKowalski, Kamil */ 1224f12894f8SJason M. Bills void actionNotSupported(crow::Response& res, const std::string& arg1) 12251abe55efSEd Tanous { 1226f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1227f12894f8SJason M. Bills addMessageToErrorJson( 1228f12894f8SJason M. Bills res.jsonValue, 1229f12894f8SJason M. Bills nlohmann::json{ 1230f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1231cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ActionNotSupported"}, 12321abe55efSEd Tanous {"Message", 12331abe55efSEd Tanous "The action " + arg1 + " is not supported by the resource."}, 123485659adfSJason M. Bills {"MessageArgs", {arg1}}, 1235f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1236f4c4dcf4SKowalski, Kamil {"Resolution", 1237f4c4dcf4SKowalski, Kamil "The action supplied cannot be resubmitted to the implementation. " 1238f12894f8SJason M. Bills " Perhaps the action was invalid, the wrong resource was the " 123966ac2b8cSJason M. Bills "target or the implementation documentation may be of " 124066ac2b8cSJason M. Bills "assistance."}}); 1241f4c4dcf4SKowalski, Kamil } 1242f4c4dcf4SKowalski, Kamil 1243f4c4dcf4SKowalski, Kamil /** 1244f4c4dcf4SKowalski, Kamil * @internal 1245f4c4dcf4SKowalski, Kamil * @brief Formats InvalidIndex message into JSON 1246f4c4dcf4SKowalski, Kamil * 1247f4c4dcf4SKowalski, Kamil * See header file for more information 1248f4c4dcf4SKowalski, Kamil * @endinternal 1249f4c4dcf4SKowalski, Kamil */ 1250f12894f8SJason M. Bills void invalidIndex(crow::Response& res, const int& arg1) 12511abe55efSEd Tanous { 1252f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 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.InvalidIndex"}, 125855c7b7a2SEd Tanous {"Message", "The index " + std::to_string(arg1) + 1259f4c4dcf4SKowalski, Kamil " is not a valid offset into the array."}, 126085659adfSJason M. Bills {"MessageArgs", {std::to_string(arg1)}}, 1261f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1262f12894f8SJason M. Bills {"Resolution", "Verify the index value provided is within the " 1263f12894f8SJason M. Bills "bounds of the array."}}); 1264f4c4dcf4SKowalski, Kamil } 1265f4c4dcf4SKowalski, Kamil 1266f4c4dcf4SKowalski, Kamil /** 1267f4c4dcf4SKowalski, Kamil * @internal 1268f4c4dcf4SKowalski, Kamil * @brief Formats EmptyJSON message into JSON 1269f4c4dcf4SKowalski, Kamil * 1270f4c4dcf4SKowalski, Kamil * See header file for more information 1271f4c4dcf4SKowalski, Kamil * @endinternal 1272f4c4dcf4SKowalski, Kamil */ 1273f12894f8SJason M. Bills void emptyJSON(crow::Response& res) 12741abe55efSEd Tanous { 1275f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1276f12894f8SJason M. Bills addMessageToErrorJson( 1277f12894f8SJason M. Bills res.jsonValue, 1278f12894f8SJason M. Bills nlohmann::json{ 1279f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1280cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.EmptyJSON"}, 1281f12894f8SJason M. Bills {"Message", "The request body submitted contained an empty JSON " 128266ac2b8cSJason M. Bills "object and the service is unable to process it."}, 128385659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1284f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1285f4c4dcf4SKowalski, Kamil {"Resolution", 1286f12894f8SJason M. Bills "Add properties in the JSON object and resubmit the request."}}); 1287f4c4dcf4SKowalski, Kamil } 1288f4c4dcf4SKowalski, Kamil 1289f4c4dcf4SKowalski, Kamil /** 1290f4c4dcf4SKowalski, Kamil * @internal 1291f4c4dcf4SKowalski, Kamil * @brief Formats QueryNotSupportedOnResource message into JSON 1292f4c4dcf4SKowalski, Kamil * 1293f4c4dcf4SKowalski, Kamil * See header file for more information 1294f4c4dcf4SKowalski, Kamil * @endinternal 1295f4c4dcf4SKowalski, Kamil */ 1296f12894f8SJason M. Bills void queryNotSupportedOnResource(crow::Response& res) 12971abe55efSEd Tanous { 1298f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 1299f12894f8SJason M. Bills addMessageToErrorJson( 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.QueryNotSupportedOnResource"}, 1304f4c4dcf4SKowalski, Kamil {"Message", "Querying is not supported on the requested resource."}, 130585659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1306f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 130766ac2b8cSJason M. Bills {"Resolution", "Remove the query parameters and resubmit the " 130866ac2b8cSJason M. Bills "request if the operation failed."}}); 1309f4c4dcf4SKowalski, Kamil } 1310f4c4dcf4SKowalski, Kamil 1311f4c4dcf4SKowalski, Kamil /** 1312f4c4dcf4SKowalski, Kamil * @internal 1313f4c4dcf4SKowalski, Kamil * @brief Formats InsufficientPrivilege message into JSON 1314f4c4dcf4SKowalski, Kamil * 1315f4c4dcf4SKowalski, Kamil * See header file for more information 1316f4c4dcf4SKowalski, Kamil * @endinternal 1317f4c4dcf4SKowalski, Kamil */ 1318f12894f8SJason M. Bills void insufficientPrivilege(crow::Response& res) 13191abe55efSEd Tanous { 1320f12894f8SJason M. Bills res.result(boost::beast::http::status::forbidden); 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.InsufficientPrivilege"}, 132666ac2b8cSJason M. Bills {"Message", "There are insufficient privileges for the account or " 132766ac2b8cSJason M. Bills "credentials associated with the current session to " 132866ac2b8cSJason M. Bills "perform the requested operation."}, 132985659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1330f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1331f4c4dcf4SKowalski, Kamil {"Resolution", 1332f12894f8SJason M. Bills "Either abandon the operation or change the associated access " 133366ac2b8cSJason M. Bills "rights and resubmit the request if the operation failed."}}); 1334f4c4dcf4SKowalski, Kamil } 1335f4c4dcf4SKowalski, Kamil 1336f4c4dcf4SKowalski, Kamil /** 1337f4c4dcf4SKowalski, Kamil * @internal 1338f4c4dcf4SKowalski, Kamil * @brief Formats PropertyValueModified message into JSON 1339f4c4dcf4SKowalski, Kamil * 1340f4c4dcf4SKowalski, Kamil * See header file for more information 1341f4c4dcf4SKowalski, Kamil * @endinternal 1342f4c4dcf4SKowalski, Kamil */ 1343f12894f8SJason M. Bills void propertyValueModified(crow::Response& res, const std::string& arg1, 1344a08b46ccSJason M. Bills const std::string& arg2) 13451abe55efSEd Tanous { 1346f12894f8SJason M. Bills res.result(boost::beast::http::status::ok); 1347f12894f8SJason M. Bills addMessageToJson( 1348f12894f8SJason M. Bills res.jsonValue, 1349f12894f8SJason M. Bills nlohmann::json{ 1350f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1351cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyValueModified"}, 1352f12894f8SJason M. Bills {"Message", "The property " + arg1 + " was assigned the value " + 1353f12894f8SJason M. Bills arg2 + " due to modification by the service."}, 135485659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 1355f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1356f12894f8SJason M. Bills {"Resolution", "No resolution is required."}}, 1357a08b46ccSJason M. Bills arg1); 1358f4c4dcf4SKowalski, Kamil } 1359f4c4dcf4SKowalski, Kamil 1360f4c4dcf4SKowalski, Kamil /** 1361f4c4dcf4SKowalski, Kamil * @internal 1362f4c4dcf4SKowalski, Kamil * @brief Formats AccountNotModified message into JSON 1363f4c4dcf4SKowalski, Kamil * 1364f4c4dcf4SKowalski, Kamil * See header file for more information 1365f4c4dcf4SKowalski, Kamil * @endinternal 1366f4c4dcf4SKowalski, Kamil */ 1367f12894f8SJason M. Bills void accountNotModified(crow::Response& res) 13681abe55efSEd Tanous { 1369f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1370f12894f8SJason M. Bills addMessageToErrorJson( 1371f12894f8SJason M. Bills res.jsonValue, 1372f12894f8SJason M. Bills nlohmann::json{ 1373f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1374cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccountNotModified"}, 1375f4c4dcf4SKowalski, Kamil {"Message", "The account modification request failed."}, 137685659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1377f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1378f12894f8SJason M. Bills {"Resolution", "The modification may have failed due to permission " 137966ac2b8cSJason M. Bills "issues or issues with the request body."}}); 1380f4c4dcf4SKowalski, Kamil } 1381f4c4dcf4SKowalski, Kamil 1382f4c4dcf4SKowalski, Kamil /** 1383f4c4dcf4SKowalski, Kamil * @internal 1384f4c4dcf4SKowalski, Kamil * @brief Formats QueryParameterValueFormatError message into JSON 1385f4c4dcf4SKowalski, Kamil * 1386f4c4dcf4SKowalski, Kamil * See header file for more information 1387f4c4dcf4SKowalski, Kamil * @endinternal 1388f4c4dcf4SKowalski, Kamil */ 1389f12894f8SJason M. Bills void queryParameterValueFormatError(crow::Response& res, 1390f12894f8SJason M. Bills const std::string& arg1, 13911abe55efSEd Tanous const std::string& arg2) 13921abe55efSEd Tanous { 1393f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1394f12894f8SJason M. Bills addMessageToErrorJson( 1395f12894f8SJason M. Bills res.jsonValue, 1396f12894f8SJason M. Bills nlohmann::json{ 1397f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1398cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.QueryParameterValueFormatError"}, 1399f4c4dcf4SKowalski, Kamil {"Message", 1400f4c4dcf4SKowalski, Kamil "The value " + arg1 + " for the parameter " + arg2 + 1401f4c4dcf4SKowalski, Kamil " is of a different format than the parameter can accept."}, 140285659adfSJason M. Bills {"MessageArgs", {arg1, arg2}}, 1403f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 140466ac2b8cSJason M. Bills {"Resolution", 140566ac2b8cSJason M. Bills "Correct the value for the query parameter in the request and " 140666ac2b8cSJason M. Bills "resubmit the request if the operation failed."}}); 1407f4c4dcf4SKowalski, Kamil } 1408f4c4dcf4SKowalski, Kamil 1409f4c4dcf4SKowalski, Kamil /** 1410f4c4dcf4SKowalski, Kamil * @internal 1411f12894f8SJason M. Bills * @brief Formats PropertyMissing message into JSON for the specified property 1412f12894f8SJason M. Bills * 1413f12894f8SJason M. Bills * See header file for more information 1414f12894f8SJason M. Bills * @endinternal 1415f12894f8SJason M. Bills */ 1416a08b46ccSJason M. Bills void propertyMissing(crow::Response& res, const std::string& arg1) 1417f12894f8SJason M. Bills { 1418f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1419f12894f8SJason M. Bills addMessageToJson( 1420f12894f8SJason M. Bills res.jsonValue, 1421f12894f8SJason M. Bills nlohmann::json{ 1422f12894f8SJason M. Bills {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1423cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.PropertyMissing"}, 1424f12894f8SJason M. Bills {"Message", "The property " + arg1 + 1425f12894f8SJason M. Bills " is a required property and must be included in " 1426f12894f8SJason M. Bills "the request."}, 142785659adfSJason M. Bills {"MessageArgs", {arg1}}, 1428f12894f8SJason M. Bills {"Severity", "Warning"}, 1429f12894f8SJason M. Bills {"Resolution", 143066ac2b8cSJason M. Bills "Ensure that the property is in the request body and has a valid " 143166ac2b8cSJason M. Bills "value and resubmit the request if the operation failed."}}, 1432a08b46ccSJason M. Bills arg1); 1433f4c4dcf4SKowalski, Kamil } 1434f4c4dcf4SKowalski, Kamil 1435f4c4dcf4SKowalski, Kamil /** 1436f4c4dcf4SKowalski, Kamil * @internal 1437f4c4dcf4SKowalski, Kamil * @brief Formats ResourceExhaustion message into JSON 1438f4c4dcf4SKowalski, Kamil * 1439f4c4dcf4SKowalski, Kamil * See header file for more information 1440f4c4dcf4SKowalski, Kamil * @endinternal 1441f4c4dcf4SKowalski, Kamil */ 1442f12894f8SJason M. Bills void resourceExhaustion(crow::Response& res, const std::string& arg1) 14431abe55efSEd Tanous { 1444f12894f8SJason M. Bills res.result(boost::beast::http::status::service_unavailable); 1445f12894f8SJason M. Bills addMessageToErrorJson( 1446f12894f8SJason M. Bills res.jsonValue, 1447f12894f8SJason M. Bills nlohmann::json{ 1448f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1449cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.ResourceExhaustion"}, 1450d425c6f6SEd Tanous {"Message", "The resource " + arg1 + 145166ac2b8cSJason M. Bills " was unable to satisfy the request due to " 145266ac2b8cSJason M. Bills "unavailability of resources."}, 145385659adfSJason M. Bills {"MessageArgs", {arg1}}, 1454f4c4dcf4SKowalski, Kamil {"Severity", "Critical"}, 1455f12894f8SJason M. Bills {"Resolution", "Ensure that the resources are available and " 1456f12894f8SJason M. Bills "resubmit the request."}}); 1457f4c4dcf4SKowalski, Kamil } 1458f4c4dcf4SKowalski, Kamil 1459f4c4dcf4SKowalski, Kamil /** 1460f4c4dcf4SKowalski, Kamil * @internal 1461f4c4dcf4SKowalski, Kamil * @brief Formats AccountModified message into JSON 1462f4c4dcf4SKowalski, Kamil * 1463f4c4dcf4SKowalski, Kamil * See header file for more information 1464f4c4dcf4SKowalski, Kamil * @endinternal 1465f4c4dcf4SKowalski, Kamil */ 1466a08b46ccSJason M. Bills void accountModified(crow::Response& res) 14671abe55efSEd Tanous { 1468f12894f8SJason M. Bills res.result(boost::beast::http::status::ok); 1469a08b46ccSJason M. Bills addMessageToErrorJson( 1470f12894f8SJason M. Bills res.jsonValue, 1471f12894f8SJason M. Bills nlohmann::json{ 1472f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1473cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.AccountModified"}, 1474f4c4dcf4SKowalski, Kamil {"Message", "The account was successfully modified."}, 147585659adfSJason M. Bills {"MessageArgs", nlohmann::json::array()}, 1476f4c4dcf4SKowalski, Kamil {"Severity", "OK"}, 1477a08b46ccSJason M. Bills {"Resolution", "No resolution is required."}}); 1478f4c4dcf4SKowalski, Kamil } 1479f4c4dcf4SKowalski, Kamil 1480f4c4dcf4SKowalski, Kamil /** 1481f4c4dcf4SKowalski, Kamil * @internal 1482f4c4dcf4SKowalski, Kamil * @brief Formats QueryParameterOutOfRange message into JSON 1483f4c4dcf4SKowalski, Kamil * 1484f4c4dcf4SKowalski, Kamil * See header file for more information 1485f4c4dcf4SKowalski, Kamil * @endinternal 1486f4c4dcf4SKowalski, Kamil */ 1487f12894f8SJason M. Bills void queryParameterOutOfRange(crow::Response& res, const std::string& arg1, 1488f12894f8SJason M. Bills const std::string& arg2, const std::string& arg3) 14891abe55efSEd Tanous { 1490f12894f8SJason M. Bills res.result(boost::beast::http::status::bad_request); 1491f12894f8SJason M. Bills addMessageToErrorJson( 1492f12894f8SJason M. Bills res.jsonValue, 1493f12894f8SJason M. Bills nlohmann::json{ 1494f4c4dcf4SKowalski, Kamil {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"}, 1495cc9139ecSJason M. Bills {"MessageId", "Base.1.4.0.QueryParameterOutOfRange"}, 1496f12894f8SJason M. Bills {"Message", "The value " + arg1 + " for the query parameter " + 1497f12894f8SJason M. Bills arg2 + " is out of range " + arg3 + "."}, 149885659adfSJason M. Bills {"MessageArgs", {arg1, arg2, arg3}}, 1499f4c4dcf4SKowalski, Kamil {"Severity", "Warning"}, 1500f4c4dcf4SKowalski, Kamil {"Resolution", 1501f12894f8SJason M. Bills "Reduce the value for the query parameter to a value that is " 150266ac2b8cSJason M. Bills "within range, such as a start or count value that is within " 150366ac2b8cSJason M. Bills "bounds of the number of resources in a collection or a page that " 150466ac2b8cSJason M. Bills "is within the range of valid pages."}}); 1505f4c4dcf4SKowalski, Kamil } 1506f4c4dcf4SKowalski, Kamil 1507f4c4dcf4SKowalski, Kamil } // namespace messages 1508f4c4dcf4SKowalski, Kamil 1509d425c6f6SEd Tanous } // namespace redfish 1510