Skip to content

Commit b3ce6ac

Browse files
Erez Kirsonclaude
andcommitted
fix(dell): match DPU HTTP boot option by name prefix, not exact equality
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>
1 parent 96775ad commit b3ce6ac

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

src/dell.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ impl Redfish for Bmc {
429429
let (expected, actual) = self
430430
.get_expected_and_actual_first_boot_option(crate::BootInterfaceRef::Mac(mac))
431431
.await?;
432-
if expected.is_none() || expected != actual {
432+
if !matches!((&expected, &actual), (Some(e), Some(a)) if a.starts_with(e)) {
433433
diffs.push(MachineSetupDiff {
434434
key: "boot_first".to_string(),
435435
expected: expected.unwrap_or_else(|| "Not found".to_string()),
@@ -1146,7 +1146,7 @@ impl Redfish for Bmc {
11461146
.await?;
11471147
let boot_order = self.get_boot_order().await?;
11481148
for (idx, boot_option) in boot_order.iter().enumerate() {
1149-
if boot_option.display_name == expected_boot_option_name {
1149+
if boot_option.display_name.starts_with(&expected_boot_option_name) {
11501150
if idx == 0 {
11511151
// Dells will not generate a bios config job below if the boot orders already configured correctly
11521152
tracing::info!(
@@ -1358,7 +1358,7 @@ impl Redfish for Bmc {
13581358
let (expected, actual) = self
13591359
.get_expected_and_actual_first_boot_option(boot_interface)
13601360
.await?;
1361-
Ok(expected.is_some() && expected == actual)
1361+
Ok(matches!((&expected, &actual), (Some(e), Some(a)) if a.starts_with(e)))
13621362
})
13631363
}
13641364

0 commit comments

Comments
 (0)