Change in vdsm[master]: v2v: refactor get_external_vms

shavivi at redhat.com shavivi at redhat.com
Thu Dec 3 10:46:25 UTC 2015


Shahar Havivi has uploaded a new change for review.

Change subject: v2v: refactor get_external_vms
......................................................................

v2v: refactor get_external_vms

break to smaller methods

Change-Id: If5c331b3136b61b0ee81829d7e71eedbbc1fa6b9
Signed-off-by: Shahar Havivi <shaharh at redhat.com>
---
M tests/v2vTests.py
M vdsm/v2v.py
2 files changed, 48 insertions(+), 25 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/36/49636/1

diff --git a/tests/v2vTests.py b/tests/v2vTests.py
index 884abec..e37c7e2 100644
--- a/tests/v2vTests.py
+++ b/tests/v2vTests.py
@@ -59,8 +59,14 @@
     def name(self):
         return self._name
 
+    def id(self):
+        return self._vmid
+
     def state(self, flags=0):
         return [5, 0]
+
+    def isActive(self):
+        return False
 
     def XMLDesc(self, flags=0):
         return """
@@ -109,7 +115,7 @@
         pass
 
     def listAllDomains(self):
-        return self._vms
+        return [vm for vm in self._vms]
 
     def storageVolLookupByPath(self, name):
         return LibvirtMock.Volume()
diff --git a/vdsm/v2v.py b/vdsm/v2v.py
index ab657d0..fe20510 100644
--- a/vdsm/v2v.py
+++ b/vdsm/v2v.py
@@ -150,27 +150,11 @@
 
     with closing(conn):
         vms = []
-        for vm in conn.listAllDomains():
-            params = {}
-            _add_vm_info(vm, params)
-            try:
-                xml = vm.XMLDesc(0)
-            except libvirt.libvirtError as e:
-                logging.error("error getting domain xml for vm %r: %s",
-                              vm.name(), e)
-                continue
-            root = ET.fromstring(xml)
-            try:
-                _add_general_info(root, params)
-            except InvalidVMConfiguration as e:
-                logging.error('error parsing domain xml, msg: %s  xml: %s',
-                              e.message, vm.XMLDesc(0))
-                continue
-            _add_networks(root, params)
-            _add_disks(root, params)
-            for disk in params['disks']:
-                _add_disk_info(conn, disk)
-            vms.append(params)
+        # TODO: use new API: listAllDomain() when supported in Xen
+        #       under RHEL 5.x
+        for vm in _list_domains(conn):
+            _add_vm(conn, vms, vm)
+
         return {'status': doneCode, 'vmList': vms}
 
 
@@ -653,12 +637,45 @@
                                      " %r" % unit)
 
 
+def _list_domains(conn):
+    for vm in conn.listAllDomains():
+        yield vm
+
+
+def _add_vm(conn, vms, vm):
+    params = {}
+    try:
+        _add_vm_info(vm, params)
+        try:
+            xml = vm.XMLDesc(0)
+        except libvirt.libvirtError as e:
+            logging.error("error getting domain xml for vm %r: %s",
+                          vm.name(), e)
+        else:
+            root = ET.fromstring(xml)
+            try:
+                _add_general_info(root, params)
+            except InvalidVMConfiguration as e:
+                logging.error('error parsing domain xml, msg: %s  xml: %s',
+                              e.message, vm.XMLDesc(0))
+            else:
+                _add_networks(root, params)
+                _add_disks(root, params)
+                for disk in params['disks']:
+                    _add_disk_info(conn, disk)
+                vms.append(params)
+    except libvirt.libvirtError as e:
+        logging.error('error parsing domain: %s', e)
+
+
 def _add_vm_info(vm, params):
     params['vmName'] = vm.name()
-    if vm.state()[0] == libvirt.VIR_DOMAIN_SHUTOFF:
-        params['status'] = "Down"
-    else:
+    # TODO: use new API: vm.state()[0] == libvirt.VIR_DOMAIN_SHUTOFF
+    #       when supported in Xen under RHEL 5.x
+    if vm.isActive():
         params['status'] = "Up"
+    else:
+        params['status'] = "Down"
 
 
 def _add_general_info(root, params):


-- 
To view, visit https://gerrit.ovirt.org/49636
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If5c331b3136b61b0ee81829d7e71eedbbc1fa6b9
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Shahar Havivi <shavivi at redhat.com>


More information about the vdsm-patches mailing list