Skip to content

Specifying configuration for custom one-time boot order causes failure #446

@AlexanderTheGrey

Description

@AlexanderTheGrey

Your System Details

  • Badfish Version: sha256:0791aec303bc9732274ba52462103fb29ce1cf17907210772b14f15622a3ecbc
  • Python Version: 3.9.7 (within container)
  • Operating System: Official Podman Container (Alpine Linux)
  • Target System Type: Dell R6615
  • IPMI / Out-of-band Firmware Version: iDRAC 9

Describe the Bug
I successfully mounted virtual media and am trying to boot to it. However, specifying a valid boot order using --boot-to-type and an idrac_interfaces.yml file results in a traceback due to an index error inside get_interfaces_by_type.

To Reproduce / What were you Doing?

  1. Create a config file with:

    deploy: Optical.iDRACVirtual.1-1,NIC.PxeDevice.1-1,BOSS.SL.10-1,Floppy.iDRACVirtual.1-1
    
  2. Run:

    badfish \
      -H "$BMC_URL" \
      -u "$BMC_USERNAME" \
      -p "$BMC_PASSWORD" \
      -i config/idrac_interfaces.yml \
      --boot-to-type deploy \
      --verbose

Other commands with the config specified fail too.

  1. See traceback error.

Expected Behavior
Badfish should gracefully parse the custom boot order and apply it without crashing.

Logs / Screenshots

Traceback (most recent call last):
  File "/usr/local/bin/badfish", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.9/site-packages/badfish/main.py", line 3051, in main
    _host, result = loop.run_until_complete(
  File "/usr/local/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.9/site-packages/badfish/main.py", line 2583, in execute_badfish
    await badfish.boot_to_type(boot_to_type, interfaces_path)
  File "/usr/local/lib/python3.9/site-packages/badfish/main.py", line 1100, in boot_to_type
    device = await self.get_host_type_boot_device(host_type, _interfaces_path)
  File "/usr/local/lib/python3.9/site-packages/badfish/main.py", line 1261, in get_host_type_boot_device
    interfaces = await self.get_interfaces_by_type(host_type, _interfaces_path)
  File "/usr/local/lib/python3.9/site-packages/badfish/main.py", line 205, in get_interfaces_by_type
    rack = host_name_split[1]
IndexError: list index out of range

Additional Details
Badfish fails consistently when a boot type is specified and a valid config is passed. I assume it's due to a hostname parsing assumption.

Please also consider releasing version tags for Podman images to improve traceability.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions