summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDhruvaraj Subhashchandran <dhruvaraj@in.ibm.com>2017-09-19 06:13:20 -0500
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2017-09-27 13:45:20 +0000
commit4e6534f5b2520228a275941e2f3f5a495f41b9aa (patch)
tree749ddbe3dacfa1ebd95990784005a09c22f65328
parentd50f65787a81b021e42c9b066e65ca11e080bd3c (diff)
downloadphosphor-state-manager-4e6534f5b2520228a275941e2f3f5a495f41b9aa.tar.gz
phosphor-state-manager-4e6534f5b2520228a275941e2f3f5a495f41b9aa.zip
Add persistancy for boot progress and os status
Resolves openbmc/openbmc#2181 Change-Id: I807dd94efcea1118060f8594c7f69e333a3ea682 Signed-off-by: Dhruvaraj Subhashchandran <dhruvaraj@in.ibm.com>
-rw-r--r--host_state_manager.cpp14
-rw-r--r--host_state_manager.hpp28
2 files changed, 38 insertions, 4 deletions
diff --git a/host_state_manager.cpp b/host_state_manager.cpp
index ab60030..8debe8a 100644
--- a/host_state_manager.cpp
+++ b/host_state_manager.cpp
@@ -340,6 +340,20 @@ Host::Transition Host::requestedHostTransition(Transition value)
return retVal;
}
+Host::ProgressStages Host::bootProgress(ProgressStages value)
+{
+ auto retVal = bootprogress::Progress::bootProgress(value);
+ serialize();
+ return retVal;
+}
+
+Host::OSStatus Host::operatingSystemState(OSStatus value)
+{
+ auto retVal = osstatus::Status::operatingSystemState(value);
+ serialize();
+ return retVal;
+}
+
Host::HostState Host::currentHostState(HostState value)
{
log<level::INFO>("Change to Host State",
diff --git a/host_state_manager.hpp b/host_state_manager.hpp
index a0ba768..35a4bdd 100644
--- a/host_state_manager.hpp
+++ b/host_state_manager.hpp
@@ -80,6 +80,12 @@ class Host : public HostInherit
/** @brief Set value of HostTransition */
Transition requestedHostTransition(Transition value) override;
+ /** @brief Set Value for boot progress */
+ ProgressStages bootProgress(ProgressStages value) override;
+
+ /** @brief Set Value for Operating System Status */
+ OSStatus operatingSystemState(OSStatus value) override;
+
/** @brief Set value of CurrentHostState */
HostState currentHostState(HostState value) override;
@@ -184,7 +190,13 @@ class Host : public HostInherit
{
archive(convertForMessage(sdbusplus::xyz::openbmc_project::
State::server::Host::
- requestedHostTransition()));
+ requestedHostTransition()),
+ convertForMessage(sdbusplus::xyz::openbmc_project::
+ State::Boot::server::Progress::
+ bootProgress()),
+ convertForMessage(sdbusplus::xyz::openbmc_project::
+ State::OperatingSystem::server::Status::
+ operatingSystemState()));
}
/** @brief Function required by Cereal to perform deserialization.
@@ -195,13 +207,21 @@ class Host : public HostInherit
template<class Archive>
void load(Archive& archive)
{
- std::string str;
- archive(str);
- auto reqTran = Host::convertTransitionFromString(str);
+ std::string reqTranState;
+ std::string bootProgress;
+ std::string osState;
+ archive(reqTranState, bootProgress, osState);
+ auto reqTran = Host::convertTransitionFromString(reqTranState);
// When restoring, set the requested state with persistent value
// but don't call the override which would execute it
sdbusplus::xyz::openbmc_project::State::server::Host::
requestedHostTransition(reqTran);
+ sdbusplus::xyz::openbmc_project::State::Boot::server::Progress::
+ bootProgress(
+ Host::convertProgressStagesFromString(bootProgress));
+ sdbusplus::xyz::openbmc_project::State::OperatingSystem::server::
+ Status::operatingSystemState(
+ Host::convertOSStatusFromString(osState));
}
/** @brief Serialize and persist requested host state
OpenPOWER on IntegriCloud