host: auto_reboot: switch to new settings API

Change-Id: Ic65a6dab922ef08e68205d4e16bb849baff353c4
Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
diff --git a/Makefile.am b/Makefile.am
index 0cea407..e392086 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -10,7 +10,8 @@
 phosphor_host_state_manager_SOURCES = \
 	host_state_manager.cpp \
 	host_state_manager_main.cpp \
-        host_state_serialize.cpp
+	host_state_serialize.cpp \
+	settings.cpp
 
 phosphor_chassis_state_manager_SOURCES = \
 	chassis_state_manager.cpp \
@@ -26,8 +27,17 @@
 phosphor_host_check_SOURCES = \
 	host_check_main.cpp
 
-generic_cxxflags = $(SYSTEMD_CFLAGS) $(PHOSPHOR_DBUS_INTERFACES_CFLAGS) $(SDBUSPLUS_CFLAGS)
-generic_ldflags = $(SYSTEMD_LIBS) $(PHOSPHOR_DBUS_INTERFACES_LIBS) $(SDBUSPLUS_LIBS)
+generic_cxxflags = \
+	$(SYSTEMD_CFLAGS) \
+	$(PHOSPHOR_DBUS_INTERFACES_CFLAGS) \
+	$(SDBUSPLUS_CFLAGS) \
+	$(PHOSPHOR_LOGGING_CFLAGS)
+
+generic_ldflags = \
+	$(SYSTEMD_LIBS) \
+	$(PHOSPHOR_DBUS_INTERFACES_LIBS) \
+	$(SDBUSPLUS_LIBS)
+	$(PHOSPHOR_LOGGING_LIBS)
 
 phosphor_host_state_manager_CXXFLAGS = $(generic_cxxflags)
 phosphor_host_state_manager_LDFLAGS = $(generic_ldflags) -lstdc++fs
diff --git a/configure.ac b/configure.ac
index eb1ac58..7c01962 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,6 +16,8 @@
     AC_MSG_ERROR(["Requires phosphor-dbus-interfaces package."]))
 PKG_CHECK_MODULES([SDBUSPLUS], [sdbusplus],,
     AC_MSG_ERROR(["Requires sdbusplus package."]))
+PKG_CHECK_MODULES([PHOSPHOR_LOGGING], [phosphor-logging],,\
+    AC_MSG_ERROR(["Requires phosphor-logging package."]))
 
 # Checks for typedefs, structures, and compiler characteristics.
 AX_CXX_COMPILE_STDCXX_14([noext])
diff --git a/host_state_manager.cpp b/host_state_manager.cpp
index da42918..54321d2 100644
--- a/host_state_manager.cpp
+++ b/host_state_manager.cpp
@@ -255,59 +255,25 @@
 
 bool Host::isAutoReboot()
 {
-    sdbusplus::message::variant<std::string> autoRebootParam;
-    std::string strParam;
+    using namespace settings;
 
-    std::string HOST_PATH("/org/openbmc/settings/host0");
-    std::string HOST_INTERFACE("org.openbmc.settings.Host");
-
-    auto mapper = this->bus.new_method_call(MAPPER_BUSNAME,
-                                            MAPPER_PATH,
-                                            MAPPER_INTERFACE,
-                                            "GetObject");
-
-    mapper.append(HOST_PATH, std::vector<std::string>({HOST_INTERFACE}));
-    auto mapperResponseMsg = this->bus.call(mapper);
-
-    if (mapperResponseMsg.is_method_error())
-    {
-        log<level::ERR>("Error in mapper call");
-        return false;
-    }
-
-    std::map<std::string, std::vector<std::string>> mapperResponse;
-    mapperResponseMsg.read(mapperResponse);
-    if (mapperResponse.empty())
-    {
-        log<level::ERR>("Error reading mapper response");
-        return false;
-    }
-
-    const auto& host = mapperResponse.begin()->first;
-
-    auto method = this->bus.new_method_call(host.c_str(),
-                                            HOST_PATH.c_str(),
-                                            "org.freedesktop.DBus.Properties",
-                                            "Get");
-
-    method.append(HOST_INTERFACE.c_str(), "auto_reboot");
-    auto reply = this->bus.call(method);
-
+    auto method =
+        bus.new_method_call(
+                settings.service(settings.autoReboot, autoRebootIntf).c_str(),
+                settings.autoReboot.c_str(),
+                "org.freedesktop.DBus.Properties",
+                "Get");
+    method.append(autoRebootIntf, "AutoReboot");
+    auto reply = bus.call(method);
     if (reply.is_method_error())
     {
-        log<level::ERR>("Error in auto_reboot Get");
+        log<level::ERR>("Error in AutoReboot Get");
         return false;
     }
 
-    reply.read(autoRebootParam);
-    strParam =
-        sdbusplus::message::variant_ns::get<std::string>(autoRebootParam);
-
-    if (strParam.empty())
-    {
-        log<level::ERR>("Error reading auto_reboot response");
-        return false;
-    }
+    sdbusplus::message::variant<bool> result;
+    reply.read(result);
+    auto autoReboot = result.get<bool>();
 
     sdbusplus::message::variant<int> rebootCounterParam = 0;
     method = this->bus.new_method_call(REBOOTCOUNTER_SERVICE,
@@ -322,7 +288,7 @@
     }
     reply.read(rebootCounterParam);
 
-    if (strParam == "yes")
+    if (autoReboot)
     {
         if ( rebootCounterParam > 0)
         {
diff --git a/host_state_manager.hpp b/host_state_manager.hpp
index af4fa15..8204931 100644
--- a/host_state_manager.hpp
+++ b/host_state_manager.hpp
@@ -4,6 +4,7 @@
 #include <functional>
 #include <sdbusplus/bus.hpp>
 #include "xyz/openbmc_project/State/Host/server.hpp"
+#include "settings.hpp"
 
 namespace phosphor
 {
@@ -47,7 +48,8 @@
                         sdbusRule::interface(
                                 "org.freedesktop.systemd1.Manager"),
                         std::bind(std::mem_fn(&Host::sysStateChange),
-                                  this, std::placeholders::_1))
+                                  this, std::placeholders::_1)),
+                settings(bus)
         {
             // Enable systemd signals
             subscribeToSystemdSignals();
@@ -138,6 +140,9 @@
 
         /** @brief Used to subscribe to dbus systemd signals **/
         sdbusplus::bus::match_t systemdSignals;
+
+        // Settings objects of interest
+        settings::Objects settings;
 };
 
 } // namespace manager