<br><tt><font size=2>libvirt-cim-bounces@redhat.com wrote on 2008-06-20
04:42:55:<br>
<br>
> # HG changeset patch<br>
> # User Kaitlin Rupert <karupert@us.ibm.com><br>
> # Date 1213907999 25200<br>
> # Node ID 6bbf46ffb58f0de81ff2606c5c27284d3b997ed2<br>
> # Parent  1ea2eaa7349fb3c16281c4071b252104c7fde5c2<br>
> [TEST] #2 Fix VSMS 08_modifyresource.py on Xen and KVM.<br>
> <br>
> This still fails on XenFV because of a provider bug.  It looks
like <br>
> the ModifyResource call strips the <emulator> tag from a XenFV
<br>
> guest.  So the test is unable to start the guest.<br>
> <br>
> Updates to this test:<br>
>   -Call create_netpool_conf() to create a new network pool to
use in<br>
> modify calls.<br>
>   -Create network RASD instead of bridge<br>
>   -Replaced modify calls with functions from vsms_util<br>
>   -Added support for modifying a running guest (mem and vcpu
only)<br>
>   -Remove XFAIL<br>
> <br>
> Updates from patch 1 to patch 2:<br>
>  -After undefining the guests in the loop, get a new XML object
so <br>
> the guest is defined using a default XML (not a modified one).<br>
>  -Instead of changing vcpus from 1 to 3, start out with a 2 vcpu
<br>
> guest and change down to 1.  This ensures that the guest is a
SMP <br>
> guest starting out.<br>
>  -Instad of changing memory from 128 to 78, use 128 to 256 instead.
<br>
> 78 isn't much memory for a guest to run.<br>
> <br>
> Signed-off-by: Kaitlin Rupert <karupert@us.ibm.com><br>
> <br>
> diff -r 1ea2eaa7349f -r 6bbf46ffb58f suites/libvirt-<br>
> cim/cimtest/VirtualSystemManagementService/08_modifyresource.py<br>
> --- a/suites/libvirt-<br>
> cim/cimtest/VirtualSystemManagementService/08_modifyresource.py  
<br>
> Tue Jun 10 18:26:16 2008 -0700<br>
> +++ b/suites/libvirt-<br>
> cim/cimtest/VirtualSystemManagementService/08_modifyresource.py  
<br>
> Thu Jun 19 13:39:59 2008 -0700<br>
> @@ -26,78 +26,97 @@<br>
>  import pywbem<br>
>  from pywbem.cim_obj import CIMInstanceName<br>
>  from VirtLib import utils<br>
> +from VirtLib.live import network_by_bridge<br>
>  from XenKvmLib import vsms<br>
>  from XenKvmLib import vxml<br>
>  from CimTest.Globals import logger<br>
>  from CimTest.Globals import do_main<br>
> -from CimTest.ReturnCodes import PASS, FAIL, XFAIL_RC<br>
> +from CimTest.ReturnCodes import PASS, FAIL<br>
> +from XenKvmLib.common_util import create_netpool_conf, destroy_netpool<br>
> +from XenKvmLib import vsms_util<br>
>  <br>
>  sup_types = ['Xen', 'KVM', 'XenFV']<br>
>  default_dom = 'rstest_domain'<br>
> -ntype = 'bridge'<br>
> -ncpu = 3<br>
> -nmem = 78<br>
> +ntype = 'network'<br>
> +cpu = 2<br>
> +ncpu = 1<br>
> +nmem = 256 <br>
>  <br>
> -bug_cpu = '90079'<br>
> +def cleanup_env(ip, virt, cxml, net_name):<br>
> +    destroy_netpool(ip, virt, net_name)<br>
> +    cxml.destroy(ip)<br>
> +    cxml.undefine(ip)<br>
>  <br>
>  @do_main(sup_types)<br>
>  def main():<br>
>      options = main.options <br>
>  <br>
>      service = vsms.get_vsms_class(options.virt)(options.ip)<br>
> -    cxml = vxml.get_class(options.virt)(default_dom)<br>
> +    cxml = vxml.get_class(options.virt)(default_dom, vcpus=cpu)<br>
>      ndpath = cxml.secondary_disk_path<br>
>      dasd = vsms.get_dasd_class(options.virt)(dev=cxml.xml_get_disk_dev(),<br>
>                    
                     
    source=ndpath, <br>
>                    
                     
    name=default_dom)<br>
> +    <br>
> +    status, net_name = create_netpool_conf(options.ip,
options.virt, <br>
> +                    
                     
use_existing=False)<br>
> +    if status != PASS:<br>
> +        logger.error('Unable to find a network
pool')<br>
> +        return FAIL <br>
> +<br>
>      nasd = vsms.get_nasd_class(options.virt)(type=ntype,
<br>
>                    
                     
    mac=cxml.xml_get_net_mac(),<br>
> -                    
                     
  name=default_dom)<br>
> +                    
                     
  name=default_dom,<br>
> +                    
                     
  virt_net=net_name)<br>
>      masd = vsms.get_masd_class(options.virt)(megabytes=nmem,
<br>
> name=default_dom)<br>
>      pasd = vsms.get_pasd_class(options.virt)(vcpu=ncpu,
name=default_dom)<br>
>  <br>
>      status = FAIL<br>
> -    rc = 0<br>
> -    try:<br>
> -        cxml.define(options.ip)<br>
> -        # Modify disk setting<br>
> -        service.ModifyResourceSettings(ResourceSettings
= [str(dasd)])<br>
> -        cxml.dumpxml(options.ip)<br>
> -        dpath = cxml.xml_get_disk_source()<br>
> -        if dpath != ndpath:<br>
> -            raise Exception('Error
changing rs for disk path')<br>
> -        logger.info('good status for disk path')<br>
> -        # Modify net setting<br>
> -        service.ModifyResourceSettings(ResourceSettings
= [str(nasd)])<br>
> -        cxml.dumpxml(options.ip)<br>
> -        type = cxml.xml_get_net_type()<br>
> -        if type != ntype:<br>
> -            raise Exception('Error
changing rs for net mac')<br>
> -        logger.info('good status for net mac')<br>
> -        # Modify memory resource setting<br>
> -        service.ModifyResourceSettings(ResourceSettings=[str(masd)])<br>
> -        cxml.dumpxml(options.ip)<br>
> -        mem = cxml.xml_get_mem()<br>
> -        if mem != '%i' % (nmem * 1024):<br>
> -            raise Exception('Error
changing rs for mem')<br>
> -        logger.info('good status for mem')<br>
> -        # Modify cpu setting<br>
> -        service.ModifyResourceSettings(ResourceSettings
= [str(pasd)])<br>
> -        cxml.dumpxml(options.ip)<br>
> -        cpu = cxml.xml_get_vcpu()<br>
> -        if cpu != '%i' % ncpu:<br>
> -            rc = -1<br>
> -            raise Exception('Error
changing rs for vcpu')<br>
> -        logger.info('good status for vcpu')<br>
> -        status = PASS<br>
> -    except Exception, details:<br>
> -        logger.error('Error invoking ModifyRS')<br>
> -        logger.error(details)<br>
> -        return FAIL<br>
> +  <br>
> +    if options.virt == "KVM":<br>
> +        test_cases = ["define"]<br>
> +    else:<br>
> +        test_cases = ["define", "start"]<br>
>  <br>
> -    cxml.undefine(options.ip)<br>
> -    if rc == -1:<br>
> -        return XFAIL_RC(bug_cpu)<br>
> +    for case in test_cases:<br>
> +        #Each time through, define guest using
a default XML<br>
> +        cxml.undefine(options.ip)<br>
> +        cxml = vxml.get_class(options.virt)(default_dom,
vcpus=cpu)<br>
> +        ret = cxml.define(options.ip)<br>
> +        if not ret:<br>
> +            logger.error("Failed
to define the dom: %s", default_dom)<br>
> +            cleanup_env(options.ip,
options.virt, cxml, net_name)<br>
> +            return FAIL<br>
> +        if case == "start":<br>
> +            ret = cxml.start(options.ip)<br>
> +            if not ret:<br>
> +                logger.error("Failed
to start the dom: %s", default_dom)<br>
> +                cleanup_env(options.ip,
options.virt, cxml, net_name)<br>
> +                return FAIL<br>
> +<br>
> +        status = vsms_util.mod_vcpu_res(options.ip,
service, cxml, <br>
> pasd, ncpu,<br>
> +                    
                   options.virt)<br>
> +        if status != PASS:<br>
> +            break<br>
> +<br>
> +        status = vsms_util.mod_mem_res(options.ip,
service, cxml, masd, nmem)<br>
> +        if status != PASS:<br>
> +            break<br>
> +<br>
> +        #Unable to modify net and disk devices
while guest is running<br>
> +        if case == "start":<br>
> +            break<br>
> +<br>
> +        status = vsms_util.mod_disk_res(options.ip,
service, cxml, <br>
> dasd, ndpath)<br>
> +        if status != PASS:<br>
> +            break<br>
> +<br>
> +        status = vsms_util.mod_net_res(options.ip,
service, <br>
> options.virt, cxml,<br>
> +                    
                  nasd, ntype,
net_name)<br>
> +        if status != PASS:<br>
> +            break<br>
> +<br>
> +    cleanup_env(options.ip, options.virt, cxml, net_name)<br>
>  <br>
>      return status<br>
>  <br>
> </font></tt>
<br><tt><font size=2>  +1 from me.<br>
> _______________________________________________<br>
> Libvirt-cim mailing list<br>
> Libvirt-cim@redhat.com<br>
> https://www.redhat.com/mailman/listinfo/libvirt-cim<br>
</font></tt>