test(machine-a-tron): guard the empty-NDF-MAC Dell boot NIC through HostInit#2896
test(machine-a-tron): guard the empty-NDF-MAC Dell boot NIC through HostInit#2896chet wants to merge 1 commit into
Conversation
…ostInit libredfish v0.44.16 makes a Dell host whose boot NIC reports an empty NetworkDeviceFunction MAC -- a NicMode-stripped or iDRAC partition, where the EthernetInterface MAC stays populated -- resolve the boot NIC by its interface id instead of by the absent MAC, so it clears HostInit/PollingBiosSetup instead of looping there. This bumps the pin to bring that in and adds an end-to-end machine-a-tron test so the path stays covered. The host still resolves a Pair (MAC + the interface id captured at exploration), so PollingBiosSetup's is_bios_setup MAC lookup fails and falls back to the id -- reaching Ready proves the host no longer hangs. - Bump libredfish v0.44.15 -> v0.44.16 (the Dell BIOS-verify by-interface-id fix). - Add a per-host bmc-mock empty_ndf_mac knob: serves an empty boot-NIC NetworkDeviceFunction MAC while the EthernetInterface MAC stays populated (honored by Dell, the one model with a NetworkDeviceFunction). - Add a machine-a-tron test driving such a Dell host to Ready; pre-fix it strands in PollingBiosSetup. Tests added! This supports NVIDIA#2821 Signed-off-by: Chet Nichols III <chetn@nvidia.com>
|
Important Review skippedNo new commits to review since the last review. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
WalkthroughThe PR adds an ChangesEmpty NDF MAC support
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
@coderabbitai PTAL, thanks! |
|
🐇 ✅ Action performedReview finished.
|
poroh
left a comment
There was a problem hiding this comment.
I doubt that adding one-off flag to machine info is right approach. Putting "request change" to discuss it before merge.
🔍 Container Scan Summary
Per-CVE detail lives in the per-service |
|
Closing in favor of #2931. The fix itself shipped in libredfish v0.44.16 (NVIDIA/libredfish#96, with a This PR was an attempt to add an end-to-end machine-a-tron guard. Per the review steer, I reworked it from a bmc-mock flag to the failure-injection feature (including a new Rather than land a vacuous e2e, the deterministic coverage now lives in #2931 — tests for The |
…ingestion (#4012) > [!IMPORTANT] > This PR cherry-picks the host boot-interface configuration convergence arc into `release/v2.0`, in merge order: > - #3139 (`78aa3766a`) -- skip the SetBootOrder re-apply when the boot config is already set > - #3186 (`064ce21bc`) -- apply SetBootOrder boot config once per reboot > - #3194 (`428135d4f`) -- resolve the boot NIC through one shared step > - #3369 (`a2ab63f2c`) -- ensure a correct boot config during machine validation > - #3454 (`9d80c7fcd`) -- generalized convergence for host boot interface configuration ## Related issues This supports #2821 (nvbug 6430706). ## Type of Change - [ ] **Add** - New feature or capability - [ ] **Change** - Changes in existing functionality - [x] **Fix** - Bug fixes - [ ] **Remove** - Removed features or deprecated functionality - [ ] **Internal** - Internal changes (refactoring, tests, docs, etc.) ## Breaking Changes - [ ] **This PR contains breaking changes** ## Testing - [x] Unit tests added/updated - [x] Integration tests added/updated - [ ] Manual testing performed - [ ] No testing required (docs, internal refactor, etc.) ## Additional Notes Backports the boot-interface convergence follow-ups that a v2.0 NIC-mode host needs to clear `PollingBiosSetup`/`BiosSetupFailed` (nvbug 6430706 / #2821). The base fix -- #2950, re-assert the HTTP boot device during NIC-mode -- is already in `release/v2.0`; this arc is the refinement set that lands the boot config by interface ID when the Dell NDF MAC goes empty, and converges it across host init, assigned setup, DPU reprovision, and validation. - **One conflict, in #3454** (`crates/machine-controller/Cargo.toml` `[dev-dependencies]`): resolved to `carbide-redfish` + `carbide-test-harness` + `carbide-test-support`, dropping `carbide-instrument` -- that crate does not exist on `release/v2.0` and nothing in the picked code references it. All other commits applied cleanly. - **libredfish:** no bump needed. The interface-ID boot resolution requires libredfish >= v0.44.16; `release/v2.0` already pins **v0.44.21** (`main` is at v0.44.22). - **#2896 intentionally excluded:** it was closed unmerged (a libredfish pin bump + test), superseded by #2950, which is already in v2.0. --------- Signed-off-by: Chet Nichols III <chetn@nvidia.com>
Summary
libredfish v0.44.16 makes a Dell host whose boot NIC reports an empty
NetworkDeviceFunctionMAC -- a NicMode-stripped or iDRAC partition, where theEthernetInterfaceMAC stays populated -- resolve the boot NIC by its interface id instead of by the absent MAC, so it clearsHostInit/PollingBiosSetupinstead of looping there forever.This bumps the pin to bring that in and adds an end-to-end machine-a-tron regression test so the path stays covered. The host still resolves a
Pair(MAC + the interface id captured at exploration), sois_bios_setup's MAC lookup fails and falls back to the id -- reachingReadyproves it no longer hangs.Changes
v0.44.15->v0.44.16(the Dell BIOS-verify by-interface-id fix, fix(dell): resolve boot NIC by interface id on the BIOS verify path libredfish#96). Same pin as chore: bump libredfish to v0.44.16 #2889 -- the two merge cleanly whichever lands first.empty_ndf_macknob: serves an empty boot-NICNetworkDeviceFunctionMAC while theEthernetInterfaceMAC stays populated (honored by Dell -- the one model with aNetworkDeviceFunction).test_machine_a_tron_empty_ndf_mac, driving such a Dell host toReady.Testing
test_integrationlocally, both directions:Ready.PollingBiosSetup-- confirming the guard catches the regression.This supports #2821