[virt-tools-list] [PATCH virt-manager 01/10] Move (find|compare)_device to guest.py
Marc Hartmayer
mhartmay at linux.ibm.com
Wed Feb 6 09:55:34 UTC 2019
Move (find_compare)_device functions to guest.py as it will be used
there in an upcoming patch.
Signed-off-by: Marc Hartmayer <mhartmay at linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy at linux.ibm.com>
---
virtManager/domain.py | 63 +++----------------------------------------
virtinst/__init__.py | 2 +-
virtinst/guest.py | 55 +++++++++++++++++++++++++++++++++++++
3 files changed, 60 insertions(+), 60 deletions(-)
diff --git a/virtManager/domain.py b/virtManager/domain.py
index ad1c76d4d655..0b17e548e68e 100644
--- a/virtManager/domain.py
+++ b/virtManager/domain.py
@@ -13,7 +13,7 @@ import libvirt
from virtinst import DomainCapabilities
from virtinst import DomainSnapshot
-from virtinst import Guest
+from virtinst import Guest, find_device
from virtinst import util
from virtinst import DeviceController
from virtinst import DeviceDisk
@@ -26,61 +26,6 @@ class _SENTINEL(object):
pass
-def compare_device(origdev, newdev, idx):
- devprops = {
- "disk": ["target", "bus"],
- "interface": ["macaddr", "xmlindex"],
- "input": ["bus", "type", "xmlindex"],
- "sound": ["model", "xmlindex"],
- "video": ["model", "xmlindex"],
- "watchdog": ["xmlindex"],
- "hostdev": ["type", "managed", "xmlindex",
- "product", "vendor",
- "function", "domain", "slot"],
- "serial": ["type", "target_port"],
- "parallel": ["type", "target_port"],
- "console": ["type", "target_type", "target_port"],
- "graphics": ["type", "xmlindex"],
- "controller": ["type", "index"],
- "channel": ["type", "target_name"],
- "filesystem": ["target", "xmlindex"],
- "smartcard": ["mode", "xmlindex"],
- "redirdev": ["bus", "type", "xmlindex"],
- "tpm": ["type", "xmlindex"],
- "rng": ["type", "xmlindex"],
- "panic": ["type", "xmlindex"],
- "vsock": ["xmlindex"],
- }
-
- if id(origdev) == id(newdev):
- return True
-
- if not isinstance(origdev, type(newdev)):
- return False
-
- for devprop in devprops[origdev.DEVICE_TYPE]:
- if devprop == "xmlindex":
- origval = origdev.get_xml_idx()
- newval = idx
- else:
- origval = getattr(origdev, devprop)
- newval = getattr(newdev, devprop)
-
- if origval != newval:
- return False
-
- return True
-
-
-def _find_device(guest, origdev):
- devlist = getattr(guest.devices, origdev.DEVICE_TYPE)
- for idx, dev in enumerate(devlist):
- if compare_device(origdev, dev, idx):
- return dev
-
- return None
-
-
def start_job_progress_thread(vm, meter, progtext):
current_thread = threading.currentThread()
@@ -395,14 +340,14 @@ class vmmDomain(vmmLibvirtObject):
if for_hotplug:
return origdev
- dev = _find_device(xmlobj, origdev)
+ dev = find_device(xmlobj, origdev)
if dev:
return dev
# If we are removing multiple dev from an active VM, a double
# attempt may result in a lookup failure. If device is present
# in the active XML, assume all is good.
- if _find_device(self.get_xmlobj(), origdev):
+ if find_device(self.get_xmlobj(), origdev):
logging.debug("Device in active config but not inactive config.")
return
@@ -488,7 +433,7 @@ class vmmDomain(vmmLibvirtObject):
return
if con:
- rmcon = _find_device(xmlobj, con)
+ rmcon = find_device(xmlobj, con)
if rmcon:
xmlobj.remove_device(rmcon)
xmlobj.remove_device(editdev)
diff --git a/virtinst/__init__.py b/virtinst/__init__.py
index 5a3c269d0dad..3aff0c846c2e 100644
--- a/virtinst/__init__.py
+++ b/virtinst/__init__.py
@@ -40,7 +40,7 @@ from virtinst.devices import * # pylint: disable=wildcard-import
from virtinst.installer import Installer
-from virtinst.guest import Guest
+from virtinst.guest import Guest, find_device
from virtinst.cloner import Cloner
from virtinst.snapshot import DomainSnapshot
diff --git a/virtinst/guest.py b/virtinst/guest.py
index c0471cd8a882..c0043cbc94c0 100644
--- a/virtinst/guest.py
+++ b/virtinst/guest.py
@@ -22,6 +22,61 @@ from .xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty
_ignore = Device
+def compare_device(origdev, newdev, idx):
+ devprops = {
+ "disk": ["target", "bus"],
+ "interface": ["macaddr", "xmlindex"],
+ "input": ["bus", "type", "xmlindex"],
+ "sound": ["model", "xmlindex"],
+ "video": ["model", "xmlindex"],
+ "watchdog": ["xmlindex"],
+ "hostdev": ["type", "managed", "xmlindex",
+ "product", "vendor",
+ "function", "domain", "slot"],
+ "serial": ["type", "target_port"],
+ "parallel": ["type", "target_port"],
+ "console": ["type", "target_type", "target_port"],
+ "graphics": ["type", "xmlindex"],
+ "controller": ["type", "index"],
+ "channel": ["type", "target_name"],
+ "filesystem": ["target", "xmlindex"],
+ "smartcard": ["mode", "xmlindex"],
+ "redirdev": ["bus", "type", "xmlindex"],
+ "tpm": ["type", "xmlindex"],
+ "rng": ["type", "xmlindex"],
+ "panic": ["type", "xmlindex"],
+ "vsock": ["xmlindex"],
+ }
+
+ if id(origdev) == id(newdev):
+ return True
+
+ if not isinstance(origdev, type(newdev)):
+ return False
+
+ for devprop in devprops[origdev.DEVICE_TYPE]:
+ if devprop == "xmlindex":
+ origval = origdev.get_xml_idx()
+ newval = idx
+ else:
+ origval = getattr(origdev, devprop)
+ newval = getattr(newdev, devprop)
+
+ if origval != newval:
+ return False
+
+ return True
+
+
+def find_device(guest, origdev):
+ devlist = getattr(guest.devices, origdev.DEVICE_TYPE)
+ for idx, dev in enumerate(devlist):
+ if compare_device(origdev, dev, idx):
+ return dev
+
+ return None
+
+
class _DomainDevices(XMLBuilder):
XML_NAME = "devices"
_XML_PROP_ORDER = ['disk', 'controller', 'filesystem', 'interface',
--
2.17.0
More information about the virt-tools-list
mailing list