Update failed status for all sub FRUs
This commit updates the code to set collection Status as failed
For all sub FRUs including base FRU, when single FUR VPD collection is
failed.
Output:
```
Before calling CollectFRUVPD, set collection status as NotStarted using busctl command to all sub FRUs:
root@p11bmc:~# busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10 xyz.openbmc_project.Common.Progress Status; busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector0 xyz.openbmc_project.Common.Progress Status; busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector1 xyz.openbmc_project.Common.Progress Status; busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector2 xyz.openbmc_project.Common.Progress Status; busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector3 xyz.openbmc_project.Common.Progress Status
s "xyz.openbmc_project.Common.Progress.OperationStatus.NotStarted"
s "xyz.openbmc_project.Common.Progress.OperationStatus.NotStarted"
s "xyz.openbmc_project.Common.Progress.OperationStatus.NotStarted"
s "xyz.openbmc_project.Common.Progress.OperationStatus.NotStarted"
s "xyz.openbmc_project.Common.Progress.OperationStatus.NotStarted"
Call VPD collection:
root@p11bmc:~# busctl call com.ibm.VPD.Manager /com/ibm/VPD/Manager com.ibm.VPD.Manager CollectFRUVPD o /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10
After calling CollectFRUVPD status updated as Failed when VPD collection is failedwq:
root@p11bmc:~# busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10 xyz.openbmc_project.Common.Progress Status; busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector0 xyz.openbmc_project.Common.Progress Status; busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector1 xyz.openbmc_project.Common.Progress Status; busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector2 xyz.openbmc_project.Common.Progress Status; busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot10/pcie_card10/c10_connector3 xyz.openbmc_project.Common.Progress Status
s "xyz.openbmc_project.Common.Progress.OperationStatus.Failed"
s "xyz.openbmc_project.Common.Progress.OperationStatus.Failed"
s "xyz.openbmc_project.Common.Progress.OperationStatus.Failed"
s "xyz.openbmc_project.Common.Progress.OperationStatus.Failed"
s "xyz.openbmc_project.Common.Progress.OperationStatus.Failed"
```
Change-Id: I97a1d9aa5baddcbe7cce1e0426d715ea6012499c
Signed-off-by: Anupama B R <anupama.b.r1@ibm.com>
diff --git a/vpd-manager/src/worker.cpp b/vpd-manager/src/worker.cpp
index dc46b98..f2731e0 100644
--- a/vpd-manager/src/worker.cpp
+++ b/vpd-manager/src/worker.cpp
@@ -1820,6 +1820,7 @@
void Worker::collectSingleFruVpd(
const sdbusplus::message::object_path& i_dbusObjPath)
{
+ std::string l_fruPath{};
try
{
// Check if system config JSON is present
@@ -1832,7 +1833,7 @@
}
// Get FRU path for the given D-bus object path from JSON
- const std::string& l_fruPath =
+ l_fruPath =
jsonUtility::getFruPathFromJson(m_parsedJson, i_dbusObjPath);
if (l_fruPath.empty())
@@ -1917,15 +1918,7 @@
}
catch (const std::exception& l_error)
{
- // Notify FRU's VPD collection Status as Failed
- if (!dbusUtility::notifyFRUCollectionStatus(
- std::string(i_dbusObjPath), constants::vpdCollectionFailed))
- {
- logging::logMessage(
- "Call to PIM Notify method failed to update collection Status as Failed for " +
- std::string(i_dbusObjPath));
- }
-
+ setCollectionStatusProperty(l_fruPath, constants::vpdCollectionFailed);
// TODO: Log PEL
logging::logMessage(std::string(l_error.what()));
}