diff --git a/ironic/drivers/modules/boot.ipxe b/ironic/drivers/modules/boot.ipxe index 4ed58497ca..95d95686a5 100644 --- a/ironic/drivers/modules/boot.ipxe +++ b/ironic/drivers/modules/boot.ipxe @@ -10,6 +10,12 @@ isset ${net${netid}/mac} || goto loop_done echo Attempting to boot from MAC ${net${netid}/mac:hexhyp} chain {{ ipxe_for_mac_uri }}${net${netid}/mac:hexhyp} || goto loop +# If we've got here the chained config returned success +# suggesting "sanboot" in boot_whole_disk failed (some UEFI cases) +# exit 0 so the bios continues to the next device +echo Exiting pxe config to allow boot to continue on next device +exit 0 + :loop_done {% if ipxe_fallback_script -%} chain {{ ipxe_fallback_script }} | goto boot_failed diff --git a/ironic/drivers/modules/ipxe_config.template b/ironic/drivers/modules/ipxe_config.template index bca63c9824..7f348bb2fc 100644 --- a/ironic/drivers/modules/ipxe_config.template +++ b/ironic/drivers/modules/ipxe_config.template @@ -72,4 +72,4 @@ goto boot_iscsi {%- endif %} :boot_whole_disk -sanboot --no-describe +sanboot --no-describe || exit 0 diff --git a/ironic/tests/unit/drivers/boot-fallback.ipxe b/ironic/tests/unit/drivers/boot-fallback.ipxe index bf8ab414cd..ada2646a65 100644 --- a/ironic/tests/unit/drivers/boot-fallback.ipxe +++ b/ironic/tests/unit/drivers/boot-fallback.ipxe @@ -10,6 +10,12 @@ isset ${net${netid}/mac} || goto loop_done echo Attempting to boot from MAC ${net${netid}/mac:hexhyp} chain pxelinux.cfg/${net${netid}/mac:hexhyp} || goto loop +# If we've got here the chained config returned success +# suggesting "sanboot" in boot_whole_disk failed (some UEFI cases) +# exit 0 so the bios continues to the next device +echo Exiting pxe config to allow boot to continue on next device +exit 0 + :loop_done chain inspector.ipxe | goto boot_failed diff --git a/ironic/tests/unit/drivers/boot.ipxe b/ironic/tests/unit/drivers/boot.ipxe index aa8ee9e511..006bcb4aa3 100644 --- a/ironic/tests/unit/drivers/boot.ipxe +++ b/ironic/tests/unit/drivers/boot.ipxe @@ -10,6 +10,12 @@ isset ${net${netid}/mac} || goto loop_done echo Attempting to boot from MAC ${net${netid}/mac:hexhyp} chain pxelinux.cfg/${net${netid}/mac:hexhyp} || goto loop +# If we've got here the chained config returned success +# suggesting "sanboot" in boot_whole_disk failed (some UEFI cases) +# exit 0 so the bios continues to the next device +echo Exiting pxe config to allow boot to continue on next device +exit 0 + :loop_done echo PXE boot failed! No configuration found for any of the present NICs. echo Press any key to reboot... diff --git a/ironic/tests/unit/drivers/ipxe_config.template b/ironic/tests/unit/drivers/ipxe_config.template index 70f8a03f1e..86e8fe36b7 100644 --- a/ironic/tests/unit/drivers/ipxe_config.template +++ b/ironic/tests/unit/drivers/ipxe_config.template @@ -44,4 +44,4 @@ initrd http://1.2.3.4:1234/ramdisk || goto boot_ramdisk boot :boot_whole_disk -sanboot --no-describe +sanboot --no-describe || exit 0 diff --git a/ironic/tests/unit/drivers/ipxe_config_boot_from_anaconda.template b/ironic/tests/unit/drivers/ipxe_config_boot_from_anaconda.template index 7963b38833..08e377899b 100644 --- a/ironic/tests/unit/drivers/ipxe_config_boot_from_anaconda.template +++ b/ironic/tests/unit/drivers/ipxe_config_boot_from_anaconda.template @@ -44,4 +44,4 @@ initrd http://1.2.3.4:1234/ramdisk || goto boot_ramdisk boot :boot_whole_disk -sanboot --no-describe +sanboot --no-describe || exit 0 diff --git a/ironic/tests/unit/drivers/ipxe_config_boot_from_iso.template b/ironic/tests/unit/drivers/ipxe_config_boot_from_iso.template index c7133c7b61..7e4c83640f 100644 --- a/ironic/tests/unit/drivers/ipxe_config_boot_from_iso.template +++ b/ironic/tests/unit/drivers/ipxe_config_boot_from_iso.template @@ -42,4 +42,4 @@ imgfree sanboot http://1.2.3.4:1234/uuid/iso :boot_whole_disk -sanboot --no-describe +sanboot --no-describe || exit 0 diff --git a/ironic/tests/unit/drivers/ipxe_config_boot_from_ramdisk.template b/ironic/tests/unit/drivers/ipxe_config_boot_from_ramdisk.template index 70f8a03f1e..86e8fe36b7 100644 --- a/ironic/tests/unit/drivers/ipxe_config_boot_from_ramdisk.template +++ b/ironic/tests/unit/drivers/ipxe_config_boot_from_ramdisk.template @@ -44,4 +44,4 @@ initrd http://1.2.3.4:1234/ramdisk || goto boot_ramdisk boot :boot_whole_disk -sanboot --no-describe +sanboot --no-describe || exit 0 diff --git a/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_extra_volume.template b/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_extra_volume.template index 0a872804a6..bab0d879c3 100644 --- a/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_extra_volume.template +++ b/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_extra_volume.template @@ -62,4 +62,4 @@ sleep 10 goto boot_iscsi :boot_whole_disk -sanboot --no-describe +sanboot --no-describe || exit 0 diff --git a/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_multipath.template b/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_multipath.template index 571216e399..2ab084b9d8 100644 --- a/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_multipath.template +++ b/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_multipath.template @@ -59,4 +59,4 @@ sleep 10 goto boot_iscsi :boot_whole_disk -sanboot --no-describe +sanboot --no-describe || exit 0 diff --git a/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_no_extra_volumes.template b/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_no_extra_volumes.template index 6b7a4394db..12b025f873 100644 --- a/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_no_extra_volumes.template +++ b/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_no_extra_volumes.template @@ -59,4 +59,4 @@ sleep 10 goto boot_iscsi :boot_whole_disk -sanboot --no-describe +sanboot --no-describe || exit 0 diff --git a/ironic/tests/unit/drivers/ipxe_config_timeout.template b/ironic/tests/unit/drivers/ipxe_config_timeout.template index 2458f010b3..97a690801d 100644 --- a/ironic/tests/unit/drivers/ipxe_config_timeout.template +++ b/ironic/tests/unit/drivers/ipxe_config_timeout.template @@ -44,4 +44,4 @@ initrd --timeout 120 http://1.2.3.4:1234/ramdisk || goto boot_ramdisk boot :boot_whole_disk -sanboot --no-describe +sanboot --no-describe || exit 0 diff --git a/releasenotes/notes/version-foo-2eb39b768112547f.yaml b/releasenotes/notes/version-foo-2eb39b768112547f.yaml new file mode 100644 index 0000000000..bd0485863f --- /dev/null +++ b/releasenotes/notes/version-foo-2eb39b768112547f.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Fixes ``enable_netboot_fallback`` to cause iPXE config to exit 0 + when "sanboot --no-describe" fails. Allowing the firmware to + move onto the next device in the boot order.