Part of NVIDIA/infra-controller#2660.
A caller can know both a boot interface’s MAC address and vendor-native Redfish interface ID, but BootInterfaceRef currently accepts only one at a time. NICo compensates by retrying the complete mutation with the second identifier after an arbitrary error. The first invocation may already have cleared a Dell job queue, staged a BIOS change, or created a job, so repeating the operation is not a safe fallback.
Add a complete boot-interface target that lets one vendor implementation choose its native selector during one operation invocation. The pair identifies one interface; it does not mean “try both.”
What this involves
- Add
BootInterfaceRef::Pair { mac_address, interface_id }.
- Have MAC-oriented implementations use the supplied MAC without another Redfish lookup.
- Have Dell use the supplied interface ID for NIC metadata and slot resolution.
- Preserve the existing standalone
Mac and InterfaceId variants and their behavior.
- Cover shared MAC resolution and Dell’s interface-ID precedence with unit tests.
Boundaries
- Do not add generic fallback or retry behavior inside LibRedfish.
- Do not update NICo’s dependency or remove its current retry helper in this issue.
- Do not change BIOS-job or reboot sequencing.
- Persisted observations and desired-state synchronization remain Core work.
Part of NVIDIA/infra-controller#2660.
A caller can know both a boot interface’s MAC address and vendor-native Redfish interface ID, but
BootInterfaceRefcurrently accepts only one at a time. NICo compensates by retrying the complete mutation with the second identifier after an arbitrary error. The first invocation may already have cleared a Dell job queue, staged a BIOS change, or created a job, so repeating the operation is not a safe fallback.Add a complete boot-interface target that lets one vendor implementation choose its native selector during one operation invocation. The pair identifies one interface; it does not mean “try both.”
What this involves
BootInterfaceRef::Pair { mac_address, interface_id }.MacandInterfaceIdvariants and their behavior.Boundaries