[Libvirt-cim] [PATCH] [TEST] #2 A few migration related fixes

Kaitlin Rupert kaitlin at linux.vnet.ibm.com
Tue Jul 1 20:39:25 UTC 2008


# HG changeset patch
# User Kaitlin Rupert <karupert at us.ibm.com>
# Date 1214942997 25200
# Node ID da0aebe9e441c2a0020fad9d063c489026eee2b2
# Parent  0c3bd5f782c4776719799ad5c74226c95e70092e
[TEST] #2 A few migration related fixes.

Fixes:
 -Remove destroy_and_undefine_domain() call from migrate_guest_to_host().  This call takes the domain name as a parameter, but migrate_guest_to_host() doesn't take the domain name  So calling destroy_and_undefine_domain() resulted in an error.
 -Add a hack to get_typed_class() so it supports Virt_MigrationJob (which doesn't fit the typical <virt>_<basename> pattern.

Updates from 1 to 2:
  -Improve error catching / reporting in start_guest_get_ref()

Signed-off-by: Kaitlin Rupert <karupert at us.ibm.com>

diff -r 0c3bd5f782c4 -r da0aebe9e441 suites/libvirt-cim/cimtest/VirtualSystemMigrationService/01_migratable_host.py
--- a/suites/libvirt-cim/cimtest/VirtualSystemMigrationService/01_migratable_host.py	Fri Jun 27 09:57:11 2008 +0800
+++ b/suites/libvirt-cim/cimtest/VirtualSystemMigrationService/01_migratable_host.py	Tue Jul 01 13:09:57 2008 -0700
@@ -42,19 +42,26 @@
 def start_guest_get_ref(ip, guest_name):
     try:
         xmlfile = testxml(guest_name)   
-        define_test_domain(xmlfile, ip)
+        ret = define_test_domain(xmlfile, ip)
+        if not ret:
+            return FAIL, None
 
-        start_test_domain(guest_name, ip)
+        ret = start_test_domain(guest_name, ip)
+        if not ret:
+            return FAIL, None
+
         time.sleep(10)
     except Exception:
         logger.error("Error creating domain %s" % guest_name)
-        destroy_and_undefine_domain(guest_name, options.ip)
         return FAIL, None
 
     classname = 'Xen_ComputerSystem'
     cs_ref = CIMInstanceName(classname, keybindings = {
                                         'Name':guest_name,
                                         'CreationClassName':classname})
+
+    if cs_ref is None:
+        return FAIL, None
 
     return PASS, cs_ref
 
@@ -80,6 +87,7 @@
 
     status, cs_ref = start_guest_get_ref(options.ip, dom_name)
     if status != PASS:
+        destroy_and_undefine_domain(guest_name, options.ip)
         return FAIL
 
     guest_name = cs_ref['Name']
@@ -90,10 +98,10 @@
         return FAIL
 
     status, ret = migrate_guest_to_host(service, cs_ref, target_ip)
-
     if status == FAIL:
         logger.error("MigrateVirtualSystemToHost: unexpected list length %s"
                      % len(ret))
+        destroy_and_undefine_domain(dom_name, options.ip)
         return status 
     elif len(ret) == 2:
         id = ret[1]['Job'].keybindings['InstanceID']
@@ -102,7 +110,7 @@
                                   guest_name, local_migrate)
 
 
-    destroy_and_undefine_domain(dom_name, options.ip)   
+    destroy_and_undefine_domain(dom_name, options.ip)
 
     return status
 
diff -r 0c3bd5f782c4 -r da0aebe9e441 suites/libvirt-cim/cimtest/VirtualSystemMigrationService/02_host_migrate_type.py
--- a/suites/libvirt-cim/cimtest/VirtualSystemMigrationService/02_host_migrate_type.py	Fri Jun 27 09:57:11 2008 +0800
+++ b/suites/libvirt-cim/cimtest/VirtualSystemMigrationService/02_host_migrate_type.py	Tue Jul 01 13:09:57 2008 -0700
@@ -145,12 +145,11 @@
 
         logger.info("Migrating guest with the following options:")
         logger.info("%s" % item)
-        status, ret = migrate_guest_to_host(service, cs_ref, target_ip,
-                                            item)
-
+        status, ret = migrate_guest_to_host(service, cs_ref, target_ip, item)
         if status == FAIL:
             logger.error("MigrateVirtualSystemToHost: unexpected list length %s"
                          % len(ret))
+            destroy_and_undefine_domain(dom_name, options.ip)   
             return status 
         elif len(ret) == 2:
             id = ret[1]['Job'].keybindings['InstanceID']
diff -r 0c3bd5f782c4 -r da0aebe9e441 suites/libvirt-cim/lib/XenKvmLib/classes.py
--- a/suites/libvirt-cim/lib/XenKvmLib/classes.py	Fri Jun 27 09:57:11 2008 +0800
+++ b/suites/libvirt-cim/lib/XenKvmLib/classes.py	Tue Jul 01 13:09:57 2008 -0700
@@ -23,7 +23,8 @@
 
 def get_typed_class(virt, basename):
     if virt not in virt_types:
-        raise ValueError('Invalid class type')
+        if virt != "Virt" and basename != "MigrationJob":
+            raise ValueError('Invalid class type')
 
     if basename == None or basename == '':
         raise ValueError('Invalide class base name')
diff -r 0c3bd5f782c4 -r da0aebe9e441 suites/libvirt-cim/lib/XenKvmLib/vsmigrations.py
--- a/suites/libvirt-cim/lib/XenKvmLib/vsmigrations.py	Fri Jun 27 09:57:11 2008 +0800
+++ b/suites/libvirt-cim/lib/XenKvmLib/vsmigrations.py	Tue Jul 01 13:09:57 2008 -0700
@@ -95,10 +95,10 @@
     except Exception, details:
         logger.error("Error invoke method 'MigrateVirtualSystemToHost\'.")
         logger.error("%s", details)
+        return FAIL, ret
 
     if len(ret) == 0:
         logger.error("MigrateVirtualSystemToHost returns an empty list")
-        destroy_and_undefine_domain(test_dom, ip)
         return FAIL, ret
 
     return PASS, ret




More information about the Libvirt-cim mailing list