Sync PSU images on service startup
On service startup, it shall check the PSU images, find a latest
version, and update to the PSUs that are not with this version.
Tested: With dummy image and service, test on Witherspoon with 2
different running PSU software:
* When startup without stored image, the serive tries to update an older
PSU but it does not have PSU image, so it's skipped with below journal
log:
Automatically update PSU
No image for the activation, skipped
* When startup with an older image stored in BMC, it behaves the same as
above.
* When startup with a new image stored in BMC, it updates the PSUs, with
below example journal log:
Automatically update PSU
Starting Update PSU
/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0
/var/lib/obmc/psu/2B1D...
Started Update PSU
/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0
/var/lib/obmc/psu/2B1D.
Starting Update PSU
/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1
/var/lib/obmc/psu/2B1D...
Started Update PSU
/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1
/var/lib/obmc/psu/2B1D.
Signed-off-by: Lei YU <mine260309@gmail.com>
Change-Id: I6d676c5a4441685fb2b5920455f439c00f6097af
diff --git a/src/item_updater.hpp b/src/item_updater.hpp
index 2f23b1e..b713454 100644
--- a/src/item_updater.hpp
+++ b/src/item_updater.hpp
@@ -55,7 +55,7 @@
{
processPSUImage();
processStoredImage();
- getLatestVersionId();
+ syncToLatestImage();
}
/** @brief Deletes version
@@ -154,6 +154,12 @@
/** @brief Get the versionId of the latest PSU version */
std::optional<std::string> getLatestVersionId();
+ /** @brief Update PSUs to the latest version */
+ void syncToLatestImage();
+
+ /** @brief Invoke the activation via DBus */
+ void invokeActivation(const std::unique_ptr<Activation>& activation);
+
/** @brief Persistent sdbusplus D-Bus bus connection. */
sdbusplus::bus::bus& bus;