|
Post by ueliyahu on Jul 23, 2023 7:43:02 GMT
Hi
During a BMC firmware update, a new object is created that includes the xyz.openbmc_project.Software.Version interface (https://github.com/openbmc/phosphor-bmc-code-mgmt/blob/dedcb9a6a4f5e756b1996e99a0a4e5e03b06d84c/image_manager.cpp#L221)
This interface plays a crucial role in listing all the firmware inventory using the Redfish GET request. (https://github.com/openbmc/bmcweb/blob/5db33d60ca6c3be2b799f5fd0fd311c37917fd70/redfish-core/lib/update_service.hpp#L843C23-L843C23)
However, when performing a firmware update and calling the GET request from /redfish/v1/UpdateService/FirmwareInventory The result list includes the new BMC firmware object, even though it is not yet active.
Redfish output Example:
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory",
"@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection",
"Members": [
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/bd850aa9" (This is the running BMC)
},
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/e2960819" (The new BMC FW, not running )
}
],
"Members@odata.count": 2,
"Name": "Software Inventory Collection"
}
(In case the project uses PLDM for firmware updates, only active images will be listed in the result.) The behavior of including the new firmware object which is not active yet, in the result list, is the correct behavior ? I didn't found clear answer at DMTF documentation
Thanks
|
|
|
Post by mraineri on Jul 24, 2023 17:38:55 GMT
It can be depending on your design. It is a firmware image you have installed on some local media and can discover, so it is valid to show that in your inventory. I do think it might be worth extending the firmware update white paper to help explain these different cases and design patterns so client have some idea of what they can expect. But at least in my opinion, what you're doing right now is acceptable.
|
|
|
Post by ueliyahu on Jul 30, 2023 8:14:33 GMT
Thanks !!
|
|
|
Post by jautor on Jul 31, 2023 18:42:01 GMT
And the `Status` / `State` values, along with `RelatedItem` can be used to differentiate between the image "in use" vs. "uploaded but not active".
|
|