1 #pragma once 2 3 #include "app.hpp" 4 #include "query.hpp" 5 #include "registries/privilege_registry.hpp" 6 #include "utils/chassis_utils.hpp" 7 #include "utils/json_utils.hpp" 8 9 namespace redfish 10 { 11 12 inline void doThermalSubsystemCollection( 13 const std::shared_ptr<bmcweb::AsyncResp>& asyncResp, 14 const std::string& chassisId, 15 const std::optional<std::string>& validChassisPath) 16 { 17 if (!validChassisPath) 18 { 19 BMCWEB_LOG_ERROR << "Not a valid chassis ID" << chassisId; 20 messages::resourceNotFound(asyncResp->res, "Chassis", chassisId); 21 return; 22 } 23 asyncResp->res.jsonValue["@odata.type"] = 24 "#ThermalSubsystem.v1_0_0.ThermalSubsystem"; 25 asyncResp->res.jsonValue["Name"] = "Thermal Subsystem"; 26 asyncResp->res.jsonValue["Id"] = "ThermalSubsystem"; 27 28 asyncResp->res.jsonValue["@odata.id"] = crow::utility::urlFromPieces( 29 "redfish", "v1", "Chassis", chassisId, "ThermalSubsystem"); 30 31 asyncResp->res.jsonValue["Status"]["State"] = "Enabled"; 32 asyncResp->res.jsonValue["Status"]["Health"] = "OK"; 33 } 34 35 inline void handleThermalSubsystemCollectionGet( 36 App& app, const crow::Request& req, 37 const std::shared_ptr<bmcweb::AsyncResp>& asyncResp, 38 const std::string& param) 39 { 40 if (!redfish::setUpRedfishRoute(app, req, asyncResp)) 41 { 42 return; 43 } 44 const std::string& chassisId = param; 45 46 redfish::chassis_utils::getValidChassisPath( 47 asyncResp, chassisId, 48 std::bind_front(doThermalSubsystemCollection, asyncResp, chassisId)); 49 } 50 51 inline void requestRoutesThermalSubsystem(App& app) 52 { 53 BMCWEB_ROUTE(app, "/redfish/v1/Chassis/<str>/ThermalSubsystem/") 54 .privileges(redfish::privileges::getThermalSubsystem) 55 .methods(boost::beast::http::verb::get)(std::bind_front( 56 handleThermalSubsystemCollectionGet, std::ref(app))); 57 } 58 59 } // namespace redfish 60