From a78eecb032eefeb84da3ec042700a40f55ae8f10 Mon Sep 17 00:00:00 2001 From: Kuiying Wang Date: Wed, 23 Dec 2020 22:47:56 +0800 Subject: [PATCH] Add support to ResetBios action Tested: Bios reset flag can be modified throw redfish POST https://IP_ADDR/redfish/v1/Systems/system/Bios/Actions/Bios.ResetBios Change-Id: I5e5fbdd70d4a3ce3b976cc2eb0a7d9a2a3adb124 Signed-off-by: Kuiying Wang --- redfish-core/lib/bios.hpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/redfish-core/lib/bios.hpp b/redfish-core/lib/bios.hpp index cf76fe0..7b6fc3d 100644 --- a/redfish-core/lib/bios.hpp +++ b/redfish-core/lib/bios.hpp @@ -643,7 +643,7 @@ class BiosReset : public Node Node(app, "/redfish/v1/Systems/system/Bios/Actions/Bios.ResetBios/") { entityPrivileges = { - {boost::beast::http::verb::post, {{"ConfigureManager"}}}}; + {boost::beast::http::verb::post, {{"ConfigureComponents"}}}}; } private: @@ -655,19 +655,23 @@ class BiosReset : public Node const std::vector&) override { auto asyncResp = std::make_shared(res); - + std::string resetFlag = + "xyz.openbmc_project.BIOSConfig.Manager.ResetFlag.FactoryDefaults"; crow::connections::systemBus->async_method_call( [asyncResp](const boost::system::error_code ec) { if (ec) { - BMCWEB_LOG_ERROR << "Failed to reset bios: " << ec; + BMCWEB_LOG_ERROR << "doPost bios reset got error " << ec; messages::internalError(asyncResp->res); return; } + BMCWEB_LOG_DEBUG << "bios reset action is done"; }, - "org.open_power.Software.Host.Updater", - "/xyz/openbmc_project/software", - "xyz.openbmc_project.Common.FactoryReset", "Reset"); + "xyz.openbmc_project.BIOSConfigManager", + "/xyz/openbmc_project/bios_config/manager", + "org.freedesktop.DBus.Properties", "Set", + "xyz.openbmc_project.BIOSConfig.Manager", "ResetBIOSSettings", + std::variant(resetFlag)); } }; } // namespace redfish -- 2.17.1