Boot interface management grew up around one assumption -- that every host has a DPU in DPU mode, and our automation just picks the DPU's host interface as the boot device. As we expand past that (a DPU running in NIC mode, a DPU that's present but unused while an integrated NIC does north/south, and zero-DPU machines per #870), "which NIC does this host boot from?" needs the same answer for every NIC type, and an operator needs a dependable way to say "use this one."
This epic tracks finishing that standardization. The boot interface is the MachineBootInterface -- a NIC's MAC together with its Redfish EthernetInterface.Id -- and the goal is one selection rule, honored by every writer and reader, whether the chosen NIC is a DPU PF, a SuperNIC, or an integrated NIC.
Done so far (merged)
What's left
Sequencing
PR 3 is independent (the segment axis, not boot). PR 1 and PR 2 can both start now, but PR 2's multi-NIC case depends on PR 1 (predictions have no primary flag, so the declared primary is the only disambiguator). If serial: PR 1 -> PR 2, with PR 3 anytime alongside.
Part of #870.
Boot interface management grew up around one assumption -- that every host has a DPU in DPU mode, and our automation just picks the DPU's host interface as the boot device. As we expand past that (a DPU running in NIC mode, a DPU that's present but unused while an integrated NIC does north/south, and zero-DPU machines per #870), "which NIC does this host boot from?" needs the same answer for every NIC type, and an operator needs a dependable way to say "use this one."
This epic tracks finishing that standardization. The boot interface is the
MachineBootInterface-- a NIC's MAC together with its RedfishEthernetInterface.Id-- and the goal is one selection rule, honored by every writer and reader, whether the chosen NIC is a DPU PF, a SuperNIC, or an integrated NIC.Done so far (merged)
MachineBootInterface(MAC + Redfish id), MAC-first with id fallback.machine_interfacesits ownMachineBootInterface; the explored default and the managed value now speak the same type.SetPrimaryInterface, the generic form ofSetPrimaryDpu, so an operator can promote any interface (including on a zero-DPU host).machine_interfacesprimary, via the samepick_boot_interfacethe machine-controller uses.What's left
nic_type; declare a host NIC's expected network segment (and type) directly.Sequencing
PR 3 is independent (the segment axis, not boot). PR 1 and PR 2 can both start now, but PR 2's multi-NIC case depends on PR 1 (predictions have no primary flag, so the declared primary is the only disambiguator). If serial: PR 1 -> PR 2, with PR 3 anytime alongside.
Part of #870.