summaryrefslogtreecommitdiffstats
path: root/discover_system_state.cpp
diff options
context:
space:
mode:
authorDeepak Kodihalli <dkodihal@in.ibm.com>2017-07-25 07:36:06 -0500
committerDeepak Kodihalli <dkodihal@in.ibm.com>2017-07-27 23:42:23 -0500
commit55f132bfeb4a3d634589b71e77b8289fc652aebf (patch)
treee69ef0dab59829e0fa3af23c549e1c26385c2e40 /discover_system_state.cpp
parent3dd08a58505973b3010ba3109b5ac4dcf2222b20 (diff)
downloadphosphor-state-manager-55f132bfeb4a3d634589b71e77b8289fc652aebf.tar.gz
phosphor-state-manager-55f132bfeb4a3d634589b71e77b8289fc652aebf.zip
host: power_restore: switch to new settings API
Change-Id: Ie44e421ad690527d1883f03dcde9d499282ecacc Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
Diffstat (limited to 'discover_system_state.cpp')
-rw-r--r--discover_system_state.cpp40
1 files changed, 32 insertions, 8 deletions
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 <systemd/sd-bus.h>
#include <sdbusplus/server.hpp>
#include <phosphor-logging/log.hpp>
+#include <phosphor-logging/elog-errors.hpp>
#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<level::ERR>("Error in PowerRestorePolicy Get");
+ elog<InternalFailure>();
+ }
+
+ sdbusplus::message::variant<std::string> result;
+ reply.read(result);
+ auto powerPolicy = result.get<std::string>();
log<level::INFO>("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<level::INFO>("power_policy=ALWAYS_POWER_ON, powering host on");
setProperty(bus, HOST_PATH, HOST_BUSNAME,
OpenPOWER on IntegriCloud