[Libvirt-cim] [PATCH] [TEST] #2 patch set of fixing HostSystem-01_enum.py with sblim base provider installed

yunguol at cn.ibm.com yunguol at cn.ibm.com
Wed Sep 24 06:06:40 UTC 2008


# HG changeset patch
# User Guolian Yun <yunguol at cn.ibm.com>
# Date 1222236393 25200
# Node ID 83add054f191b8b6ad2c4ba53fce67cdca455989
# Parent  d2ae228a60c34b78c3dd1e4f43f6a5413898980d
[TEST] #2 patch set of fixing HostSystem-01_enum.py with sblim base provider installed

Signed-off-by: Guolian Yun <yunguol at cn.ibm.com>

diff -r d2ae228a60c3 -r 83add054f191 suites/libvirt-cim/cimtest/HostSystem/01_enum.py
--- a/suites/libvirt-cim/cimtest/HostSystem/01_enum.py	Mon Sep 22 11:28:02 2008 -0700
+++ b/suites/libvirt-cim/cimtest/HostSystem/01_enum.py	Tue Sep 23 23:06:33 2008 -0700
@@ -27,12 +27,13 @@
 
 import sys
 from XenKvmLib import enumclass
+from XenKvmLib.common_util import check_sblim
 from XenKvmLib.classes import get_typed_class
 from VirtLib import live
 from VirtLib import utils
 from CimTest.Globals import logger, CIM_ERROR_ENUMERATE
 from XenKvmLib.const import do_main
-from CimTest.ReturnCodes import PASS, FAIL
+from CimTest.ReturnCodes import PASS, FAIL, XFAIL
 
 SUPPORTED_TYPES = ['Xen', 'KVM', 'XenFV', 'LXC']
 
@@ -43,27 +44,34 @@ def main():
    
     status = FAIL
     keys = ['Name', 'CreationClassName']
-    try:
-        hs = enumclass.enumerate(options.ip, 'HostSystem', keys, options.virt)
-        name = get_typed_class(options.virt, 'HostSystem')
+    
+    status, linux_cs = check_sblim(options.ip, options.virt)
+    if status == PASS:
+        name = 'Linux_ComputerSystem'
+        system = linux_cs[0]
+    else:
+        try:
+            hs = enumclass.enumerate(options.ip, 'HostSystem', keys, options.virt)
+            name = get_typed_class(options.virt, 'HostSystem')
         
-        if len(hs) != 1:
-            logger.error("Expected 1 %s instance returned" % name)
-            return FAIL
+            if len(hs) != 1:
+                logger.error("Expected 1 %s instance returned" % name)
+                return XFAIL
    
-        system = hs[0]
+            system = hs[0]
+        except Exception, details:
+            logger.error("%s %s: %s" % (CIM_ERROR_ENUMERATE, name, details))
+            status = FAIL
 
-        if system.CreationClassName != name or system.Name != host:
-            logger.error("Exp %s, got %s" % (name, system.CreationClassName))
-            logger.error("Exp %s, got %s" % (host, system.Name))
-            status = FAIL
-        else:
-            logger.info("%s is %s" % (name, host))
-            status = PASS
 
-    except Exception, details:
-        logger.error("%s %s: %s" % (CIM_ERROR_ENUMERATE, name, details))
+    if system.CreationClassName != name or system.Name != host:
+        logger.error("Exp %s, got %s" % (name, system.CreationClassName))
+        logger.error("Exp %s, got %s" % (host, system.Name))
         status = FAIL
+    else:
+        logger.info("%s is %s" % (name, host))
+        status = PASS
+
 
     return status
 
diff -r d2ae228a60c3 -r 83add054f191 suites/libvirt-cim/lib/XenKvmLib/classes.py
--- a/suites/libvirt-cim/lib/XenKvmLib/classes.py	Mon Sep 22 11:28:02 2008 -0700
+++ b/suites/libvirt-cim/lib/XenKvmLib/classes.py	Tue Sep 23 23:06:33 2008 -0700
@@ -22,10 +22,6 @@ virt_types = ['Xen', 'KVM', 'XenFV', 'LX
 virt_types = ['Xen', 'KVM', 'XenFV', 'LXC']
 
 def get_typed_class(virt, basename):
-    if virt not in virt_types:
-        if virt != "Virt" and basename != "MigrationJob":
-            raise ValueError('Invalid class type')
-
     if basename == None or basename == '':
         raise ValueError('Invalide class base name')
 
diff -r d2ae228a60c3 -r 83add054f191 suites/libvirt-cim/lib/XenKvmLib/common_util.py
--- a/suites/libvirt-cim/lib/XenKvmLib/common_util.py	Mon Sep 22 11:28:02 2008 -0700
+++ b/suites/libvirt-cim/lib/XenKvmLib/common_util.py	Tue Sep 23 23:06:33 2008 -0700
@@ -27,7 +27,8 @@ from distutils.file_util import move_fil
 from distutils.file_util import move_file
 from XenKvmLib.test_xml import * 
 from XenKvmLib.test_doms import * 
-from XenKvmLib import vsms 
+from XenKvmLib import vsms
+from CimTest import Globals 
 from XenKvmLib import enumclass 
 from pywbem.cim_obj import CIMInstanceName
 from XenKvmLib.devices import CIM_Instance
@@ -477,4 +478,22 @@ def libvirt_cached_data_poll(ip, virt, d
 
             sleep(1)
             
-    return cs 
+    return cs
+
+def check_sblim(server, virt='Xen'):
+    status = FAIL
+    Globals.CIM_NS = 'root/cimv2'
+    keys = ['Name', 'CreationClassName']
+    try:
+        linux_cs = enumclass.enumerate(server, 'ComputerSystem', keys, 'Linux')
+        host_sys = enumclass.enumerate(server, 'HostSystem', keys, virt)
+        if len(linux_cs) == 1 and len(host_sys) == 0:
+            status = PASS
+        else:
+            logger.info("sblim base provider is not installed")
+    except Exception, detail:
+        logger.error(CIM_ERROR_ENUMERATE, 'Linux_ComputerSystem')
+        logger.error("Exception: %s", detail)
+
+    Globals.CIM_NS = 'root/virt'
+    return status, linux_cs 
diff -r d2ae228a60c3 -r 83add054f191 suites/libvirt-cim/lib/XenKvmLib/enumclass.py
--- a/suites/libvirt-cim/lib/XenKvmLib/enumclass.py	Mon Sep 22 11:28:02 2008 -0700
+++ b/suites/libvirt-cim/lib/XenKvmLib/enumclass.py	Tue Sep 23 23:06:33 2008 -0700
@@ -63,6 +63,23 @@ class CIM_MyClass(CIM_Instance):
             return self.inst[attr]
         else:
             return CimExt._Method(self.__invoke, attr)
+
+class Linux_ComputerSystem(CIM_Instance):
+    def __init__(self, server, keys):
+        conn = pywbem.WBEMConnection('http://%s' % server,
+                                     (Globals.CIM_USER, Globals.CIM_PASS),
+                                     Globals.CIM_NS)
+
+        try:
+            classname = self.__class__.__name__
+            ref = CIMInstanceName(classname,
+                                  keybindings=keys)
+            inst = conn.GetInstance(ref)
+        except pywbem.CIMError, arg:
+            raise arg
+
+        CIM_Instance.__init__(self, inst)
+
 
 class CIM_ComputerSystem(CIM_MyClass):
     pass




More information about the Libvirt-cim mailing list