When meeting a BMC with multiple systems, the metal-operator seems to take a random (first?) one to populate the BMC status.
Proposal: create system heuristics, based on which the server object shall be created out of the right system, ignore all the rest systems
Current behavior:
curl -sku "$u:$p" https://$BMC_URL/redfish/v1/Systems/ | jq .Members
[
{
"@odata.id": "/redfish/v1/Systems/1"
},
{
"@odata.id": "/redfish/v1/Systems/HGX_Baseboard_0"
}
]
kubectl get bmc ai-wdf4a-1 -o yaml
apiVersion: metal.ironcore.dev/v1alpha1
kind: BMC
metadata:
name: foo
uid: 89fb09fc-dd12-4a9f-86da-834ae9ae3858
[…]
spec:
bmcSecretRef:
name: ai-wdf4a-1
consoleProtocol:
name: SSH
port: 22
endpointRef:
name: foo
protocol:
name: Redfish
port: 443
status:
conditions:
- lastTransitionTime: "2026-04-22T14:21:26Z"
message: BMC is connected
reason: BMCConnected
status: "True"
type: Ready
ip: […]
lastResetTime: "1970-01-01T00:00:00Z"
macAddress: [BMC_MAC_ADDRESS]
powerState: Unknown
state: StandbyOffline
kubectl get servers ai-wdf4a-1-system-0 -o yaml
apiVersion: metal.ironcore.dev/v1alpha1
kind: Server
metadata:
creationTimestamp: "2026-04-22T14:21:31Z"
generation: 5
name: foo-system-0
ownerReferences:
- apiVersion: metal.ironcore.dev/v1alpha1
blockOwnerDeletion: true
controller: true
kind: BMC
name: ai-wdf4a-1
uid: 89fb09fc-dd12-4a9f-86da-834ae9ae3858
resourceVersion: "88976872"
uid: 5ea93962-861d-41b2-a180-36369fc6ad42
spec:
bmcRef:
name: foo
systemURI: /redfish/v1/Systems/HGX_Baseboard_0
systemUUID: ""
status:
state: Initial
kubectl get servers ai-wdf4a-1-system-1 -o yaml
apiVersion: metal.ironcore.dev/v1alpha1
kind: Server
metadata:
creationTimestamp: "2026-04-22T14:21:31Z"
generation: 5
name: foo-system-1
ownerReferences:
- apiVersion: metal.ironcore.dev/v1alpha1
blockOwnerDeletion: true
controller: true
kind: BMC
name: foo
uid: 89fb09fc-dd12-4a9f-86da-834ae9ae3858
resourceVersion: "88976873"
uid: 2d96bb22-d292-4702-b311-f65543f6ad81
spec:
bmcRef:
name: foo
systemURI: /redfish/v1/Systems/1
systemUUID: 00000000-0000-0000-0000-[BMC_MAC_ADDRESS]
status:
state: Initial
When meeting a BMC with multiple systems, the metal-operator seems to take a random (first?) one to populate the BMC status.
Proposal: create system heuristics, based on which the server object shall be created out of the right system, ignore all the rest systems
Current behavior: