<br><font size=2 face="sans-serif">+1.</font>
<br>
<br><tt><font size=2>libvirt-cim-bounces@redhat.com wrote on 2009-01-17
04:28:12:<br>
<br>
> # HG changeset patch<br>
> # User Kaitlin Rupert <karupert@us.ibm.com><br>
> # Date 1232135486 28800<br>
> # Node ID 57f3bc7c3105bb779b41e19b1c03a1e5f214cec1<br>
> # Parent  32645e444b323b137d0c0a2a323be574b370d75a<br>
> [TEST] #3 Update VSMS 04_definesystem_ers.py to use cim_define()<br>
> <br>
> Add a err_rc and err_desc elements to the VirtCIM class.  This
will allow<br>
> us to check the error code and error description in case of failed
CIM<br>
> method calls.<br>
> <br>
> Add two functions: set_sys_settings() and set_res_settings().  Theseallow
the<br>
> caller to set the VSSD and RASDs after the initial init() of the <br>
> VirtCIM class.<br>
> <br>
> Some of the logic in cim_define() was changed to allow the passing
of just<br>
> a single RASD to DefineSystem() (instead of passing all the RASDs).<br>
> <br>
> Updates from 2 to 3:<br>
>   -Rebased on current tree<br>
> <br>
> Updates from 1 to 2:<br>
>   -Create function to verify return code and error description
if define fails<br>
> <br>
> Signed-off-by: Kaitlin Rupert <karupert@us.ibm.com><br>
> <br>
> diff -r 32645e444b32 -r 57f3bc7c3105 suites/libvirt-<br>
> cim/cimtest/VirtualSystemManagementService/04_definesystem_ers.py<br>
> --- a/suites/libvirt-<br>
> cim/cimtest/VirtualSystemManagementService/04_definesystem_ers.py
  <br>
> Wed Jan 14 21:29:48 2009 -0800<br>
> +++ b/suites/libvirt-<br>
> cim/cimtest/VirtualSystemManagementService/04_definesystem_ers.py
  <br>
> Fri Jan 16 11:51:26 2009 -0800<br>
> @@ -23,17 +23,14 @@<br>
>  #<br>
>  <br>
>  import sys<br>
> -import pywbem<br>
> -from VirtLib import utils<br>
> -from XenKvmLib import vsms<br>
> -from XenKvmLib.test_doms import undefine_test_domain<br>
> -from XenKvmLib.common_util import create_using_definesystem<br>
> +from pywbem import CIM_ERR_FAILED<br>
>  from CimTest.Globals import logger<br>
>  from XenKvmLib.const import do_main<br>
>  from CimTest.ReturnCodes import PASS, FAIL, XFAIL_RC<br>
> +from XenKvmLib.vxml import get_class<br>
>  <br>
>  sup_types = ['Xen', 'KVM', 'XenFV', 'LXC']<br>
> -exp_rc = 1 #CMPI_RC_ERR_FAILED<br>
> +exp_rc = CIM_ERR_FAILED <br>
>  exp_desc = 'Unable to parse embedded object'<br>
>  <br>
>  @do_main(sup_types)<br>
> @@ -41,26 +38,28 @@<br>
>      options = main.options<br>
>  <br>
>      dname = 'test_domain'<br>
> -    vssd, rasd = vsms.default_vssd_rasd_str(dom_name=dname,
<br>
> virt=options.virt)<br>
>  <br>
> -    params = {'vssd' : vssd,<br>
> -              'rasd' : ['wrong']
<br>
> -             }<br>
> +    cxml = get_class(options.virt)(dname)<br>
>  <br>
> -    exp_err = {'exp_rc' : exp_rc,<br>
> -               'exp_desc' : exp_desc<br>
> -              }<br>
> +    rasd_list = { "MemResourceAllocationSettingData"
: "wrong" }<br>
> +    cxml.set_res_settings(rasd_list)<br>
>  <br>
> +    try:<br>
> +        ret = cxml.cim_define(options.ip)<br>
> +        if ret:<br>
> +            raise Exception('DefineSystem
returned OK with invalid params')<br>
>  <br>
> -    rc = create_using_definesystem(dname, options.ip, params,
ref_config=' ',<br>
> -                    
              exp_err=exp_err, virt=options.virt)<br>
> +        status = cxml.verify_error_msg(exp_rc,
exp_desc)<br>
> +        if status != PASS:<br>
> +            raise Exception('DefineSystem
failed for an unexpected reason')<br>
>  <br>
> -    if rc != PASS:<br>
> -        logger.error('DefineSystem should NOT
return OK with a <br>
> wrong ss input')<br>
> +    except Exception, details:<br>
> +        logger.error(details)<br>
> +        status = FAIL<br>
>  <br>
> -    undefine_test_domain(dname, options.ip, virt=options.virt)<br>
> +    cxml.undefine(options.ip)<br>
>  <br>
> -    return rc <br>
> +    return status<br>
>  <br>
>  if __name__ == "__main__":<br>
>      sys.exit(main())<br>
> diff -r 32645e444b32 -r 57f3bc7c3105 suites/libvirt-cim/lib/XenKvmLib/vxml.py<br>
> --- a/suites/libvirt-cim/lib/XenKvmLib/vxml.py   Wed Jan 14 21:29:482009
-0800<br>
> +++ b/suites/libvirt-cim/lib/XenKvmLib/vxml.py   Fri Jan 16 11:51:262009
-0800<br>
> @@ -470,6 +470,8 @@<br>
>                   mem_allocunits,
emu_type):<br>
>          self.virt = virt<br>
>          self.domain_name = dom_name<br>
> +        self.err_rc = None<br>
> +        self.err_desc = None<br>
>          self.vssd = vsms.get_vssd_mof(virt,
dom_name)<br>
>          self.nasd = vsms.get_nasd_class(virt)(type=net_type,
<br>
>                    
                     
     mac=net_mac,<br>
> @@ -491,11 +493,17 @@<br>
>      def cim_define(self, ip, ref_conf=None):<br>
>          service = vsms.get_vsms_class(self.virt)(ip)<br>
>          sys_settings = str(self.vssd)<br>
> -        if self.virt == 'LXC' and const.LXC_netns_support
is False:<br>
> -            res_settings = [str(self.dasd),
str(self.pasd), str(self.masd)]<br>
> -        else:<br>
> -            res_settings = [str(self.dasd),
str(self.nasd),<br>
> -                    
       str(self.pasd), str(self.masd)]<br>
> +<br>
> +        res_settings = []<br>
> +        if self.dasd is not None:<br>
> +            res_settings.append(str(self.dasd))<br>
> +        if self.pasd is not None:<br>
> +            res_settings.append(str(self.pasd))<br>
> +        if self.masd is not None:<br>
> +            res_settings.append(str(self.masd))<br>
> +        if self.nasd is not None or \<br>
> +           (self.virt == 'LXC' and const.LXC_netns_support
is False):<br>
> +            res_settings.append(str(self.nasd))<br>
>  <br>
>          if ref_conf is None:<br>
>               ref_conf = ' '<br>
> @@ -506,6 +514,8 @@<br>
>                    
              ReferenceConfiguration=ref_conf)<br>
>          except pywbem.CIMError, (rc, desc):<br>
>              logger.error('Got
CIM error %s with return code %s' % (desc, rc))<br>
> +            self.err_rc = rc <br>
> +            self.err_desc = desc <br>
>              return False<br>
>  <br>
>          except Exception, details:<br>
> @@ -523,6 +533,12 @@<br>
>          target = pywbem.cim_obj.CIMInstanceName(cs_cn,
keybindings = keys)<br>
>          try:<br>
>              ret = service.DestroySystem(AffectedSystem=target)<br>
> +        except pywbem.CIMError, (rc, desc):<br>
> +            logger.error('Got CIM error
%s with return code %s' % (desc, rc))<br>
> +            self.err_rc = rc <br>
> +            self.err_desc = desc <br>
> +            return False<br>
> +<br>
>          except Exception, details:<br>
>              logger.error('Error
invoking DestroySystem')<br>
>              logger.error('Got
error %s with exception %s' \<br>
> @@ -575,6 +591,12 @@<br>
>              cs.RequestStateChange(RequestedState=req_state_change,<br>
>                    
               TimeoutPeriod=time_period)<br>
>  <br>
> +        except pywbem.CIMError, (rc, desc):<br>
> +            logger.error('Got CIM error
%s with return code %s' % (desc, rc))<br>
> +            self.err_rc = rc <br>
> +            self.err_desc = desc <br>
> +            return FAIL <br>
> +<br>
>          except Exception, detail:<br>
>              logger.error("In
fn cim_state_change()")<br>
>              logger.error("Failed
to change state of the domain '%<br>
> s'", cs.Name)<br>
> @@ -620,6 +642,36 @@<br>
>          return self.cim_state_change(server,
const.CIM_RESET, <br>
>                    
                  req_time,
poll_time, const.CIM_ENABLE)<br>
>  <br>
> +    def set_sys_settings(self, vssd):<br>
> +        self.vssd = vssd <br>
> +<br>
> +    def set_res_settings(self, rasd_list):<br>
> +        for cn, rasd in rasd_list.iteritems():<br>
> +            if cn.find("MemResourceAllocationSettingData")
>= 0:<br>
> +                self.masd
= rasd<br>
> +            elif cn.find("ProcResourceAllocationSettingData")
>= 0:<br>
> +                self.pasd
= rasd<br>
> +            elif cn.find("DiskResourceAllocationSettingData")
>= 0:<br>
> +                self.dasd
= rasd<br>
> +            elif cn.find("NetResourceAllocationSettingData")
>= 0:<br>
> +                self.nasd
= rasd<br>
> +<br>
> +    def verify_error_msg(self, exp_rc, exp_desc):<br>
> +        try:<br>
> +            rc = int(self.err_rc)<br>
> +<br>
> +            if rc != exp_rc:<br>
> +                raise Exception("Got
rc: %d, exp %d." % (rc, exp_rc))<br>
> +<br>
> +            if self.err_desc.find(exp_desc)
< 0:<br>
> +                raise Exception("Got
desc: '%s', exp '%s'" % (self.err_desc,<br>
> +                    
           exp_desc))<br>
> +<br>
> +        except Exception, details:<br>
> +            logger.error(details)<br>
> +            return FAIL<br>
> +<br>
> +        return PASS <br>
>  <br>
>  class XenXML(VirtXML, VirtCIM):<br>
>  <br>
> <br>
> _______________________________________________<br>
> Libvirt-cim mailing list<br>
> Libvirt-cim@redhat.com<br>
> https://www.redhat.com/mailman/listinfo/libvirt-cim<br>
</font></tt>