[Libvirt-cim] [PATCH] [TEST] #5 Add new test to verify enum of DiskRASD to have EmulatedType=0 for Disk and EmulatedType=1 for CDROM

Guo Lian Yun yunguol at cn.ibm.com
Tue Dec 30 03:08:51 UTC 2008


libvirt-cim-bounces at redhat.com wrote on 2008-12-25 05:44:15:

> > +import sys
> > +import pywbem
> 
> pywbem is not used
> 
> > +from VirtLib import utils
> 
> utils is not used
> 
> > +from XenKvmLib import enumclass
> 
> Instead of importing all of the enumclass module, instead you can import 

> just the EnumInstances() function:
> 
> from XenKvmLib.enumclass import EnumInstances
> 
> > +from XenKvmLib.classes import get_typed_class
> > +from XenKvmLib.test_doms import undefine_test_domain
> 
> undefine_test_domain() isn't used, this can be removed
> 
> > +from XenKvmLib.common_util import parse_instance_id
> > +from XenKvmLib.const import do_main
> > +from XenKvmLib import vxml
> 
> Since you only use get_class(), it's better to do:
> 
> from XenKvmLib.vxml import get_class
> 
> > +from CimTest.ReturnCodes import PASS, FAIL
> > +from CimTest.Globals import logger, CIM_ERROR_ENUMERATE
> 
> CIM_ERROR_ENUMERATE is not used
> 
> > +from XenKvmLib.const import get_provider_version
> > +
> > +SUPPORTED_TYPES = ['KVM']
> 
> This should also support Xen and XenFV.
>
  I cann't connect to the machine for Xen test, so #6 patch only supports 
KVM.
  Once the machine brings up, I will work on follow up patch.

  Thanks!
 
> > +default_dom = 'test_domain'
> > +libvirt_em_type_changeset = 737
> > +
> > + at do_main(SUPPORTED_TYPES)
> > +def main():
> > +    status = FAIL
> > +    options = main.options
> > +    curr_cim_rev, changeset = get_provider_version(options.virt, 
> options.ip)
> > +    if curr_cim_rev < libvirt_em_type_changeset:
> > +        return SKIP
> > +
> > +    emu_types = [0, 1]
> > +    for exp_emu_type in emu_types:
> > +        cxml = vxml.get_class(options.virt)(default_dom, 
> emu_type=exp_emu_type)
> > +        ret = cxml.cim_define(options.ip)
> > +        if not ret:
> > +            logger.error("Failed to call DefineSystem()")
> > +            return FAIL
> > + 
> > +        drasd= get_typed_class(options.
> virt,'DiskResourceAllocationSettingData')
> > +        try:
> > +            drasd_list = enumclass.EnumInstances(options.ip, drasd, 
> > +                                                 ret_cim_inst=True)
> > +            if len(drasd_list) < 1:
> > +                raise Exception("%s returned %i instances, 
> excepted at least 1.",
> 
> Typo - excepted should be expected.  Also, this line is 81 characters - 
> removing the ".' should fix that =)
> 
> > +                                drasd, len(drasd_list))
> > +
> > +            found_rasd = None
> > +            for rasd in drasd_list:
> > +                guest, dev, status = 
parse_instance_id(rasd['InstanceID'])
> > +                if status != PASS:
> > +                    raise Exception("Unable to parse InstanceID: %s" 
\
> > +                                    % rasd['InstanceID'])
> > +                if guest == default_dom:
> > +                    if rasd['EmulatedType'] == exp_emu_type:
> > +                        found_rasd = rasd
> > +                        status = PASS
> > +                        break
> > +                    else:
> > +                        raise Exception("EmulatedType Mismatch: got 
%d, \
> > +                              expected %d", rasd['EmulatedType'],
> exp_emu_type)
> 
> The indention is off here.  Also, you'll need to use % not commas.  This 

> should be:
> 
> raise Exception("EmulatedType Mismatch: got %d, \
>                   expected %d" % (rasd['EmulatedType'],
>                   exp_emu_type))
> 
> > +
> > +            if found_rasd == None:
> 
> This should be:  if found_rasd is None
> 
> > +                raise Exception("The defined dom is not found")
> 
> This error message is a bit vague.. it should be something like 
> "DiskRASD for define guest was not found"
> 
> > +        except Exception, detail:
> > +            logger.error("Exception: %s", detail)
> > +            cxml.undefine(options.ip)
> 
> No need to have the undefine() call here.  Instead, change the return 
> FAIL to status = FAIL and remove the undefine() call.
> 
> > +            return FAIL
> > +
> > +        cxml.undefine(options.ip)
> 
> Put the undefine() outside of the for loop.  The for loop should be in 
> the try block.  So your code should look like:
> 
> try:
>      for ...
> 
>      ....
> 
> except Exception, detail:
>      logger.error("Exception: %s", detail)
>      status = FAIL
> 
> cxml.undefine(options.ip)
> 
> return status
> 
> >  class LXC_DiskResourceAllocationSettingData(CIMClassMOF):
> > -    def __init__(self, mountpoint, source, name):
> > +    def __init__(self, mountpoint, source, name, emu_type=None):
> >          self.MountPoint = mountpoint
> >          self.Address = source
> >          self.InstanceID = '%s/%s' % (name, mountpoint)
> > +        if emu_type != None:
> > +           self.EmulatedType = emu_type
> 
> The patch doesn't update the schema for LXC - it's Xen and KVM only.
> 
> > diff -r b7d80fdeb2a3 -r 7b57ee2aab2c suites/libvirt-
> cim/lib/XenKvmLib/vxml.py
> > --- a/suites/libvirt-cim/lib/XenKvmLib/vxml.py   Mon Dec 22 23:03:
> 01 2008 -0800
> > +++ b/suites/libvirt-cim/lib/XenKvmLib/vxml.py   Tue Dec 23 22:53:
> 59 2008 -0800
> > @@ -466,11 +466,13 @@
> > 
> >  class VirtCIM:
> >      def __init__(self, virt, dom_name, disk_dev, disk_source,
> > -                 net_type, net_name, net_mac, vcpus, mem, 
mem_allocunits):
> > +                 net_type, net_name, net_mac, vcpus, mem, 
> > +                 mem_allocunits, emu_type=None):
> 
> Don't have emu_type=None - have it be a mandatory value like all the 
> others. The init for KVM sets it as None if nothing is passed in.
> 
> -- 
> Kaitlin Rupert
> IBM Linux Technology Center
> kaitlin at linux.vnet.ibm.com
> 
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvirt-cim/attachments/20081230/0664ef2c/attachment.htm>


More information about the Libvirt-cim mailing list