summaryrefslogtreecommitdiff
path: root/redfish-core/lib
diff options
context:
space:
mode:
authorJohn Edward Broadbent <jebr@google.com>2021-07-13 21:20:47 +0300
committerEd Tanous <ed@tanous.net>2021-09-29 19:54:28 +0300
commitdff07827086be120fa7e13336086fbfcb1cd1143 (patch)
tree00e23b65477499c4de50ed89af60bcd76ed2d1b7 /redfish-core/lib
parent647b3cdc4d6092d5ed77b1d7e2dac643373a5f8b (diff)
downloadbmcweb-dff07827086be120fa7e13336086fbfcb1cd1143.tar.xz
move to free function: Message_registries
This change will allow for unit testing of the free function. There are no changes to logic in the response, only the organization. Signed-off-by: John Edward Broadbent <jebr@google.com> Change-Id: Ic485cea978b5b0ee06fe4011cbfc43333519bb50
Diffstat (limited to 'redfish-core/lib')
-rw-r--r--redfish-core/lib/message_registries.hpp347
1 files changed, 171 insertions, 176 deletions
diff --git a/redfish-core/lib/message_registries.hpp b/redfish-core/lib/message_registries.hpp
index e3bd5bf0b2..f770488c30 100644
--- a/redfish-core/lib/message_registries.hpp
+++ b/redfish-core/lib/message_registries.hpp
@@ -27,6 +27,26 @@
namespace redfish
{
+inline void handleMessageRegistryFileCollectionGet(
+ const crow::Request&, const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
+{
+ // Collections don't include the static data added by SubRoute
+ // because it has a duplicate entry for members
+
+ asyncResp->res.jsonValue = {
+ {"@odata.type", "#MessageRegistryFileCollection."
+ "MessageRegistryFileCollection"},
+ {"@odata.id", "/redfish/v1/Registries"},
+ {"Name", "MessageRegistryFile Collection"},
+ {"Description", "Collection of MessageRegistryFiles"},
+ {"Members@odata.count", 4},
+ {"Members",
+ {{{"@odata.id", "/redfish/v1/Registries/Base"}},
+ {{"@odata.id", "/redfish/v1/Registries/TaskEvent"}},
+ {{"@odata.id", "/redfish/v1/Registries/ResourceEvent"}},
+ {{"@odata.id", "/redfish/v1/Registries/OpenBMC"}}}}};
+}
+
inline void requestRoutesMessageRegistryFileCollection(App& app)
{
/**
@@ -35,24 +55,63 @@ inline void requestRoutesMessageRegistryFileCollection(App& app)
BMCWEB_ROUTE(app, "/redfish/v1/Registries/")
.privileges(redfish::privileges::getMessageRegistryFileCollection)
.methods(boost::beast::http::verb::get)(
- [](const crow::Request&,
- const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
- // Collections don't include the static data added by SubRoute
- // because it has a duplicate entry for members
-
- asyncResp->res.jsonValue = {
- {"@odata.type", "#MessageRegistryFileCollection."
- "MessageRegistryFileCollection"},
- {"@odata.id", "/redfish/v1/Registries"},
- {"Name", "MessageRegistryFile Collection"},
- {"Description", "Collection of MessageRegistryFiles"},
- {"Members@odata.count", 4},
- {"Members",
- {{{"@odata.id", "/redfish/v1/Registries/Base"}},
- {{"@odata.id", "/redfish/v1/Registries/TaskEvent"}},
- {{"@odata.id", "/redfish/v1/Registries/ResourceEvent"}},
- {{"@odata.id", "/redfish/v1/Registries/OpenBMC"}}}}};
- });
+ handleMessageRegistryFileCollectionGet);
+}
+
+inline void handleMessageRoutesMessageRegistryFileGet(
+ const crow::Request&, const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+ const std::string& registry)
+{
+ const message_registries::Header* header;
+ std::string dmtf = "DMTF ";
+ const char* url = nullptr;
+
+ if (registry == "Base")
+ {
+ header = &message_registries::base::header;
+ url = message_registries::base::url;
+ }
+ else if (registry == "TaskEvent")
+ {
+ header = &message_registries::task_event::header;
+ url = message_registries::task_event::url;
+ }
+ else if (registry == "OpenBMC")
+ {
+ header = &message_registries::openbmc::header;
+ dmtf.clear();
+ }
+ else if (registry == "ResourceEvent")
+ {
+ header = &message_registries::resource_event::header;
+ url = message_registries::resource_event::url;
+ }
+ else
+ {
+ messages::resourceNotFound(
+ asyncResp->res, "#MessageRegistryFile.v1_1_0.MessageRegistryFile",
+ registry);
+ return;
+ }
+
+ asyncResp->res.jsonValue = {
+ {"@odata.id", "/redfish/v1/Registries/" + registry},
+ {"@odata.type", "#MessageRegistryFile.v1_1_0.MessageRegistryFile"},
+ {"Name", registry + " Message Registry File"},
+ {"Description", dmtf + registry + " Message Registry File Location"},
+ {"Id", header->registryPrefix},
+ {"Registry", header->id},
+ {"Languages", {"en"}},
+ {"Languages@odata.count", 1},
+ {"Location",
+ {{{"Language", "en"},
+ {"Uri", "/redfish/v1/Registries/" + registry + "/" + registry}}}},
+ {"Location@odata.count", 1}};
+
+ if (url != nullptr)
+ {
+ asyncResp->res.jsonValue["Location"][0]["PublicationUri"] = url;
+ }
}
inline void requestRoutesMessageRegistryFile(App& app)
@@ -60,172 +119,108 @@ inline void requestRoutesMessageRegistryFile(App& app)
BMCWEB_ROUTE(app, "/redfish/v1/Registries/<str>/")
.privileges(redfish::privileges::getMessageRegistryFile)
.methods(boost::beast::http::verb::get)(
- [](const crow::Request&,
- const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
- const std::string& registry) {
- const message_registries::Header* header;
- std::string dmtf = "DMTF ";
- const char* url = nullptr;
-
- if (registry == "Base")
- {
- header = &message_registries::base::header;
- url = message_registries::base::url;
- }
- else if (registry == "TaskEvent")
- {
- header = &message_registries::task_event::header;
- url = message_registries::task_event::url;
- }
- else if (registry == "OpenBMC")
- {
- header = &message_registries::openbmc::header;
- dmtf.clear();
- }
- else if (registry == "ResourceEvent")
- {
- header = &message_registries::resource_event::header;
- url = message_registries::resource_event::url;
- }
- else
- {
- messages::resourceNotFound(
- asyncResp->res,
- "#MessageRegistryFile.v1_1_0.MessageRegistryFile",
- registry);
- return;
- }
+ handleMessageRoutesMessageRegistryFileGet);
+}
+
+inline void handleMessageRegistryGet(
+ const crow::Request&, const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+ const std::string& registry, const std::string& registry1)
- asyncResp->res.jsonValue = {
- {"@odata.id", "/redfish/v1/Registries/" + registry},
- {"@odata.type",
- "#MessageRegistryFile.v1_1_0.MessageRegistryFile"},
- {"Name", registry + " Message Registry File"},
- {"Description",
- dmtf + registry + " Message Registry File Location"},
- {"Id", header->registryPrefix},
- {"Registry", header->id},
- {"Languages", {"en"}},
- {"Languages@odata.count", 1},
- {"Location",
- {{{"Language", "en"},
- {"Uri", "/redfish/v1/Registries/" + registry + "/" +
- registry}}}},
- {"Location@odata.count", 1}};
-
- if (url != nullptr)
+{
+ const message_registries::Header* header;
+ std::vector<const message_registries::MessageEntry*> registryEntries;
+ if (registry == "Base")
+ {
+ header = &message_registries::base::header;
+ for (const message_registries::MessageEntry& entry :
+ message_registries::base::registry)
+ {
+ registryEntries.emplace_back(&entry);
+ }
+ }
+ else if (registry == "TaskEvent")
+ {
+ header = &message_registries::task_event::header;
+ for (const message_registries::MessageEntry& entry :
+ message_registries::task_event::registry)
+ {
+ registryEntries.emplace_back(&entry);
+ }
+ }
+ else if (registry == "OpenBMC")
+ {
+ header = &message_registries::openbmc::header;
+ for (const message_registries::MessageEntry& entry :
+ message_registries::openbmc::registry)
+ {
+ registryEntries.emplace_back(&entry);
+ }
+ }
+ else if (registry == "ResourceEvent")
+ {
+ header = &message_registries::resource_event::header;
+ for (const message_registries::MessageEntry& entry :
+ message_registries::resource_event::registry)
+ {
+ registryEntries.emplace_back(&entry);
+ }
+ }
+ else
+ {
+ messages::resourceNotFound(
+ asyncResp->res, "#MessageRegistryFile.v1_1_0.MessageRegistryFile",
+ registry);
+ return;
+ }
+
+ if (registry != registry1)
+ {
+ messages::resourceNotFound(asyncResp->res, header->type, registry1);
+ return;
+ }
+
+ asyncResp->res.jsonValue = {{"@Redfish.Copyright", header->copyright},
+ {"@odata.type", header->type},
+ {"Id", header->id},
+ {"Name", header->name},
+ {"Language", header->language},
+ {"Description", header->description},
+ {"RegistryPrefix", header->registryPrefix},
+ {"RegistryVersion", header->registryVersion},
+ {"OwningEntity", header->owningEntity}};
+
+ nlohmann::json& messageObj = asyncResp->res.jsonValue["Messages"];
+
+ // Go through the Message Registry and populate each Message
+ for (const message_registries::MessageEntry* message : registryEntries)
+ {
+ nlohmann::json& obj = messageObj[message->first];
+ obj = {{"Description", message->second.description},
+ {"Message", message->second.message},
+ {"Severity", message->second.severity},
+ {"MessageSeverity", message->second.messageSeverity},
+ {"NumberOfArgs", message->second.numberOfArgs},
+ {"Resolution", message->second.resolution}};
+ if (message->second.numberOfArgs > 0)
+ {
+ nlohmann::json& messageParamArray = obj["ParamTypes"];
+ messageParamArray = nlohmann::json::array();
+ for (const char* str : message->second.paramTypes)
+ {
+ if (str == nullptr)
{
- asyncResp->res.jsonValue["Location"][0]["PublicationUri"] =
- url;
+ break;
}
- });
+ messageParamArray.push_back(str);
+ }
+ }
+ }
}
inline void requestRoutesMessageRegistry(App& app)
{
BMCWEB_ROUTE(app, "/redfish/v1/Registries/<str>/<str>/")
.privileges(redfish::privileges::getMessageRegistryFile)
- .methods(boost::beast::http::verb::get)(
- [](const crow::Request&,
- const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
- const std::string& registry, const std::string& registry1)
-
- {
- const message_registries::Header* header;
- std::vector<const message_registries::MessageEntry*>
- registryEntries;
- if (registry == "Base")
- {
- header = &message_registries::base::header;
- for (const message_registries::MessageEntry& entry :
- message_registries::base::registry)
- {
- registryEntries.emplace_back(&entry);
- }
- }
- else if (registry == "TaskEvent")
- {
- header = &message_registries::task_event::header;
- for (const message_registries::MessageEntry& entry :
- message_registries::task_event::registry)
- {
- registryEntries.emplace_back(&entry);
- }
- }
- else if (registry == "OpenBMC")
- {
- header = &message_registries::openbmc::header;
- for (const message_registries::MessageEntry& entry :
- message_registries::openbmc::registry)
- {
- registryEntries.emplace_back(&entry);
- }
- }
- else if (registry == "ResourceEvent")
- {
- header = &message_registries::resource_event::header;
- for (const message_registries::MessageEntry& entry :
- message_registries::resource_event::registry)
- {
- registryEntries.emplace_back(&entry);
- }
- }
- else
- {
- messages::resourceNotFound(
- asyncResp->res,
- "#MessageRegistryFile.v1_1_0.MessageRegistryFile",
- registry);
- return;
- }
-
- if (registry != registry1)
- {
- messages::resourceNotFound(asyncResp->res, header->type,
- registry1);
- return;
- }
-
- asyncResp->res.jsonValue = {
- {"@Redfish.Copyright", header->copyright},
- {"@odata.type", header->type},
- {"Id", header->id},
- {"Name", header->name},
- {"Language", header->language},
- {"Description", header->description},
- {"RegistryPrefix", header->registryPrefix},
- {"RegistryVersion", header->registryVersion},
- {"OwningEntity", header->owningEntity}};
-
- nlohmann::json& messageObj =
- asyncResp->res.jsonValue["Messages"];
-
- // Go through the Message Registry and populate each Message
- for (const message_registries::MessageEntry* message :
- registryEntries)
- {
- nlohmann::json& obj = messageObj[message->first];
- obj = {{"Description", message->second.description},
- {"Message", message->second.message},
- {"Severity", message->second.severity},
- {"MessageSeverity", message->second.messageSeverity},
- {"NumberOfArgs", message->second.numberOfArgs},
- {"Resolution", message->second.resolution}};
- if (message->second.numberOfArgs > 0)
- {
- nlohmann::json& messageParamArray = obj["ParamTypes"];
- messageParamArray = nlohmann::json::array();
- for (const char* str : message->second.paramTypes)
- {
- if (str == nullptr)
- {
- break;
- }
- messageParamArray.push_back(str);
- }
- }
- }
- });
+ .methods(boost::beast::http::verb::get)(handleMessageRegistryGet);
}
-
} // namespace redfish