Skip to content

BIOSVersionSet

BIOSVersionSet performs BIOS firmware rollout across multiple servers selected by labels.

What It Does

  • Selects target servers with spec.serverSelector.
  • Creates and owns one BIOSVersion child per selected server.
  • Patches child specs from spec.biosVersionTemplate when safe.
  • Deletes orphan children when servers leave the selector.
  • Surfaces rollout progress via aggregate status counters.

Spec Reference

FieldRequiredDescription
spec.serverSelectorYesLabel selector for target servers.
spec.biosVersionTemplate.versionYesTarget BIOS version for all selected servers.
spec.biosVersionTemplate.image.URIYesFirmware image location.
spec.biosVersionTemplate.image.transferProtocolNoRetrieval protocol, e.g. HTTPS.
spec.biosVersionTemplate.image.secretRefNoCredentials for protected image source.
spec.biosVersionTemplate.updatePolicyNoPolicy override (Force currently supported).
spec.biosVersionTemplate.serverMaintenancePolicyNoMaintenance behavior for children.

Status Fields In Detail

FieldWhat it meansHow to use it for debugging
status.fullyLabeledServersNumber of currently selected servers.Confirms selector scope and rollout target size.
status.availableBIOSVersionNumber of owned child BIOSVersion objects.If below selected count, child creation/update path is blocked.
status.pendingBIOSVersionChildren waiting to start.Large values indicate prerequisite blocks in children.
status.inProgressBIOSVersionChildren actively upgrading.Persistent high values indicate shared external bottleneck.
status.completedBIOSVersionSuccessful terminal children.Progress metric for rollout completion.
status.failedBIOSVersionFailed terminal children.Primary signal that rollout has hard failures to triage.

Detailed Reconcile Diagram

Detailed Workflow (All Main Cases)

  1. Selection and ownership:
  • Selector defines desired target set.
  • Existing children are discovered by owner reference.
  1. Creation path:
  • Missing child is created for each selected server.
  • Name length edge cases are handled by generated names.
  1. Deletion path:
  • Child is removed if parent no longer selects its server.
  • In-progress child deletion is deferred for safety.
  1. Template patch path:
  • Non-in-progress child specs are reconciled to set template.
  • In-progress children are not patched to avoid mid-upgrade mutation.
  1. Status aggregation:
  • Counters are recalculated each reconcile loop.
  • Requeue occurs until selected targets and available children align.

Troubleshooting Guide

SymptomWhere to checkLikely causeAction
Rollout does not start for all selected serversset counters (fullyLabeledServers, availableBIOSVersion)Child creation failuresInspect controller logs and API admission errors for child objects.
Many children remain Pendingchild BIOSVersion conditionsMaintenance/version/image prerequisites not metFix common prerequisite (maintenance approval, image URI/secret).
failedBIOSVersion climbs after template changefailed child status/conditionsInvalid template contentCorrect set template and retry failed children.
Old children remain after selector narrowingchild stateIn-progress safety guard prevented deletionWait for terminal child states, then reconcile again.

Example

yaml
apiVersion: metal.ironcore.dev/v1alpha1
kind: BIOSVersionSet
metadata:
  name: biosversionset-sample
spec:
  biosVersionTemplate:
    version: P80 v1.46 (12/06/2017)
    image:
      URI: https://fw.example.com/contoso/bios/P80-v1.46.fwpkg
      transferProtocol: HTTPS
    updatePolicy: Force
    serverMaintenancePolicy: OwnerApproval
  serverSelector:
    matchLabels:
      manufacturer: Contoso
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.