[Libvirt-cim] [PATCH] [TEST] #3 Add tc to verify VSMS.RemoveResourceSettings() with correct resource

Kaitlin Rupert kaitlin at linux.vnet.ibm.com
Wed Mar 18 19:57:19 UTC 2009


> +import sys
> +from XenKvmLib.vsms import get_vsms_class
> +from XenKvmLib.vxml import get_class
> +from XenKvmLib.classes import get_typed_class
> +from XenKvmLib.assoc import AssociatorNames
> +from CimTest.Globals import logger
> +from XenKvmLib.const import do_main, get_provider_version
> +from CimTest.ReturnCodes import FAIL, PASS

Need to include SKIP here.

> +
> +sup_types = ['Xen', 'KVM', 'XenFV']
> +default_dom = 'domain'
> +rem_res_err_rev_start = 779
> +rem_res_err_rev_end = 828
> +ntype = 'network'

This isn't used in the test.

> +                
> +        service = get_vsms_class(options.virt)(options.ip)
> +        for dev in devs:
> +            if dev['CreationClassName'] in dev_not_rem:
> +                continue
> +            else:

No need for an else here.  If the if condition is met, the rest of the 
for loop is skipped over.  This is why I suggested changing the if 
statement...

> +                ccn = dev['CreationClassName']
> +                sccn = dev['SystemCreationClassName']
> +                rasd = AssociatorNames(options.ip, sds_classname, ccn,
> +                                       DeviceID = dev['DeviceID'],
> +                                       CreationClassName = ccn,
> +                                       SystemName = dev['SystemName'],
> +                                       SystemCreationClassName = sccn)
> +                if len(rasd) != 1:
> +                    raise Exception("%i RASD insts for %s", len(rasd), dev.DeviceID)

Instead of dev.DeviceID, this should be dev['DeviceID'].  Also, your 
formatting is off here - this needs to be:

raise Exception("%i RASD insts for %s" % (len(rasd), dev.DeviceID))

Also, this line is also longer than 80 characters..

> +                # Invoke RemoveResourceSettings() to remove resource
> +                ret = service.RemoveResourceSettings(ResourceSettings=[rasd[0]])
> +                if ret[0] != 0:
> +                    raise Exception("Remove %s error, please check", rasd[0])

This error is a little odd, also the formatting of Exception() is incorrect.

raise Exception("RemoveResourceSettings() returned %d removing %s" % 
(ret[0], rasd[0]))

> +    except Exception, details:       
> +        logger.error(details)
> +        cxml.undefine(options.ip)
> +        return FAIL
> +
> +    cxml.dumpxml(options.ip) 
> +    device = cxml.get_value_xpath('/domain/@devices')
> +    curr_cim_rev, changeset = get_provider_version(options.virt, options.ip)
> +
> +    if device == None:
> +        return PASS

You don't undefine() the guest in this case..

> +    elif device != None and curr_cim_rev >= rem_res_err_rev_start and\
> +        curr_cim_rev < rem_res_err_rev_end:
> +        return SKIP

Same issue here..

> +    else:
> +        logger.error('The devices are not removed successfully')
> +        cxml.undefine(options.ip)
> +        return FAIL
> +

Instead of calling undefine() so many times in a row, this could be 
formatted as:

if device == None:
     status = PASS
elif device != None and curr_cim_rev >= rem_res_err_rev_start and\
      curr_cim_rev < rem_res_err_rev_end:
     status = SKIP

You don't undefine the guest in this case.

else:
     logger.error('The devices are not removed successfully')
     status = FAIL


> +    cxml.undefine(options.ip)
> +    return PASS

This should then be:

return status

-- 
Kaitlin Rupert
IBM Linux Technology Center
kaitlin at linux.vnet.ibm.com




More information about the Libvirt-cim mailing list