Update time stamp on VPD collection status update
StartTime and CompletedTime indicates time duration for VPD collection,
which is useful information to analyze how much time is taken to
collect VPD for any FRU.
This commits handles updating time stamp during VPD collection.
Output:
```
Time stamps reset to zero, when FRU is deleted :
Before Delete method:
root@p11bmc:/tmp/images# busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/lcd_op_panel_hill xyz.openbmc_project.Common.Progress Status; busctl introspect xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/lcd_op_panel_hill xyz.openbmc_project.Common.Progress
s "xyz.openbmc_project.Common.Progress.OperationStatus.Completed"
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.CompletedTime property t 1756486364 emits-change writable
.StartTime property t 1756486363 emits-change writable
.Status property s "xyz.openbmc_project.Common.Progress.Op… emits-change writable
Call Delete FRU VPD method:
root@p11bmc:/tmp/images# busctl call com.ibm.VPD.Manager /com/ibm/VPD/Manager com.ibm.VPD.Manager deleteFRUVPD o "/xyz/openbmc_project/inventory/system/chassis/motherboard/lcd_op_panel_hill"
After Delete FRU VPD:
root@p11bmc:/tmp/images# busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/lcd_op_panel_hill xyz.openbmc_project.Common.Progress Status; busctl introspect xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/lcd_op_panel_hill xyz.openbmc_project.Common.Progress
s "xyz.openbmc_project.Common.Progress.OperationStatus.NotStarted"
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.CompletedTime property t 0 emits-change writable
.StartTime property t 0 emits-change writable
.Status property s "xyz.openbmc_project.Common.Progress.Op… emits-change writable
Time stamp updated to all Sub FRUs, ex for failed VPD collection scenario:
Before:
busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_bot xyz.openbmc_project.Common.Progress Status; busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0 xyz.openbmc_project.Common.Progress Status; busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_top 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"
root@p11bmc:/tmp/images# busctl introspect xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0 xyz.openbmc_project.Common.Progress; busctl introspect xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_top xyz.openbmc_project.Common.Progress; busctl introspect xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_bot xyz.openbmc_project.Common.Progress
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.CompletedTime property t 0 emits-change writable
.StartTime property t 0 emits-change writable
.Status property s "xyz.openbmc_project.Common.Progress.Op… emits-change writable
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.CompletedTime property t 0 emits-change writable
.StartTime property t 0 emits-change writable
.Status property s "xyz.openbmc_project.Common.Progress.Op… emits-change writable
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.CompletedTime property t 0 emits-change writable
.StartTime property t 0 emits-change writable
.Status property s "xyz.openbmc_project.Common.Progress.Op… emits-change writable
Call Collect FRU VPD method:
root@p11bmc:/tmp/images# busctl call com.ibm.VPD.Manager /com/ibm/VPD/Manager com.ibm.VPD.Manager CollectFRUVPD o "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0"
After Collect FRU VPD Failed:
root@p11bmc:/tmp/images# busctl introspect xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0 xyz.openbmc_project.Common.Progress; busctl introspect xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_top xyz.openbmc_project.Common.Progress; busctl introspect xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_bot xyz.openbmc_project.Common.Progress
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.CompletedTime property t 1756486110 emits-change writable
.StartTime property t 1756486110 emits-change writable
.Status property s "xyz.openbmc_project.Common.Progress.Op… emits-change writable
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.CompletedTime property t 1756486110 emits-change writable
.StartTime property t 1756486110 emits-change writable
.Status property s "xyz.openbmc_project.Common.Progress.Op… emits-change writable
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.CompletedTime property t 1756486110 emits-change writable
.StartTime property t 1756486110 emits-change writable
.Status property s "xyz.openbmc_project.Common.Progress.Op… emits-change writable
root@p11bmc:/tmp/images# busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_bot xyz.openbmc_project.Common.Progress Status; busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0 xyz.openbmc_project.Common.Progress Status; busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0/cxp_top 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"
```
Output:
Change-Id: I835c1cc9082b8be411c4460aac3845fba249a120
Signed-off-by: Anupama B R <anupama.b.r1@ibm.com>
diff --git a/vpd-manager/include/utility/vpd_specific_utility.hpp b/vpd-manager/include/utility/vpd_specific_utility.hpp
index d72b7f3..a3f8921 100644
--- a/vpd-manager/include/utility/vpd_specific_utility.hpp
+++ b/vpd-manager/include/utility/vpd_specific_utility.hpp
@@ -628,6 +628,8 @@
l_propertyMap.emplace(
l_propertyName,
constants::vpdCollectionNotStarted);
+ l_propertyMap.emplace("StartTime", 0);
+ l_propertyMap.emplace("CompletedTime", 0);
}
else
{
@@ -1073,49 +1075,6 @@
}
/**
- * @brief API to save current time stamp in PIM.
- *
- * This API will capture current time stamp and save it in progress interface
- * for the given inventory path.
- *
- * @param[in] i_inventoryPath - Inventory path of FRU.
- * @param[in] i_property - Property to save the time.
- */
-inline void saveTimeStampInPim(const std::string& i_inventoryPath,
- const std::string& i_property) noexcept
-{
- if (i_inventoryPath.empty() || i_property.empty())
- {
- logging::logMessage("Invalid input parameter. Can't save time in PIM.");
- return;
- }
-
- try
- {
- types::ObjectMap l_ObjMap = {std::make_pair(
- i_inventoryPath,
- types::InterfaceMap{std::make_pair(
- constants::vpdCollectionInterface,
- types::PropertyMap{std::make_pair(
- i_property,
- types::DbusVariantType{
- commonUtility::getCurrentTimeSinceEpoch()})})})};
-
- if (!dbusUtility::callPIM(move(l_ObjMap)))
- {
- logging::logMessage(
- "Call to PIM failed while saving time for path " +
- i_inventoryPath);
- }
- }
- catch (const std::exception& l_ex)
- {
- logging::logMessage("Failed to save time stamp under PIM for reason: " +
- std::string(l_ex.what()));
- }
-}
-
-/**
* @brief API to get error code message.
*
* @param[in] i_errCode - error code.