[Libvirt-cim] [PATCH] [TEST]Fix HostSystem-01_enum.py with sblim cmpi base provider installed, add Linux_ComputerSystem to enumclass
Kaitlin Rupert
kaitlin at linux.vnet.ibm.com
Tue Sep 23 00:46:00 UTC 2008
> @@ -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 at linux.vnet.ibm.com
More information about the Libvirt-cim
mailing list