| #pragma once |
| |
| #include "node.hpp" |
| |
| #include <utils/fw_utils.hpp> |
| namespace redfish |
| { |
| /** |
| * BiosService class supports handle get method for bios. |
| */ |
| class BiosService : public Node |
| { |
| public: |
| BiosService(App& app) : Node(app, "/redfish/v1/Systems/system/Bios/") |
| { |
| entityPrivileges = {{boost::beast::http::verb::get, {{"Login"}}}}; |
| } |
| |
| private: |
| void doGet(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp, |
| const crow::Request&, const std::vector<std::string>&) override |
| { |
| asyncResp->res.jsonValue["@odata.id"] = |
| "/redfish/v1/Systems/system/Bios"; |
| asyncResp->res.jsonValue["@odata.type"] = "#Bios.v1_1_0.Bios"; |
| asyncResp->res.jsonValue["Name"] = "BIOS Configuration"; |
| asyncResp->res.jsonValue["Description"] = "BIOS Configuration Service"; |
| asyncResp->res.jsonValue["Id"] = "BIOS"; |
| asyncResp->res.jsonValue["Actions"]["#Bios.ResetBios"] = { |
| {"target", |
| "/redfish/v1/Systems/system/Bios/Actions/Bios.ResetBios"}}; |
| |
| // Get the ActiveSoftwareImage and SoftwareImages |
| fw_util::populateFirmwareInformation(asyncResp, fw_util::biosPurpose, |
| "", true); |
| } |
| }; |
| /** |
| * BiosReset class supports handle POST method for Reset bios. |
| * The class retrieves and sends data directly to D-Bus. |
| */ |
| class BiosReset : public Node |
| { |
| public: |
| BiosReset(App& app) : |
| Node(app, "/redfish/v1/Systems/system/Bios/Actions/Bios.ResetBios/") |
| { |
| entityPrivileges = { |
| {boost::beast::http::verb::post, {{"ConfigureManager"}}}}; |
| } |
| |
| private: |
| /** |
| * Function handles POST method request. |
| * Analyzes POST body message before sends Reset request data to D-Bus. |
| */ |
| void doPost(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp, |
| const crow::Request&, const std::vector<std::string>&) override |
| { |
| |
| crow::connections::systemBus->async_method_call( |
| [asyncResp](const boost::system::error_code ec) { |
| if (ec) |
| { |
| BMCWEB_LOG_ERROR << "Failed to reset bios: " << ec; |
| messages::internalError(asyncResp->res); |
| return; |
| } |
| }, |
| "org.open_power.Software.Host.Updater", |
| "/xyz/openbmc_project/software", |
| "xyz.openbmc_project.Common.FactoryReset", "Reset"); |
| } |
| }; |
| } // namespace redfish |