Post by tomjoseph on Jul 19, 2023 13:15:00 GMT
There is a requirement to separate the staging of the firmware update to the BMC and the firmware update of the devices. The staged bundle on the BMC is to be persisted and the maintenance window for doing the firmware update of the devices cannot be predicted (can be months even). The BMC may be reset as well between the two operations. Having a single task for both the staging and firmware operations may not be possible for BMC since the gap between the two operations can be really long. So, the proposal is to have separate tasks for staging and initiating the firmware update.
1. Staging the bundle
a. PATCH {"HttpPushUriOptions": {"HttpPushUriApplyTime": {"ApplyTime": "OnStartUpdateRequest"}}}
b. POST -T <firmware bundle> https://${bmc}/redfish/v1/UpdateService/update
c. Once the staging is completed, the task completes. (Staging can be a long running operation)
2. <Wait for Maintenance window> or <BMC/Board is reset> operations can happen.
3. Firmware update with the staged bundle
a. POST /redfish/v1/UpdateService/Actions/UpdateService.StartUpdate
b. Once the firmware update is completed the task completes. (This task is separate from the staging task)
Discounting the fact that unstructured HTTP push update is deprecated and MultipartHttpPushUri is the way forward, I wanted to check if the RF API usage mentioned above is the correct/preferred way with the unstructured HTTP Push update to accomplish the requirement. Also, when we switch to MultipartHttpPushUri, can separate tasks for staging and firmware update be implemented.
1. Staging the bundle
a. PATCH {"HttpPushUriOptions": {"HttpPushUriApplyTime": {"ApplyTime": "OnStartUpdateRequest"}}}
b. POST -T <firmware bundle> https://${bmc}/redfish/v1/UpdateService/update
c. Once the staging is completed, the task completes. (Staging can be a long running operation)
2. <Wait for Maintenance window> or <BMC/Board is reset> operations can happen.
3. Firmware update with the staged bundle
a. POST /redfish/v1/UpdateService/Actions/UpdateService.StartUpdate
b. Once the firmware update is completed the task completes. (This task is separate from the staging task)
Discounting the fact that unstructured HTTP push update is deprecated and MultipartHttpPushUri is the way forward, I wanted to check if the RF API usage mentioned above is the correct/preferred way with the unstructured HTTP Push update to accomplish the requirement. Also, when we switch to MultipartHttpPushUri, can separate tasks for staging and firmware update be implemented.