Skip to content

BMCVersionSet

BMCVersionSet performs BMC firmware rollout for multiple BMCs selected by labels.

What It Does

  • Selects target BMCs using spec.bmcSelector.
  • Creates one child BMCVersion per selected BMC.
  • Patches child specs from spec.bmcVersionTemplate when safe.
  • Deletes orphan children if BMCs leave selector scope.
  • Aggregates child state into fleet-level status counters.

Spec Reference

FieldRequiredDescription
spec.bmcSelectorYesLabel selector for target BMCs.
spec.bmcVersionTemplate.versionYesTarget BMC firmware version for all selected BMCs.
spec.bmcVersionTemplate.image.URIYesFirmware image location.
spec.bmcVersionTemplate.image.transferProtocolNoRetrieval protocol, typically HTTPS.
spec.bmcVersionTemplate.image.secretRefNoSecret credentials for image source.
spec.bmcVersionTemplate.updatePolicyNoUpdate override (Force supported).
spec.bmcVersionTemplate.serverMaintenancePolicyNoMaintenance policy for associated servers.

Status Fields In Detail

FieldWhat it meansHow to use it for debugging
status.fullyLabeledBMCsCurrent selected BMC count.Validates selector behavior and expected rollout scope.
status.availableBMCVersionNumber of owned child BMCVersion objects.Gap to selected count indicates child creation issues.
status.pendingBMCVersionChildren waiting to start.Indicates prerequisites not met in many children.
status.inProgressBMCVersionChildren currently upgrading.Persistent high count suggests shared bottleneck (maintenance/BMC availability).
status.completedBMCVersionSuccessful child upgrades.Rollout completion signal.
status.failedBMCVersionFailed child upgrades.Immediate indicator to inspect failed child resources.

Detailed Reconcile Diagram

Detailed Workflow (All Main Cases)

  1. Target resolution:
  • Evaluate selector and compute desired BMC set.
  1. Child create path:
  • Create child BMCVersion for each selected BMC without one.
  1. Child delete path:
  • Delete orphan children no longer selected.
  • Defer deletion when child remains in active in-progress state.
  1. Template patch path:
  • Patch child spec from set template unless child has active in-progress task.
  1. Progress aggregation:
  • Recompute counters from all owned children.
  • Requeue until topology and child-state convergence.

Troubleshooting Guide

SymptomWhere to checkLikely causeAction
availableBMCVersion below selected countset status + controller logs/eventsChild creation conflicts or API failuresInspect create failures and owner references.
High pendingBMCVersion for long timechild BMCVersion conditionsMaintenance prerequisites or BMC connectivity blockersResolve common blocker in one child, then monitor fleet recovery.
failedBMCVersion increases quicklyfailed child status/conditionsInvalid template image/version or vendor incompatibilityCorrect template values and retry failed children.
Orphans remain after selector updatechild stateActive in-progress safety guardWait for child completion/failure before deletion proceeds.

Example

yaml
apiVersion: metal.ironcore.dev/v1alpha1
kind: BMCVersionSet
metadata:
  name: bmcversionset-sample
spec:
  bmcVersionTemplate:
    version: 3.45.455b66-rev4
    image:
      URI: https://fw.example.com/contoso/bmc/3.45.455b66-rev4.bin
      transferProtocol: HTTPS
    updatePolicy: Force
    serverMaintenancePolicy: OwnerApproval
  bmcSelector:
    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.