About "bios/uefi boot mode encoding"
====================================
In statement: pxe_bootfile_name = "def-filename" "arch2:filename2" "arch3:filename3".
"arch2","arch3" are not "x86","aarch64", but client-arch code from RFC4578(https://tools.ietf.org/html/rfc4578). The client-arch code contains both arch and boot mode information, as follows:
(copied from RFC4578)
Type Architecture Name
---- -----------------
0 Intel x86PC (BIOS)
...
6 EFI IA32
...
9 EFI x86-64
B EFI AArch64
C PowerPC64
The final statement looks like:
pxe_bootfile_name = pxelinux.0 09:bootx64.efi 0B:grubaa64.efi 0C:bootppc64.bin
About "backward compatibility"
==============================
Rather than introducing a new parameter, maybe we can extend current "pxe_bootfile_name". Its default value is still only "pxelinux.0". Arch specific extensions can be appended like upper example. Internal representation becomes a dictionary.
Add an optional property "pxe_client_arch" to Ironic node. If the node needs a arch specific bootfile, it can set this property to match arch in pxe_bootfile_name extensions.
"uefi_pxe_bootfile_name" is kept, which is "default bootfile for uefi node without pxe_client_arch specified".
By this way, looks current deployment and configurations won't be affected.
About boot template file
========================
"pxe_config_template" parameter should also be extended this way.
About "bios/uefi boot mode encoding" ======= ======= ======= ======= =
=======
In statement: pxe_bootfile_name = "def-filename" "arch2:filename2" "arch3:filename3". /tools. ietf.org/ html/rfc4578). The client-arch code contains both arch and boot mode information, as follows:
"arch2","arch3" are not "x86","aarch64", but client-arch code from RFC4578(https:/
(copied from RFC4578)
Type Architecture Name
---- -----------------
0 Intel x86PC (BIOS)
...
6 EFI IA32
...
9 EFI x86-64
B EFI AArch64
C PowerPC64
The final statement looks like:
pxe_bootfile_name = pxelinux.0 09:bootx64.efi 0B:grubaa64.efi 0C:bootppc64.bin
About "backward compatibility" ======= ======= ======= ==
=======
Rather than introducing a new parameter, maybe we can extend current "pxe_bootfile_ name". Its default value is still only "pxelinux.0". Arch specific extensions can be appended like upper example. Internal representation becomes a dictionary.
Add an optional property "pxe_client_arch" to Ironic node. If the node needs a arch specific bootfile, it can set this property to match arch in pxe_bootfile_name extensions.
"uefi_pxe_ bootfile_ name" is kept, which is "default bootfile for uefi node without pxe_client_arch specified".
By this way, looks current deployment and configurations won't be affected.
About boot template file ======= ======= ===
=======
"pxe_config_ template" parameter should also be extended this way.