Firmware update Trays

View as Markdown
Update firmware on Trays with optional filters. If no filter is specified, targets all trays in the Site. **Filter constraints:** - `rackId` and `rackName` are mutually exclusive - `rackId`/`rackName` cannot be combined with `ids`/`componentIds` (rack-level vs component-level targeting) - `componentIds` requires `type` to be specified Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix.

Authentication

AuthorizationBearer
``` export JWT_BEARER_TOKEN="<jwt-bearer-token>" # Example org name: "acme-inc export ORG_NAME=<org-name> # Use the JWT bearer token in your API request auth header: curl -v -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $JWT_BEARER_TOKEN" https://nico-rest-api.nico.svc.cluster.local/v2/org/$ORG_NAME/nico/user/current ```

Path parameters

orgstringRequired
Name of the Org

Request

This endpoint expects an object.
siteIdstringRequiredformat: "uuid"
ID of the Site
filterobjectOptional
Filter that selects Trays targeted for firmware update
versionstring or nullOptional
Target firmware version.
targetslist of enumsOptional

Optional subset of firmware targets to update within each matched tray. Names are lowercase and select sub-parts of the tray (BMC, BIOS, etc.). The accepted set per tray type comes from the Flow service’s NICo proto bindings (which mirror Core’s per-tray-type enums in NICo-core/crates/rpc/proto/forge.proto), so the supported values track Core as new sub-parts are added:

  • switch trays (NvSwitchComponent): currently bmc, cpld, bios, nvos
  • powershelf trays (PowerShelfComponent): currently pmc, psu
  • compute trays (ComputeTrayComponent): currently bmc, bios (currently NOT honored end-to-end: the NICo compute-firmware path goes through SetFirmwareUpdateTimeWindow + auto-update, which has no per-target selection; the request is logged and the whole bundle is applied. Will be honored once compute moves to UpdateComponentFirmware.) Omitted or empty means “update everything in the bundle” (the historical default) for compute-tray-internal targets. Unknown names are rejected. Requires version to be set. The special target dpu, valid only on compute trays, requests DPU reprovisioning on each matched host. Unlike the other targets, dpu is NOT covered by the “omitted/empty means everything” default — it must be listed explicitly. version is ignored on the dpu branch; the target firmware version comes from site configuration.
ruleIdstringOptionalformat: "uuid"
Optional Operation Rule UUID. When set, pins every task spawned by this batch to the named rule and overrides Flow's default rule resolution.
overrideReadinessCheckbooleanOptionalDefaults to false

When true, proceed even if one or more target components (or hosts on the owning rack for rack-scoped components) are reported as not ready by their persisted status. Intended for operator-supervised maintenance.

Response

OK
taskIdslist of strings
List of task IDs created for the firmware update operation

Errors

400
Bad Request Error
403
Forbidden Error