[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