mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-10 04:06:47 +00:00
fix(instances): the create page offers the UEFI loader of the chosen machine
create_instance passed the loader list where find_uefi_path_for_arch expects the machine type. The domain capabilities were then read for the default machine (pc) instead of the chosen one: on a RHEL host a q35 VM was offered /usr/share/OVMF/OVMF_CODE.secboot.fd, which q35 does not list, instead of /usr/share/edk2/ovmf/OVMF_CODE.fd. The machine type is passed now. The page also read dom_caps["loader_enums"] into an unused variable; on a host without loader support the key is missing and the page failed with a KeyError. The line is removed. A unit test covers the call and the host without loader support (it fails on the previous code). A live test creates a q35 VM with the offered UEFI firmware, checks that libvirt lists that loader for q35 and starts the VM; it fails on the previous code.
This commit is contained in:
parent
16e1a334d0
commit
cdbff38223
3 changed files with 45 additions and 2 deletions
|
|
@ -2085,13 +2085,12 @@ def create_instance(request, compute_id, arch, machine):
|
|||
caps = conn.get_capabilities(arch)
|
||||
|
||||
virtio_support = conn.is_supports_virtio(arch, machine)
|
||||
hv_supports_uefi = conn.supports_uefi_xml(dom_caps["loader_enums"])
|
||||
# Add BIOS
|
||||
label = conn.label_for_firmware_path(arch, None)
|
||||
if label:
|
||||
firmwares.append(label)
|
||||
# Add UEFI
|
||||
loader_path = conn.find_uefi_path_for_arch(arch, dom_caps["loaders"])
|
||||
loader_path = conn.find_uefi_path_for_arch(arch, machine)
|
||||
label = conn.label_for_firmware_path(arch, loader_path)
|
||||
if label:
|
||||
firmwares.append(label)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue