diff options
author | Saqib Khan <khansa@us.ibm.com> | 2017-04-04 09:53:59 -0500 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2017-05-05 23:23:40 +0000 |
commit | d5ac63507a47010f51ce857bd680c2f655380841 (patch) | |
tree | d7f4f806eb1c962b2dbbb7b6cb2c0004c26a9d6a | |
parent | 133eb29c3eb61f7b7689185200238429a11eeecc (diff) | |
download | phosphor-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.cpp | 50 | ||||
-rw-r--r-- | host_state_manager.hpp | 7 |
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 |