Skip to navigation

Firmware update Racks

View as Markdown

Update firmware on Racks with optional name filter. If no filter is specified, targets all racks in the Site.

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 Racks targeted for firmware update
versionstring or nullOptional

Target firmware input serialized as a string. Its format is a contract between the caller and the component backend selected for the target. The REST API and Flow orchestration otherwise preserve this value. Flow only unwraps the optional per-tray mapping described below before passing the value to the selected component manager.

Flow’s built-in firmware rule includes Compute and NVSwitch stages. Do not use a compute-specific host-catalog component map as shared input for other backends. For mixed backends, use the per-tray mapping below with values appropriate to each selected backend.

For RMS-backed rack-scale firmware updates, use the complete SOT firmware-object JSON document, not a release version such as 24.11.0. A SOT document is an object with ProductName and Milestones at the top level. Each milestone contains Name, State, and BoardSKUs; each board SKU contains Name, Type, and Components. Component groups contain Software and Firmware entries describing Component, Version, Type, FileNames, artifact Locations, and optional SubComponents. Obtain the complete document from the SOT release process; the abbreviated examples are not executable input. Supply a complete document covering all component types selected by the operation rule.

The string can contain either one shared firmware input for all selected trays or a JSON mapping from tray type (compute, nvswitch, powershelf) to firmware input. Each mapping value must satisfy its selected backend’s contract. Flow forwards object values as raw JSON and unquotes string values. These exact lowercase top-level keys are reserved for per-tray mappings; a shared JSON object must not contain any of them. A missing tray type in the mapping skips that component type. A non-empty, non-layered value is forwarded unchanged. For rack-scale RMS components, an omitted, null, empty, or whitespace-only value uses the owning rack profile’s configured firmware object. Resolution or fetch failures are reported by the asynchronous task.

authenticationDataobjectOptional

Optional, write-only authentication data for firmware downloads. Not supported for DPU-only updates or by the legacy NICo compute firmware controller.

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.
overrideVersionCheckbooleanOptionalDefaults to false

When true, request that the selected component backend override firmware version-based checks when deciding whether to apply the update. This permits same-version reapplication and downgrade when supported. It does not bypass readiness checks or state-controller routing.

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 stringsOptional
List of task IDs created for the firmware update operation

Errors

400
Bad Request Error
403
Forbidden Error
504
Gateway Timeout Error