<html><body>
<p>+1<br>
<br>
Looks good. I will test it once IBM BZ 65164 is fixed.<br>
<br>
Sharad Mishra<br>
Open Virtualization<br>
Linux Technology Center<br>
IBM<br>
<br>
<img width="16" height="16" src="cid:1__=07BBFDF1DFCE6CF98f9e8a93df938@us.ibm.com" border="0" alt="Inactive hide details for "Deepti B. Kalakeri" ---07/16/2010 02:09:13 AM---# HG changeset patch"><font color="#424282">"Deepti B. Kalakeri" ---07/16/2010 02:09:13 AM---# HG changeset patch</font><br>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr valign="top"><td style="background-image:url(cid:2__=07BBFDF1DFCE6CF98f9e8a93df938@us.ibm.com); background-repeat: no-repeat; " width="40%">
<ul>
<ul>
<ul>
<ul><b><font size="2">"Deepti B. Kalakeri" <deeptik@linux.vnet.ibm.com></font></b><font size="2"> </font><br>
<font size="2">Sent by: libvirt-cim-bounces@redhat.com</font>
<p><font size="2">07/16/2010 02:05 AM</font>
<table border="1">
<tr valign="top"><td width="168" bgcolor="#FFFFFF"><div align="center"><font size="2">Please respond to<br>
List for discussion and development of libvirt CIM <libvirt-cim@redhat.com></font></div></td></tr>
</table>
</ul>
</ul>
</ul>
</ul>
</td><td width="60%">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr valign="top"><td width="1%"><img width="58" height="1" src="cid:3__=07BBFDF1DFCE6CF98f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<div align="right"><font size="2">To</font></div></td><td width="100%"><img width="1" height="1" src="cid:3__=07BBFDF1DFCE6CF98f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<font size="2">libvirt-cim@redhat.com</font></td></tr>
<tr valign="top"><td width="1%"><img width="58" height="1" src="cid:3__=07BBFDF1DFCE6CF98f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<div align="right"><font size="2">cc</font></div></td><td width="100%"><img width="1" height="1" src="cid:3__=07BBFDF1DFCE6CF98f9e8a93df938@us.ibm.com" border="0" alt=""><br>
</td></tr>
<tr valign="top"><td width="1%"><img width="58" height="1" src="cid:3__=07BBFDF1DFCE6CF98f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<div align="right"><font size="2">Subject</font></div></td><td width="100%"><img width="1" height="1" src="cid:3__=07BBFDF1DFCE6CF98f9e8a93df938@us.ibm.com" border="0" alt=""><br>
<font size="2">[Libvirt-cim] [PATCH] [TEST] Adding new tc to verify the VSI Libvirt-CIM feature</font></td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tr valign="top"><td width="58"><img width="1" height="1" src="cid:3__=07BBFDF1DFCE6CF98f9e8a93df938@us.ibm.com" border="0" alt=""></td><td width="336"><img width="1" height="1" src="cid:3__=07BBFDF1DFCE6CF98f9e8a93df938@us.ibm.com" border="0" alt=""></td></tr>
</table>
</td></tr>
</table>
<br>
<tt># HG changeset patch<br>
# User Deepti B. Kalakeri <deeptik@linux.vnet.ibm.com><br>
# Date 1279271077 25200<br>
# Node ID ae6e83c18a8490fc0c583f7d0b8568ae4b8d1efc<br>
# Parent f14d55353dd10846428b5b818e478eb6f8a0431e<br>
[TEST] Adding new tc to verify the VSI Libvirt-CIM feature.<br>
<br>
Tested with KVM on RHEL with latest sources.<br>
The test now checks with the 'VSIType' --> "802.1Qbg", we can improve the test case<br>
to verify with 'VSIType' --> "802.1Qbh"<br>
<br>
<br>
Signed-off-by: Deepti B. Kalakeri <deeptik@linux.vnet.ibm.com><br>
<br>
diff -r f14d55353dd1 -r ae6e83c18a84 suites/libvirt-cim/cimtest/VirtualSystemManagementService/28_definesystem_with_vsi_profile.py<br>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000<br>
+++ b/suites/libvirt-cim/cimtest/VirtualSystemManagementService/28_definesystem_with_vsi_profile.py Fri Jul 16 02:04:37 2010 -0700<br>
@@ -0,0 +1,213 @@<br>
+#!/usr/bin/python<br>
+#<br>
+# Copyright 2010 IBM Corp.<br>
+#<br>
+# Authors:<br>
+# Deepti B. Kalakeri <deeptik@linux.vnet.ibm.com><br>
+#<br>
+# This library is free software; you can redistribute it and/or<br>
+# modify it under the terms of the GNU General Public<br>
+# License as published by the Free Software Foundation; either<br>
+# version 2.1 of the License, or (at your option) any later version.<br>
+#<br>
+# This library is distributed in the hope that it will be useful,<br>
+# but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>
+# General Public License for more details.<br>
+#<br>
+# You should have received a copy of the GNU General Public<br>
+# License along with this library; if not, write to the Free Software<br>
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br>
+# <br>
+# Purpose:<br>
+# Verify provider's VSI support.<br>
+#<br>
+# Steps:<br>
+# 1) Build RASD parameters, making sure to specify macvtap mode for network<br>
+# interface and vsi values.<br>
+# 2) Create guest<br>
+# 3) Verify guest is defined properly and the vsi values assgined to the guest<br>
+# are reflected in the NetRASD.<br>
+#<br>
+# Date: 16-07-2010<br>
+#<br>
+<br>
+import sys<br>
+from CimTest.Globals import logger<br>
+from CimTest.ReturnCodes import FAIL, PASS, SKIP, XFAIL_RC, XFAIL<br>
+from XenKvmLib.classes import get_typed_class, inst_to_mof<br>
+from XenKvmLib.rasd import get_default_rasds<br>
+from XenKvmLib.const import do_main, get_provider_version<br>
+from XenKvmLib.vxml import get_class<br>
+from XenKvmLib.common_util import parse_instance_id<br>
+from XenKvmLib.enumclass import EnumInstances<br>
+<br>
+sup_types = ['Xen', 'XenFV', 'KVM']<br>
+test_dom = 'vsi_guest'<br>
+bug_no = "00016" <br>
+<br>
+libvirt_cim_vsi_support = 1042 <br>
+<br>
+def get_rasd_list(ip, virt, vsi_defaults, nrasd_cn):<br>
+ rasds = get_default_rasds(ip, virt)<br>
+ rasd_list = {} <br>
+<br>
+ for rasd in rasds:<br>
+ if rasd.classname == nrasd_cn and "Default" in rasd['InstanceID']:<br>
+<br>
+ rasd['NetworkMode'] = vsi_defaults['NetworkMode']<br>
+ rasd['NetworkType'] = vsi_defaults['NetworkType']<br>
+ rasd['SourceDevice'] = vsi_defaults['SourceDevice']<br>
+ rasd['VSIType'] = vsi_defaults['VSIType']<br>
+ rasd['VSIManagerID'] = vsi_defaults['VSIManagerID']<br>
+ rasd['VSITypeID'] = vsi_defaults['VSITypeID']<br>
+ rasd['VSITypeIDVersion'] = vsi_defaults['VSITypeIDVersion']<br>
+ # Currently Libvirt throws error when passing Profile id, <br>
+ # add it when supported<br>
+ # rasd['ProfileID'] = vsi_defaults['ProfileID']<br>
+ rasd_list[rasd.classname] = inst_to_mof(rasd)<br>
+ break<br>
+<br>
+ return rasd_list <br>
+<br>
+def get_net_inst(ip, nrasd_cn, guest_name):<br>
+ inst = None<br>
+ enum_list = EnumInstances(ip, nrasd_cn)<br>
+<br>
+ if enum_list < 1:<br>
+ logger.error("No %s instances returned", nrasd_cn)<br>
+ return FAIL, inst<br>
+<br>
+ for rasd in enum_list:<br>
+ guest, dev, status = parse_instance_id(rasd.InstanceID)<br>
+ if status != PASS:<br>
+ logger.error("Unable to parse InstanceID: %s", rasd.InstanceID)<br>
+ return FAIL, inst<br>
+<br>
+ if guest == guest_name:<br>
+ inst = rasd <br>
+ break<br>
+<br>
+ if inst is None:<br>
+ logger.error("%s instance for %s not found", nrasd_cn, guest_name)<br>
+ return FAIL, inst<br>
+ else:<br>
+ return PASS, inst<br>
+ <br>
+<br>
+def verify_net_rasd(ip, virt, vsi_defaults, inst):<br>
+ try:<br>
+ if inst.NetworkMode != vsi_defaults['NetworkMode']:<br>
+ raise Exception("%s" % "NetworkMode", \<br>
+ "%s" % inst.NetworkMode, \<br>
+ "%s" % vsi_defaults['NetworkMode'],\<br>
+ "%s" % FAIL)<br>
+<br>
+ if inst.SourceDevice != vsi_defaults['SourceDevice']:<br>
+ raise Exception("%s" % "SourceDevice", \<br>
+ "%s" % inst.SourceDevice, "%s" \<br>
+ % vsi_defaults['SourceDevice'],\<br>
+ "%s" % FAIL)<br>
+<br>
+ if inst.VSIType != vsi_defaults['VSIType']:<br>
+ raise Exception("%s" % "VSIType", \<br>
+ "%s" % inst.VSIType, "%s" \<br>
+ % vsi_defaults['VSIType'], \<br>
+ "%s" % FAIL)<br>
+<br>
+ # Once the bug is fixed change the status value from XFAIL to FAIL<br>
+ if inst.VSIInstanceID == None:<br>
+ raise Exception("%s" % "VSIInstanceID", \<br>
+ "%s" % inst.VSIInstanceID, \<br>
+ "%s" % "a value",\<br>
+ "%s" % XFAIL)<br>
+ <br>
+ if inst.VSITypeIDVersion != vsi_defaults['VSITypeIDVersion']:<br>
+ raise Exception("%s" % "VSITypeIDVersion", <br>
+ "%s" % inst.VSITypeIDVersion, \<br>
+ "%s" % vsi_defaults['VSITypeIDVersion'],\<br>
+ "%s" % XFAIL)<br>
+<br>
+ if inst.VSITypeID != vsi_defaults['VSITypeID']:<br>
+ raise Exception("%s" % "VSITypeID", \<br>
+ "%s" % inst.VSITypeID, \<br>
+ "%s" % vsi_defaults['VSITypeID'], \<br>
+ "%s" % XFAIL)<br>
+<br>
+ except Exception, (field, ret_val, exp_val, status):<br>
+ logger.error("Mismatch in '%s' values", field)<br>
+ logger.error("Got %s, Expected %s", ret_val, exp_val)<br>
+ if status == "3":<br>
+ return XFAIL_RC(bug_no)<br>
+ return status<br>
+<br>
+ return PASS <br>
+<br>
+@do_main(sup_types)<br>
+def main():<br>
+ options = main.options<br>
+ server = options.ip<br>
+ virt = options.virt<br>
+<br>
+ status = FAIL<br>
+<br>
+ curr_cim_rev, changeset = get_provider_version(virt, server)<br>
+ if curr_cim_rev < libvirt_cim_vsi_support:<br>
+ logger.error("VSI support is available in rev >= %s", <br>
+ libvirt_cim_vsi_support)<br>
+ return SKIP<br>
+<br>
+<br>
+ # Currently Libvirt throws error when passing Profile id, <br>
+ # add it when supported<br>
+ # 'ProfileID' : "vsi_profile"<br>
+ # Also, Libvirt returns error when 'VSIType' is 802.1Qbh <br>
+ # The tc can be modified to loop for the different VSIType, <br>
+ # when supported.<br>
+ vsi_defaults = { 'NetworkMode' : "vepa",<br>
+ 'NetworkType' : "direct",<br>
+ 'SourceDevice' : "eth1",<br>
+ 'VSIType' : "802.1Qbg",<br>
+ 'VSIManagerID' : "12",<br>
+ 'VSITypeID' : "0x12345",<br>
+ 'VSITypeIDVersion' : "1"<br>
+ } <br>
+<br>
+ nrasd_cn = get_typed_class(virt, 'NetResourceAllocationSettingData')<br>
+ status = FAIL<br>
+<br>
+ try:<br>
+ rasd_list = get_rasd_list(server, virt, vsi_defaults, nrasd_cn)<br>
+ if len(rasd_list) < 1:<br>
+ raise Exception("Unable to get template RASDs for %s" % test_dom)<br>
+<br>
+ cxml = get_class(virt)(test_dom)<br>
+ cxml.set_res_settings(rasd_list)<br>
+ ret = cxml.cim_define(server)<br>
+ if not ret:<br>
+ raise Exception("Unable to define guest %s" % test_dom)<br>
+ <br>
+ status = cxml.cim_start(server)<br>
+ if status != PASS:<br>
+ raise Exception("Unable to start %s" % test_dom)<br>
+<br>
+ status, inst = get_net_inst(server, nrasd_cn, test_dom)<br>
+ if status != PASS:<br>
+ raise Exception("Failed to get net interface for %s" % test_dom)<br>
+<br>
+ status = verify_net_rasd(server, virt, vsi_defaults, inst)<br>
+ if status != PASS:<br>
+ logger.error("Failed to verify net interface for %s", test_dom)<br>
+<br>
+ except Exception, details:<br>
+ logger.error(details)<br>
+ status = FAIL<br>
+<br>
+ cxml.cim_destroy(server)<br>
+ cxml.undefine(server)<br>
+<br>
+ return status <br>
+<br>
+if __name__ == "__main__":<br>
+ sys.exit(main())<br>
+ <br>
<br>
_______________________________________________<br>
Libvirt-cim mailing list<br>
Libvirt-cim@redhat.com<br>
</tt><tt><a href="https://www.redhat.com/mailman/listinfo/libvirt-cim">https://www.redhat.com/mailman/listinfo/libvirt-cim</a></tt><tt><br>
</tt><br>
</body></html>