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 */
160442ef92SNan Zhou #include "error_messages.hpp"
179ea15c35SEd Tanous 
180442ef92SNan Zhou #include "http_response.hpp"
190442ef92SNan Zhou #include "logging.hpp"
200442ef92SNan Zhou #include "registries.hpp"
210442ef92SNan Zhou #include "registries/base_message_registry.hpp"
220442ef92SNan Zhou 
230442ef92SNan Zhou #include <boost/beast/http/field.hpp>
249ea15c35SEd Tanous #include <boost/beast/http/status.hpp>
25*f0b59af4SEd Tanous #include <boost/url/url_view.hpp>
26faf100f9SEd Tanous #include <nlohmann/json.hpp>
27f4c4dcf4SKowalski, Kamil 
281668ce6dSEd Tanous #include <array>
290442ef92SNan Zhou #include <cstddef>
30*f0b59af4SEd Tanous #include <cstdint>
31d85418e3SPatrick Williams #include <source_location>
320442ef92SNan Zhou #include <span>
330442ef92SNan Zhou #include <string>
34*f0b59af4SEd Tanous #include <string_view>
350442ef92SNan Zhou #include <utility>
360442ef92SNan Zhou 
370442ef92SNan Zhou // IWYU pragma: no_include <stddef.h>
381668ce6dSEd Tanous 
391abe55efSEd Tanous namespace redfish
401abe55efSEd Tanous {
411abe55efSEd Tanous 
421abe55efSEd Tanous namespace messages
431abe55efSEd Tanous {
44f4c4dcf4SKowalski, Kamil 
45f12894f8SJason M. Bills static void addMessageToErrorJson(nlohmann::json& target,
461abe55efSEd Tanous                                   const nlohmann::json& message)
471abe55efSEd Tanous {
48f4c4dcf4SKowalski, Kamil     auto& error = target["error"];
49f4c4dcf4SKowalski, Kamil 
501abe55efSEd Tanous     // If this is the first error message, fill in the information from the
511abe55efSEd Tanous     // first error message to the top level struct
521abe55efSEd Tanous     if (!error.is_object())
531abe55efSEd Tanous     {
54c074230bSJason M. Bills         auto messageIdIterator = message.find("MessageId");
55c074230bSJason M. Bills         if (messageIdIterator == message.end())
561abe55efSEd Tanous         {
5762598e31SEd Tanous             BMCWEB_LOG_CRITICAL(
5862598e31SEd Tanous                 "Attempt to add error message without MessageId");
59f4c4dcf4SKowalski, Kamil             return;
60f4c4dcf4SKowalski, Kamil         }
61f4c4dcf4SKowalski, Kamil 
62c074230bSJason M. Bills         auto messageFieldIterator = message.find("Message");
63c074230bSJason M. Bills         if (messageFieldIterator == message.end())
641abe55efSEd Tanous         {
6562598e31SEd Tanous             BMCWEB_LOG_CRITICAL("Attempt to add error message without Message");
66f4c4dcf4SKowalski, Kamil             return;
67f4c4dcf4SKowalski, Kamil         }
681476687dSEd Tanous         error["code"] = *messageIdIterator;
691476687dSEd Tanous         error["message"] = *messageFieldIterator;
701abe55efSEd Tanous     }
711abe55efSEd Tanous     else
721abe55efSEd Tanous     {
73f4c4dcf4SKowalski, Kamil         // More than 1 error occurred, so the message has to be generic
7455c7b7a2SEd Tanous         error["code"] = std::string(messageVersionPrefix) + "GeneralError";
75cc9139ecSJason M. Bills         error["message"] = "A general error has occurred. See Resolution for "
76cc9139ecSJason M. Bills                            "information on how to resolve the error.";
77f4c4dcf4SKowalski, Kamil     }
78f4c4dcf4SKowalski, Kamil 
793590bd1dSNan Zhou     // This check could technically be done in the default construction
80f4c4dcf4SKowalski, Kamil     // branch above, but because we need the pointer to the extended info field
81f4c4dcf4SKowalski, Kamil     // anyway, it's more efficient to do it here.
82c074230bSJason M. Bills     auto& extendedInfo = error[messages::messageAnnotation];
83c074230bSJason M. Bills     if (!extendedInfo.is_array())
841abe55efSEd Tanous     {
85c074230bSJason M. Bills         extendedInfo = nlohmann::json::array();
86f4c4dcf4SKowalski, Kamil     }
87f4c4dcf4SKowalski, Kamil 
88c074230bSJason M. Bills     extendedInfo.push_back(message);
89f4c4dcf4SKowalski, Kamil }
90f4c4dcf4SKowalski, Kamil 
913590bd1dSNan Zhou void moveErrorsToErrorJson(nlohmann::json& target, nlohmann::json& source)
923590bd1dSNan Zhou {
933590bd1dSNan Zhou     if (!source.is_object())
943590bd1dSNan Zhou     {
953590bd1dSNan Zhou         return;
963590bd1dSNan Zhou     }
973590bd1dSNan Zhou     auto errorIt = source.find("error");
983590bd1dSNan Zhou     if (errorIt == source.end())
993590bd1dSNan Zhou     {
1003590bd1dSNan Zhou         // caller puts error message in root
1013590bd1dSNan Zhou         messages::addMessageToErrorJson(target, source);
1023590bd1dSNan Zhou         source.clear();
1033590bd1dSNan Zhou         return;
1043590bd1dSNan Zhou     }
1053590bd1dSNan Zhou     auto extendedInfoIt = errorIt->find(messages::messageAnnotation);
1063590bd1dSNan Zhou     if (extendedInfoIt == errorIt->end())
1073590bd1dSNan Zhou     {
1083590bd1dSNan Zhou         return;
1093590bd1dSNan Zhou     }
1103590bd1dSNan Zhou     const nlohmann::json::array_t* extendedInfo =
1113590bd1dSNan Zhou         (*extendedInfoIt).get_ptr<const nlohmann::json::array_t*>();
1123590bd1dSNan Zhou     if (extendedInfo == nullptr)
1133590bd1dSNan Zhou     {
1143590bd1dSNan Zhou         source.erase(errorIt);
1153590bd1dSNan Zhou         return;
1163590bd1dSNan Zhou     }
1173590bd1dSNan Zhou     for (const nlohmann::json& message : *extendedInfo)
1183590bd1dSNan Zhou     {
1193590bd1dSNan Zhou         addMessageToErrorJson(target, message);
1203590bd1dSNan Zhou     }
1213590bd1dSNan Zhou     source.erase(errorIt);
1223590bd1dSNan Zhou }
1233590bd1dSNan Zhou 
124f12894f8SJason M. Bills static void addMessageToJsonRoot(nlohmann::json& target,
125f12894f8SJason M. Bills                                  const nlohmann::json& message)
1261abe55efSEd Tanous {
1271abe55efSEd Tanous     if (!target[messages::messageAnnotation].is_array())
1281abe55efSEd Tanous     {
129f4c4dcf4SKowalski, Kamil         // Force object to be an array
13055c7b7a2SEd Tanous         target[messages::messageAnnotation] = nlohmann::json::array();
131f4c4dcf4SKowalski, Kamil     }
132f4c4dcf4SKowalski, Kamil 
13355c7b7a2SEd Tanous     target[messages::messageAnnotation].push_back(message);
134f4c4dcf4SKowalski, Kamil }
135f4c4dcf4SKowalski, Kamil 
136f12894f8SJason M. Bills static void addMessageToJson(nlohmann::json& target,
137f12894f8SJason M. Bills                              const nlohmann::json& message,
1381668ce6dSEd Tanous                              std::string_view fieldPath)
1391abe55efSEd Tanous {
1401668ce6dSEd Tanous     std::string extendedInfo(fieldPath);
1411668ce6dSEd Tanous     extendedInfo += messages::messageAnnotation;
142f4c4dcf4SKowalski, Kamil 
1431668ce6dSEd Tanous     nlohmann::json& field = target[extendedInfo];
1441668ce6dSEd Tanous     if (!field.is_array())
1451abe55efSEd Tanous     {
146f4c4dcf4SKowalski, Kamil         // Force object to be an array
1471668ce6dSEd Tanous         field = nlohmann::json::array();
148f4c4dcf4SKowalski, Kamil     }
149f4c4dcf4SKowalski, Kamil 
150f4c4dcf4SKowalski, Kamil     // Object exists and it is an array so we can just push in the message
1511668ce6dSEd Tanous     field.push_back(message);
152f4c4dcf4SKowalski, Kamil }
153f4c4dcf4SKowalski, Kamil 
154f7725d79SEd Tanous static nlohmann::json getLog(redfish::registries::base::Index name,
155b6cd31e1SEd Tanous                              std::span<const std::string_view> args)
156b6cd31e1SEd Tanous {
157b6cd31e1SEd Tanous     size_t index = static_cast<size_t>(name);
158fffb8c1fSEd Tanous     if (index >= redfish::registries::base::registry.size())
159b6cd31e1SEd Tanous     {
160b6cd31e1SEd Tanous         return {};
161b6cd31e1SEd Tanous     }
16265e4f1f7SEd Tanous     return getLogFromRegistry(redfish::registries::base::header,
16365e4f1f7SEd Tanous                               redfish::registries::base::registry, index, args);
164b6cd31e1SEd Tanous }
165b6cd31e1SEd Tanous 
166f4c4dcf4SKowalski, Kamil /**
167f4c4dcf4SKowalski, Kamil  * @internal
168f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceInUse message into JSON
169f4c4dcf4SKowalski, Kamil  *
170f4c4dcf4SKowalski, Kamil  * See header file for more information
171f4c4dcf4SKowalski, Kamil  * @endinternal
172f4c4dcf4SKowalski, Kamil  */
173d9fcfcc1SEd Tanous nlohmann::json resourceInUse()
1741abe55efSEd Tanous {
175fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::resourceInUse, {});
176b5c07418SJames Feist }
177b5c07418SJames Feist 
178b5c07418SJames Feist void resourceInUse(crow::Response& res)
179b5c07418SJames Feist {
180b5c07418SJames Feist     res.result(boost::beast::http::status::service_unavailable);
181b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, resourceInUse());
182f4c4dcf4SKowalski, Kamil }
183f4c4dcf4SKowalski, Kamil 
184f4c4dcf4SKowalski, Kamil /**
185f4c4dcf4SKowalski, Kamil  * @internal
186f4c4dcf4SKowalski, Kamil  * @brief Formats MalformedJSON message into JSON
187f4c4dcf4SKowalski, Kamil  *
188f4c4dcf4SKowalski, Kamil  * See header file for more information
189f4c4dcf4SKowalski, Kamil  * @endinternal
190f4c4dcf4SKowalski, Kamil  */
191d9fcfcc1SEd Tanous nlohmann::json malformedJSON()
1921abe55efSEd Tanous {
193fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::malformedJSON, {});
194b5c07418SJames Feist }
195b5c07418SJames Feist 
196b5c07418SJames Feist void malformedJSON(crow::Response& res)
197b5c07418SJames Feist {
198b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
199b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, malformedJSON());
200f4c4dcf4SKowalski, Kamil }
201f4c4dcf4SKowalski, Kamil 
202f4c4dcf4SKowalski, Kamil /**
203f4c4dcf4SKowalski, Kamil  * @internal
204f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceMissingAtURI message into JSON
205f4c4dcf4SKowalski, Kamil  *
206f4c4dcf4SKowalski, Kamil  * See header file for more information
207f4c4dcf4SKowalski, Kamil  * @endinternal
208f4c4dcf4SKowalski, Kamil  */
209d9f466b3SEd Tanous nlohmann::json resourceMissingAtURI(boost::urls::url_view arg1)
2101abe55efSEd Tanous {
211079360aeSEd Tanous     std::array<std::string_view, 1> args{arg1.buffer()};
212fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::resourceMissingAtURI, args);
213b5c07418SJames Feist }
214b5c07418SJames Feist 
215d9f466b3SEd Tanous void resourceMissingAtURI(crow::Response& res, boost::urls::url_view arg1)
216b5c07418SJames Feist {
217b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
218b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, resourceMissingAtURI(arg1));
219f4c4dcf4SKowalski, Kamil }
220f4c4dcf4SKowalski, Kamil 
221f4c4dcf4SKowalski, Kamil /**
222f4c4dcf4SKowalski, Kamil  * @internal
223f4c4dcf4SKowalski, Kamil  * @brief Formats ActionParameterValueFormatError message into JSON
224f4c4dcf4SKowalski, Kamil  *
225f4c4dcf4SKowalski, Kamil  * See header file for more information
226f4c4dcf4SKowalski, Kamil  * @endinternal
227f4c4dcf4SKowalski, Kamil  */
22895b3ad73SEd Tanous nlohmann::json actionParameterValueFormatError(const nlohmann::json& arg1,
2291668ce6dSEd Tanous                                                std::string_view arg2,
2301668ce6dSEd Tanous                                                std::string_view arg3)
2311abe55efSEd Tanous {
23295b3ad73SEd Tanous     std::string arg1Str = arg1.dump(2, ' ', true,
23395b3ad73SEd Tanous                                     nlohmann::json::error_handler_t::replace);
234fffb8c1fSEd Tanous     return getLog(
235fffb8c1fSEd Tanous         redfish::registries::base::Index::actionParameterValueFormatError,
23695b3ad73SEd Tanous         std::to_array<std::string_view>({arg1Str, arg2, arg3}));
237b5c07418SJames Feist }
238b5c07418SJames Feist 
23995b3ad73SEd Tanous void actionParameterValueFormatError(crow::Response& res,
24095b3ad73SEd Tanous                                      const nlohmann::json& arg1,
2411668ce6dSEd Tanous                                      std::string_view arg2,
2421668ce6dSEd Tanous                                      std::string_view arg3)
243b5c07418SJames Feist {
244b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
245b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue,
246b5c07418SJames Feist                           actionParameterValueFormatError(arg1, arg2, arg3));
247f4c4dcf4SKowalski, Kamil }
248f4c4dcf4SKowalski, Kamil 
249f4c4dcf4SKowalski, Kamil /**
250f4c4dcf4SKowalski, Kamil  * @internal
2514ef82a15SAlex Schendel  * @brief Formats ActionParameterValueNotInList message into JSON
2524ef82a15SAlex Schendel  *
2534ef82a15SAlex Schendel  * See header file for more information
2544ef82a15SAlex Schendel  * @endinternal
2554ef82a15SAlex Schendel  */
2564ef82a15SAlex Schendel nlohmann::json actionParameterValueNotInList(std::string_view arg1,
2574ef82a15SAlex Schendel                                              std::string_view arg2,
2584ef82a15SAlex Schendel                                              std::string_view arg3)
2594ef82a15SAlex Schendel {
2604ef82a15SAlex Schendel     return getLog(
2614ef82a15SAlex Schendel         redfish::registries::base::Index::actionParameterValueNotInList,
2624ef82a15SAlex Schendel         std::to_array({arg1, arg2, arg3}));
2634ef82a15SAlex Schendel }
2644ef82a15SAlex Schendel 
2654ef82a15SAlex Schendel void actionParameterValueNotInList(crow::Response& res, std::string_view arg1,
2664ef82a15SAlex Schendel                                    std::string_view arg2, std::string_view arg3)
2674ef82a15SAlex Schendel {
2684ef82a15SAlex Schendel     res.result(boost::beast::http::status::bad_request);
2694ef82a15SAlex Schendel     addMessageToErrorJson(res.jsonValue,
2704ef82a15SAlex Schendel                           actionParameterValueNotInList(arg1, arg2, arg3));
2714ef82a15SAlex Schendel }
2724ef82a15SAlex Schendel 
2734ef82a15SAlex Schendel /**
2744ef82a15SAlex Schendel  * @internal
275f4c4dcf4SKowalski, Kamil  * @brief Formats InternalError message into JSON
276f4c4dcf4SKowalski, Kamil  *
277f4c4dcf4SKowalski, Kamil  * See header file for more information
278f4c4dcf4SKowalski, Kamil  * @endinternal
279f4c4dcf4SKowalski, Kamil  */
280d9fcfcc1SEd Tanous nlohmann::json internalError()
2811abe55efSEd Tanous {
282fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::internalError, {});
283b5c07418SJames Feist }
284b5c07418SJames Feist 
285d85418e3SPatrick Williams void internalError(crow::Response& res, const std::source_location location)
286b5c07418SJames Feist {
28762598e31SEd Tanous     BMCWEB_LOG_CRITICAL("Internal Error {}({}:{}) `{}`: ", location.file_name(),
28862598e31SEd Tanous                         location.line(), location.column(),
28962598e31SEd Tanous                         location.function_name());
290b5c07418SJames Feist     res.result(boost::beast::http::status::internal_server_error);
291b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, internalError());
292f12894f8SJason M. Bills }
293f12894f8SJason M. Bills 
294f12894f8SJason M. Bills /**
295f12894f8SJason M. Bills  * @internal
296f4c4dcf4SKowalski, Kamil  * @brief Formats UnrecognizedRequestBody message into JSON
297f4c4dcf4SKowalski, Kamil  *
298f4c4dcf4SKowalski, Kamil  * See header file for more information
299f4c4dcf4SKowalski, Kamil  * @endinternal
300f4c4dcf4SKowalski, Kamil  */
301d9fcfcc1SEd Tanous nlohmann::json unrecognizedRequestBody()
3021abe55efSEd Tanous {
303fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::unrecognizedRequestBody,
304fffb8c1fSEd Tanous                   {});
305b5c07418SJames Feist }
306b5c07418SJames Feist 
307b5c07418SJames Feist void unrecognizedRequestBody(crow::Response& res)
308b5c07418SJames Feist {
309b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
310b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, unrecognizedRequestBody());
311f4c4dcf4SKowalski, Kamil }
312f4c4dcf4SKowalski, Kamil 
313f4c4dcf4SKowalski, Kamil /**
314f4c4dcf4SKowalski, Kamil  * @internal
315f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceAtUriUnauthorized message into JSON
316f4c4dcf4SKowalski, Kamil  *
317f4c4dcf4SKowalski, Kamil  * See header file for more information
318f4c4dcf4SKowalski, Kamil  * @endinternal
319f4c4dcf4SKowalski, Kamil  */
320d9f466b3SEd Tanous nlohmann::json resourceAtUriUnauthorized(boost::urls::url_view arg1,
3211668ce6dSEd Tanous                                          std::string_view arg2)
3221abe55efSEd Tanous {
323079360aeSEd Tanous     return getLog(redfish::registries::base::Index::resourceAtUriUnauthorized,
324079360aeSEd Tanous                   std::to_array<std::string_view>({arg1.buffer(), arg2}));
325b5c07418SJames Feist }
326b5c07418SJames Feist 
327d9f466b3SEd Tanous void resourceAtUriUnauthorized(crow::Response& res, boost::urls::url_view arg1,
3281668ce6dSEd Tanous                                std::string_view arg2)
329b5c07418SJames Feist {
330b5c07418SJames Feist     res.result(boost::beast::http::status::unauthorized);
331b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, resourceAtUriUnauthorized(arg1, arg2));
332f4c4dcf4SKowalski, Kamil }
333f4c4dcf4SKowalski, Kamil 
334f4c4dcf4SKowalski, Kamil /**
335f4c4dcf4SKowalski, Kamil  * @internal
336f4c4dcf4SKowalski, Kamil  * @brief Formats ActionParameterUnknown message into JSON
337f4c4dcf4SKowalski, Kamil  *
338f4c4dcf4SKowalski, Kamil  * See header file for more information
339f4c4dcf4SKowalski, Kamil  * @endinternal
340f4c4dcf4SKowalski, Kamil  */
3411668ce6dSEd Tanous nlohmann::json actionParameterUnknown(std::string_view arg1,
3421668ce6dSEd Tanous                                       std::string_view arg2)
343b5c07418SJames Feist {
344fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::actionParameterUnknown,
3451668ce6dSEd Tanous                   std::to_array({arg1, arg2}));
346b5c07418SJames Feist }
347b5c07418SJames Feist 
3481668ce6dSEd Tanous void actionParameterUnknown(crow::Response& res, std::string_view arg1,
3491668ce6dSEd Tanous                             std::string_view arg2)
3501abe55efSEd Tanous {
351f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
352b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, actionParameterUnknown(arg1, arg2));
353f4c4dcf4SKowalski, Kamil }
354f4c4dcf4SKowalski, Kamil 
355f4c4dcf4SKowalski, Kamil /**
356f4c4dcf4SKowalski, Kamil  * @internal
357f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceCannotBeDeleted message into JSON
358f4c4dcf4SKowalski, Kamil  *
359f4c4dcf4SKowalski, Kamil  * See header file for more information
360f4c4dcf4SKowalski, Kamil  * @endinternal
361f4c4dcf4SKowalski, Kamil  */
362d9fcfcc1SEd Tanous nlohmann::json resourceCannotBeDeleted()
3631abe55efSEd Tanous {
364fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::resourceCannotBeDeleted,
365fffb8c1fSEd Tanous                   {});
366b5c07418SJames Feist }
367b5c07418SJames Feist 
368b5c07418SJames Feist void resourceCannotBeDeleted(crow::Response& res)
369b5c07418SJames Feist {
37044c70412SEd Tanous     res.result(boost::beast::http::status::method_not_allowed);
371b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, resourceCannotBeDeleted());
372f4c4dcf4SKowalski, Kamil }
373f4c4dcf4SKowalski, Kamil 
374f4c4dcf4SKowalski, Kamil /**
375f4c4dcf4SKowalski, Kamil  * @internal
376f4c4dcf4SKowalski, Kamil  * @brief Formats PropertyDuplicate message into JSON
377f4c4dcf4SKowalski, Kamil  *
378f4c4dcf4SKowalski, Kamil  * See header file for more information
379f4c4dcf4SKowalski, Kamil  * @endinternal
380f4c4dcf4SKowalski, Kamil  */
3811668ce6dSEd Tanous nlohmann::json propertyDuplicate(std::string_view arg1)
3821abe55efSEd Tanous {
383fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::propertyDuplicate,
3841668ce6dSEd Tanous                   std::to_array({arg1}));
385b5c07418SJames Feist }
386b5c07418SJames Feist 
3871668ce6dSEd Tanous void propertyDuplicate(crow::Response& res, std::string_view arg1)
388b5c07418SJames Feist {
389b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
390b5c07418SJames Feist     addMessageToJson(res.jsonValue, propertyDuplicate(arg1), arg1);
391f4c4dcf4SKowalski, Kamil }
392f4c4dcf4SKowalski, Kamil 
393f4c4dcf4SKowalski, Kamil /**
394f4c4dcf4SKowalski, Kamil  * @internal
395f4c4dcf4SKowalski, Kamil  * @brief Formats ServiceTemporarilyUnavailable message into JSON
396f4c4dcf4SKowalski, Kamil  *
397f4c4dcf4SKowalski, Kamil  * See header file for more information
398f4c4dcf4SKowalski, Kamil  * @endinternal
399f4c4dcf4SKowalski, Kamil  */
4001668ce6dSEd Tanous nlohmann::json serviceTemporarilyUnavailable(std::string_view arg1)
4011abe55efSEd Tanous {
402b6cd31e1SEd Tanous     return getLog(
403fffb8c1fSEd Tanous         redfish::registries::base::Index::serviceTemporarilyUnavailable,
4041668ce6dSEd Tanous         std::to_array({arg1}));
405b5c07418SJames Feist }
406b5c07418SJames Feist 
4071668ce6dSEd Tanous void serviceTemporarilyUnavailable(crow::Response& res, std::string_view arg1)
408b5c07418SJames Feist {
409d9f6c621SEd Tanous     res.addHeader(boost::beast::http::field::retry_after, arg1);
410b5c07418SJames Feist     res.result(boost::beast::http::status::service_unavailable);
411b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, serviceTemporarilyUnavailable(arg1));
412f4c4dcf4SKowalski, Kamil }
413f4c4dcf4SKowalski, Kamil 
414f4c4dcf4SKowalski, Kamil /**
415f4c4dcf4SKowalski, Kamil  * @internal
416f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceAlreadyExists message into JSON
417f4c4dcf4SKowalski, Kamil  *
418f4c4dcf4SKowalski, Kamil  * See header file for more information
419f4c4dcf4SKowalski, Kamil  * @endinternal
420f4c4dcf4SKowalski, Kamil  */
4211668ce6dSEd Tanous nlohmann::json resourceAlreadyExists(std::string_view arg1,
4221668ce6dSEd Tanous                                      std::string_view arg2,
4231668ce6dSEd Tanous                                      std::string_view arg3)
4241abe55efSEd Tanous {
425fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::resourceAlreadyExists,
4261668ce6dSEd Tanous                   std::to_array({arg1, arg2, arg3}));
427b5c07418SJames Feist }
428b5c07418SJames Feist 
4291668ce6dSEd Tanous void resourceAlreadyExists(crow::Response& res, std::string_view arg1,
4301668ce6dSEd Tanous                            std::string_view arg2, std::string_view arg3)
431b5c07418SJames Feist {
432b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
433b5c07418SJames Feist     addMessageToJson(res.jsonValue, resourceAlreadyExists(arg1, arg2, arg3),
434a08b46ccSJason M. Bills                      arg2);
435f4c4dcf4SKowalski, Kamil }
436f4c4dcf4SKowalski, Kamil 
437f4c4dcf4SKowalski, Kamil /**
438f4c4dcf4SKowalski, Kamil  * @internal
439f4c4dcf4SKowalski, Kamil  * @brief Formats AccountForSessionNoLongerExists message into JSON
440f4c4dcf4SKowalski, Kamil  *
441f4c4dcf4SKowalski, Kamil  * See header file for more information
442f4c4dcf4SKowalski, Kamil  * @endinternal
443f4c4dcf4SKowalski, Kamil  */
444d9fcfcc1SEd Tanous nlohmann::json accountForSessionNoLongerExists()
4451abe55efSEd Tanous {
446fffb8c1fSEd Tanous     return getLog(
447fffb8c1fSEd Tanous         redfish::registries::base::Index::accountForSessionNoLongerExists, {});
448b5c07418SJames Feist }
449b5c07418SJames Feist 
450b5c07418SJames Feist void accountForSessionNoLongerExists(crow::Response& res)
451b5c07418SJames Feist {
452b5c07418SJames Feist     res.result(boost::beast::http::status::forbidden);
453b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, accountForSessionNoLongerExists());
454f4c4dcf4SKowalski, Kamil }
455f4c4dcf4SKowalski, Kamil 
456f4c4dcf4SKowalski, Kamil /**
457f4c4dcf4SKowalski, Kamil  * @internal
458f4c4dcf4SKowalski, Kamil  * @brief Formats CreateFailedMissingReqProperties message into JSON
459f4c4dcf4SKowalski, Kamil  *
460f4c4dcf4SKowalski, Kamil  * See header file for more information
461f4c4dcf4SKowalski, Kamil  * @endinternal
462f4c4dcf4SKowalski, Kamil  */
4631668ce6dSEd Tanous nlohmann::json createFailedMissingReqProperties(std::string_view arg1)
4641abe55efSEd Tanous {
465fffb8c1fSEd Tanous     return getLog(
466fffb8c1fSEd Tanous         redfish::registries::base::Index::createFailedMissingReqProperties,
4671668ce6dSEd Tanous         std::to_array({arg1}));
468b5c07418SJames Feist }
469b5c07418SJames Feist 
470b5c07418SJames Feist void createFailedMissingReqProperties(crow::Response& res,
4711668ce6dSEd Tanous                                       std::string_view arg1)
472b5c07418SJames Feist {
473b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
474b5c07418SJames Feist     addMessageToJson(res.jsonValue, createFailedMissingReqProperties(arg1),
475a08b46ccSJason M. Bills                      arg1);
476f12894f8SJason M. Bills }
477f12894f8SJason M. Bills 
478f12894f8SJason M. Bills /**
479f12894f8SJason M. Bills  * @internal
480f12894f8SJason M. Bills  * @brief Formats PropertyValueFormatError message into JSON for the specified
481f12894f8SJason M. Bills  * property
482f12894f8SJason M. Bills  *
483f12894f8SJason M. Bills  * See header file for more information
484f12894f8SJason M. Bills  * @endinternal
485f12894f8SJason M. Bills  */
486f818b04dSEd Tanous nlohmann::json propertyValueFormatError(const nlohmann::json& arg1,
4871668ce6dSEd Tanous                                         std::string_view arg2)
488f12894f8SJason M. Bills {
489f818b04dSEd Tanous     std::string arg1Str = arg1.dump(2, ' ', true,
490f818b04dSEd Tanous                                     nlohmann::json::error_handler_t::replace);
491fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::propertyValueFormatError,
492f818b04dSEd Tanous                   std::to_array<std::string_view>({arg1Str, arg2}));
493b5c07418SJames Feist }
494b5c07418SJames Feist 
495f818b04dSEd Tanous void propertyValueFormatError(crow::Response& res, const nlohmann::json& arg1,
4961668ce6dSEd Tanous                               std::string_view arg2)
497b5c07418SJames Feist {
498b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
499b5c07418SJames Feist     addMessageToJson(res.jsonValue, propertyValueFormatError(arg1, arg2), arg2);
500f12894f8SJason M. Bills }
501f12894f8SJason M. Bills 
502f12894f8SJason M. Bills /**
503f12894f8SJason M. Bills  * @internal
504f12894f8SJason M. Bills  * @brief Formats PropertyValueNotInList message into JSON for the specified
505f12894f8SJason M. Bills  * property
506f12894f8SJason M. Bills  *
507f12894f8SJason M. Bills  * See header file for more information
508f12894f8SJason M. Bills  * @endinternal
509f12894f8SJason M. Bills  */
510e2616cc5SEd Tanous 
511e2616cc5SEd Tanous nlohmann::json propertyValueNotInList(const nlohmann::json& arg1,
5121668ce6dSEd Tanous                                       std::string_view arg2)
513f12894f8SJason M. Bills {
514e2616cc5SEd Tanous     std::string arg1Str = arg1.dump(-1, ' ', true,
515e2616cc5SEd Tanous                                     nlohmann::json::error_handler_t::replace);
516fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::propertyValueNotInList,
517e2616cc5SEd Tanous                   std::to_array<std::string_view>({arg1Str, arg2}));
518b5c07418SJames Feist }
519b5c07418SJames Feist 
520e2616cc5SEd Tanous void propertyValueNotInList(crow::Response& res, const nlohmann::json& arg1,
5211668ce6dSEd Tanous                             std::string_view arg2)
522b5c07418SJames Feist {
523b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
524b5c07418SJames Feist     addMessageToJson(res.jsonValue, propertyValueNotInList(arg1, arg2), arg2);
525f4c4dcf4SKowalski, Kamil }
526f4c4dcf4SKowalski, Kamil 
527f4c4dcf4SKowalski, Kamil /**
528f4c4dcf4SKowalski, Kamil  * @internal
529227a2b0aSJiaqing Zhao  * @brief Formats PropertyValueOutOfRange message into JSON
530227a2b0aSJiaqing Zhao  *
531227a2b0aSJiaqing Zhao  * See header file for more information
532227a2b0aSJiaqing Zhao  * @endinternal
533227a2b0aSJiaqing Zhao  */
53495b3ad73SEd Tanous nlohmann::json propertyValueOutOfRange(const nlohmann::json& arg1,
535227a2b0aSJiaqing Zhao                                        std::string_view arg2)
536227a2b0aSJiaqing Zhao {
53795b3ad73SEd Tanous     std::string arg1Str = arg1.dump(2, ' ', true,
53895b3ad73SEd Tanous                                     nlohmann::json::error_handler_t::replace);
539227a2b0aSJiaqing Zhao     return getLog(redfish::registries::base::Index::propertyValueOutOfRange,
54095b3ad73SEd Tanous                   std::to_array<std::string_view>({arg1Str, arg2}));
541227a2b0aSJiaqing Zhao }
542227a2b0aSJiaqing Zhao 
54395b3ad73SEd Tanous void propertyValueOutOfRange(crow::Response& res, const nlohmann::json& arg1,
544227a2b0aSJiaqing Zhao                              std::string_view arg2)
545227a2b0aSJiaqing Zhao {
546227a2b0aSJiaqing Zhao     res.result(boost::beast::http::status::bad_request);
547227a2b0aSJiaqing Zhao     addMessageToErrorJson(res.jsonValue, propertyValueOutOfRange(arg1, arg2));
548227a2b0aSJiaqing Zhao }
549227a2b0aSJiaqing Zhao 
550227a2b0aSJiaqing Zhao /**
551227a2b0aSJiaqing Zhao  * @internal
552f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceAtUriInUnknownFormat message into JSON
553f4c4dcf4SKowalski, Kamil  *
554f4c4dcf4SKowalski, Kamil  * See header file for more information
555f4c4dcf4SKowalski, Kamil  * @endinternal
556f4c4dcf4SKowalski, Kamil  */
557d9f466b3SEd Tanous nlohmann::json resourceAtUriInUnknownFormat(boost::urls::url_view arg1)
5581abe55efSEd Tanous {
559b6cd31e1SEd Tanous     return getLog(
560fffb8c1fSEd Tanous         redfish::registries::base::Index::resourceAtUriInUnknownFormat,
561079360aeSEd Tanous         std::to_array<std::string_view>({arg1.buffer()}));
562b5c07418SJames Feist }
563b5c07418SJames Feist 
564ace85d60SEd Tanous void resourceAtUriInUnknownFormat(crow::Response& res,
565d9f466b3SEd Tanous                                   boost::urls::url_view arg1)
566b5c07418SJames Feist {
567b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
568b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, resourceAtUriInUnknownFormat(arg1));
569f4c4dcf4SKowalski, Kamil }
570f4c4dcf4SKowalski, Kamil 
571f4c4dcf4SKowalski, Kamil /**
572f4c4dcf4SKowalski, Kamil  * @internal
57381856681SAsmitha Karunanithi  * @brief Formats ServiceDisabled message into JSON
57481856681SAsmitha Karunanithi  *
57581856681SAsmitha Karunanithi  * See header file for more information
57681856681SAsmitha Karunanithi  * @endinternal
57781856681SAsmitha Karunanithi  */
5781668ce6dSEd Tanous nlohmann::json serviceDisabled(std::string_view arg1)
57981856681SAsmitha Karunanithi {
580fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::serviceDisabled,
5811668ce6dSEd Tanous                   std::to_array({arg1}));
58281856681SAsmitha Karunanithi }
58381856681SAsmitha Karunanithi 
5841668ce6dSEd Tanous void serviceDisabled(crow::Response& res, std::string_view arg1)
58581856681SAsmitha Karunanithi {
58681856681SAsmitha Karunanithi     res.result(boost::beast::http::status::service_unavailable);
58781856681SAsmitha Karunanithi     addMessageToErrorJson(res.jsonValue, serviceDisabled(arg1));
58881856681SAsmitha Karunanithi }
58981856681SAsmitha Karunanithi 
59081856681SAsmitha Karunanithi /**
59181856681SAsmitha Karunanithi  * @internal
592f4c4dcf4SKowalski, Kamil  * @brief Formats ServiceInUnknownState message into JSON
593f4c4dcf4SKowalski, Kamil  *
594f4c4dcf4SKowalski, Kamil  * See header file for more information
595f4c4dcf4SKowalski, Kamil  * @endinternal
596f4c4dcf4SKowalski, Kamil  */
597d9fcfcc1SEd Tanous nlohmann::json serviceInUnknownState()
5981abe55efSEd Tanous {
599fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::serviceInUnknownState, {});
600b5c07418SJames Feist }
601b5c07418SJames Feist 
602b5c07418SJames Feist void serviceInUnknownState(crow::Response& res)
603b5c07418SJames Feist {
604b5c07418SJames Feist     res.result(boost::beast::http::status::service_unavailable);
605b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, serviceInUnknownState());
606f4c4dcf4SKowalski, Kamil }
607f4c4dcf4SKowalski, Kamil 
608f4c4dcf4SKowalski, Kamil /**
609f4c4dcf4SKowalski, Kamil  * @internal
610f4c4dcf4SKowalski, Kamil  * @brief Formats EventSubscriptionLimitExceeded message into JSON
611f4c4dcf4SKowalski, Kamil  *
612f4c4dcf4SKowalski, Kamil  * See header file for more information
613f4c4dcf4SKowalski, Kamil  * @endinternal
614f4c4dcf4SKowalski, Kamil  */
615d9fcfcc1SEd Tanous nlohmann::json eventSubscriptionLimitExceeded()
6161abe55efSEd Tanous {
617fffb8c1fSEd Tanous     return getLog(
618fffb8c1fSEd Tanous         redfish::registries::base::Index::eventSubscriptionLimitExceeded, {});
619b5c07418SJames Feist }
620b5c07418SJames Feist 
621b5c07418SJames Feist void eventSubscriptionLimitExceeded(crow::Response& res)
622b5c07418SJames Feist {
623789fdab3SEd Tanous     res.result(boost::beast::http::status::service_unavailable);
624b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, eventSubscriptionLimitExceeded());
625f4c4dcf4SKowalski, Kamil }
626f4c4dcf4SKowalski, Kamil 
627f4c4dcf4SKowalski, Kamil /**
628f4c4dcf4SKowalski, Kamil  * @internal
629f4c4dcf4SKowalski, Kamil  * @brief Formats ActionParameterMissing message into JSON
630f4c4dcf4SKowalski, Kamil  *
631f4c4dcf4SKowalski, Kamil  * See header file for more information
632f4c4dcf4SKowalski, Kamil  * @endinternal
633f4c4dcf4SKowalski, Kamil  */
6341668ce6dSEd Tanous nlohmann::json actionParameterMissing(std::string_view arg1,
6351668ce6dSEd Tanous                                       std::string_view arg2)
6361abe55efSEd Tanous {
637fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::actionParameterMissing,
6381668ce6dSEd Tanous                   std::to_array({arg1, arg2}));
639b5c07418SJames Feist }
640b5c07418SJames Feist 
6411668ce6dSEd Tanous void actionParameterMissing(crow::Response& res, std::string_view arg1,
6421668ce6dSEd Tanous                             std::string_view arg2)
643b5c07418SJames Feist {
644b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
645b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, actionParameterMissing(arg1, arg2));
646f4c4dcf4SKowalski, Kamil }
647f4c4dcf4SKowalski, Kamil 
648f4c4dcf4SKowalski, Kamil /**
649f4c4dcf4SKowalski, Kamil  * @internal
650f4c4dcf4SKowalski, Kamil  * @brief Formats StringValueTooLong message into JSON
651f4c4dcf4SKowalski, Kamil  *
652f4c4dcf4SKowalski, Kamil  * See header file for more information
653f4c4dcf4SKowalski, Kamil  * @endinternal
654f4c4dcf4SKowalski, Kamil  */
6551668ce6dSEd Tanous nlohmann::json stringValueTooLong(std::string_view arg1, int arg2)
6561abe55efSEd Tanous {
657b6cd31e1SEd Tanous     std::string arg2String = std::to_string(arg2);
658fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::stringValueTooLong,
6591668ce6dSEd Tanous                   std::to_array({arg1, std::string_view(arg2String)}));
660b5c07418SJames Feist }
661b5c07418SJames Feist 
6621668ce6dSEd Tanous void stringValueTooLong(crow::Response& res, std::string_view arg1, int arg2)
663b5c07418SJames Feist {
664b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
665b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, stringValueTooLong(arg1, arg2));
666f4c4dcf4SKowalski, Kamil }
667f4c4dcf4SKowalski, Kamil 
668f4c4dcf4SKowalski, Kamil /**
669f4c4dcf4SKowalski, Kamil  * @internal
670cc9139ecSJason M. Bills  * @brief Formats SessionTerminated message into JSON
671cc9139ecSJason M. Bills  *
672cc9139ecSJason M. Bills  * See header file for more information
673cc9139ecSJason M. Bills  * @endinternal
674cc9139ecSJason M. Bills  */
675d9fcfcc1SEd Tanous nlohmann::json sessionTerminated()
676cc9139ecSJason M. Bills {
677fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::sessionTerminated, {});
678b5c07418SJames Feist }
679b5c07418SJames Feist 
680b5c07418SJames Feist void sessionTerminated(crow::Response& res)
681b5c07418SJames Feist {
682b5c07418SJames Feist     res.result(boost::beast::http::status::ok);
683b5c07418SJames Feist     addMessageToJsonRoot(res.jsonValue, sessionTerminated());
684cc9139ecSJason M. Bills }
685cc9139ecSJason M. Bills 
686cc9139ecSJason M. Bills /**
687cc9139ecSJason M. Bills  * @internal
688684bb4b8SJason M. Bills  * @brief Formats SubscriptionTerminated message into JSON
689684bb4b8SJason M. Bills  *
690684bb4b8SJason M. Bills  * See header file for more information
691684bb4b8SJason M. Bills  * @endinternal
692684bb4b8SJason M. Bills  */
693d9fcfcc1SEd Tanous nlohmann::json subscriptionTerminated()
694684bb4b8SJason M. Bills {
695fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::subscriptionTerminated, {});
696684bb4b8SJason M. Bills }
697684bb4b8SJason M. Bills 
698684bb4b8SJason M. Bills void subscriptionTerminated(crow::Response& res)
699684bb4b8SJason M. Bills {
700684bb4b8SJason M. Bills     res.result(boost::beast::http::status::ok);
701684bb4b8SJason M. Bills     addMessageToJsonRoot(res.jsonValue, subscriptionTerminated());
702684bb4b8SJason M. Bills }
703684bb4b8SJason M. Bills 
704684bb4b8SJason M. Bills /**
705684bb4b8SJason M. Bills  * @internal
706cc9139ecSJason M. Bills  * @brief Formats ResourceTypeIncompatible message into JSON
707cc9139ecSJason M. Bills  *
708cc9139ecSJason M. Bills  * See header file for more information
709cc9139ecSJason M. Bills  * @endinternal
710cc9139ecSJason M. Bills  */
7111668ce6dSEd Tanous nlohmann::json resourceTypeIncompatible(std::string_view arg1,
7121668ce6dSEd Tanous                                         std::string_view arg2)
713cc9139ecSJason M. Bills {
714fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::resourceTypeIncompatible,
7151668ce6dSEd Tanous                   std::to_array({arg1, arg2}));
716b5c07418SJames Feist }
717b5c07418SJames Feist 
7181668ce6dSEd Tanous void resourceTypeIncompatible(crow::Response& res, std::string_view arg1,
7191668ce6dSEd Tanous                               std::string_view arg2)
720b5c07418SJames Feist {
721b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
722b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, resourceTypeIncompatible(arg1, arg2));
723cc9139ecSJason M. Bills }
724cc9139ecSJason M. Bills 
725cc9139ecSJason M. Bills /**
726cc9139ecSJason M. Bills  * @internal
727684bb4b8SJason M. Bills  * @brief Formats ResetRequired message into JSON
728684bb4b8SJason M. Bills  *
729684bb4b8SJason M. Bills  * See header file for more information
730684bb4b8SJason M. Bills  * @endinternal
731684bb4b8SJason M. Bills  */
732d9f466b3SEd Tanous nlohmann::json resetRequired(boost::urls::url_view arg1, std::string_view arg2)
733684bb4b8SJason M. Bills {
734fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::resetRequired,
735079360aeSEd Tanous                   std::to_array<std::string_view>({arg1.buffer(), arg2}));
736684bb4b8SJason M. Bills }
737684bb4b8SJason M. Bills 
738d9f466b3SEd Tanous void resetRequired(crow::Response& res, boost::urls::url_view arg1,
7391668ce6dSEd Tanous                    std::string_view arg2)
740684bb4b8SJason M. Bills {
741684bb4b8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
742684bb4b8SJason M. Bills     addMessageToErrorJson(res.jsonValue, resetRequired(arg1, arg2));
743684bb4b8SJason M. Bills }
744684bb4b8SJason M. Bills 
745684bb4b8SJason M. Bills /**
746684bb4b8SJason M. Bills  * @internal
747684bb4b8SJason M. Bills  * @brief Formats ChassisPowerStateOnRequired message into JSON
748684bb4b8SJason M. Bills  *
749684bb4b8SJason M. Bills  * See header file for more information
750684bb4b8SJason M. Bills  * @endinternal
751684bb4b8SJason M. Bills  */
7521668ce6dSEd Tanous nlohmann::json chassisPowerStateOnRequired(std::string_view arg1)
753684bb4b8SJason M. Bills {
754fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::resetRequired,
7551668ce6dSEd Tanous                   std::to_array({arg1}));
756684bb4b8SJason M. Bills }
757684bb4b8SJason M. Bills 
7581668ce6dSEd Tanous void chassisPowerStateOnRequired(crow::Response& res, std::string_view arg1)
759684bb4b8SJason M. Bills {
760684bb4b8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
761684bb4b8SJason M. Bills     addMessageToErrorJson(res.jsonValue, chassisPowerStateOnRequired(arg1));
762684bb4b8SJason M. Bills }
763684bb4b8SJason M. Bills 
764684bb4b8SJason M. Bills /**
765684bb4b8SJason M. Bills  * @internal
766684bb4b8SJason M. Bills  * @brief Formats ChassisPowerStateOffRequired message into JSON
767684bb4b8SJason M. Bills  *
768684bb4b8SJason M. Bills  * See header file for more information
769684bb4b8SJason M. Bills  * @endinternal
770684bb4b8SJason M. Bills  */
7711668ce6dSEd Tanous nlohmann::json chassisPowerStateOffRequired(std::string_view arg1)
772684bb4b8SJason M. Bills {
773b6cd31e1SEd Tanous     return getLog(
774fffb8c1fSEd Tanous         redfish::registries::base::Index::chassisPowerStateOffRequired,
7751668ce6dSEd Tanous         std::to_array({arg1}));
776684bb4b8SJason M. Bills }
777684bb4b8SJason M. Bills 
7781668ce6dSEd Tanous void chassisPowerStateOffRequired(crow::Response& res, std::string_view arg1)
779684bb4b8SJason M. Bills {
780684bb4b8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
781684bb4b8SJason M. Bills     addMessageToErrorJson(res.jsonValue, chassisPowerStateOffRequired(arg1));
782684bb4b8SJason M. Bills }
783684bb4b8SJason M. Bills 
784684bb4b8SJason M. Bills /**
785684bb4b8SJason M. Bills  * @internal
786684bb4b8SJason M. Bills  * @brief Formats PropertyValueConflict message into JSON
787684bb4b8SJason M. Bills  *
788684bb4b8SJason M. Bills  * See header file for more information
789684bb4b8SJason M. Bills  * @endinternal
790684bb4b8SJason M. Bills  */
7911668ce6dSEd Tanous nlohmann::json propertyValueConflict(std::string_view arg1,
7921668ce6dSEd Tanous                                      std::string_view arg2)
793684bb4b8SJason M. Bills {
794fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::propertyValueConflict,
7951668ce6dSEd Tanous                   std::to_array({arg1, arg2}));
796684bb4b8SJason M. Bills }
797684bb4b8SJason M. Bills 
7981668ce6dSEd Tanous void propertyValueConflict(crow::Response& res, std::string_view arg1,
7991668ce6dSEd Tanous                            std::string_view arg2)
800684bb4b8SJason M. Bills {
801684bb4b8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
802684bb4b8SJason M. Bills     addMessageToErrorJson(res.jsonValue, propertyValueConflict(arg1, arg2));
803684bb4b8SJason M. Bills }
804684bb4b8SJason M. Bills 
805684bb4b8SJason M. Bills /**
806684bb4b8SJason M. Bills  * @internal
8072a6af81cSRamesh Iyyar  * @brief Formats PropertyValueResourceConflict message into JSON
8082a6af81cSRamesh Iyyar  *
8092a6af81cSRamesh Iyyar  * See header file for more information
8102a6af81cSRamesh Iyyar  * @endinternal
8112a6af81cSRamesh Iyyar  */
8122a6af81cSRamesh Iyyar nlohmann::json propertyValueResourceConflict(std::string_view arg1,
81395b3ad73SEd Tanous                                              const nlohmann::json& arg2,
814d9f466b3SEd Tanous                                              boost::urls::url_view arg3)
8152a6af81cSRamesh Iyyar {
81695b3ad73SEd Tanous     std::string arg2Str = arg2.dump(2, ' ', true,
81795b3ad73SEd Tanous                                     nlohmann::json::error_handler_t::replace);
81895b3ad73SEd Tanous 
8192a6af81cSRamesh Iyyar     return getLog(
8202a6af81cSRamesh Iyyar         redfish::registries::base::Index::propertyValueResourceConflict,
82195b3ad73SEd Tanous         std::to_array<std::string_view>({arg1, arg2Str, arg3.buffer()}));
8222a6af81cSRamesh Iyyar }
8232a6af81cSRamesh Iyyar 
8242a6af81cSRamesh Iyyar void propertyValueResourceConflict(crow::Response& res, std::string_view arg1,
82595b3ad73SEd Tanous                                    const nlohmann::json& arg2,
826d9f466b3SEd Tanous                                    boost::urls::url_view arg3)
8272a6af81cSRamesh Iyyar {
8282a6af81cSRamesh Iyyar     res.result(boost::beast::http::status::conflict);
8292a6af81cSRamesh Iyyar     addMessageToErrorJson(res.jsonValue,
8302a6af81cSRamesh Iyyar                           propertyValueResourceConflict(arg1, arg2, arg3));
8312a6af81cSRamesh Iyyar }
8322a6af81cSRamesh Iyyar 
8332a6af81cSRamesh Iyyar /**
8342a6af81cSRamesh Iyyar  * @internal
83524861a28SRamesh Iyyar  * @brief Formats PropertyValueExternalConflict message into JSON
83624861a28SRamesh Iyyar  *
83724861a28SRamesh Iyyar  * See header file for more information
83824861a28SRamesh Iyyar  * @endinternal
83924861a28SRamesh Iyyar  */
84024861a28SRamesh Iyyar nlohmann::json propertyValueExternalConflict(std::string_view arg1,
84195b3ad73SEd Tanous                                              const nlohmann::json& arg2)
84224861a28SRamesh Iyyar {
84395b3ad73SEd Tanous     std::string arg2Str = arg2.dump(2, ' ', true,
84495b3ad73SEd Tanous                                     nlohmann::json::error_handler_t::replace);
84595b3ad73SEd Tanous 
84624861a28SRamesh Iyyar     return getLog(
84724861a28SRamesh Iyyar         redfish::registries::base::Index::propertyValueExternalConflict,
84895b3ad73SEd Tanous         std::to_array<std::string_view>({arg1, arg2Str}));
84924861a28SRamesh Iyyar }
85024861a28SRamesh Iyyar 
85124861a28SRamesh Iyyar void propertyValueExternalConflict(crow::Response& res, std::string_view arg1,
85295b3ad73SEd Tanous                                    const nlohmann::json& arg2)
85324861a28SRamesh Iyyar {
85424861a28SRamesh Iyyar     res.result(boost::beast::http::status::conflict);
85524861a28SRamesh Iyyar     addMessageToErrorJson(res.jsonValue,
85624861a28SRamesh Iyyar                           propertyValueExternalConflict(arg1, arg2));
85724861a28SRamesh Iyyar }
85824861a28SRamesh Iyyar 
85924861a28SRamesh Iyyar /**
86024861a28SRamesh Iyyar  * @internal
861684bb4b8SJason M. Bills  * @brief Formats PropertyValueIncorrect message into JSON
862684bb4b8SJason M. Bills  *
863684bb4b8SJason M. Bills  * See header file for more information
864684bb4b8SJason M. Bills  * @endinternal
865684bb4b8SJason M. Bills  */
866367b3dceSGinu George nlohmann::json propertyValueIncorrect(std::string_view arg1,
867367b3dceSGinu George                                       const nlohmann::json& arg2)
868684bb4b8SJason M. Bills {
869367b3dceSGinu George     std::string arg2Str = arg2.dump(2, ' ', true,
87014fbced6SEd Tanous                                     nlohmann::json::error_handler_t::replace);
871fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::propertyValueIncorrect,
872367b3dceSGinu George                   std::to_array<std::string_view>({arg1, arg2Str}));
873684bb4b8SJason M. Bills }
874684bb4b8SJason M. Bills 
875367b3dceSGinu George void propertyValueIncorrect(crow::Response& res, std::string_view arg1,
876367b3dceSGinu George                             const nlohmann::json& arg2)
877684bb4b8SJason M. Bills {
878684bb4b8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
879684bb4b8SJason M. Bills     addMessageToErrorJson(res.jsonValue, propertyValueIncorrect(arg1, arg2));
880684bb4b8SJason M. Bills }
881684bb4b8SJason M. Bills 
882684bb4b8SJason M. Bills /**
883684bb4b8SJason M. Bills  * @internal
884684bb4b8SJason M. Bills  * @brief Formats ResourceCreationConflict message into JSON
885684bb4b8SJason M. Bills  *
886684bb4b8SJason M. Bills  * See header file for more information
887684bb4b8SJason M. Bills  * @endinternal
888684bb4b8SJason M. Bills  */
889d9f466b3SEd Tanous nlohmann::json resourceCreationConflict(boost::urls::url_view arg1)
890684bb4b8SJason M. Bills {
891fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::resourceCreationConflict,
892079360aeSEd Tanous                   std::to_array<std::string_view>({arg1.buffer()}));
893684bb4b8SJason M. Bills }
894684bb4b8SJason M. Bills 
895d9f466b3SEd Tanous void resourceCreationConflict(crow::Response& res, boost::urls::url_view arg1)
896684bb4b8SJason M. Bills {
897684bb4b8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
898684bb4b8SJason M. Bills     addMessageToErrorJson(res.jsonValue, resourceCreationConflict(arg1));
899684bb4b8SJason M. Bills }
900684bb4b8SJason M. Bills 
901684bb4b8SJason M. Bills /**
902684bb4b8SJason M. Bills  * @internal
903684bb4b8SJason M. Bills  * @brief Formats MaximumErrorsExceeded message into JSON
904684bb4b8SJason M. Bills  *
905684bb4b8SJason M. Bills  * See header file for more information
906684bb4b8SJason M. Bills  * @endinternal
907684bb4b8SJason M. Bills  */
908d9fcfcc1SEd Tanous nlohmann::json maximumErrorsExceeded()
909684bb4b8SJason M. Bills {
910fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::maximumErrorsExceeded, {});
911684bb4b8SJason M. Bills }
912684bb4b8SJason M. Bills 
913684bb4b8SJason M. Bills void maximumErrorsExceeded(crow::Response& res)
914684bb4b8SJason M. Bills {
915684bb4b8SJason M. Bills     res.result(boost::beast::http::status::internal_server_error);
916684bb4b8SJason M. Bills     addMessageToErrorJson(res.jsonValue, maximumErrorsExceeded());
917684bb4b8SJason M. Bills }
918684bb4b8SJason M. Bills 
919684bb4b8SJason M. Bills /**
920684bb4b8SJason M. Bills  * @internal
921684bb4b8SJason M. Bills  * @brief Formats PreconditionFailed message into JSON
922684bb4b8SJason M. Bills  *
923684bb4b8SJason M. Bills  * See header file for more information
924684bb4b8SJason M. Bills  * @endinternal
925684bb4b8SJason M. Bills  */
926d9fcfcc1SEd Tanous nlohmann::json preconditionFailed()
927684bb4b8SJason M. Bills {
928fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::preconditionFailed, {});
929684bb4b8SJason M. Bills }
930684bb4b8SJason M. Bills 
931684bb4b8SJason M. Bills void preconditionFailed(crow::Response& res)
932684bb4b8SJason M. Bills {
9334df1bee0SEd Tanous     res.result(boost::beast::http::status::precondition_failed);
934684bb4b8SJason M. Bills     addMessageToErrorJson(res.jsonValue, preconditionFailed());
935684bb4b8SJason M. Bills }
936684bb4b8SJason M. Bills 
937684bb4b8SJason M. Bills /**
938684bb4b8SJason M. Bills  * @internal
939684bb4b8SJason M. Bills  * @brief Formats PreconditionRequired message into JSON
940684bb4b8SJason M. Bills  *
941684bb4b8SJason M. Bills  * See header file for more information
942684bb4b8SJason M. Bills  * @endinternal
943684bb4b8SJason M. Bills  */
944d9fcfcc1SEd Tanous nlohmann::json preconditionRequired()
945684bb4b8SJason M. Bills {
946fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::preconditionRequired, {});
947684bb4b8SJason M. Bills }
948684bb4b8SJason M. Bills 
949684bb4b8SJason M. Bills void preconditionRequired(crow::Response& res)
950684bb4b8SJason M. Bills {
951684bb4b8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
952684bb4b8SJason M. Bills     addMessageToErrorJson(res.jsonValue, preconditionRequired());
953684bb4b8SJason M. Bills }
954684bb4b8SJason M. Bills 
955684bb4b8SJason M. Bills /**
956684bb4b8SJason M. Bills  * @internal
957684bb4b8SJason M. Bills  * @brief Formats OperationFailed message into JSON
958684bb4b8SJason M. Bills  *
959684bb4b8SJason M. Bills  * See header file for more information
960684bb4b8SJason M. Bills  * @endinternal
961684bb4b8SJason M. Bills  */
962d9fcfcc1SEd Tanous nlohmann::json operationFailed()
963684bb4b8SJason M. Bills {
964fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::operationFailed, {});
965684bb4b8SJason M. Bills }
966684bb4b8SJason M. Bills 
967684bb4b8SJason M. Bills void operationFailed(crow::Response& res)
968684bb4b8SJason M. Bills {
9698868776eSEd Tanous     res.result(boost::beast::http::status::bad_gateway);
970684bb4b8SJason M. Bills     addMessageToErrorJson(res.jsonValue, operationFailed());
971684bb4b8SJason M. Bills }
972684bb4b8SJason M. Bills 
973684bb4b8SJason M. Bills /**
974684bb4b8SJason M. Bills  * @internal
975684bb4b8SJason M. Bills  * @brief Formats OperationTimeout message into JSON
976684bb4b8SJason M. Bills  *
977684bb4b8SJason M. Bills  * See header file for more information
978684bb4b8SJason M. Bills  * @endinternal
979684bb4b8SJason M. Bills  */
980d9fcfcc1SEd Tanous nlohmann::json operationTimeout()
981684bb4b8SJason M. Bills {
982fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::operationTimeout, {});
983684bb4b8SJason M. Bills }
984684bb4b8SJason M. Bills 
985684bb4b8SJason M. Bills void operationTimeout(crow::Response& res)
986684bb4b8SJason M. Bills {
987684bb4b8SJason M. Bills     res.result(boost::beast::http::status::internal_server_error);
988684bb4b8SJason M. Bills     addMessageToErrorJson(res.jsonValue, operationTimeout());
989684bb4b8SJason M. Bills }
990684bb4b8SJason M. Bills 
991684bb4b8SJason M. Bills /**
992684bb4b8SJason M. Bills  * @internal
993f12894f8SJason M. Bills  * @brief Formats PropertyValueTypeError message into JSON for the specified
994f12894f8SJason M. Bills  * property
995f12894f8SJason M. Bills  *
996f12894f8SJason M. Bills  * See header file for more information
997f12894f8SJason M. Bills  * @endinternal
998f12894f8SJason M. Bills  */
9992e8c4bdaSEd Tanous nlohmann::json propertyValueTypeError(const nlohmann::json& arg1,
10001668ce6dSEd Tanous                                       std::string_view arg2)
1001f12894f8SJason M. Bills {
10022e8c4bdaSEd Tanous     std::string arg1Str = arg1.dump(2, ' ', true,
10032e8c4bdaSEd Tanous                                     nlohmann::json::error_handler_t::replace);
1004fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::propertyValueTypeError,
10052e8c4bdaSEd Tanous                   std::to_array<std::string_view>({arg1Str, arg2}));
1006b5c07418SJames Feist }
1007b5c07418SJames Feist 
10082e8c4bdaSEd Tanous void propertyValueTypeError(crow::Response& res, const nlohmann::json& arg1,
10091668ce6dSEd Tanous                             std::string_view arg2)
1010b5c07418SJames Feist {
1011b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1012b5c07418SJames Feist     addMessageToJson(res.jsonValue, propertyValueTypeError(arg1, arg2), arg2);
1013f4c4dcf4SKowalski, Kamil }
1014f4c4dcf4SKowalski, Kamil 
1015f4c4dcf4SKowalski, Kamil /**
1016f4c4dcf4SKowalski, Kamil  * @internal
1017b6cd31e1SEd Tanous  * @brief Formats ResourceNotFound message into JSONd
1018f4c4dcf4SKowalski, Kamil  *
1019f4c4dcf4SKowalski, Kamil  * See header file for more information
1020f4c4dcf4SKowalski, Kamil  * @endinternal
1021f4c4dcf4SKowalski, Kamil  */
10221668ce6dSEd Tanous nlohmann::json resourceNotFound(std::string_view arg1, std::string_view arg2)
10231abe55efSEd Tanous {
1024fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::resourceNotFound,
10251668ce6dSEd Tanous                   std::to_array({arg1, arg2}));
1026b5c07418SJames Feist }
1027b5c07418SJames Feist 
10281668ce6dSEd Tanous void resourceNotFound(crow::Response& res, std::string_view arg1,
10291668ce6dSEd Tanous                       std::string_view arg2)
1030b5c07418SJames Feist {
1031b5c07418SJames Feist     res.result(boost::beast::http::status::not_found);
1032b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, resourceNotFound(arg1, arg2));
1033f4c4dcf4SKowalski, Kamil }
1034f4c4dcf4SKowalski, Kamil 
1035f4c4dcf4SKowalski, Kamil /**
1036f4c4dcf4SKowalski, Kamil  * @internal
1037f4c4dcf4SKowalski, Kamil  * @brief Formats CouldNotEstablishConnection message into JSON
1038f4c4dcf4SKowalski, Kamil  *
1039f4c4dcf4SKowalski, Kamil  * See header file for more information
1040f4c4dcf4SKowalski, Kamil  * @endinternal
1041f4c4dcf4SKowalski, Kamil  */
1042d9f466b3SEd Tanous nlohmann::json couldNotEstablishConnection(boost::urls::url_view arg1)
10431abe55efSEd Tanous {
1044fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::couldNotEstablishConnection,
1045079360aeSEd Tanous                   std::to_array<std::string_view>({arg1.buffer()}));
1046b5c07418SJames Feist }
1047b5c07418SJames Feist 
1048ace85d60SEd Tanous void couldNotEstablishConnection(crow::Response& res,
1049d9f466b3SEd Tanous                                  boost::urls::url_view arg1)
1050b5c07418SJames Feist {
1051b5c07418SJames Feist     res.result(boost::beast::http::status::not_found);
1052b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, couldNotEstablishConnection(arg1));
1053f4c4dcf4SKowalski, Kamil }
1054f4c4dcf4SKowalski, Kamil 
1055f4c4dcf4SKowalski, Kamil /**
1056f4c4dcf4SKowalski, Kamil  * @internal
1057f12894f8SJason M. Bills  * @brief Formats PropertyNotWritable message into JSON for the specified
1058f12894f8SJason M. Bills  * property
1059f12894f8SJason M. Bills  *
1060f12894f8SJason M. Bills  * See header file for more information
1061f12894f8SJason M. Bills  * @endinternal
1062f12894f8SJason M. Bills  */
10631668ce6dSEd Tanous nlohmann::json propertyNotWritable(std::string_view arg1)
1064f12894f8SJason M. Bills {
1065fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::propertyNotWritable,
10661668ce6dSEd Tanous                   std::to_array({arg1}));
1067b5c07418SJames Feist }
1068b5c07418SJames Feist 
10691668ce6dSEd Tanous void propertyNotWritable(crow::Response& res, std::string_view arg1)
1070b5c07418SJames Feist {
1071b5c07418SJames Feist     res.result(boost::beast::http::status::forbidden);
1072b5c07418SJames Feist     addMessageToJson(res.jsonValue, propertyNotWritable(arg1), arg1);
1073f4c4dcf4SKowalski, Kamil }
1074f4c4dcf4SKowalski, Kamil 
1075f4c4dcf4SKowalski, Kamil /**
1076f4c4dcf4SKowalski, Kamil  * @internal
1077f4c4dcf4SKowalski, Kamil  * @brief Formats QueryParameterValueTypeError message into JSON
1078f4c4dcf4SKowalski, Kamil  *
1079f4c4dcf4SKowalski, Kamil  * See header file for more information
1080f4c4dcf4SKowalski, Kamil  * @endinternal
1081f4c4dcf4SKowalski, Kamil  */
108295b3ad73SEd Tanous nlohmann::json queryParameterValueTypeError(const nlohmann::json& arg1,
10831668ce6dSEd Tanous                                             std::string_view arg2)
10841abe55efSEd Tanous {
108595b3ad73SEd Tanous     std::string arg1Str = arg1.dump(2, ' ', true,
108695b3ad73SEd Tanous                                     nlohmann::json::error_handler_t::replace);
1087b6cd31e1SEd Tanous     return getLog(
1088fffb8c1fSEd Tanous         redfish::registries::base::Index::queryParameterValueTypeError,
108995b3ad73SEd Tanous         std::to_array<std::string_view>({arg1Str, arg2}));
1090b5c07418SJames Feist }
1091b5c07418SJames Feist 
109295b3ad73SEd Tanous void queryParameterValueTypeError(crow::Response& res,
109395b3ad73SEd Tanous                                   const nlohmann::json& arg1,
10941668ce6dSEd Tanous                                   std::string_view arg2)
1095b5c07418SJames Feist {
1096b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1097b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue,
1098b5c07418SJames Feist                           queryParameterValueTypeError(arg1, arg2));
1099f4c4dcf4SKowalski, Kamil }
1100f4c4dcf4SKowalski, Kamil 
1101f4c4dcf4SKowalski, Kamil /**
1102f4c4dcf4SKowalski, Kamil  * @internal
1103f4c4dcf4SKowalski, Kamil  * @brief Formats ServiceShuttingDown message into JSON
1104f4c4dcf4SKowalski, Kamil  *
1105f4c4dcf4SKowalski, Kamil  * See header file for more information
1106f4c4dcf4SKowalski, Kamil  * @endinternal
1107f4c4dcf4SKowalski, Kamil  */
1108d9fcfcc1SEd Tanous nlohmann::json serviceShuttingDown()
11091abe55efSEd Tanous {
1110fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::serviceShuttingDown, {});
1111b5c07418SJames Feist }
1112b5c07418SJames Feist 
1113b5c07418SJames Feist void serviceShuttingDown(crow::Response& res)
1114b5c07418SJames Feist {
1115b5c07418SJames Feist     res.result(boost::beast::http::status::service_unavailable);
1116b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, serviceShuttingDown());
1117f4c4dcf4SKowalski, Kamil }
1118f4c4dcf4SKowalski, Kamil 
1119f4c4dcf4SKowalski, Kamil /**
1120f4c4dcf4SKowalski, Kamil  * @internal
1121f4c4dcf4SKowalski, Kamil  * @brief Formats ActionParameterDuplicate message into JSON
1122f4c4dcf4SKowalski, Kamil  *
1123f4c4dcf4SKowalski, Kamil  * See header file for more information
1124f4c4dcf4SKowalski, Kamil  * @endinternal
1125f4c4dcf4SKowalski, Kamil  */
11261668ce6dSEd Tanous nlohmann::json actionParameterDuplicate(std::string_view arg1,
11271668ce6dSEd Tanous                                         std::string_view arg2)
11281abe55efSEd Tanous {
1129fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::actionParameterDuplicate,
11301668ce6dSEd Tanous                   std::to_array({arg1, arg2}));
1131b5c07418SJames Feist }
1132b5c07418SJames Feist 
11331668ce6dSEd Tanous void actionParameterDuplicate(crow::Response& res, std::string_view arg1,
11341668ce6dSEd Tanous                               std::string_view arg2)
1135b5c07418SJames Feist {
1136b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1137b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, actionParameterDuplicate(arg1, arg2));
1138f4c4dcf4SKowalski, Kamil }
1139f4c4dcf4SKowalski, Kamil 
1140f4c4dcf4SKowalski, Kamil /**
1141f4c4dcf4SKowalski, Kamil  * @internal
1142f4c4dcf4SKowalski, Kamil  * @brief Formats ActionParameterNotSupported message into JSON
1143f4c4dcf4SKowalski, Kamil  *
1144f4c4dcf4SKowalski, Kamil  * See header file for more information
1145f4c4dcf4SKowalski, Kamil  * @endinternal
1146f4c4dcf4SKowalski, Kamil  */
11471668ce6dSEd Tanous nlohmann::json actionParameterNotSupported(std::string_view arg1,
11481668ce6dSEd Tanous                                            std::string_view arg2)
11491abe55efSEd Tanous {
1150fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::actionParameterNotSupported,
11511668ce6dSEd Tanous                   std::to_array({arg1, arg2}));
1152b5c07418SJames Feist }
1153b5c07418SJames Feist 
11541668ce6dSEd Tanous void actionParameterNotSupported(crow::Response& res, std::string_view arg1,
11551668ce6dSEd Tanous                                  std::string_view arg2)
1156b5c07418SJames Feist {
1157b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1158b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue,
1159b5c07418SJames Feist                           actionParameterNotSupported(arg1, arg2));
1160f4c4dcf4SKowalski, Kamil }
1161f4c4dcf4SKowalski, Kamil 
1162f4c4dcf4SKowalski, Kamil /**
1163f4c4dcf4SKowalski, Kamil  * @internal
1164f4c4dcf4SKowalski, Kamil  * @brief Formats SourceDoesNotSupportProtocol message into JSON
1165f4c4dcf4SKowalski, Kamil  *
1166f4c4dcf4SKowalski, Kamil  * See header file for more information
1167f4c4dcf4SKowalski, Kamil  * @endinternal
1168f4c4dcf4SKowalski, Kamil  */
1169d9f466b3SEd Tanous nlohmann::json sourceDoesNotSupportProtocol(boost::urls::url_view arg1,
11701668ce6dSEd Tanous                                             std::string_view arg2)
11711abe55efSEd Tanous {
1172b6cd31e1SEd Tanous     return getLog(
1173fffb8c1fSEd Tanous         redfish::registries::base::Index::sourceDoesNotSupportProtocol,
1174079360aeSEd Tanous         std::to_array<std::string_view>({arg1.buffer(), arg2}));
1175b5c07418SJames Feist }
1176b5c07418SJames Feist 
1177ace85d60SEd Tanous void sourceDoesNotSupportProtocol(crow::Response& res,
1178d9f466b3SEd Tanous                                   boost::urls::url_view arg1,
11791668ce6dSEd Tanous                                   std::string_view arg2)
1180b5c07418SJames Feist {
1181b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1182b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue,
1183b5c07418SJames Feist                           sourceDoesNotSupportProtocol(arg1, arg2));
1184f4c4dcf4SKowalski, Kamil }
1185f4c4dcf4SKowalski, Kamil 
1186f4c4dcf4SKowalski, Kamil /**
1187f4c4dcf4SKowalski, Kamil  * @internal
1188b4ad4c05SShantappa Teekappanavar  * @brief Formats StrictAccountTypes message into JSON
1189b4ad4c05SShantappa Teekappanavar  *
1190b4ad4c05SShantappa Teekappanavar  * See header file for more information
1191b4ad4c05SShantappa Teekappanavar  * @endinternal
1192b4ad4c05SShantappa Teekappanavar  */
1193b4ad4c05SShantappa Teekappanavar nlohmann::json strictAccountTypes(std::string_view arg1)
1194b4ad4c05SShantappa Teekappanavar {
1195b4ad4c05SShantappa Teekappanavar     return getLog(redfish::registries::base::Index::strictAccountTypes,
1196b4ad4c05SShantappa Teekappanavar                   std::to_array({arg1}));
1197b4ad4c05SShantappa Teekappanavar }
1198b4ad4c05SShantappa Teekappanavar 
1199b4ad4c05SShantappa Teekappanavar void strictAccountTypes(crow::Response& res, std::string_view arg1)
1200b4ad4c05SShantappa Teekappanavar {
1201b4ad4c05SShantappa Teekappanavar     res.result(boost::beast::http::status::bad_request);
1202b4ad4c05SShantappa Teekappanavar     addMessageToErrorJson(res.jsonValue, strictAccountTypes(arg1));
1203b4ad4c05SShantappa Teekappanavar }
1204b4ad4c05SShantappa Teekappanavar 
1205b4ad4c05SShantappa Teekappanavar /**
1206b4ad4c05SShantappa Teekappanavar  * @internal
1207f4c4dcf4SKowalski, Kamil  * @brief Formats AccountRemoved message into JSON
1208f4c4dcf4SKowalski, Kamil  *
1209f4c4dcf4SKowalski, Kamil  * See header file for more information
1210f4c4dcf4SKowalski, Kamil  * @endinternal
1211f4c4dcf4SKowalski, Kamil  */
1212d9fcfcc1SEd Tanous nlohmann::json accountRemoved()
12131abe55efSEd Tanous {
1214fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::accountRemoved, {});
1215b5c07418SJames Feist }
1216b5c07418SJames Feist 
1217b5c07418SJames Feist void accountRemoved(crow::Response& res)
1218b5c07418SJames Feist {
1219b5c07418SJames Feist     res.result(boost::beast::http::status::ok);
1220b5c07418SJames Feist     addMessageToJsonRoot(res.jsonValue, accountRemoved());
1221f4c4dcf4SKowalski, Kamil }
1222f4c4dcf4SKowalski, Kamil 
1223f4c4dcf4SKowalski, Kamil /**
1224f4c4dcf4SKowalski, Kamil  * @internal
1225f4c4dcf4SKowalski, Kamil  * @brief Formats AccessDenied message into JSON
1226f4c4dcf4SKowalski, Kamil  *
1227f4c4dcf4SKowalski, Kamil  * See header file for more information
1228f4c4dcf4SKowalski, Kamil  * @endinternal
1229f4c4dcf4SKowalski, Kamil  */
1230d9f466b3SEd Tanous nlohmann::json accessDenied(boost::urls::url_view arg1)
12311abe55efSEd Tanous {
1232fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::accessDenied,
1233079360aeSEd Tanous                   std::to_array<std::string_view>({arg1.buffer()}));
1234b5c07418SJames Feist }
1235b5c07418SJames Feist 
1236d9f466b3SEd Tanous void accessDenied(crow::Response& res, boost::urls::url_view arg1)
1237b5c07418SJames Feist {
1238b5c07418SJames Feist     res.result(boost::beast::http::status::forbidden);
1239b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, accessDenied(arg1));
1240f4c4dcf4SKowalski, Kamil }
1241f4c4dcf4SKowalski, Kamil 
1242f4c4dcf4SKowalski, Kamil /**
1243f4c4dcf4SKowalski, Kamil  * @internal
1244f4c4dcf4SKowalski, Kamil  * @brief Formats QueryNotSupported message into JSON
1245f4c4dcf4SKowalski, Kamil  *
1246f4c4dcf4SKowalski, Kamil  * See header file for more information
1247f4c4dcf4SKowalski, Kamil  * @endinternal
1248f4c4dcf4SKowalski, Kamil  */
1249d9fcfcc1SEd Tanous nlohmann::json queryNotSupported()
12501abe55efSEd Tanous {
1251fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::queryNotSupported, {});
1252b5c07418SJames Feist }
1253b5c07418SJames Feist 
1254b5c07418SJames Feist void queryNotSupported(crow::Response& res)
1255b5c07418SJames Feist {
1256b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1257b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, queryNotSupported());
1258f4c4dcf4SKowalski, Kamil }
1259f4c4dcf4SKowalski, Kamil 
1260f4c4dcf4SKowalski, Kamil /**
1261f4c4dcf4SKowalski, Kamil  * @internal
1262f4c4dcf4SKowalski, Kamil  * @brief Formats CreateLimitReachedForResource message into JSON
1263f4c4dcf4SKowalski, Kamil  *
1264f4c4dcf4SKowalski, Kamil  * See header file for more information
1265f4c4dcf4SKowalski, Kamil  * @endinternal
1266f4c4dcf4SKowalski, Kamil  */
1267d9fcfcc1SEd Tanous nlohmann::json createLimitReachedForResource()
12681abe55efSEd Tanous {
1269b6cd31e1SEd Tanous     return getLog(
1270fffb8c1fSEd Tanous         redfish::registries::base::Index::createLimitReachedForResource, {});
1271b5c07418SJames Feist }
1272b5c07418SJames Feist 
1273b5c07418SJames Feist void createLimitReachedForResource(crow::Response& res)
1274b5c07418SJames Feist {
1275b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1276b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, createLimitReachedForResource());
1277f4c4dcf4SKowalski, Kamil }
1278f4c4dcf4SKowalski, Kamil 
1279f4c4dcf4SKowalski, Kamil /**
1280f4c4dcf4SKowalski, Kamil  * @internal
1281f4c4dcf4SKowalski, Kamil  * @brief Formats GeneralError message into JSON
1282f4c4dcf4SKowalski, Kamil  *
1283f4c4dcf4SKowalski, Kamil  * See header file for more information
1284f4c4dcf4SKowalski, Kamil  * @endinternal
1285f4c4dcf4SKowalski, Kamil  */
1286d9fcfcc1SEd Tanous nlohmann::json generalError()
12871abe55efSEd Tanous {
1288fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::generalError, {});
1289b5c07418SJames Feist }
1290b5c07418SJames Feist 
1291b5c07418SJames Feist void generalError(crow::Response& res)
1292b5c07418SJames Feist {
1293b5c07418SJames Feist     res.result(boost::beast::http::status::internal_server_error);
1294b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, generalError());
1295f4c4dcf4SKowalski, Kamil }
1296f4c4dcf4SKowalski, Kamil 
1297f4c4dcf4SKowalski, Kamil /**
1298f4c4dcf4SKowalski, Kamil  * @internal
1299f4c4dcf4SKowalski, Kamil  * @brief Formats Success message into JSON
1300f4c4dcf4SKowalski, Kamil  *
1301f4c4dcf4SKowalski, Kamil  * See header file for more information
1302f4c4dcf4SKowalski, Kamil  * @endinternal
1303f4c4dcf4SKowalski, Kamil  */
1304d9fcfcc1SEd Tanous nlohmann::json success()
13051abe55efSEd Tanous {
1306fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::success, {});
1307b5c07418SJames Feist }
1308b5c07418SJames Feist 
1309b5c07418SJames Feist void success(crow::Response& res)
1310b5c07418SJames Feist {
1311b5c07418SJames Feist     // don't set res.result here because success is the default and any
1312b5c07418SJames Feist     // error should overwrite the default
1313b5c07418SJames Feist     addMessageToJsonRoot(res.jsonValue, success());
1314f12894f8SJason M. Bills }
1315f12894f8SJason M. Bills 
1316f12894f8SJason M. Bills /**
1317f12894f8SJason M. Bills  * @internal
1318f4c4dcf4SKowalski, Kamil  * @brief Formats Created message into JSON
1319f4c4dcf4SKowalski, Kamil  *
1320f4c4dcf4SKowalski, Kamil  * See header file for more information
1321f4c4dcf4SKowalski, Kamil  * @endinternal
1322f4c4dcf4SKowalski, Kamil  */
1323d9fcfcc1SEd Tanous nlohmann::json created()
13241abe55efSEd Tanous {
1325fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::created, {});
1326b5c07418SJames Feist }
1327b5c07418SJames Feist 
1328b5c07418SJames Feist void created(crow::Response& res)
1329b5c07418SJames Feist {
1330b5c07418SJames Feist     res.result(boost::beast::http::status::created);
1331b5c07418SJames Feist     addMessageToJsonRoot(res.jsonValue, created());
1332f4c4dcf4SKowalski, Kamil }
1333f4c4dcf4SKowalski, Kamil 
1334f4c4dcf4SKowalski, Kamil /**
1335f4c4dcf4SKowalski, Kamil  * @internal
1336cc9139ecSJason M. Bills  * @brief Formats NoOperation message into JSON
1337cc9139ecSJason M. Bills  *
1338cc9139ecSJason M. Bills  * See header file for more information
1339cc9139ecSJason M. Bills  * @endinternal
1340cc9139ecSJason M. Bills  */
1341d9fcfcc1SEd Tanous nlohmann::json noOperation()
1342cc9139ecSJason M. Bills {
1343fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::noOperation, {});
1344b5c07418SJames Feist }
1345b5c07418SJames Feist 
1346b5c07418SJames Feist void noOperation(crow::Response& res)
1347b5c07418SJames Feist {
1348b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1349b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, noOperation());
1350cc9139ecSJason M. Bills }
1351cc9139ecSJason M. Bills 
1352cc9139ecSJason M. Bills /**
1353cc9139ecSJason M. Bills  * @internal
1354b5c07418SJames Feist  * @brief Formats PropertyUnknown message into JSON for the specified
1355b5c07418SJames Feist  * property
1356f12894f8SJason M. Bills  *
1357f12894f8SJason M. Bills  * See header file for more information
1358f12894f8SJason M. Bills  * @endinternal
1359f12894f8SJason M. Bills  */
13601668ce6dSEd Tanous nlohmann::json propertyUnknown(std::string_view arg1)
1361b5c07418SJames Feist {
1362fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::propertyUnknown,
13631668ce6dSEd Tanous                   std::to_array({arg1}));
1364b5c07418SJames Feist }
1365b5c07418SJames Feist 
13661668ce6dSEd Tanous void propertyUnknown(crow::Response& res, std::string_view arg1)
1367f12894f8SJason M. Bills {
1368f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
13697b1dd2f9SEd Tanous     addMessageToErrorJson(res.jsonValue, propertyUnknown(arg1));
1370f4c4dcf4SKowalski, Kamil }
1371f4c4dcf4SKowalski, Kamil 
1372f4c4dcf4SKowalski, Kamil /**
1373f4c4dcf4SKowalski, Kamil  * @internal
1374f4c4dcf4SKowalski, Kamil  * @brief Formats NoValidSession message into JSON
1375f4c4dcf4SKowalski, Kamil  *
1376f4c4dcf4SKowalski, Kamil  * See header file for more information
1377f4c4dcf4SKowalski, Kamil  * @endinternal
1378f4c4dcf4SKowalski, Kamil  */
1379d9fcfcc1SEd Tanous nlohmann::json noValidSession()
13801abe55efSEd Tanous {
1381fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::noValidSession, {});
1382b5c07418SJames Feist }
1383b5c07418SJames Feist 
1384b5c07418SJames Feist void noValidSession(crow::Response& res)
1385b5c07418SJames Feist {
1386b5c07418SJames Feist     res.result(boost::beast::http::status::forbidden);
1387b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, noValidSession());
1388f4c4dcf4SKowalski, Kamil }
1389f4c4dcf4SKowalski, Kamil 
1390f4c4dcf4SKowalski, Kamil /**
1391f4c4dcf4SKowalski, Kamil  * @internal
1392f4c4dcf4SKowalski, Kamil  * @brief Formats InvalidObject message into JSON
1393f4c4dcf4SKowalski, Kamil  *
1394f4c4dcf4SKowalski, Kamil  * See header file for more information
1395f4c4dcf4SKowalski, Kamil  * @endinternal
1396f4c4dcf4SKowalski, Kamil  */
1397d9f466b3SEd Tanous nlohmann::json invalidObject(boost::urls::url_view arg1)
13981abe55efSEd Tanous {
1399fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::invalidObject,
1400079360aeSEd Tanous                   std::to_array<std::string_view>({arg1.buffer()}));
1401b5c07418SJames Feist }
1402b5c07418SJames Feist 
1403d9f466b3SEd Tanous void invalidObject(crow::Response& res, boost::urls::url_view arg1)
1404b5c07418SJames Feist {
1405b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1406b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, invalidObject(arg1));
1407f4c4dcf4SKowalski, Kamil }
1408f4c4dcf4SKowalski, Kamil 
1409f4c4dcf4SKowalski, Kamil /**
1410f4c4dcf4SKowalski, Kamil  * @internal
1411f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceInStandby message into JSON
1412f4c4dcf4SKowalski, Kamil  *
1413f4c4dcf4SKowalski, Kamil  * See header file for more information
1414f4c4dcf4SKowalski, Kamil  * @endinternal
1415f4c4dcf4SKowalski, Kamil  */
1416d9fcfcc1SEd Tanous nlohmann::json resourceInStandby()
14171abe55efSEd Tanous {
1418fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::resourceInStandby, {});
1419b5c07418SJames Feist }
1420b5c07418SJames Feist 
1421b5c07418SJames Feist void resourceInStandby(crow::Response& res)
1422b5c07418SJames Feist {
1423b5c07418SJames Feist     res.result(boost::beast::http::status::service_unavailable);
1424b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, resourceInStandby());
1425f4c4dcf4SKowalski, Kamil }
1426f4c4dcf4SKowalski, Kamil 
1427f4c4dcf4SKowalski, Kamil /**
1428f4c4dcf4SKowalski, Kamil  * @internal
1429f4c4dcf4SKowalski, Kamil  * @brief Formats ActionParameterValueTypeError message into JSON
1430f4c4dcf4SKowalski, Kamil  *
1431f4c4dcf4SKowalski, Kamil  * See header file for more information
1432f4c4dcf4SKowalski, Kamil  * @endinternal
1433f4c4dcf4SKowalski, Kamil  */
143495b3ad73SEd Tanous nlohmann::json actionParameterValueTypeError(const nlohmann::json& arg1,
14351668ce6dSEd Tanous                                              std::string_view arg2,
14361668ce6dSEd Tanous                                              std::string_view arg3)
14371abe55efSEd Tanous {
143895b3ad73SEd Tanous     std::string arg1Str = arg1.dump(2, ' ', true,
143995b3ad73SEd Tanous                                     nlohmann::json::error_handler_t::replace);
1440b6cd31e1SEd Tanous     return getLog(
1441fffb8c1fSEd Tanous         redfish::registries::base::Index::actionParameterValueTypeError,
144295b3ad73SEd Tanous         std::to_array<std::string_view>({arg1Str, arg2, arg3}));
1443b5c07418SJames Feist }
1444b5c07418SJames Feist 
144595b3ad73SEd Tanous void actionParameterValueTypeError(crow::Response& res,
144695b3ad73SEd Tanous                                    const nlohmann::json& arg1,
14471668ce6dSEd Tanous                                    std::string_view arg2, std::string_view arg3)
1448b5c07418SJames Feist {
1449b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1450b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue,
1451b5c07418SJames Feist                           actionParameterValueTypeError(arg1, arg2, arg3));
1452f4c4dcf4SKowalski, Kamil }
1453f4c4dcf4SKowalski, Kamil 
1454f4c4dcf4SKowalski, Kamil /**
1455f4c4dcf4SKowalski, Kamil  * @internal
1456f4c4dcf4SKowalski, Kamil  * @brief Formats SessionLimitExceeded message into JSON
1457f4c4dcf4SKowalski, Kamil  *
1458f4c4dcf4SKowalski, Kamil  * See header file for more information
1459f4c4dcf4SKowalski, Kamil  * @endinternal
1460f4c4dcf4SKowalski, Kamil  */
1461d9fcfcc1SEd Tanous nlohmann::json sessionLimitExceeded()
14621abe55efSEd Tanous {
1463fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::sessionLimitExceeded, {});
1464b5c07418SJames Feist }
1465b5c07418SJames Feist 
1466b5c07418SJames Feist void sessionLimitExceeded(crow::Response& res)
1467b5c07418SJames Feist {
1468b5c07418SJames Feist     res.result(boost::beast::http::status::service_unavailable);
1469b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, sessionLimitExceeded());
1470f4c4dcf4SKowalski, Kamil }
1471f4c4dcf4SKowalski, Kamil 
1472f4c4dcf4SKowalski, Kamil /**
1473f4c4dcf4SKowalski, Kamil  * @internal
1474f4c4dcf4SKowalski, Kamil  * @brief Formats ActionNotSupported message into JSON
1475f4c4dcf4SKowalski, Kamil  *
1476f4c4dcf4SKowalski, Kamil  * See header file for more information
1477f4c4dcf4SKowalski, Kamil  * @endinternal
1478f4c4dcf4SKowalski, Kamil  */
14791668ce6dSEd Tanous nlohmann::json actionNotSupported(std::string_view arg1)
14801abe55efSEd Tanous {
1481fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::actionNotSupported,
14821668ce6dSEd Tanous                   std::to_array({arg1}));
1483b5c07418SJames Feist }
1484b5c07418SJames Feist 
14851668ce6dSEd Tanous void actionNotSupported(crow::Response& res, std::string_view arg1)
1486b5c07418SJames Feist {
1487b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1488b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, actionNotSupported(arg1));
1489f4c4dcf4SKowalski, Kamil }
1490f4c4dcf4SKowalski, Kamil 
1491f4c4dcf4SKowalski, Kamil /**
1492f4c4dcf4SKowalski, Kamil  * @internal
1493f4c4dcf4SKowalski, Kamil  * @brief Formats InvalidIndex message into JSON
1494f4c4dcf4SKowalski, Kamil  *
1495f4c4dcf4SKowalski, Kamil  * See header file for more information
1496f4c4dcf4SKowalski, Kamil  * @endinternal
1497f4c4dcf4SKowalski, Kamil  */
14985187e09bSJosh Lehan nlohmann::json invalidIndex(int64_t arg1)
14991abe55efSEd Tanous {
1500b6cd31e1SEd Tanous     std::string arg1Str = std::to_string(arg1);
1501fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::invalidIndex,
15021668ce6dSEd Tanous                   std::to_array<std::string_view>({arg1Str}));
1503b5c07418SJames Feist }
1504b5c07418SJames Feist 
15055187e09bSJosh Lehan void invalidIndex(crow::Response& res, int64_t arg1)
1506b5c07418SJames Feist {
1507b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1508b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, invalidIndex(arg1));
1509f4c4dcf4SKowalski, Kamil }
1510f4c4dcf4SKowalski, Kamil 
1511f4c4dcf4SKowalski, Kamil /**
1512f4c4dcf4SKowalski, Kamil  * @internal
1513f4c4dcf4SKowalski, Kamil  * @brief Formats EmptyJSON message into JSON
1514f4c4dcf4SKowalski, Kamil  *
1515f4c4dcf4SKowalski, Kamil  * See header file for more information
1516f4c4dcf4SKowalski, Kamil  * @endinternal
1517f4c4dcf4SKowalski, Kamil  */
1518d9fcfcc1SEd Tanous nlohmann::json emptyJSON()
15191abe55efSEd Tanous {
1520fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::emptyJSON, {});
1521b5c07418SJames Feist }
1522b5c07418SJames Feist 
1523b5c07418SJames Feist void emptyJSON(crow::Response& res)
1524b5c07418SJames Feist {
1525b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1526b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, emptyJSON());
1527f4c4dcf4SKowalski, Kamil }
1528f4c4dcf4SKowalski, Kamil 
1529f4c4dcf4SKowalski, Kamil /**
1530f4c4dcf4SKowalski, Kamil  * @internal
1531f4c4dcf4SKowalski, Kamil  * @brief Formats QueryNotSupportedOnResource message into JSON
1532f4c4dcf4SKowalski, Kamil  *
1533f4c4dcf4SKowalski, Kamil  * See header file for more information
1534f4c4dcf4SKowalski, Kamil  * @endinternal
1535f4c4dcf4SKowalski, Kamil  */
1536d9fcfcc1SEd Tanous nlohmann::json queryNotSupportedOnResource()
15371abe55efSEd Tanous {
1538fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::queryNotSupportedOnResource,
1539b6cd31e1SEd Tanous                   {});
1540b5c07418SJames Feist }
1541b5c07418SJames Feist 
1542b5c07418SJames Feist void queryNotSupportedOnResource(crow::Response& res)
1543b5c07418SJames Feist {
15446a409c12SEd Tanous     res.result(boost::beast::http::status::bad_request);
1545b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, queryNotSupportedOnResource());
1546f4c4dcf4SKowalski, Kamil }
1547f4c4dcf4SKowalski, Kamil 
1548f4c4dcf4SKowalski, Kamil /**
1549f4c4dcf4SKowalski, Kamil  * @internal
1550684bb4b8SJason M. Bills  * @brief Formats QueryNotSupportedOnOperation message into JSON
1551684bb4b8SJason M. Bills  *
1552684bb4b8SJason M. Bills  * See header file for more information
1553684bb4b8SJason M. Bills  * @endinternal
1554684bb4b8SJason M. Bills  */
1555d9fcfcc1SEd Tanous nlohmann::json queryNotSupportedOnOperation()
1556684bb4b8SJason M. Bills {
1557b6cd31e1SEd Tanous     return getLog(
1558fffb8c1fSEd Tanous         redfish::registries::base::Index::queryNotSupportedOnOperation, {});
1559684bb4b8SJason M. Bills }
1560684bb4b8SJason M. Bills 
1561684bb4b8SJason M. Bills void queryNotSupportedOnOperation(crow::Response& res)
1562684bb4b8SJason M. Bills {
15636a409c12SEd Tanous     res.result(boost::beast::http::status::bad_request);
1564684bb4b8SJason M. Bills     addMessageToErrorJson(res.jsonValue, queryNotSupportedOnOperation());
1565684bb4b8SJason M. Bills }
1566684bb4b8SJason M. Bills 
1567684bb4b8SJason M. Bills /**
1568684bb4b8SJason M. Bills  * @internal
1569684bb4b8SJason M. Bills  * @brief Formats QueryCombinationInvalid message into JSON
1570684bb4b8SJason M. Bills  *
1571684bb4b8SJason M. Bills  * See header file for more information
1572684bb4b8SJason M. Bills  * @endinternal
1573684bb4b8SJason M. Bills  */
1574d9fcfcc1SEd Tanous nlohmann::json queryCombinationInvalid()
1575684bb4b8SJason M. Bills {
1576fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::queryCombinationInvalid,
1577fffb8c1fSEd Tanous                   {});
1578684bb4b8SJason M. Bills }
1579684bb4b8SJason M. Bills 
1580684bb4b8SJason M. Bills void queryCombinationInvalid(crow::Response& res)
1581684bb4b8SJason M. Bills {
1582684bb4b8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
1583684bb4b8SJason M. Bills     addMessageToErrorJson(res.jsonValue, queryCombinationInvalid());
1584684bb4b8SJason M. Bills }
1585684bb4b8SJason M. Bills 
1586684bb4b8SJason M. Bills /**
1587684bb4b8SJason M. Bills  * @internal
1588f4c4dcf4SKowalski, Kamil  * @brief Formats InsufficientPrivilege message into JSON
1589f4c4dcf4SKowalski, Kamil  *
1590f4c4dcf4SKowalski, Kamil  * See header file for more information
1591f4c4dcf4SKowalski, Kamil  * @endinternal
1592f4c4dcf4SKowalski, Kamil  */
1593d9fcfcc1SEd Tanous nlohmann::json insufficientPrivilege()
15941abe55efSEd Tanous {
1595fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::insufficientPrivilege, {});
1596b5c07418SJames Feist }
1597b5c07418SJames Feist 
1598b5c07418SJames Feist void insufficientPrivilege(crow::Response& res)
1599b5c07418SJames Feist {
1600b5c07418SJames Feist     res.result(boost::beast::http::status::forbidden);
1601b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, insufficientPrivilege());
1602f4c4dcf4SKowalski, Kamil }
1603f4c4dcf4SKowalski, Kamil 
1604f4c4dcf4SKowalski, Kamil /**
1605f4c4dcf4SKowalski, Kamil  * @internal
1606f4c4dcf4SKowalski, Kamil  * @brief Formats PropertyValueModified message into JSON
1607f4c4dcf4SKowalski, Kamil  *
1608f4c4dcf4SKowalski, Kamil  * See header file for more information
1609f4c4dcf4SKowalski, Kamil  * @endinternal
1610f4c4dcf4SKowalski, Kamil  */
16111668ce6dSEd Tanous nlohmann::json propertyValueModified(std::string_view arg1,
161295b3ad73SEd Tanous                                      const nlohmann::json& arg2)
1613b5c07418SJames Feist {
161495b3ad73SEd Tanous     std::string arg2Str = arg2.dump(2, ' ', true,
161595b3ad73SEd Tanous                                     nlohmann::json::error_handler_t::replace);
1616fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::propertyValueModified,
161795b3ad73SEd Tanous                   std::to_array<std::string_view>({arg1, arg2Str}));
1618b5c07418SJames Feist }
1619b5c07418SJames Feist 
16201668ce6dSEd Tanous void propertyValueModified(crow::Response& res, std::string_view arg1,
162195b3ad73SEd Tanous                            const nlohmann::json& arg2)
16221abe55efSEd Tanous {
1623f12894f8SJason M. Bills     res.result(boost::beast::http::status::ok);
1624b5c07418SJames Feist     addMessageToJson(res.jsonValue, propertyValueModified(arg1, arg2), arg1);
1625f4c4dcf4SKowalski, Kamil }
1626f4c4dcf4SKowalski, Kamil 
1627f4c4dcf4SKowalski, Kamil /**
1628f4c4dcf4SKowalski, Kamil  * @internal
1629f4c4dcf4SKowalski, Kamil  * @brief Formats AccountNotModified message into JSON
1630f4c4dcf4SKowalski, Kamil  *
1631f4c4dcf4SKowalski, Kamil  * See header file for more information
1632f4c4dcf4SKowalski, Kamil  * @endinternal
1633f4c4dcf4SKowalski, Kamil  */
1634d9fcfcc1SEd Tanous nlohmann::json accountNotModified()
16351abe55efSEd Tanous {
1636fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::accountNotModified, {});
1637b5c07418SJames Feist }
1638b5c07418SJames Feist 
1639b5c07418SJames Feist void accountNotModified(crow::Response& res)
1640b5c07418SJames Feist {
1641b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1642b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, accountNotModified());
1643f4c4dcf4SKowalski, Kamil }
1644f4c4dcf4SKowalski, Kamil 
1645f4c4dcf4SKowalski, Kamil /**
1646f4c4dcf4SKowalski, Kamil  * @internal
1647f4c4dcf4SKowalski, Kamil  * @brief Formats QueryParameterValueFormatError message into JSON
1648f4c4dcf4SKowalski, Kamil  *
1649f4c4dcf4SKowalski, Kamil  * See header file for more information
1650f4c4dcf4SKowalski, Kamil  * @endinternal
1651f4c4dcf4SKowalski, Kamil  */
165295b3ad73SEd Tanous nlohmann::json queryParameterValueFormatError(const nlohmann::json& arg1,
16531668ce6dSEd Tanous                                               std::string_view arg2)
16541abe55efSEd Tanous {
165595b3ad73SEd Tanous     std::string arg1Str = arg1.dump(2, ' ', true,
165695b3ad73SEd Tanous                                     nlohmann::json::error_handler_t::replace);
1657fffb8c1fSEd Tanous     return getLog(
1658fffb8c1fSEd Tanous         redfish::registries::base::Index::queryParameterValueFormatError,
165995b3ad73SEd Tanous         std::to_array<std::string_view>({arg1Str, arg2}));
1660b5c07418SJames Feist }
1661b5c07418SJames Feist 
166295b3ad73SEd Tanous void queryParameterValueFormatError(crow::Response& res,
166395b3ad73SEd Tanous                                     const nlohmann::json& arg1,
16641668ce6dSEd Tanous                                     std::string_view arg2)
1665b5c07418SJames Feist {
1666b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1667b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue,
1668b5c07418SJames Feist                           queryParameterValueFormatError(arg1, arg2));
1669f4c4dcf4SKowalski, Kamil }
1670f4c4dcf4SKowalski, Kamil 
1671f4c4dcf4SKowalski, Kamil /**
1672f4c4dcf4SKowalski, Kamil  * @internal
1673b5c07418SJames Feist  * @brief Formats PropertyMissing message into JSON for the specified
1674b5c07418SJames Feist  * property
1675f12894f8SJason M. Bills  *
1676f12894f8SJason M. Bills  * See header file for more information
1677f12894f8SJason M. Bills  * @endinternal
1678f12894f8SJason M. Bills  */
16791668ce6dSEd Tanous nlohmann::json propertyMissing(std::string_view arg1)
1680f12894f8SJason M. Bills {
1681fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::propertyMissing,
16821668ce6dSEd Tanous                   std::to_array({arg1}));
1683b5c07418SJames Feist }
1684b5c07418SJames Feist 
16851668ce6dSEd Tanous void propertyMissing(crow::Response& res, std::string_view arg1)
1686b5c07418SJames Feist {
1687b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1688b5c07418SJames Feist     addMessageToJson(res.jsonValue, propertyMissing(arg1), arg1);
1689f4c4dcf4SKowalski, Kamil }
1690f4c4dcf4SKowalski, Kamil 
1691f4c4dcf4SKowalski, Kamil /**
1692f4c4dcf4SKowalski, Kamil  * @internal
1693f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceExhaustion message into JSON
1694f4c4dcf4SKowalski, Kamil  *
1695f4c4dcf4SKowalski, Kamil  * See header file for more information
1696f4c4dcf4SKowalski, Kamil  * @endinternal
1697f4c4dcf4SKowalski, Kamil  */
16981668ce6dSEd Tanous nlohmann::json resourceExhaustion(std::string_view arg1)
16991abe55efSEd Tanous {
1700fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::resourceExhaustion,
17011668ce6dSEd Tanous                   std::to_array({arg1}));
1702b5c07418SJames Feist }
1703b5c07418SJames Feist 
17041668ce6dSEd Tanous void resourceExhaustion(crow::Response& res, std::string_view arg1)
1705b5c07418SJames Feist {
1706b5c07418SJames Feist     res.result(boost::beast::http::status::service_unavailable);
1707b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, resourceExhaustion(arg1));
1708f4c4dcf4SKowalski, Kamil }
1709f4c4dcf4SKowalski, Kamil 
1710f4c4dcf4SKowalski, Kamil /**
1711f4c4dcf4SKowalski, Kamil  * @internal
1712f4c4dcf4SKowalski, Kamil  * @brief Formats AccountModified message into JSON
1713f4c4dcf4SKowalski, Kamil  *
1714f4c4dcf4SKowalski, Kamil  * See header file for more information
1715f4c4dcf4SKowalski, Kamil  * @endinternal
1716f4c4dcf4SKowalski, Kamil  */
1717d9fcfcc1SEd Tanous nlohmann::json accountModified()
17181abe55efSEd Tanous {
1719fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::accountModified, {});
1720b5c07418SJames Feist }
1721b5c07418SJames Feist 
1722b5c07418SJames Feist void accountModified(crow::Response& res)
1723b5c07418SJames Feist {
1724b5c07418SJames Feist     res.result(boost::beast::http::status::ok);
1725b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue, accountModified());
1726f4c4dcf4SKowalski, Kamil }
1727f4c4dcf4SKowalski, Kamil 
1728f4c4dcf4SKowalski, Kamil /**
1729f4c4dcf4SKowalski, Kamil  * @internal
1730f4c4dcf4SKowalski, Kamil  * @brief Formats QueryParameterOutOfRange message into JSON
1731f4c4dcf4SKowalski, Kamil  *
1732f4c4dcf4SKowalski, Kamil  * See header file for more information
1733f4c4dcf4SKowalski, Kamil  * @endinternal
1734f4c4dcf4SKowalski, Kamil  */
17351668ce6dSEd Tanous nlohmann::json queryParameterOutOfRange(std::string_view arg1,
17361668ce6dSEd Tanous                                         std::string_view arg2,
17371668ce6dSEd Tanous                                         std::string_view arg3)
17381abe55efSEd Tanous {
1739fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::queryParameterOutOfRange,
17401668ce6dSEd Tanous                   std::to_array({arg1, arg2, arg3}));
1741b5c07418SJames Feist }
1742b5c07418SJames Feist 
17431668ce6dSEd Tanous void queryParameterOutOfRange(crow::Response& res, std::string_view arg1,
17441668ce6dSEd Tanous                               std::string_view arg2, std::string_view arg3)
1745b5c07418SJames Feist {
1746b5c07418SJames Feist     res.result(boost::beast::http::status::bad_request);
1747b5c07418SJames Feist     addMessageToErrorJson(res.jsonValue,
1748b5c07418SJames Feist                           queryParameterOutOfRange(arg1, arg2, arg3));
1749f4c4dcf4SKowalski, Kamil }
1750f4c4dcf4SKowalski, Kamil 
1751d9f466b3SEd Tanous nlohmann::json passwordChangeRequired(boost::urls::url_view arg1)
1752b6cd31e1SEd Tanous {
1753fffb8c1fSEd Tanous     return getLog(redfish::registries::base::Index::passwordChangeRequired,
1754079360aeSEd Tanous                   std::to_array<std::string_view>({arg1.buffer()}));
1755b6cd31e1SEd Tanous }
1756b6cd31e1SEd Tanous 
17573bf4e632SJoseph Reynolds /**
17583bf4e632SJoseph Reynolds  * @internal
17593bf4e632SJoseph Reynolds  * @brief Formats PasswordChangeRequired message into JSON
17603bf4e632SJoseph Reynolds  *
17613bf4e632SJoseph Reynolds  * See header file for more information
17623bf4e632SJoseph Reynolds  * @endinternal
17633bf4e632SJoseph Reynolds  */
1764d9f466b3SEd Tanous void passwordChangeRequired(crow::Response& res, boost::urls::url_view arg1)
17653bf4e632SJoseph Reynolds {
1766b6cd31e1SEd Tanous     messages::addMessageToJsonRoot(res.jsonValue, passwordChangeRequired(arg1));
17673bf4e632SJoseph Reynolds }
17683bf4e632SJoseph Reynolds 
17694cde5d90SJames Feist /**
17704cde5d90SJames Feist  * @internal
1771ae688313SNan Zhou  * @brief Formats InsufficientStorage message into JSON
1772ae688313SNan Zhou  *
1773ae688313SNan Zhou  * See header file for more information
1774ae688313SNan Zhou  * @endinternal
1775ae688313SNan Zhou  */
1776ae688313SNan Zhou nlohmann::json insufficientStorage()
1777ae688313SNan Zhou {
1778ae688313SNan Zhou     return getLog(redfish::registries::base::Index::insufficientStorage, {});
1779ae688313SNan Zhou }
1780ae688313SNan Zhou 
1781ae688313SNan Zhou void insufficientStorage(crow::Response& res)
1782ae688313SNan Zhou {
1783ae688313SNan Zhou     res.result(boost::beast::http::status::insufficient_storage);
1784ae688313SNan Zhou     addMessageToErrorJson(res.jsonValue, insufficientStorage());
1785ae688313SNan Zhou }
1786ae688313SNan Zhou 
1787ae688313SNan Zhou /**
1788ae688313SNan Zhou  * @internal
178944c70412SEd Tanous  * @brief Formats OperationNotAllowed message into JSON
179044c70412SEd Tanous  *
179144c70412SEd Tanous  * See header file for more information
179244c70412SEd Tanous  * @endinternal
179344c70412SEd Tanous  */
179444c70412SEd Tanous nlohmann::json operationNotAllowed()
179544c70412SEd Tanous {
179644c70412SEd Tanous     return getLog(redfish::registries::base::Index::operationNotAllowed, {});
179744c70412SEd Tanous }
179844c70412SEd Tanous 
179944c70412SEd Tanous void operationNotAllowed(crow::Response& res)
180044c70412SEd Tanous {
180144c70412SEd Tanous     res.result(boost::beast::http::status::method_not_allowed);
180244c70412SEd Tanous     addMessageToErrorJson(res.jsonValue, operationNotAllowed());
180344c70412SEd Tanous }
180444c70412SEd Tanous 
1805600af5f1SAppaRao Puli /**
1806600af5f1SAppaRao Puli  * @internal
1807600af5f1SAppaRao Puli  * @brief Formats ArraySizeTooLong message into JSON
1808600af5f1SAppaRao Puli  *
1809600af5f1SAppaRao Puli  * See header file for more information
1810600af5f1SAppaRao Puli  * @endinternal
1811600af5f1SAppaRao Puli  */
1812600af5f1SAppaRao Puli nlohmann::json arraySizeTooLong(std::string_view property, uint64_t length)
1813600af5f1SAppaRao Puli {
1814600af5f1SAppaRao Puli     std::string valStr = std::to_string(length);
1815600af5f1SAppaRao Puli     return getLog(redfish::registries::base::Index::arraySizeTooLong,
1816600af5f1SAppaRao Puli                   std::to_array<std::string_view>({property, valStr}));
1817600af5f1SAppaRao Puli }
1818600af5f1SAppaRao Puli 
1819600af5f1SAppaRao Puli void arraySizeTooLong(crow::Response& res, std::string_view property,
1820600af5f1SAppaRao Puli                       uint64_t length)
1821600af5f1SAppaRao Puli {
182299bf0262SDivya Jyoti     res.result(boost::beast::http::status::bad_request);
1823600af5f1SAppaRao Puli     addMessageToErrorJson(res.jsonValue, arraySizeTooLong(property, length));
1824600af5f1SAppaRao Puli }
1825600af5f1SAppaRao Puli 
182644c70412SEd Tanous void invalidUpload(crow::Response& res, std::string_view arg1,
182744c70412SEd Tanous                    std::string_view arg2)
182844c70412SEd Tanous {
182944c70412SEd Tanous     res.result(boost::beast::http::status::bad_request);
183044c70412SEd Tanous     addMessageToErrorJson(res.jsonValue, invalidUpload(arg1, arg2));
183144c70412SEd Tanous }
183244c70412SEd Tanous 
183344c70412SEd Tanous /**
183444c70412SEd Tanous  * @internal
18354cde5d90SJames Feist  * @brief Formats Invalid File message into JSON
18364cde5d90SJames Feist  *
18374cde5d90SJames Feist  * See header file for more information
18384cde5d90SJames Feist  * @endinternal
18394cde5d90SJames Feist  */
18401668ce6dSEd Tanous nlohmann::json invalidUpload(std::string_view arg1, std::string_view arg2)
18414cde5d90SJames Feist {
18421668ce6dSEd Tanous     std::string msg = "Invalid file uploaded to ";
18431668ce6dSEd Tanous     msg += arg1;
18441668ce6dSEd Tanous     msg += ": ";
18451668ce6dSEd Tanous     msg += arg2;
18461668ce6dSEd Tanous     msg += ".";
1847613dabeaSEd Tanous 
1848613dabeaSEd Tanous     nlohmann::json::object_t ret;
1849613dabeaSEd Tanous     ret["@odata.type"] = "/redfish/v1/$metadata#Message.v1_1_1.Message";
1850613dabeaSEd Tanous     ret["MessageId"] = "OpenBMC.0.2.InvalidUpload";
1851613dabeaSEd Tanous     ret["Message"] = std::move(msg);
1852613dabeaSEd Tanous     nlohmann::json::array_t args;
1853ad539545SPatrick Williams     args.emplace_back(arg1);
1854ad539545SPatrick Williams     args.emplace_back(arg2);
1855613dabeaSEd Tanous     ret["MessageArgs"] = std::move(args);
1856613dabeaSEd Tanous     ret["MessageSeverity"] = "Warning";
1857613dabeaSEd Tanous     ret["Resolution"] = "None.";
1858613dabeaSEd Tanous     return ret;
18594cde5d90SJames Feist }
1860ae688313SNan Zhou 
1861f4c4dcf4SKowalski, Kamil } // namespace messages
1862f4c4dcf4SKowalski, Kamil 
1863d425c6f6SEd Tanous } // namespace redfish
1864