
@@ -43,27 +44,35 @@ def main():
status = FAIL keys = ['Name', 'CreationClassName'] - try: - hs = enumclass.enumerate(options.ip, 'HostSystem', keys, options.virt) - name = get_typed_class(options.virt, 'HostSystem') + + linux_cs = enumclass.enumerate(options.ip, 'ComputerSystem', keys, 'Linux')
I think this would be a good chance to fix the behavior of the enumerate() function. Instead of passing in both the base name and the virtualization type, the test itself should call get_typed_class() to get the proper classname. That way, this function only needs to take a classname param. You'll also need to set the namespace appropriately before calling this function. Since you'll need to do this in several places, you could create a function that checks whether the system has the SBLIM providers or not. A function that returns a True if the enum of Linux_CS returns an instance or returns False if Linux_CS returns an error / 0 instances.
+ hs = enumclass.enumerate(options.ip, 'HostSystem', keys, options.virt) + if len(linux_cs) == 1 and len(hs) == 0: + return PASS + if len(linux_cs) == 0 and len(hs) == 0:
A debug statement here would be good.
+ return XFAIL_RC(bug) + elif len(linux_cs) == 0 and len(hs)== 1:
What about the case where len(linux_cs) == 1 and len(hs) == 1? This scenario should be an error. So fixing this if / else block would be good. You could have something like: ret = using_sblim() if ret: #verify HostSystem enum didn't return an instance and return accordingly try: #rest of the test here
+ try: + hs = enumclass.enumerate(options.ip, 'HostSystem', keys, options.virt)
This is no longer needed - you already called enumerate() above.
diff -r 892ce3fce234 -r 83e6f32be2ae suites/libvirt-cim/lib/XenKvmLib/classes.py --- a/suites/libvirt-cim/lib/XenKvmLib/classes.py Fri Sep 12 14:35:12 2008 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/classes.py Sun Sep 21 22:54:28 2008 -0700 @@ -23,6 +23,8 @@ virt_types = ['Xen', 'KVM', 'XenFV', 'LX
def get_typed_class(virt, basename): if virt not in virt_types:
I'd remove this if statement.
+ if virt == "Linux" and basename == "ComputerSystem": + return 'Linux_ComputerSystem'
Which would make this part unnecessary.
if virt != "Virt" and basename != "MigrationJob": raise ValueError('Invalid class type')
This is obsolete now - so we need a separate patch to remove this piece.
diff -r 892ce3fce234 -r 83e6f32be2ae suites/libvirt-cim/lib/XenKvmLib/enumclass.py --- a/suites/libvirt-cim/lib/XenKvmLib/enumclass.py Fri Sep 12 14:35:12 2008 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/enumclass.py Sun Sep 21 22:54:28 2008 -0700 @@ -68,6 +68,9 @@ class CIM_ComputerSystem(CIM_MyClass): pass
class CIM_System(CIM_MyClass): + pass + +class Linux_ComputerSystem(CIM_MyClass): pass
The MyClass extension is very useful, but I concerned that the list will just continue to grow. I don't think it's very scalable at this point. and I'd like to keep the amount of SBLIM specific bits to a minimum. This test case doesn't make use of the CIM_MyClass pieces from what I can tell. So I think it's safe to remove this. -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com