[PATCH] [TEST] Fix VSMS to do a proper check of ref config, also remove test_xml import

# 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. 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])) status = PASS

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

Deepti B Kalakeri wrote:
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:
<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>
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.
Right, that's correct. This is the intended behavior. If you pass a a value for the ReferencedConfiguration parameter, DefineSystem() will use that guest as a basis for the new guest. If you look at the RASDs we pass in the test case, you'll see that the test case specifies a NetRASD (see the array of RASDs we pass below). Since the guest we specified for the ReferencedConfiguration already had a network interface, the NetRASD we specified adds an additional network interface to the guest. So the test case is really asking for two interfaces. This was the original purpose of the test. ['instance of KVM_DiskResourceAllocationSettingData {\n\tPoolID = "DiskPool/cimtest-diskpool";\n\tVirtualDevice = "hda";\n\tResourceType = 17;\n\tAddress = "/tmp/default-kvm-dimage.2ND";\n\tVirtualQuantityUnits = "count";\n\tInstanceID = "Default";\n\tEmulatedType = 0;\n\tVirtualQuantity = 4096;\n\tVirtualDevice = "hdb";\n};\n', 'instance of KVM_ProcResourceAllocationSettingData {\nResourceType = 3;\nVirtualQuantity = 1;\nInstanceID = "rstest_domain2/proc";\n};', 'instance of KVM_NetResourceAllocationSettingData {\nResourceType = 10;\nNetworkType = "network";\nPoolID = "NetworkPool/cimtest-networkpool";\n};'] -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com

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.
Signed-off-by: Kaitlin Rupert <karupert@us.ibm.com>
diff -r a0185245b989 -r 03e78e8b7a06 suites/libvirt-cim/cimtest/VirtualSystemManagementService/12_referenced_config.py
Can someone take a look a this patch? Thanks! -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com

Oops ! sorry the changes for these were in a different directory marked as Spam. Kaitlin Rupert wrote:
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.
Signed-off-by: Kaitlin Rupert <karupert@us.ibm.com>
diff -r a0185245b989 -r 03e78e8b7a06 suites/libvirt-cim/cimtest/VirtualSystemManagementService/12_referenced_config.py
Can someone take a look a this patch? Thanks!
-- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik@linux.vnet.ibm.com

+1 for me. -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik@linux.vnet.ibm.com
participants (2)
-
Deepti B Kalakeri
-
Kaitlin Rupert