Skip to content

bug(dell): extended HTTP boot-option names cause MissingBootOption and block ingestion #101

Description

@williampnvidia

Description

Recent Dell BIOS versions return UEFI HTTP boot-option display names with an appended adapter, MAC address, and protocol suffix.

libredfish constructs the expected name from the network-device description:

HTTP Device 1: NIC in Slot 4 Port 1 Partition 1

Dell now reports:

HTTP Device 1: NIC in Slot 4 Port 1 Partition 1 - Nvidia Network Adapter - <MAC> - IPv4

The Dell implementation compares these names using exact equality. The comparison fails even though the correct boot option exists.

set_boot_order_dpu_first() consequently returns:

No such boot option HTTP Device 1: NIC in Slot 4 Port 1 Partition 1

Downstream, infra-controller repeatedly retries SetBootOrder, leaving the host stuck in ingestion.

Identified systems

The extended display-name format has been confirmed on:

  • Dell PowerEdge R670
  • Dell PowerEdge R760xd2
  • Dell PowerEdge R770
  • Dell PowerEdge XE9680

Other Dell models or BIOS versions may also be affected.

The issue occurs with the current libredfish main/v0.44.18 code.

Root cause

Exact boot-option name comparisons are performed in three Dell paths:

  • machine_setup_status
  • set_boot_order_dpu_first
  • is_boot_order_setup

The expected name remains valid, but newer Dell firmware appends a " - "-delimited suffix.

Expected behavior

libredfish should recognize both:

  1. The legacy exact boot-option name.
  2. The newer name containing the Dell-provided descriptive suffix.

Matching must remain bounded. An expected name ending in Partition 1 must not match an unrelated option such as Partition 10.

Proposed fix

Use a shared matcher equivalent to:

fn boot_option_name_matches(expected: &str, actual: &str) -> bool {
    actual == expected
        || actual
            .strip_prefix(expected)
            .is_some_and(|suffix| suffix.starts_with(" - "))
}

Use the matcher in all three Dell boot-option comparison paths.

Regression coverage

Add unit tests covering:

  • Legacy exact name: match
  • Extended Dell name: match
  • Partition 1 versus Partition 10: no match
  • Different port: no match
  • Arbitrary suffix without the expected " - " delimiter: no match

Existing Dell integration tests should continue to pass for the legacy format.

Related PR

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    No fields configured for Bug.

    Projects

    Status
    In Progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions