Firmware
See Operations Overview for the conventions (in-band failures, registered vs. ephemeral targets) and the async job model that the asynchronous firmware RPCs below build on.
Firmware - inventory queries
Synchronous reads of installed firmware.
Firmware - asynchronous updates
These start firmware updates and return job IDs. Poll them with
GetFirmwareJobStatus. A new update is admitted only if the target node is
idle; a second job for the same (rack_id, node_id) is rejected as “update in
progress.”
For NVFWUPD-backed updates, a node may select a configured expected hardware
inventory with NodeDescriptor.attributes["inventory_profile"]. RMS validates
the profile before admitting a child job and asks NVFWUPD to recheck the AP
inventory before every target update and retry. A mismatch fails with
failed-precondition details listing missing and present APs. Firmware version
verification does not perform this inventory check.
Supermicro GB300 sequencing
For the descriptor-only Supermicro GB300 compute type, firmware-object apply
selects artifacts by filename from the manifest rather than by location order:
the HMC *nosbios*.fwpkg, the BIOS*.bin, and the host-BMC *OBMC*.bin.
RMS applies them in that order. With activation enabled it performs a full
compute power cycle after nosbios and after BIOS; the host-BMC update runs last
and does not add another host AC cycle. A combined nosbios-plus-BIOS request is
rejected when activation is disabled because the required intermediate cycle
would be skipped.
Firmware objects
A firmware object is a catalog entry built from a firmware manifest JSON: a
software object tree plus RMS-parsed component and artifact metadata, scoped to a
hardware_type, optionally marked default, and only available once RMS has
downloaded all referenced artifacts. See the
sample manifest.
component_filters restrict which components apply to which node type.