summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaqib Khan <khansa@us.ibm.com>2017-04-04 09:53:59 -0500
committerPatrick Williams <patrick@stwcx.xyz>2017-05-05 23:23:40 +0000
commitd5ac63507a47010f51ce857bd680c2f655380841 (patch)
treed7f4f806eb1c962b2dbbb7b6cb2c0004c26a9d6a
parent133eb29c3eb61f7b7689185200238429a11eeecc (diff)
downloadphosphor-state-manager-d5ac63507a47010f51ce857bd680c2f655380841.tar.gz
phosphor-state-manager-d5ac63507a47010f51ce857bd680c2f655380841.zip
Add journal entry for BOOTCOUNT
Update the jounal entry in the host state code to indicate we may have hit the HOST BOOTCOUNT. Resolves openbmc/openbmc#1424 Change-Id: I2bfd73f6051efb408eb4c683cebe95fda4700859 Signed-off-by: Saqib Khan <khansa@us.ibm.com>
-rw-r--r--host_state_manager.cpp50
-rw-r--r--host_state_manager.hpp7
2 files changed, 40 insertions, 17 deletions
diff --git a/host_state_manager.cpp b/host_state_manager.cpp
index 49fb910..3e06d73 100644
--- a/host_state_manager.cpp
+++ b/host_state_manager.cpp
@@ -51,8 +51,7 @@ constexpr auto REBOOTCOUNTER_INTERFACE("org.openbmc.SensorValue");
constexpr auto SYSTEMD_PROPERTY_IFACE = "org.freedesktop.DBus.Properties";
constexpr auto SYSTEMD_INTERFACE_UNIT = "org.freedesktop.systemd1.Unit";
-const sdbusplus::message::variant<int> DEFAULT_BOOTCOUNT = 2;
-
+constexpr auto DEFAULT_BOOTCOUNT = 2;
/* Map a system state to the HostState */
const std::map<std::string, server::Host::HostState> SYS_HOST_STATE_TABLE = {
@@ -179,6 +178,16 @@ bool Host::stateActive(const std::string& target)
return true;
}
+void Host::setHostbootCount(int bootCount)
+{
+ auto method = this->bus.new_method_call(REBOOTCOUNTER_SERVICE,
+ REBOOTCOUNTER_PATH,
+ REBOOTCOUNTER_INTERFACE,
+ "setValue");
+ sdbusplus::message::variant<int> newParam = bootCount;
+ method.append(newParam);
+ this->bus.call_noreply(method);
+}
bool Host::isAutoReboot()
{
@@ -236,7 +245,7 @@ bool Host::isAutoReboot()
return false;
}
- sdbusplus::message::variant<int> rebootCounterParam;
+ sdbusplus::message::variant<int> rebootCounterParam = 0;
method = this->bus.new_method_call(REBOOTCOUNTER_SERVICE,
REBOOTCOUNTER_PATH,
REBOOTCOUNTER_INTERFACE,
@@ -251,28 +260,35 @@ bool Host::isAutoReboot()
if (strParam == "yes")
{
- method = this->bus.new_method_call(REBOOTCOUNTER_SERVICE,
- REBOOTCOUNTER_PATH,
- REBOOTCOUNTER_INTERFACE,
- "setValue");
if( rebootCounterParam > 0)
{
// Reduce BOOTCOUNT by 1
- method.append((sdbusplus::message::variant_ns::
- get<int>(rebootCounterParam)) - 1);
- this->bus.call_noreply(method);
+ log<level::INFO>("Auto reboot enabled. "
+ "Reducing HOST BOOTCOUNT by 1.");
+ Host::setHostbootCount((sdbusplus::message::variant_ns::
+ get<int>(rebootCounterParam)) - 1);
return true;
}
- if(rebootCounterParam == 0)
+ else if(rebootCounterParam == 0)
{
// Reset reboot counter and go to quiesce state
- method.append(DEFAULT_BOOTCOUNT);
- this->bus.call_noreply(method);
+ log<level::INFO>("Auto reboot enabled. "
+ "HOST BOOTCOUNT already set to 0.");
+ Host::setHostbootCount(DEFAULT_BOOTCOUNT);
+ return false;
+ }
+ else
+ {
+ log<level::INFO>("Auto reboot enabled. "
+ "HOST BOOTCOUNT has an invalid value.");
return false;
}
}
-
- return false;
+ else
+ {
+ log<level::INFO>("Auto reboot disabled.");
+ return false;
+ }
}
int Host::sysStateChangeSignal(sd_bus_message *msg, void *userData,
@@ -320,12 +336,12 @@ int Host::sysStateChange(sd_bus_message* msg,
{
if (Host::isAutoReboot())
{
- log<level::INFO>("Auto reboot enabled. Beginning reboot...");
+ log<level::INFO>("Beginning reboot...");
Host::requestedHostTransition(server::Host::Transition::Reboot);
}
else
{
- log<level::INFO>("Auto reboot disabled. Maintaining quiesce.");
+ log<level::INFO>("Maintaining quiesce");
this->currentHostState(server::Host::HostState::Quiesced);
}
diff --git a/host_state_manager.hpp b/host_state_manager.hpp
index e277289..e9158a3 100644
--- a/host_state_manager.hpp
+++ b/host_state_manager.hpp
@@ -100,6 +100,13 @@ class Host : public sdbusplus::server::object::object<
bool stateActive(const std::string& target);
/**
+ * @brief Set the HOST BOOTCOUNT Sensor value
+ *
+ * @param[in] bootCount - new BOOTCOUNT value
+ */
+ void setHostbootCount(int bootCount);
+
+ /**
* @brief Determine if auto reboot flag is set
*
* @return boolean corresponding to current auto_reboot setting
OpenPOWER on IntegriCloud