diff options
author | Derek Higgins <derekh@redhat.com> | 2021-09-29 11:31:59 +0100 |
---|---|---|
committer | Julia Kreger <juliaashleykreger@gmail.com> | 2022-08-01 17:26:49 -0700 |
commit | fb73bdf10501f25b8ed29c23b865c58ed4cb10b7 (patch) | |
tree | 730c87ca575a8df92f212e838dae14fd7c781129 | |
parent | 45c9c3029f5363b6e24e578648c09213a7338db1 (diff) | |
download | ironic-fb73bdf10501f25b8ed29c23b865c58ed4cb10b7.tar.gz |
Exit ipxe script if enable_netboot_fallback failed
The sanboot trick to boot from local disk does not
work on all hardware. If it fails exit 0 from the
iPxe script so that boot continues on the next device
which may be the local disk.
Story: #2009258
Task: #43470
Change-Id: I1b6303a987a102dfbfd233334395321c25a55212
13 files changed, 33 insertions, 9 deletions
diff --git a/ironic/drivers/modules/boot.ipxe b/ironic/drivers/modules/boot.ipxe index 4ed58497c..95d95686a 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 bca63c982..7f348bb2f 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 bf8ab414c..ada2646a6 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 aa8ee9e51..006bcb4aa 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 70f8a03f1..86e8fe36b 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 7963b3883..08e377899 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 c7133c7b6..7e4c83640 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 70f8a03f1..86e8fe36b 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 0a872804a..bab0d879c 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 571216e39..2ab084b9d 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 6b7a4394d..12b025f87 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 2458f010b..97a690801 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 000000000..bd0485863 --- /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. |