<br><font size=2 face="sans-serif">Please ignore this patch.</font>
<br>
<br><font size=2 face="sans-serif">Best,<br>
Regards<br>
<br>
Daisy (Ô˹úÁ«)<br>
VSM Team, China Systems & Technology Labs (CSTL)<br>
E-mail: yunguol@cn.ibm.com<br>
TEL: (86)-21-60922144<br>
Building 10, 399 Ke Yuan Rd, Pudong Shanghai, 201203<br>
</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Guo Lian Yun/China/IBM@IBMCN</b>
</font>
<br><font size=1 face="sans-serif">Sent by: libvirt-cim-bounces@redhat.com</font>
<p><font size=1 face="sans-serif">2008-06-24 13:07</font>
<table border>
<tr valign=top>
<td bgcolor=white>
<div align=center><font size=1 face="sans-serif">Please respond to<br>
List for discussion and development of libvirt CIM      
 <libvirt-cim@redhat.com></font></div></table>
<br>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">libvirt-cim@redhat.com</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">[Libvirt-cim] [PATCH] [TEST] #5 Update
RAFP.01 for LXC support,        also pass for
Xen, KVM and XenFV</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><tt><font size=2># HG changeset patch<br>
# User Guolian Yun <yunguol@cn.ibm.com><br>
# Date 1214284001 -28800<br>
# Node ID 3e9eef552d30fa26009f1e823e8eaf586a4eb793<br>
# Parent  c12f7b4a86e606c4fb8c1f32bc3a98bf59b75550<br>
[TEST] #5 Update RAFP.01 for LXC support, also pass for Xen, KVM and XenFV<br>
<br>
Signed-off-by: Guolian Yun <yunguol@cn.ibm.com><br>
<br>
diff -r c12f7b4a86e6 -r 3e9eef552d30 suites/libvirt-cim/cimtest/ResourceAllocationFromPool/01_forward.py<br>
--- a/suites/libvirt-cim/cimtest/ResourceAllocationFromPool/01_forward.py
               
Thu Jun 19 22:49:43 2008 -0700<br>
+++ b/suites/libvirt-cim/cimtest/ResourceAllocationFromPool/01_forward.py
               
Tue Jun 24 13:06:41 2008 +0800<br>
@@ -26,68 +26,125 @@<br>
 from VirtLib import utils<br>
 from XenKvmLib import assoc<br>
 from XenKvmLib import enumclass<br>
+from XenKvmLib.test_doms import destroy_and_undefine_all<br>
+from XenKvmLib.vxml import get_class<br>
 from XenKvmLib.classes import get_typed_class <br>
 from CimTest import Globals<br>
 from CimTest.Globals import logger, do_main<br>
 from CimTest.ReturnCodes import PASS, FAIL, XFAIL<br>
+from XenKvmLib.common_util import cleanup_restore, create_diskpool_conf,
\<br>
+create_netpool_conf<br>
 <br>
-sup_types = ['Xen', 'XenFV', 'KVM']<br>
+sup_types = ['Xen', 'XenFV', 'KVM', 'LXC']<br>
 <br>
+test_dom    = "RAFP_dom"<br>
+test_vcpus  = 1<br>
+test_mem    = 128<br>
+test_mac    = "00:11:22:33:44:aa"<br>
+<br>
+def setup_env(server, virt):<br>
+    destroy_and_undefine_all(server)<br>
+    vsxml = None<br>
+    if virt == "Xen":<br>
+        test_disk = "xvda"<br>
+    elif virt == "XenFV" or virt=="KVM":<br>
+        test_disk = "hda"<br>
+    else:<br>
+        test_disk = None<br>
+<br>
+    virtxml = get_class(virt)<br>
+    if virt == 'LXC':<br>
+        vsxml = virtxml(test_dom)<br>
+    else:<br>
+        vsxml = virtxml(test_dom, mem=test_mem, vcpus
= test_vcpus,<br>
+                    
   mac = test_mac, disk = test_disk)<br>
+    try:<br>
+        ret = vsxml.define(server)<br>
+        if not ret:<br>
+            logger.error("Failed to
Define the domain: %s", test_dom)<br>
+            return FAIL, vsxml, test_disk<br>
+<br>
+    except Exception, details:<br>
+        logger.error("Exception : %s", details)<br>
+        return FAIL, vsxml, test_disk<br>
+<br>
+    return PASS, vsxml, test_disk<br>
+<br>
+def get_instance(server, pool, list, virt='Xen'):<br>
+    try:<br>
+        inst = enumclass.getInstance(server,<br>
+                    
                pool,<br>
+                    
                list,<br>
+                    
                virt)<br>
+    except Exception:<br>
+        logger.error(Globals.CIM_ERROR_GETINSTANCE
 % pool)<br>
+        return FAIL, inst<br>
+  <br>
+    return PASS, inst<br>
+<br>
+def verify_rasd(server, assoc_cn, cn, virt, list, rasd):<br>
+    try:<br>
+        data = assoc.AssociatorNames(server,<br>
+                    
                assoc_cn,<br>
+                    
                cn,<br>
+                    
                virt,<br>
+                    
                InstanceID=list)<br>
+    except Exception:<br>
+        logger.error(Globals.CIM_ERROR_ASSOCIATORNAMES
% cn)<br>
+        return FAIL<br>
+<br>
+    if data[0]['InstanceID'] not in rasd:<br>
+        logger.info ('ID %s' % data[0]['InstanceID'])<br>
+        logger.error("InstanceID Mismatch")<br>
+        logger.error("Returned %s error"
% data[0]['InstanceID'])<br>
+        return FAIL<br>
+<br>
+    return PASS<br>
+               <br>
 @do_main(sup_types)<br>
 def main():<br>
     options = main.options<br>
     status = PASS<br>
+   <br>
+    status, vsxml, test_disk = setup_env(options.ip, options.virt)<br>
+    if status != PASS:<br>
+        return status<br>
+    <br>
+    status, diskid = create_diskpool_conf(options.ip, options.virt)<br>
+    if status != PASS:<br>
+        cleanup_restore(options.ip, options.virt)<br>
+        vsxml.undefine(options.ip)<br>
+        return status<br>
 <br>
-    try:<br>
-        key_list = { 'InstanceID' : "MemoryPool/0"
}<br>
-        mempool = enumclass.getInstance(options.ip,<br>
-                    
                   "MemoryPool",<br>
-                    
                   key_list,<br>
-                    
                   options.virt)<br>
-    except Exception:<br>
-        logger.error(Globals.CIM_ERROR_GETINSTANCE
 % "MemoryPool")<br>
-        return FAIL<br>
+    status, test_network = create_netpool_conf(options.ip, options.virt)<br>
+    if status != PASS:<br>
+        cleanup_restore(options.ip, options.virt)<br>
+        vsxml.undefine(options.ip)<br>
+        return status<br>
+ <br>
+    if options.virt == 'LXC':<br>
+        pool = { "MemoryPool" : {'InstanceID'
: "MemoryPool/0"} }<br>
+        rasd = [ "%s/mem" % test_dom ]<br>
+    else:<br>
+        pool = { "MemoryPool"    :
{'InstanceID' : "MemoryPool/0"},<br>
+                 "ProcessorPool"
: {'InstanceID' : "ProcessorPool/0"},<br>
+                 "DiskPool"
     : {'InstanceID' : diskid},<br>
+                 "NetworkPool"
  : {'InstanceID' : "NetworkPool/%s" % test_network }}<br>
+        rasd = [ "%s/mem" % test_dom, <br>
+                 "%s/proc"
% test_dom, <br>
+                 "%s/%s"
%(test_dom, test_disk), <br>
+                 "%s/%s"
% (test_dom, test_mac) ]<br>
 <br>
-    try:<br>
-        key_list = { 'InstanceID' : "ProcessorPool/0"
}<br>
-        procpool = enumclass.getInstance(options.ip,<br>
-                    
                    "ProcessorPool",<br>
-                    
                    key_list,<br>
-                    
                    options.virt)<br>
-    except Exception:<br>
-        logger.error(Globals.CIM_ERROR_GETINSTANCE
% "ProcessorPool")  <br>
-        return FAIL<br>
-     <br>
-    try:<br>
-        memdata = assoc.AssociatorNames(options.ip,
"ResourceAllocationFromPool",<br>
-                    
                   "MemoryPool",<br>
-                    
                   options.virt,<br>
-                    
                   InstanceID
= mempool.InstanceID)<br>
-    except Exception:<br>
-        logger.error(Globals.CIM_ERROR_ASSOCIATORNAMES
% mempool.InstanceID)<br>
-        status = FAIL<br>
-     <br>
-    for i in range(len(memdata)):<br>
-        if memdata[i].classname != get_typed_class(options.virt,
"MemResourceAllocationSettingData"):<br>
-            logger.error("ERROR: Association
result error")<br>
-            status = FAIL<br>
-                <br>
-    try:<br>
-        procdata = assoc.AssociatorNames(options.ip,
"ResourceAllocationFromPool",<br>
-                    
                    "ProcessorPool",<br>
-                    
                    options.virt,<br>
-                    
                    InstanceID
= procpool.InstanceID)<br>
-    except Exception:<br>
-        logger.error(Globals.CIM_ERROR_ASSOCIATORNAMES
% procpool.InstanceID)<br>
-        status = FAIL<br>
-      <br>
-    for j in range(len(procdata)):<br>
-        if procdata[j].classname != get_typed_class(options.virt,
"ProcResourceAllocationSettingData"):<br>
-                
    logger.error("ERROR: Association result error")<br>
-            status = FAIL<br>
+    for k, v in pool.iteritems():<br>
+        status, inst = get_instance(options.ip, k,
v, options.virt) <br>
 <br>
+        status = verify_rasd(options.ip, "ResourceAllocationFromPool",
<br>
+                    
        k, options.virt, inst.InstanceID,<br>
+                    
        rasd)<br>
+<br>
+    cleanup_restore(options.ip, options.virt)<br>
+    vsxml.undefine(options.ip)<br>
     return status <br>
-        <br>
-        <br>
+   <br>
 if __name__ == "__main__":<br>
     sys.exit(main())<br>
<br>
_______________________________________________<br>
Libvirt-cim mailing list<br>
Libvirt-cim@redhat.com<br>
https://www.redhat.com/mailman/listinfo/libvirt-cim<br>
</font></tt>
<br>