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/oem-handler/ibm_handler.cpp b/vpd-manager/oem-handler/ibm_handler.cpp
index 4b077f5..316184c 100644
--- a/vpd-manager/oem-handler/ibm_handler.cpp
+++ b/vpd-manager/oem-handler/ibm_handler.cpp
@@ -16,11 +16,12 @@
std::shared_ptr<Worker>& o_worker,
std::shared_ptr<BackupAndRestore>& o_backupAndRestoreObj,
const std::shared_ptr<sdbusplus::asio::dbus_interface>& i_iFace,
+ const std::shared_ptr<sdbusplus::asio::dbus_interface>& i_progressiFace,
const std::shared_ptr<boost::asio::io_context>& i_ioCon,
const std::shared_ptr<sdbusplus::asio::connection>& i_asioConnection) :
m_worker(o_worker), m_backupAndRestoreObj(o_backupAndRestoreObj),
- m_interface(i_iFace), m_ioContext(i_ioCon),
- m_asioConnection(i_asioConnection)
+ m_interface(i_iFace), m_progressInterface(i_progressiFace),
+ m_ioContext(i_ioCon), m_asioConnection(i_asioConnection)
{
if (dbusUtility::isChassisPowerOn())
{
@@ -109,8 +110,8 @@
// Triggering FRU VPD collection. Setting status to "In
// Progress".
- m_interface->set_property("CollectionStatus",
- std::string("InProgress"));
+ m_progressInterface->set_property(
+ "Status", std::string(constants::vpdCollectionInProgress));
m_worker->collectFrusFromJson();
}
});
@@ -164,8 +165,8 @@
ConfigurePowerVsSystem();
std::cout << "m_worker->isSystemVPDOnDBus() completed" << std::endl;
- m_interface->set_property("CollectionStatus",
- std::string("Completed"));
+ m_progressInterface->set_property(
+ "Status", std::string(constants::vpdCollectionCompleted));
if (m_backupAndRestoreObj)
{
@@ -545,7 +546,8 @@
void IbmHandler::collectAllFruVpd()
{
// Setting status to "InProgress", before trigeering VPD collection.
- m_interface->set_property("CollectionStatus", std::string("InProgress"));
+ m_progressInterface->set_property(
+ "Status", std::string(constants::vpdCollectionInProgress));
m_worker->collectFrusFromJson();
SetTimerToDetectVpdCollectionStatus();
}
diff --git a/vpd-manager/oem-handler/ibm_handler.hpp b/vpd-manager/oem-handler/ibm_handler.hpp
index 74429a2..e2bf3da 100644
--- a/vpd-manager/oem-handler/ibm_handler.hpp
+++ b/vpd-manager/oem-handler/ibm_handler.hpp
@@ -34,6 +34,7 @@
* @param[in] o_backupAndRestoreObj - Ref to back up and restore class
* object.
* @param[in] i_iFace - interface to implement.
+ * @param[in] i_progressiFace - Interface to track collection progress.
* @param[in] i_ioCon - IO context.
* @param[in] i_asioConnection - Dbus Connection.
*/
@@ -41,6 +42,7 @@
std::shared_ptr<Worker>& o_worker,
std::shared_ptr<BackupAndRestore>& o_backupAndRestoreObj,
const std::shared_ptr<sdbusplus::asio::dbus_interface>& i_iFace,
+ const std::shared_ptr<sdbusplus::asio::dbus_interface>& i_progressiFace,
const std::shared_ptr<boost::asio::io_context>& i_ioCon,
const std::shared_ptr<sdbusplus::asio::connection>& i_asioConnection);
@@ -166,6 +168,9 @@
// Shared pointer to Dbus interface class.
const std::shared_ptr<sdbusplus::asio::dbus_interface>& m_interface;
+ // Shared pointer to Dbus collection progress interface class.
+ const std::shared_ptr<sdbusplus::asio::dbus_interface>& m_progressInterface;
+
// Shared pointer to asio context object.
const std::shared_ptr<boost::asio::io_context>& m_ioContext;