xref: /openbmc/bmcweb/features/redfish/lib/manager_diagnostic_data.hpp (revision a51fc2d24e286ebad6feaf6876667e9a2f38425e)
1*a51fc2d2SSui Chen #pragma once
2*a51fc2d2SSui Chen 
3*a51fc2d2SSui Chen #include <app.hpp>
4*a51fc2d2SSui Chen #include <async_resp.hpp>
5*a51fc2d2SSui Chen #include <http_request.hpp>
6*a51fc2d2SSui Chen #include <nlohmann/json.hpp>
7*a51fc2d2SSui Chen #include <privileges.hpp>
8*a51fc2d2SSui Chen #include <routing.hpp>
9*a51fc2d2SSui Chen 
10*a51fc2d2SSui Chen #include <string>
11*a51fc2d2SSui Chen 
12*a51fc2d2SSui Chen namespace redfish
13*a51fc2d2SSui Chen {
14*a51fc2d2SSui Chen 
15*a51fc2d2SSui Chen /**
16*a51fc2d2SSui Chen  * handleManagerDiagnosticData supports ManagerDiagnosticData.
17*a51fc2d2SSui Chen  * It retrieves BMC health information from various DBus resources and returns
18*a51fc2d2SSui Chen  * the information through the response.
19*a51fc2d2SSui Chen  */
20*a51fc2d2SSui Chen inline void handleManagerDiagnosticDataGet(
21*a51fc2d2SSui Chen     crow::App& app, const crow::Request& req,
22*a51fc2d2SSui Chen     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
23*a51fc2d2SSui Chen {
24*a51fc2d2SSui Chen     if (!redfish::setUpRedfishRoute(app, req, asyncResp))
25*a51fc2d2SSui Chen     {
26*a51fc2d2SSui Chen         return;
27*a51fc2d2SSui Chen     }
28*a51fc2d2SSui Chen     asyncResp->res.jsonValue["@odata.type"] =
29*a51fc2d2SSui Chen         "#ManagerDiagnosticData.v1_0_0.ManagerDiagnosticData";
30*a51fc2d2SSui Chen     asyncResp->res.jsonValue["@odata.id"] =
31*a51fc2d2SSui Chen         "/redfish/v1/Managers/bmc/ManagerDiagnosticData";
32*a51fc2d2SSui Chen     asyncResp->res.jsonValue["Id"] = "ManagerDiagnosticData";
33*a51fc2d2SSui Chen     asyncResp->res.jsonValue["Name"] = "Manager Diagnostic Data";
34*a51fc2d2SSui Chen }
35*a51fc2d2SSui Chen 
36*a51fc2d2SSui Chen inline void requestRoutesManagerDiagnosticData(App& app)
37*a51fc2d2SSui Chen {
38*a51fc2d2SSui Chen     BMCWEB_ROUTE(app, "/redfish/v1/Managers/bmc/ManagerDiagnosticData")
39*a51fc2d2SSui Chen         .privileges(redfish::privileges::getManagerDiagnosticData)
40*a51fc2d2SSui Chen         .methods(boost::beast::http::verb::get)(
41*a51fc2d2SSui Chen             std::bind_front(handleManagerDiagnosticDataGet, std::ref(app)));
42*a51fc2d2SSui Chen }
43*a51fc2d2SSui Chen 
44*a51fc2d2SSui Chen } // namespace redfish
45