Post by geissonator on Feb 21, 2019 15:58:23 GMT
Some of our servers over in OpenBMC have two flash chips associated with the BMC. This allows us to have two different firmware images associated with the BMC. This allows features like being able to try out a new image, but quickly go back to the previous one if needed. It also enables some hardware watchdog features (if something goes horribly wrong with one flash bank, the hardware fails over to the other flash bank). There's nothing in Redfish the prevents having multiple SoftwareInventory items being associated with the same target, but I don't see any way to dynamically switch which one is activated, other then another full POST of the image to the UpdateService.
We allow the user to switch back and forth between the two firmware images by associating a priority property with each of them. The highest priority image is the one activated on the next BMC reboot. So when a user wishes to switch, they increase the priority of the image and then issue a reboot. Our firmware will automatically reduce the priority of the other image if needed (i.e. there is never a situation where two firmware images have the same priority).
The easiest solution in my mind is a new property in the SoftwareInventory schema, called Priority. The issue is activation. Do we need a PriorityApplyTime for the user to indicate when the priority should be applied? Automatically rebooting your BMC may not be desired but is the added complexity worth it? Is there a better way to tie into the existing UpdateService for this?
I use a BMC as an example here but we have similar designs with our BIOS flash chips, where multiple firmware images can be associated with the BIOS.
For reference (and some background on this), here's the review of this design for OpenBMC: gerrit.openbmc-project.xyz/#/c/openbmc/docs/+/18186/
We allow the user to switch back and forth between the two firmware images by associating a priority property with each of them. The highest priority image is the one activated on the next BMC reboot. So when a user wishes to switch, they increase the priority of the image and then issue a reboot. Our firmware will automatically reduce the priority of the other image if needed (i.e. there is never a situation where two firmware images have the same priority).
The easiest solution in my mind is a new property in the SoftwareInventory schema, called Priority. The issue is activation. Do we need a PriorityApplyTime for the user to indicate when the priority should be applied? Automatically rebooting your BMC may not be desired but is the added complexity worth it? Is there a better way to tie into the existing UpdateService for this?
I use a BMC as an example here but we have similar designs with our BIOS flash chips, where multiple firmware images can be associated with the BIOS.
For reference (and some background on this), here's the review of this design for OpenBMC: gerrit.openbmc-project.xyz/#/c/openbmc/docs/+/18186/