Update overall VPD collection status
This commit adds code to use xyz.openbmc_project.Common.Progress
interface instead of the com.ibm.VPD.Manager to update overall VPD
collection status of the system.
Output:
```
Collection status updates when FRUs VPD gets collected
root@p11bmc:~# busctl get-property com.ibm.VPD.Manager /com/ibm/VPD/Manager xyz.openbmc_project.Common.Progress Status
s "xyz.openbmc_project.Common.Progress.OperationStatus.NotStarted"
root@p11bmc:~# busctl get-property com.ibm.VPD.Manager /com/ibm/VPD/Manager xyz.openbmc_project.Common.Progress Status
s "xyz.openbmc_project.Common.Progress.OperationStatus.InProgress"
root@p11bmc:~# busctl get-property com.ibm.VPD.Manager /com/ibm/VPD/Manager xyz.openbmc_project.Common.Progress Status
s "xyz.openbmc_project.Common.Progress.OperationStatus.Completed"
```
Change-Id: I8fc12e5c3ee89092405b6a270cf3eaafa70d41d2
Signed-off-by: Anupama B R <anupama.b.r1@ibm.com>
diff --git a/vpd-manager/src/manager.cpp b/vpd-manager/src/manager.cpp
index 54147d3..d7b512d 100644
--- a/vpd-manager/src/manager.cpp
+++ b/vpd-manager/src/manager.cpp
@@ -23,8 +23,10 @@
Manager::Manager(
const std::shared_ptr<boost::asio::io_context>& ioCon,
const std::shared_ptr<sdbusplus::asio::dbus_interface>& iFace,
+ const std::shared_ptr<sdbusplus::asio::dbus_interface>& progressiFace,
const std::shared_ptr<sdbusplus::asio::connection>& asioConnection) :
- m_ioContext(ioCon), m_interface(iFace), m_asioConnection(asioConnection)
+ m_ioContext(ioCon), m_interface(iFace), m_progressInterface(progressiFace),
+ m_asioConnection(asioConnection)
{
#ifdef IBM_SYSTEM
if (!dbusUtility::isChassisPowerOn())
@@ -126,13 +128,13 @@
});
// Indicates FRU VPD collection for the system has not started.
- iFace->register_property_rw<std::string>(
- "CollectionStatus", sdbusplus::vtable::property_::emits_change,
+ progressiFace->register_property_rw<std::string>(
+ "Status", sdbusplus::vtable::property_::emits_change,
[this](const std::string& l_currStatus, const auto&) {
if (m_vpdCollectionStatus != l_currStatus)
{
m_vpdCollectionStatus = l_currStatus;
- m_interface->signal_property("CollectionStatus");
+ m_interface->signal_property("Status");
}
return true;
},
@@ -141,11 +143,12 @@
// If required, instantiate OEM specific handler here.
#ifdef IBM_SYSTEM
m_ibmHandler = std::make_shared<IbmHandler>(
- m_worker, m_backupAndRestoreObj, m_interface, m_ioContext,
- m_asioConnection);
+ m_worker, m_backupAndRestoreObj, m_interface, m_progressInterface,
+ m_ioContext, m_asioConnection);
#else
m_worker = std::make_shared<Worker>(INVENTORY_JSON_DEFAULT);
- m_interface->set_property("CollectionStatus", std::string("Completed"));
+ m_progressInterface->set_property(
+ "Status", std::string(constants::vpdCollectionCompleted));
#endif
}
catch (const std::exception& e)
@@ -347,7 +350,7 @@
void Manager::collectSingleFruVpd(
const sdbusplus::message::object_path& i_dbusObjPath)
{
- if (m_vpdCollectionStatus != "Completed")
+ if (m_vpdCollectionStatus != constants::vpdCollectionCompleted)
{
logging::logMessage(
"Currently VPD CollectionStatus is not completed. Cannot perform single FRU VPD collection for " +
@@ -650,12 +653,12 @@
try
{
types::SeverityType l_severityType;
- if (m_vpdCollectionStatus == "NotStarted")
+ if (m_vpdCollectionStatus == constants::vpdCollectionNotStarted)
{
l_severityType = types::SeverityType::Informational;
}
- else if (m_vpdCollectionStatus == "Completed" ||
- m_vpdCollectionStatus == "Failed")
+ else if (m_vpdCollectionStatus == constants::vpdCollectionCompleted ||
+ m_vpdCollectionStatus == constants::vpdCollectionFailed)
{
l_severityType = types::SeverityType::Warning;
}