[virt-tools-list] [PATCH virt-manager 06/10] domain: Move get boot order methods to guest
Marc Hartmayer
mhartmay at linux.ibm.com
Wed Feb 6 09:55:39 UTC 2019
Move get boot order methods to guest XML builder. For this we must
replace self.get_bootable_devices() with
self.get_bootable_devices(exclude_redirdev=True) in the
_get_device_boot_order and set_device_boot_order to have no
functionality change.
Signed-off-by: Marc Hartmayer <mhartmay at linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy at linux.ibm.com>
---
virtManager/domain.py | 59 +++----------------------------------------
virtinst/guest.py | 55 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 58 insertions(+), 56 deletions(-)
diff --git a/virtManager/domain.py b/virtManager/domain.py
index 77dc6a3d7206..74d4a7a4caa7 100644
--- a/virtManager/domain.py
+++ b/virtManager/domain.py
@@ -1197,64 +1197,11 @@ class vmmDomain(vmmLibvirtObject):
def get_cpu_config(self):
return self.get_xmlobj().cpu
- def _convert_old_boot_order(self):
- """Converts the old boot order (e.g. <boot dev='hd'/>) into the
- per-device boot order format.
-
- """
- boot_order = self._get_old_boot_order()
- ret = []
- disk = None
- cdrom = None
- floppy = None
- net = None
-
- for d in self.xmlobj.devices.disk:
- if not cdrom and d.device == "cdrom":
- cdrom = d
- if not floppy and d.device == "floppy":
- floppy = d
- if not disk and d.device not in ["cdrom", "floppy"]:
- disk = d
- if cdrom and disk and floppy:
- break
-
- for n in self.xmlobj.devices.interface:
- net = n
- break
-
- for b in boot_order:
- if b == "network" and net:
- ret.append(net.get_xml_id())
- elif b == "hd" and disk:
- ret.append(disk.get_xml_id())
- elif b == "cdrom" and cdrom:
- ret.append(cdrom.get_xml_id())
- elif b == "fd" and floppy:
- ret.append(floppy.get_xml_id())
- return ret
-
- def _get_device_boot_order(self):
- order = []
- for dev in self.get_bootable_devices():
- if not dev.boot.order:
- continue
- order.append((dev.get_xml_id(), dev.boot.order))
-
- if not order:
- # No devices individually marked bootable, convert traditional
- # boot XML to fine grained, for the UI.
- return self._convert_old_boot_order()
-
- order.sort(key=lambda p: p[1])
- return [p[0] for p in order]
-
- def _get_old_boot_order(self):
- return self.get_xmlobj().os.bootorder
def get_boot_order(self):
if self.can_use_device_boot_order():
- return self._get_device_boot_order()
- return self._get_old_boot_order()
+ return self.xmlobj.get_device_boot_order()
+ return self.xmlobj.get_old_boot_order()
+
def get_boot_menu(self):
guest = self.get_xmlobj()
return bool(guest.os.enable_bootmenu)
diff --git a/virtinst/guest.py b/virtinst/guest.py
index bc70abbe99ab..6035093c8991 100644
--- a/virtinst/guest.py
+++ b/virtinst/guest.py
@@ -312,6 +312,61 @@ class Guest(XMLBuilder):
return self.__osinfo
osinfo = property(_get_osinfo)
+ def get_old_boot_order(self):
+ return self.os.bootorder
+
+ def _convert_old_boot_order(self):
+ """Converts the old boot order (e.g. <boot dev='hd'/>) into the
+ per-device boot order format.
+
+ """
+ boot_order = self.get_old_boot_order()
+ ret = []
+ disk = None
+ cdrom = None
+ floppy = None
+ net = None
+
+ for d in self.devices.disk:
+ if not cdrom and d.device == "cdrom":
+ cdrom = d
+ if not floppy and d.device == "floppy":
+ floppy = d
+ if not disk and d.device not in ["cdrom", "floppy"]:
+ disk = d
+ if cdrom and disk and floppy:
+ break
+
+ for n in self.devices.interface:
+ net = n
+ break
+
+ for b in boot_order:
+ if b == "network" and net:
+ ret.append(net.get_xml_id())
+ elif b == "hd" and disk:
+ ret.append(disk.get_xml_id())
+ elif b == "cdrom" and cdrom:
+ ret.append(cdrom.get_xml_id())
+ elif b == "fd" and floppy:
+ ret.append(floppy.get_xml_id())
+ return ret
+
+ def get_device_boot_order(self):
+ order = []
+ for dev in self.get_bootable_devices(exclude_redirdev=True):
+ if not dev.boot.order:
+ continue
+ order.append((dev.get_xml_id(), dev.boot.order))
+
+ if not order:
+ # No devices individually marked bootable, convert traditional
+ # boot XML to fine grained
+ return self._convert_old_boot_order()
+
+ order.sort(key=lambda p: p[1])
+ return [p[0] for p in order]
+
def set_device_boot_order(self, boot_order):
"""Sets the new device boot order for the domain"""
# Unset the traditional boot order
--
2.17.0
More information about the virt-tools-list
mailing list