Skip to content

BIOSVersion

BIOSVersion upgrades BIOS firmware for one Server.

It models a task-oriented firmware lifecycle (issue upgrade task, monitor completion, reboot/power-cycle flow, verify final version).

What It Does

  • Targets one server via spec.serverRef.
  • Initiates Redfish-based BIOS upgrade using image metadata in spec.image.
  • Tracks vendor task progress in status.upgradeTask.
  • Uses ServerMaintenance gates before disruptive operations.
  • Verifies final BIOS version before completing.

Spec Reference

FieldRequiredDescription
spec.serverRef.nameNoTarget server. Immutable after creation. Required for the resource to function.
spec.versionYesDesired BIOS firmware version string.
spec.image.URIYesUpgrade image URI.
spec.image.transferProtocolNoProtocol to fetch image (for example HTTPS).
spec.image.secretRefNoSecret reference for protected image source.
spec.updatePolicyNoVendor policy override. Current enum support is Force.
spec.serverMaintenancePolicyNoMaintenance behavior for upgrade operations.
spec.serverMaintenanceRefNoOptional pre-existing maintenance object.

Status Fields In Detail

FieldWhat it meansHow to use it for debugging
status.stateLifecycle state (Pending, InProgress, Completed, Failed).Tells whether issue is precheck, execution, or terminal failure.
status.upgradeTask.URIVendor task endpoint for firmware update.Missing URI after issue attempt indicates upgrade issue path failed early.
status.upgradeTask.stateTask runtime state from BMC.Detect running vs suspended vs terminal failure behavior.
status.upgradeTask.statusHealth/status of task.Correlate with failure reason when task does not complete.
status.upgradeTask.percentageCompleteProgress percent.Flat progress over long duration indicates stalled vendor task.
status.conditions[]Step checkpoints (maintenance, issue, completion, reboot, verify).Most precise source of failure reason and next remediation step.

Detailed State Machine

Detailed Workflow (All Main Cases)

  1. Prechecks:
  • Validate serverRef and reach BMC through the server.
  • If server/BMC is temporarily unavailable, reconcile requeues.
  1. Version short-circuit:
  • If current BIOS version already equals desired, mark Completed.
  1. Maintenance path:
  • Ensure ServerMaintenance exists (reuse provided ref or create one).
  • Wait for server maintenance approval and maintenance state.
  1. Upgrade issue path:
  • Call firmware update endpoint with spec.image and policy.
  • Persist task metadata to status.upgradeTask.
  1. Task monitor path:
  • Poll task status until completed/failed.
  • If task object disappears, perform fallback version verification.
  1. Reboot path:
  • Enforce power off then power on when required.
  • Wait for power-state convergence before verification.
  1. Verification path:
  • Re-read BIOS version from BMC.
  • On match -> Completed, else -> Failed.
  1. Cleanup path:
  • Remove self-managed maintenance references after terminal completion.

Troubleshooting Guide

SymptomWhere to checkLikely causeAction
Stuck in Pendingstatus.conditions[]Maintenance not approved or BMC unavailableApprove maintenance; validate BMC connectivity and credentials.
InProgress with empty or missing upgradeTaskstatus.conditions[]Firmware issue request failedVerify image URI/protocol/secret and vendor update capability.
upgradeTask not progressingstatus.upgradeTask.*Vendor task stalledInspect BMC task endpoint and event logs; retry if safe.
Task missing but still not Completedstatus.conditions[] + current BIOS versionVendor deleted task before version reflectedWait for BMC stabilization, then re-verify version.
Failed after rebootstatus.conditions[]Final version mismatch or interrupted power sequenceValidate supported upgrade path and power-state transitions.

Example

yaml
apiVersion: metal.ironcore.dev/v1alpha1
kind: BIOSVersion
metadata:
  name: biosversion-sample
spec:
  serverRef:
    name: endpoint-sample-system-0
  version: P80 v1.45 (12/06/2017)
  image:
    URI: https://fw.example.com/contoso/bios/P80-v1.45.fwpkg
    transferProtocol: HTTPS
  updatePolicy: Force
  serverMaintenancePolicy: OwnerApproval
EU and German government funding logos

Funded by the European Union – NextGenerationEU.

The views and opinions expressed are solely those of the author(s) and do not necessarily reflect the views of the European Union or the European Commission. Neither the European Union nor the European Commission can be held responsible for them.