
Kaitlin Rupert wrote:
# HG changeset patch # User Kaitlin Rupert <karupert@us.ibm.com> # Date 1251842877 25200 # Node ID 03e78e8b7a06296eba99e1329840ae6ee521f357 # Parent a0185245b9894f195227c12af621151623972573 [TEST] Fix VSMS to do a proper check of ref config, also remove test_xml import
This test was originally designed to do the following:
1) Create a guest with a MAC interface 2) Create a second guest based on the first guest - second guest has an additional MAC defined. Pass a reference to the first guest during the DefineSystem() 3) Verify the second guest was created with two MACs - one that is identical to the first guest and one that is different
The providers no longer allow a guest to have the same MAC as an existing guest. Each MAC needs to be unique. Therefore, this test needs to use a different setting - disk source works for this.
Also, remove the dependency on test_xml.py - that module is not obsolete.
The test case seems to be adding 2 MAC's as well to the second domain. See the xml below obtained from the debug message: <domain type="kvm"> <name>rstest_domain2</name> <on_poweroff>destroy</on_poweroff> <on_crash>destroy</on_crash> <uuid>8529544b-9655-4e3b-b702-d7fe64167b71</uuid> <clock offset="utc"/> <os> <type>hvm</type> <boot dev="hd"/> </os> <currentMemory>131072</currentMemory> <memory>131072</memory> <vcpu>1</vcpu> <devices> <disk type="file" device="disk"> <source file="/tmp/default-kvm-dimage"/> <target dev="hda" bus="ide"/> </disk> <disk type="file" device="disk"> <source file="/tmp/default-kvm-dimage.2ND"/> <target dev="hdb"/> </disk> <interface type="network"> <mac address="00:16:3e:e1:17:be"/> <source network="cimtest-networkpool"/> </interface> <interface type="network"> <mac address="00:16:3e:a6:d5:cd"/> <source network="cimtest-networkpool"/> </interface> <input type="mouse" bus="ps2"/> <graphics type="vnc" port="-1" listen="127.0.0.1" keymap="en-us"/> <emulator>/usr/bin/qemu-kvm</emulator> </devices> </domain> The MAC in the above XML shows that its generated by the libvirt-CIM provider as it has prefix "00:16:3e". I think we get two MAC's as the referenced domain was passed to DefineSystem() would also have a interface information ? The debug messages do not directly imply how this might be getting added. Probably we can include more debug statements going further in the libvirt-cim provider. I think we should not be adding 2 net interface when we are not asking for it.
Signed-off-by: Kaitlin Rupert <karupert@us.ibm.com>
diff -r a0185245b989 -r 03e78e8b7a06 suites/libvirt-cim/cimtest/VirtualSystemManagementService/12_referenced_config.py --- a/suites/libvirt-cim/cimtest/VirtualSystemManagementService/12_referenced_config.py Tue Sep 01 14:23:12 2009 -0700 +++ b/suites/libvirt-cim/cimtest/VirtualSystemManagementService/12_referenced_config.py Tue Sep 01 15:07:57 2009 -0700 @@ -33,19 +33,16 @@ import sys from XenKvmLib.common_util import get_cs_instance from CimTest.Globals import logger -from XenKvmLib.const import do_main, get_provider_version +from XenKvmLib.const import do_main, KVM_secondary_disk_path from CimTest.ReturnCodes import FAIL, PASS from XenKvmLib.classes import get_typed_class, inst_to_mof from XenKvmLib.assoc import AssociatorNames -from XenKvmLib.test_xml import dumpxml from XenKvmLib.vxml import get_class from XenKvmLib.rasd import get_default_rasds
sup_types = ['Xen', 'XenFV', 'KVM'] test_dom = 'rstest_domain' test_dom2 = 'rstest_domain2' -mac = "aa:aa:aa:00:00:00" -libvirt_mac_ref_changes = 935
def setup_first_guest(ip, virt, cxml): ret = cxml.cim_define(ip) @@ -76,22 +73,23 @@ return vssd[0]
def setup_second_guest(ip, virt, cxml2, ref): - nrasd_cn = get_typed_class(virt, "NetResourceAllocationSettingData") + drasd_cn = get_typed_class(virt, "DiskResourceAllocationSettingData")
rasds = get_default_rasds(ip, virt)
rasd_list = {}
for rasd in rasds: - if rasd.classname == nrasd_cn: - rasd['Address'] = mac - rasd['NetworkType'] = "network" - rasd_list[nrasd_cn] = inst_to_mof(rasd) + if rasd.classname == drasd_cn: + rasd['Address'] = KVM_secondary_disk_path + rasd['VirtualDevice '] = "hdb" + rasd_list[drasd_cn] = inst_to_mof(rasd) + break else: rasd_list[rasd.classname] = None
- if rasd_list[nrasd_cn] is None: - logger.error("Unable to get template NetRASD") + if rasd_list[drasd_cn] is None: + logger.error("Unable to get template DiskRASD") return FAIL
cxml2.set_res_settings(rasd_list) @@ -103,20 +101,21 @@
return PASS, "define"
-def get_dom_macs(server, dom, virt): - mac_list = [] +def get_dom_disk_src(xml, ip): + disk_list = []
- myxml = dumpxml(dom, server, virt=virt) + xml.dumpxml(ip) + myxml = xml.get_formatted_xml()
lines = myxml.splitlines() for l in lines: - if l.find("mac address=") != -1: - mac = l.split('=')[1] - mac = mac.lstrip('\'') - mac = mac.rstrip('\'/>') - mac_list.append(mac) + if l.find("source file=") != -1: + disk = l.split('=')[1] + disk = disk.lstrip('\'') + disk = disk.rstrip('\'/>') + disk_list.append(disk)
- return mac_list + return disk_list
@do_main(sup_types) def main(): @@ -143,26 +142,23 @@ if status != PASS: raise Exception("Unable to define %s" % test_dom2)
- dom1_mac_list = get_dom_macs(ip, test_dom, virt) - if len(dom1_mac_list) != 1: - raise Exception("%s has %d macs, expected 1" % (test_dom, - len(dom1_mac_list))) + g1_disk_list = get_dom_disk_src(cxml, ip) + if len(g1_disk_list) != 1: + raise Exception("%s has %d disks, expected 1" % (test_dom, + len(g1_disk_list)))
- dom2_mac_list = get_dom_macs(ip, test_dom2, virt) - if len(dom2_mac_list) != 2: - raise Exception("%s has %d macs, expected 2" % (test_dom2, - len(dom2_mac_list))) + g2_disk_list = get_dom_disk_src(cxml2, ip) + if len(g2_disk_list) != 2: + raise Exception("%s has %d disks, expected 2" % (test_dom2, + len(g2_disk_list)))
- curr_cim_rev, changeset = get_provider_version(virt, ip) - if curr_cim_rev < libvirt_mac_ref_changes: - for item in dom2_mac_list: - if item != mac and item != dom1_mac_list[0]: - raise Exception("%s has unexpected mac value, exp: %s %s" \ - % (item, mac, dom1_mac_list[0])) - elif curr_cim_rev >= libvirt_mac_ref_changes: - if not mac in dom2_mac_list: - raise Exception("Did not find the mac information given to "\ - "the domain '%s'" % test_dom2) + if g2_disk_list[0] != g1_disk_list[0]: + raise Exception("%s has unexpected disk source, exp: %s, got %s" \ + % (test_dom2, g2_disk_list[0], g1_disk_list[0])) + + if g2_disk_list[1] == g1_disk_list[0]: + raise Exception("%s has unexpected disk source, exp: %s, got %s" \ + % (test_dom2, g2_disk_list[1], g1_disk_list[0]))
better would be g2_disk_list[1] in g1_disk_list[0].
status = PASS
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim
-- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik@linux.vnet.ibm.com