summaryrefslogtreecommitdiff
path: root/virtinst
diff options
context:
space:
mode:
authorCole Robinson <crobinso@redhat.com>2022-01-26 11:59:51 -0500
committerCole Robinson <crobinso@redhat.com>2022-01-26 11:59:51 -0500
commit30138897272463ae699de336c6e7208ec9867594 (patch)
tree368af68dafb90fe8e3a790f7660e3bb0079b573e /virtinst
parent245e89ac389a370defa11be9be294b7517bb89be (diff)
downloadvirt-manager-30138897272463ae699de336c6e7208ec9867594.tar.gz
guest: Use os.firmware=efi for --boot uefi, if it is supported
<os firmware='efi'> is the libvirt official way to do what we historically implement with `--boot uefi`, and UEFI setup in virt-manager. Let's prefer libvirt's official method if the support is advertised in domcapabilities. Signed-off-by: Cole Robinson <crobinso@redhat.com>
Diffstat (limited to 'virtinst')
-rw-r--r--virtinst/domcapabilities.py9
-rw-r--r--virtinst/guest.py9
2 files changed, 12 insertions, 6 deletions
diff --git a/virtinst/domcapabilities.py b/virtinst/domcapabilities.py
index 509dbca9..6e917425 100644
--- a/virtinst/domcapabilities.py
+++ b/virtinst/domcapabilities.py
@@ -256,15 +256,16 @@ class DomainCapabilities(XMLBuilder):
"""
return self.arch in list(self._uefi_arch_patterns.keys())
- def supports_uefi_xml(self):
+ def supports_uefi_loader(self):
"""
- Return True if libvirt advertises support for proper UEFI setup
+ Return True if libvirt advertises support for UEFI loader
"""
- if "efi" in self.os.get_enum("firmware").get_values():
- return True
return ("readonly" in self.os.loader.enum_names() and
"yes" in self.os.loader.get_enum("readonly").get_values())
+ def supports_firmware_efi(self):
+ return "efi" in self.os.get_enum("firmware").get_values()
+
def supports_safe_host_model(self):
"""
Return True if domcaps reports support for cpu mode=host-model.
diff --git a/virtinst/guest.py b/virtinst/guest.py
index 82779d12..b5bc7376 100644
--- a/virtinst/guest.py
+++ b/virtinst/guest.py
@@ -553,6 +553,11 @@ class Guest(XMLBuilder):
"""
Enable UEFI using our default logic
"""
+ domcaps = self.lookup_domcaps()
+ if domcaps.supports_firmware_efi():
+ self.os.firmware = "efi"
+ return
+
path = self._lookup_default_uefi_path()
log.debug("Setting default UEFI path=%s", path)
self.set_uefi_path(path)
@@ -748,11 +753,11 @@ class Guest(XMLBuilder):
"""
domcaps = self.lookup_domcaps()
- if not domcaps.supports_uefi_xml():
+ if not domcaps.supports_uefi_loader():
raise RuntimeError(_("Libvirt version does not support UEFI."))
if not domcaps.arch_can_uefi():
- raise RuntimeError(
+ raise RuntimeError( # pragma: no cover
_("Don't know how to setup UEFI for arch '%s'") %
self.os.arch)