Skip to content

fix(dell): match DPU HTTP boot option by name prefix, not exact equality#93

Open
kirson-git wants to merge 1 commit into
NVIDIA:mainfrom
kirson-git:fix/dell-http-boot-option-prefix-match
Open

fix(dell): match DPU HTTP boot option by name prefix, not exact equality#93
kirson-git wants to merge 1 commit into
NVIDIA:mainfrom
kirson-git:fix/dell-http-boot-option-prefix-match

Conversation

@kirson-git

Copy link
Copy Markdown

Problem

Dell::set_boot_order_dpu_first (src/dell.rs) builds the expected boot option name as
"HTTP Device 1: {DeviceDescription}" and compares it for exact equality against each
boot option's display_name:

if boot_option.display_name == expected_boot_option_name {

On Dell iDRAC the real boot option name has an adapter/MAC/protocol suffix appended, e.g.:

HTTP Device 1: NIC in Slot 40 Port 1 Partition 1 - Nvidia Network Adapter - C4:70:BD:2C:3C:0A - IPv4

So the exact == never matches, the loop falls through to
Err(RedfishError::MissingBootOption(..)), and the boot order is never set. Downstream
(NICo / infra-controller) this wedges the host-provisioning state machine at SetBootOrder
indefinitely.

Fix

Match by prefix — the constructed expected name is already a prefix of the real display_name:

if boot_option.display_name.starts_with(&expected_boot_option_name) {

The reorder action itself (PATCH Boot.BootOrder=[id]) is unchanged.

Testing / verification

Reproduced and verified on a live BlueField-3 + Dell PowerEdge XE9680 (iDRAC):

  • Before: set_boot_order_dpu_first returned MissingBootOption("HTTP Device 1: NIC in Slot 40 Port 1 Partition 1") even though that boot option existed (Boot0000, with the suffix above) and was settable — confirmed by a manual PATCH .../Settings {"Boot":{"BootOrder":["Boot0000"]}} returning HTTP 200.
  • After: the prefix match selects the correct boot option and sets it first; the host advances past SetBootOrder.

🤖 Generated with Claude Code

@copy-pr-bot

copy-pr-bot Bot commented Jun 23, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

set_boot_order_dpu_first / is_boot_order_setup / machine_setup_status all
compared the expected boot option name "HTTP Device 1: {DeviceDescription}"
for *exact* equality against the boot option display_name. On Dell iDRAC the
real name has a suffix, e.g.:

  "HTTP Device 1: NIC in Slot 40 Port 1 Partition 1 - Nvidia Network Adapter - C4:70:BD:2C:3C:0A - IPv4"

so exact ==/!= never matches: set fails with MissingBootOption, and the
verify path (is_boot_order_setup) reports the order unconfigured. Downstream
(NICo) this wedges host provisioning at SetBootOrder/CheckBootOrder.

Match by prefix (starts_with) in all three places. Verified on a live
BlueField-3 + Dell PowerEdge XE9680 (iDRAC): the set fix advanced the state
SetBootOrder -> CheckBootOrder, and the verify fix clears CheckBootOrder.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@kirson-git kirson-git force-pushed the fix/dell-http-boot-option-prefix-match branch from c68209a to b3ce6ac Compare June 23, 2026 09:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant