From 55f132bfeb4a3d634589b71e77b8289fc652aebf Mon Sep 17 00:00:00 2001 From: Deepak Kodihalli Date: Tue, 25 Jul 2017 07:36:06 -0500 Subject: host: power_restore: switch to new settings API Change-Id: Ie44e421ad690527d1883f03dcde9d499282ecacc Signed-off-by: Deepak Kodihalli --- discover_system_state.cpp | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) (limited to 'discover_system_state.cpp') diff --git a/discover_system_state.cpp b/discover_system_state.cpp index 3989b3f..c055f9f 100644 --- a/discover_system_state.cpp +++ b/discover_system_state.cpp @@ -5,8 +5,12 @@ #include #include #include +#include #include "chassis_state_manager.hpp" #include "host_state_manager.hpp" +#include "settings.hpp" +#include "xyz/openbmc_project/Common/error.hpp" +#include "xyz/openbmc_project/Control/Power/RestorePolicy/server.hpp" namespace phosphor { @@ -16,6 +20,8 @@ namespace manager { using namespace phosphor::logging; +using namespace sdbusplus::xyz::openbmc_project::Common::Error; +using namespace sdbusplus::xyz::openbmc_project::Control::Power::server; constexpr auto MAPPER_BUSNAME = "xyz.openbmc_project.ObjectMapper"; constexpr auto MAPPER_PATH = "/xyz/openbmc_project/object_mapper"; @@ -25,9 +31,6 @@ constexpr auto PROPERTY_INTERFACE = "org.freedesktop.DBus.Properties"; constexpr auto HOST_PATH = "/xyz/openbmc_project/state/host0"; -constexpr auto SETTINGS_PATH = "/org/openbmc/settings/host0"; -constexpr auto SETTINGS_INTERFACE = "org.openbmc.settings.Host"; - constexpr auto CHASSIS_PATH = "/xyz/openbmc_project/state/chassis0"; std::string getService(sdbusplus::bus::bus& bus, std::string path, @@ -118,8 +121,13 @@ void setProperty(sdbusplus::bus::bus& bus, std::string path, int main() { + using namespace phosphor::logging; + auto bus = sdbusplus::bus::new_default(); + using namespace settings; + Objects settings(bus); + using namespace phosphor::state::manager; namespace server = sdbusplus::xyz::openbmc_project::State::server; @@ -129,14 +137,30 @@ int main() if(currentPowerState == convertForMessage(server::Chassis::PowerState::Off)) { - std::string power_policy = getProperty(bus, SETTINGS_PATH, - SETTINGS_INTERFACE, - "power_policy"); + auto method = + bus.new_method_call( + settings.service(settings.powerRestorePolicy, + powerRestoreIntf).c_str(), + settings.powerRestorePolicy.c_str(), + "org.freedesktop.DBus.Properties", + "Get"); + method.append(powerRestoreIntf, "PowerRestorePolicy"); + auto reply = bus.call(method); + if (reply.is_method_error()) + { + log("Error in PowerRestorePolicy Get"); + elog(); + } + + sdbusplus::message::variant result; + reply.read(result); + auto powerPolicy = result.get(); log("Host power is off, checking power policy", - entry("POWER_POLICY=%s", power_policy.c_str())); + entry("POWER_POLICY=%s", powerPolicy.c_str())); - if (power_policy == "ALWAYS_POWER_ON") + if (RestorePolicy::Policy::AlwaysOn == + RestorePolicy::convertPolicyFromString(powerPolicy)) { log("power_policy=ALWAYS_POWER_ON, powering host on"); setProperty(bus, HOST_PATH, HOST_BUSNAME, -- cgit v1.2.1