Test Run Summary (Feb 16 2009): KVM on Fedora release 9 (Sulphur) with Pegasus
by Guo Lian Yun
=================================================
Test Run Summary (Feb 16 2009): KVM on Fedora release 9 (Sulphur) with
Pegasus
=================================================
Distro: Fedora release 9 (Sulphur)
Kernel: 2.6.25.14-108.fc9.x86_64
libvirt: 0.4.4
Hypervisor: QEMU 0.9.1
CIMOM: Pegasus 2.7.0
Libvirt-cim revision: 613
Libvirt-cim changeset: 1fcf330fadf8+
Cimtest revision: 625
Cimtest changeset: f5ef41b6e30f
=================================================
FAIL : 0
XFAIL : 3
SKIP : 13
PASS : 129
-----------------
Total : 145
=================================================
XFAIL Test Summary:
ComputerSystem - 32_start_reboot.py: XFAIL
ComputerSystem - 33_suspend_reboot.py: XFAIL
VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL
=================================================
SKIP Test Summary:
HostedAccessPoint - 01_forward.py: SKIP
HostedAccessPoint - 02_reverse.py: SKIP
KVMRedirectionSAP - 01_enum_KVMredSAP.py: SKIP
RASD - 05_disk_rasd_emu_type.py: SKIP
RedirectionService - 01_enum_crs.py: SKIP
RedirectionService - 02_enum_crscap.py: SKIP
RedirectionService - 03_RedirectionSAP_errs.py: SKIP
ServiceAccessBySAP - 01_forward.py: SKIP
ServiceAccessBySAP - 02_reverse.py: SKIP
VSSD - 02_bootldr.py: SKIP
VirtualSystemMigrationService - 01_migratable_host.py: SKIP
VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP
VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP
=================================================
Full report:
--------------------------------------------------------------------
AllocationCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
AllocationCapabilities - 02_alloccap_gi_errs.py: PASS
--------------------------------------------------------------------
ComputerSystem - 01_enum.py: PASS
--------------------------------------------------------------------
ComputerSystem - 02_nosystems.py: PASS
--------------------------------------------------------------------
ComputerSystem - 03_defineVS.py: PASS
--------------------------------------------------------------------
ComputerSystem - 04_defineStartVS.py: PASS
--------------------------------------------------------------------
ComputerSystem - 05_activate_defined_start.py: PASS
--------------------------------------------------------------------
ComputerSystem - 06_paused_active_suspend.py: PASS
--------------------------------------------------------------------
ComputerSystem - 22_define_suspend.py: PASS
--------------------------------------------------------------------
ComputerSystem - 23_pause_pause.py: PASS
--------------------------------------------------------------------
ComputerSystem - 27_define_pause_errs.py: PASS
--------------------------------------------------------------------
ComputerSystem - 32_start_reboot.py: XFAIL
ERROR - Got CIM error CIM_ERR_FAILED: Domain Operation Failed
with return code 1
ERROR - Exception: Unable reboot dom 'cs_test_domain'
InvokeMethod(RequestStateChange): CIM_ERR_FAILED: Domain Operation Failed
Bug:<00005>
--------------------------------------------------------------------
ComputerSystem - 33_suspend_reboot.py: XFAIL
ERROR - Got CIM error CIM_ERR_NOT_SUPPORTED: State not
supported with return code 7
ERROR - Exception: Unable Suspend dom 'test_domain'
InvokeMethod(RequestStateChange): CIM_ERR_NOT_SUPPORTED: State not
supported
Bug:<00012>
--------------------------------------------------------------------
ComputerSystem - 35_start_reset.py: PASS
--------------------------------------------------------------------
ComputerSystem - 40_RSC_start.py: PASS
--------------------------------------------------------------------
ComputerSystem - 41_cs_to_settingdefinestate.py: PASS
--------------------------------------------------------------------
ComputerSystem - 42_cs_gi_errs.py: PASS
--------------------------------------------------------------------
ComputerSystemIndication - 01_created_indication.py: PASS
--------------------------------------------------------------------
ElementAllocatedFromPool - 01_forward.py: PASS
--------------------------------------------------------------------
ElementAllocatedFromPool - 02_reverse.py: PASS
--------------------------------------------------------------------
ElementAllocatedFromPool - 03_reverse_errs.py: PASS
--------------------------------------------------------------------
ElementAllocatedFromPool - 04_forward_errs.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 01_forward.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 02_reverse.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 03_forward_errs.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 05_hostsystem_cap.py: PASS
--------------------------------------------------------------------
ElementConforms - 01_forward.py: PASS
--------------------------------------------------------------------
ElementConforms - 02_reverse.py: PASS
--------------------------------------------------------------------
ElementConforms - 03_ectp_fwd_errs.py: PASS
--------------------------------------------------------------------
ElementConforms - 04_ectp_rev_errs.py: PASS
--------------------------------------------------------------------
ElementSettingData - 01_forward.py: PASS
--------------------------------------------------------------------
ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS
--------------------------------------------------------------------
EnabledLogicalElementCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS
--------------------------------------------------------------------
HostSystem - 01_enum.py: PASS
--------------------------------------------------------------------
HostSystem - 02_hostsystem_to_rasd.py: PASS
--------------------------------------------------------------------
HostSystem - 03_hs_to_settdefcap.py: PASS
--------------------------------------------------------------------
HostSystem - 04_hs_to_EAPF.py: PASS
--------------------------------------------------------------------
HostSystem - 05_hs_gi_errs.py: PASS
--------------------------------------------------------------------
HostSystem - 06_hs_to_vsms.py: PASS
--------------------------------------------------------------------
HostedAccessPoint - 01_forward.py: SKIP
--------------------------------------------------------------------
HostedAccessPoint - 02_reverse.py: SKIP
--------------------------------------------------------------------
HostedDependency - 01_forward.py: PASS
--------------------------------------------------------------------
HostedDependency - 02_reverse.py: PASS
--------------------------------------------------------------------
HostedDependency - 03_enabledstate.py: PASS
--------------------------------------------------------------------
HostedDependency - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 01_forward.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 02_reverse.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 03_forward_errs.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
HostedService - 01_forward.py: PASS
--------------------------------------------------------------------
HostedService - 02_reverse.py: PASS
--------------------------------------------------------------------
HostedService - 03_forward_errs.py: PASS
--------------------------------------------------------------------
HostedService - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
KVMRedirectionSAP - 01_enum_KVMredSAP.py: SKIP
--------------------------------------------------------------------
LogicalDisk - 01_disk.py: PASS
--------------------------------------------------------------------
LogicalDisk - 02_nodevs.py: PASS
--------------------------------------------------------------------
LogicalDisk - 03_ld_gi_errs.py: PASS
--------------------------------------------------------------------
Memory - 01_memory.py: PASS
--------------------------------------------------------------------
Memory - 02_defgetmem.py: PASS
--------------------------------------------------------------------
Memory - 03_mem_gi_errs.py: PASS
--------------------------------------------------------------------
NetworkPort - 01_netport.py: PASS
--------------------------------------------------------------------
NetworkPort - 02_np_gi_errors.py: PASS
--------------------------------------------------------------------
NetworkPort - 03_user_netport.py: PASS
--------------------------------------------------------------------
Processor - 01_processor.py: PASS
--------------------------------------------------------------------
Processor - 02_definesys_get_procs.py: PASS
--------------------------------------------------------------------
Processor - 03_proc_gi_errs.py: PASS
--------------------------------------------------------------------
Profile - 01_enum.py: PASS
--------------------------------------------------------------------
Profile - 02_profile_to_elec.py: PASS
--------------------------------------------------------------------
Profile - 03_rprofile_gi_errs.py: PASS
--------------------------------------------------------------------
RASD - 01_verify_rasd_fields.py: PASS
--------------------------------------------------------------------
RASD - 02_enum.py: PASS
--------------------------------------------------------------------
RASD - 03_rasd_errs.py: PASS
--------------------------------------------------------------------
RASD - 04_disk_rasd_size.py: PASS
--------------------------------------------------------------------
RASD - 05_disk_rasd_emu_type.py: SKIP
--------------------------------------------------------------------
RedirectionService - 01_enum_crs.py: SKIP
--------------------------------------------------------------------
RedirectionService - 02_enum_crscap.py: SKIP
--------------------------------------------------------------------
RedirectionService - 03_RedirectionSAP_errs.py: SKIP
--------------------------------------------------------------------
ReferencedProfile - 01_verify_refprof.py: PASS
--------------------------------------------------------------------
ReferencedProfile - 02_refprofile_errs.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 01_forward.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 02_reverse.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 03_forward_errs.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 05_RAPF_err.py: PASS
--------------------------------------------------------------------
ResourcePool - 01_enum.py: PASS
--------------------------------------------------------------------
ResourcePool - 02_rp_gi_errors.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 01_enum.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py:
PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 07_DeleteResourcePool.py: PASS
--------------------------------------------------------------------
ServiceAccessBySAP - 01_forward.py: SKIP
--------------------------------------------------------------------
ServiceAccessBySAP - 02_reverse.py: SKIP
--------------------------------------------------------------------
SettingsDefine - 01_forward.py: PASS
--------------------------------------------------------------------
SettingsDefine - 02_reverse.py: PASS
--------------------------------------------------------------------
SettingsDefine - 03_sds_fwd_errs.py: PASS
--------------------------------------------------------------------
SettingsDefine - 04_sds_rev_errs.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 01_forward.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 03_forward_errs.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS
--------------------------------------------------------------------
SystemDevice - 01_forward.py: PASS
--------------------------------------------------------------------
SystemDevice - 02_reverse.py: PASS
--------------------------------------------------------------------
SystemDevice - 03_fwderrs.py: PASS
--------------------------------------------------------------------
VSSD - 01_enum.py: PASS
--------------------------------------------------------------------
VSSD - 02_bootldr.py: SKIP
--------------------------------------------------------------------
VSSD - 03_vssd_gi_errs.py: PASS
--------------------------------------------------------------------
VSSD - 04_vssd_to_rasd.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 01_definesystem_name.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 02_destroysystem.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 03_definesystem_ess.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 04_definesystem_ers.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 05_destroysystem_neg.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 06_addresource.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 07_addresource_neg.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 08_modifyresource.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 10_hv_version.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 11_define_memrasdunits.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 12_referenced_config.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 13_refconfig_additional_devs.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 14_define_sys_disk.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL
ERROR - rstest_domain not updated properly.
ERROR - Exp AutomaticRecoveryAction=3, got 2
Bug:<00010>
--------------------------------------------------------------------
VirtualSystemMigrationCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationService - 01_migratable_host.py: SKIP
--------------------------------------------------------------------
VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP
--------------------------------------------------------------------
VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP
--------------------------------------------------------------------
VirtualSystemMigrationSettingData - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 01_forward.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 02_reverse.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotService - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py:
PASS
--------------------------------------------------------------------
15 years, 10 months
[PATCH] [TEST] #2 Fixing VSMS 09_procrasd_persist.py tc
by Deepti B. Kalakeri
# HG changeset patch
# User Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
# Date 1234760288 28800
# Node ID bb5fd2a23299b381d177ef7a5ffb14a21034da70
# Parent f5ef41b6e30f104813132be50f405afdef80cc8a
[TEST] #2 Fixing VSMS 09_procrasd_persist.py tc.
Changes:
--------
Patch 2:
--------
1) Added a break stmt to exit the for loop when the desired dom ProcRASD info is found.
Patch 1:
--------
1) Added description to the tc.
2) Removed unnecessary import stmts
3) Changed the tc to use cim_define(), cim_start(), cim_destroy().
4) Added the check to verify the VirtualQuantity
5) Aligned the tc to fit in 80 columns
Added verification of the Linmit, Weight, VirtualQuantity persistance over sequence of
define/start/destroy sequence.
Tested for KVM/Xen/LXC with current sources, KVM with F9 rpm.
This tc fails with KVM on F10.
Signed-off-by: Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
diff -r f5ef41b6e30f -r bb5fd2a23299 suites/libvirt-cim/cimtest/VirtualSystemManagementService/09_procrasd_persist.py
--- a/suites/libvirt-cim/cimtest/VirtualSystemManagementService/09_procrasd_persist.py Thu Feb 12 18:24:39 2009 -0800
+++ b/suites/libvirt-cim/cimtest/VirtualSystemManagementService/09_procrasd_persist.py Sun Feb 15 20:58:08 2009 -0800
@@ -19,56 +19,89 @@
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
+# Purpose:
+# Verify values for VirtualQuantity, limit and weight of ProcRASD are
+# persisted properly over define/start/destroy sequence of the guest.
+#
+# Steps:
+# 1) Get the default rasds
+# 2) Set the ProcRASD VirtualQuantity, Weight, Limit, InstanceID values
+# 3) Define the guest using the configuration
+# 4) Verify the proc settings of the guest
+# 5) start the guest and verify the proc settings of the guest
+# 6) Destroy and undefine the guest
+# Repeat the Sequence 3 - 6 in loop to see that
+# the VirtualQuantity, limit and weight are maintained as passed to
+# via the ProcRASD.
+#
import sys
-import pywbem
-from XenKvmLib.common_util import call_request_state_change, \
- poll_for_state_change
-from XenKvmLib import vsms
-from XenKvmLib.enumclass import GetInstance
-from XenKvmLib.common_util import get_typed_class
-from VirtLib import utils
+from pywbem.cim_types import Uint64, Uint32
+from XenKvmLib.vxml import get_class
+from XenKvmLib.enumclass import EnumInstances
+from XenKvmLib.classes import get_typed_class, inst_to_mof
from CimTest.Globals import logger
from XenKvmLib.const import do_main
from CimTest.ReturnCodes import FAIL, PASS
-from XenKvmLib.test_doms import destroy_and_undefine_domain
+from XenKvmLib.rasd import get_default_rasds
sup_types = ['Xen', 'XenFV', 'KVM']
-default_dom = 'rstest_domain'
+test_dom = 'procrasd_persist_dom'
-nvcpu = 2
+nvcpu = 3
weight = 124
-limit = 256
+limit = 512
-REQUESTED_STATE = 2
-TIME = "00000000000000.000000:000"
+def setup_guest(ip, virt, cxml, prasd_cn):
+ rasds = get_default_rasds(ip, virt)
+ rasd_list= { prasd_cn : None }
+
+ for rasd in rasds:
+ if rasd.classname == prasd_cn:
+ rasd['InstanceID'] = '%s/proc' %test_dom
+ rasd['VirtualQuantity'] = Uint64(nvcpu)
+ rasd['Weight'] = Uint32(weight)
+ rasd['Limit'] = Uint64(limit)
+ rasd_list[prasd_cn] = inst_to_mof(rasd)
-def setup_rasd_mof(ip, vtype):
- vssd, rasd = vsms.default_vssd_rasd_str(default_dom, virt=vtype)
+ if rasd_list[prasd_cn] is None:
+ logger.error("Unable to set template ProcRASD")
+ return FAIL
- class_pasd = vsms.get_pasd_class(vtype)
- proc_inst = class_pasd(default_dom, nvcpu, weight, limit)
- proc_mof = proc_inst.mof()
+ cxml.set_res_settings(rasd_list)
+ ret = cxml.cim_define(ip)
+ if not ret:
+ logger.error("Unable to define %s ", test_dom)
+ return FAIL
- for i in range(len(rasd)):
- if "ProcResourceAllocationSettingData" in rasd[i]:
- rasd[i] = proc_mof
- return PASS, vssd, rasd
+ return PASS
- return FAIL, vssd, rasd
+def check_proc_sched(server, cn_name):
+ try:
+ proc_rasd = None
+ rasds = EnumInstances(server, cn_name, ret_cim_inst=True)
+ for rasd in rasds:
+ if test_dom in rasd["InstanceID"]:
+ proc_rasd = rasd
+ break
-def check_proc_sched(server, virt):
- try:
- key_list = {"InstanceID" : '%s/proc' %default_dom}
- cn_name = get_typed_class(virt, 'ProcResourceAllocationSettingData')
- proc = GetInstance(server, cn_name, key_list)
+ if proc_rasd == None:
+ logger.error("Did not find test RASD on server")
+ return FAIL
- if proc.Limit != limit:
- logger.error("Limit is %i, expected %i", proc.Limit, limit)
+ if proc_rasd["VirtualQuantity"] != nvcpu:
+ logger.error("VirtualQuantity is %i, expected %i",
+ proc_rasd["VirtualQuantity"], nvcpu)
return FAIL
- if proc.Weight != weight:
- logger.error("Weight is %i, expected %i", proc.Weight, weight)
+ if proc_rasd["Limit"] != limit:
+ logger.error("Limit is %i, expected %i",
+ proc_rasd["Limit"], limit)
+ return FAIL
+
+ if proc_rasd["Weight"] != weight:
+ logger.error("Weight is %i, expected %i",
+ proc_rasd["Weight"], weight)
return FAIL
except Exception, details:
@@ -79,40 +112,50 @@ def check_proc_sched(server, virt):
@do_main(sup_types)
def main():
- options = main.options
+ options = main.options
+ virt = options.virt
+ server = options.ip
+
+ cxml = get_class(virt)(test_dom)
+ prasd_cn = get_typed_class(virt, "ProcResourceAllocationSettingData")
+ dom_define = dom_start = False
+ try:
+ for count in range(3):
+ status = setup_guest(server, virt, cxml, prasd_cn)
+ if status != PASS:
+ return status
+
+ dom_define = True
+ status = check_proc_sched(server, prasd_cn)
+ if status != PASS:
+ raise Exception("CPU scheduling not set properly for "
+ " defined dom: %s" % test_dom)
+
+ status = cxml.cim_start(server)
+ if status != PASS:
+ raise Exception("Unable to start %s " % test_dom)
- status, vssd, rasd = setup_rasd_mof(options.ip, options.virt)
- if status != PASS:
- return status
+ dom_start = True
+ status = check_proc_sched(server, prasd_cn)
+ if status != PASS:
+ raise Exception("CPU scheduling not set properly for the dom: "
+ "%s" % test_dom)
- try:
- service = vsms.get_vsms_class(options.virt)(options.ip)
- service.DefineSystem(SystemSettings=vssd,
- ResourceSettings=rasd,
- ReferenceConfiguration=' ')
+ cxml.cim_destroy(server)
+ dom_start = False
- rc = call_request_state_change(default_dom, options.ip,
- REQUESTED_STATE, TIME, options.virt)
- if rc != 0:
- raise Exception("Unable to start %s using RequestedStateChange()" %
- default_dom)
-
- status, dom_cs = poll_for_state_change(options.ip, options.virt,
- default_dom, REQUESTED_STATE)
- if status != PASS:
- raise Exception("%s didn't change state as expected" % default_dom)
-
- status = check_proc_sched(options.ip, options.virt)
- if status != PASS:
- raise Exception("%s CPU scheduling not set properly" % default_dom)
-
- status = PASS
+ cxml.undefine(server)
+ dom_define = False
except Exception, details:
logger.error("Exception: details %s", details)
status = FAIL
- destroy_and_undefine_domain(default_dom, options.ip, options.virt)
+ if dom_start == True:
+ cxml.cim_destroy(server)
+
+ if dom_define == True:
+ cxml.undefine(server)
return status
15 years, 10 months
[PATCH] [TEST] #3 Update VSMS 14_define_sys_disk.py to use cim_define()
by Kaitlin Rupert
# HG changeset patch
# User Kaitlin Rupert <karupert(a)us.ibm.com>
# Date 1233789475 28800
# Node ID 2d445349b1e6fc2dff2f86e12566a0e55259b44a
# Parent edfa908a60d058c7f1ba7394bd1d818999802287
[TEST] #3 Update VSMS 14_define_sys_disk.py to use cim_define()
Updates from 2 to 3:
-Verify the Address attribute of the DiskRASD for the guest is the same
address specified during the define call.
Updates form 1 to 2:
-Added comment to describe test
-Added flag to indicate whether guest should be undefined
Signed-off-by: Kaitlin Rupert <karupert(a)us.ibm.com>
diff -r edfa908a60d0 -r 2d445349b1e6 suites/libvirt-cim/cimtest/VirtualSystemManagementService/14_define_sys_disk.py
--- a/suites/libvirt-cim/cimtest/VirtualSystemManagementService/14_define_sys_disk.py Tue Feb 03 09:37:05 2009 -0800
+++ b/suites/libvirt-cim/cimtest/VirtualSystemManagementService/14_define_sys_disk.py Wed Feb 04 15:17:55 2009 -0800
@@ -18,6 +18,14 @@
# You should have received a copy of the GNU General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# Purpose:
+# Verify providers support disk images with long paths / names
+#
+# Steps:
+# 1) Create a disk image with a long path
+# 2) Build RASD parameters, making sure to specify disk image created in step 1
+# 3) Verify guest is defined properly
#
import sys
@@ -25,14 +33,13 @@
from VirtLib.utils import run_remote
from CimTest.Globals import logger
from CimTest.ReturnCodes import FAIL, PASS
-from XenKvmLib.common_util import create_using_definesystem
-from XenKvmLib.test_doms import destroy_and_undefine_domain
from XenKvmLib.classes import get_typed_class, inst_to_mof
from XenKvmLib.rasd import get_default_rasds
-from XenKvmLib.vsms import get_vssd_mof
-from XenKvmLib.const import get_provider_version
from XenKvmLib.const import do_main, _image_dir, f9_changeset, \
- KVM_default_disk_dev
+ KVM_default_disk_dev, get_provider_version
+from XenKvmLib.vxml import get_class
+from XenKvmLib.common_util import parse_instance_id
+from XenKvmLib.enumclass import EnumInstances
sup_types = ['Xen', 'XenFV', 'KVM', 'LXC']
test_dom = 'rstest_disk_domain'
@@ -50,28 +57,58 @@
return path
-def get_vssd_rasd(ip, virt, addr, disk_type):
- vssd = get_vssd_mof(virt, test_dom)
+def get_rasd_list(ip, virt, addr, disk_type):
+ drasd_cn = get_typed_class(virt, "DiskResourceAllocationSettingData")
rasds = get_default_rasds(ip, virt)
- rasd_list = []
+ rasd_list = {}
for rasd in rasds:
- if 'DiskPool' in rasd['PoolID']:
+ if rasd.classname == drasd_cn:
if disk_type != "" and rasd['Caption'] != disk_type:
continue
rasd['Address'] = addr
curr_cim_rev, changeset = get_provider_version(virt, ip)
if changeset == f9_changeset and virt == 'KVM':
rasd['VirtualDevice'] = KVM_default_disk_dev
- rasd_list.append(inst_to_mof(rasd))
+ rasd_list[rasd.classname] = inst_to_mof(rasd)
- params = { 'vssd' : vssd,
- 'rasd' : rasd_list
- }
+ return rasd_list
- return params
+def verify_disk_path(ip, virt, addr, guest_name):
+ inst = None
+
+ try:
+ drasd_cn = get_typed_class(virt, 'DiskResourceAllocationSettingData')
+ enum_list = EnumInstances(ip, drasd_cn)
+
+ if enum_list < 1:
+ raise Exception("No %s instances returned" % drasd_cn)
+
+ for rasd in enum_list:
+ guest, dev, status = parse_instance_id(rasd.InstanceID)
+ if status != PASS:
+ raise Exception("Unable to parse InstanceID: %s" % \
+ rasd.InstanceID)
+
+ if guest == guest_name:
+ inst = rasd
+ break
+
+ if inst is None:
+ raise Exception("%s instance for %s not found" % (drasd_cn,
+ guest_name))
+
+ if inst.Address != addr:
+ raise Exception("%s instance for %s not found" % (drasd_cn,
+ guest_name))
+
+ except Exception, details:
+ logger.error(details)
+ return FAIL
+
+ return PASS
@do_main(sup_types)
def main():
@@ -84,20 +121,29 @@
else:
disk_cap = ""
+ cxml = get_class(options.virt)(test_dom)
+
+ guest_defined = False
+
try:
addr = make_long_disk_path(options.ip)
if addr is None:
raise Exception("Unable to create large disk image")
- define_params = get_vssd_rasd(options.ip, options.virt, addr, disk_cap)
- if len(define_params) != 2:
- raise Exception("Unable to get VSSD and RASDs for %s" % test_dom)
+ rasd_list = get_rasd_list(options.ip, options.virt, addr, disk_cap)
+ if len(rasd_list) < 1:
+ raise Exception("Unable to get template RASDs for %s" % test_dom)
- status = create_using_definesystem(test_dom, options.ip,
- params=define_params, ref_config="",
- virt=options.virt)
+ cxml.set_res_settings(rasd_list)
+ ret = cxml.cim_define(options.ip)
+ if not ret:
+ raise Exception("Unable to define %s" % test_dom)
+
+ guest_defined = True
+
+ status = verify_disk_path(options.ip, options.virt, addr, test_dom)
if status != PASS:
- raise Exception("Unable to define %s" % test_dom)
+ raise Exception("Failed to verify disk path for %s" % test_dom)
except Exception, details:
logger.error(details)
@@ -106,7 +152,8 @@
if os.path.exists(addr):
os.remove(addr)
- destroy_and_undefine_domain(test_dom, options.ip, options.virt)
+ if guest_defined == True:
+ cxml.undefine(options.ip)
return status
15 years, 10 months
Test Run Summary (Feb 16 2009): LXC on Fedora release 9.90.1 (Rawhide) with sfcb
by Guo Lian Yun
=================================================
Test Run Summary (Feb 16 2009): LXC on Fedora release 9.90.1 (Rawhide)
with sfcb
=================================================
Distro: Fedora release 9.90.1 (Rawhide)
Kernel: 2.6.27-0.323.rc6.fc10.x86_64
libvirt: 0.4.5
Hypervisor: QEMU 0.9.1
CIMOM: sfcb sfcbd 1.3.3preview
Libvirt-cim revision: 811
Libvirt-cim changeset: 72dc446be12c
Cimtest revision: 625
Cimtest changeset: f5ef41b6e30f
=================================================
FAIL : 1
XFAIL : 9
SKIP : 32
PASS : 104
-----------------
Total : 146
=================================================
FAIL Test Summary:
ElementConforms - 01_forward.py: FAIL
=================================================
XFAIL Test Summary:
ComputerSystem - 06_paused_active_suspend.py: XFAIL
ComputerSystem - 23_pause_pause.py: XFAIL
ComputerSystem - 32_start_reboot.py: XFAIL
ComputerSystem - 33_suspend_reboot.py: XFAIL
HostSystem - 02_hostsystem_to_rasd.py: XFAIL
HostedDependency - 03_enabledstate.py: XFAIL
VSSD - 04_vssd_to_rasd.py: XFAIL
VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL
VirtualSystemSettingDataComponent - 02_reverse.py: XFAIL
=================================================
SKIP Test Summary:
ComputerSystem - 02_nosystems.py: SKIP
ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP
ComputerSystemIndication - 01_created_indication.py: SKIP
ElementAllocatedFromPool - 03_reverse_errs.py: SKIP
ElementAllocatedFromPool - 04_forward_errs.py: SKIP
LogicalDisk - 01_disk.py: SKIP
LogicalDisk - 02_nodevs.py: SKIP
LogicalDisk - 03_ld_gi_errs.py: SKIP
NetworkPort - 01_netport.py: SKIP
NetworkPort - 02_np_gi_errors.py: SKIP
NetworkPort - 03_user_netport.py: SKIP
Processor - 01_processor.py: SKIP
Processor - 02_definesys_get_procs.py: SKIP
Processor - 03_proc_gi_errs.py: SKIP
RASD - 04_disk_rasd_size.py: SKIP
RASD - 05_disk_rasd_emu_type.py: SKIP
ResourceAllocationFromPool - 05_RAPF_err.py: SKIP
ResourcePoolConfigurationService - 03_CreateResourcePool.py: SKIP
ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: SKIP
ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: SKIP
ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py:
SKIP
ResourcePoolConfigurationService - 07_DeleteResourcePool.py: SKIP
VSSD - 02_bootldr.py: SKIP
VirtualSystemManagementService - 06_addresource.py: SKIP
VirtualSystemManagementService - 08_modifyresource.py: SKIP
VirtualSystemManagementService - 09_procrasd_persist.py: SKIP
VirtualSystemManagementService - 11_define_memrasdunits.py: SKIP
VirtualSystemManagementService - 12_referenced_config.py: SKIP
VirtualSystemManagementService - 13_refconfig_additional_devs.py: SKIP
VirtualSystemMigrationService - 01_migratable_host.py: SKIP
VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP
VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP
=================================================
Full report:
--------------------------------------------------------------------
AllocationCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
AllocationCapabilities - 02_alloccap_gi_errs.py: PASS
--------------------------------------------------------------------
ComputerSystem - 01_enum.py: PASS
--------------------------------------------------------------------
ComputerSystem - 02_nosystems.py: SKIP
ERROR - System has defined domains; unable to run
--------------------------------------------------------------------
ComputerSystem - 03_defineVS.py: PASS
--------------------------------------------------------------------
ComputerSystem - 04_defineStartVS.py: PASS
--------------------------------------------------------------------
ComputerSystem - 05_activate_defined_start.py: PASS
--------------------------------------------------------------------
ComputerSystem - 06_paused_active_suspend.py: XFAIL
ERROR - Got CIM error Unable to pause domain: this function is
not supported by the hypervisor: virDomainSuspend with return code 1
ERROR - Exception variable: Unable pause dom 'DomST1'
InvokeMethod(RequestStateChange): Unable to pause domain: this function is
not supported by the hypervisor: virDomainSuspend
Bug:<00011>
--------------------------------------------------------------------
ComputerSystem - 22_define_suspend.py: PASS
--------------------------------------------------------------------
ComputerSystem - 23_pause_pause.py: XFAIL
ERROR - Got CIM error Unable to pause domain: this function is
not supported by the hypervisor: virDomainSuspend with return code 1
ERROR - Exception: 'Unable pause dom 'cs_test_domain''
InvokeMethod(RequestStateChange): Unable to pause domain: this function is
not supported by the hypervisor: virDomainSuspend
Bug:<00011>
--------------------------------------------------------------------
ComputerSystem - 27_define_pause_errs.py: PASS
--------------------------------------------------------------------
ComputerSystem - 32_start_reboot.py: XFAIL
ERROR - Got CIM error Unable to reboot domain: this function is
not supported by the hypervisor: virDomainReboot with return code 1
ERROR - Exception: Unable reboot dom 'cs_test_domain'
InvokeMethod(RequestStateChange): Unable to reboot domain: this function
is not supported by the hypervisor: virDomainReboot
Bug:<00005>
--------------------------------------------------------------------
ComputerSystem - 33_suspend_reboot.py: XFAIL
ERROR - Got CIM error State not supported with return code 7
ERROR - Exception: Unable Suspend dom 'test_domain'
InvokeMethod(RequestStateChange): State not supported
Bug:<00012>
--------------------------------------------------------------------
ComputerSystem - 35_start_reset.py: PASS
--------------------------------------------------------------------
ComputerSystem - 40_RSC_start.py: PASS
--------------------------------------------------------------------
ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP
--------------------------------------------------------------------
ComputerSystem - 42_cs_gi_errs.py: PASS
--------------------------------------------------------------------
ComputerSystemIndication - 01_created_indication.py: SKIP
--------------------------------------------------------------------
ElementAllocatedFromPool - 01_forward.py: PASS
--------------------------------------------------------------------
ElementAllocatedFromPool - 02_reverse.py: PASS
--------------------------------------------------------------------
ElementAllocatedFromPool - 03_reverse_errs.py: SKIP
--------------------------------------------------------------------
ElementAllocatedFromPool - 04_forward_errs.py: SKIP
--------------------------------------------------------------------
ElementCapabilities - 01_forward.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 02_reverse.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 03_forward_errs.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 05_hostsystem_cap.py: PASS
--------------------------------------------------------------------
ElementConforms - 01_forward.py: FAIL
ERROR - verify_fields() exception:
u'LXC_AllocationCapabilities'
ERROR - Exception: Failed to verify instance
Class not found
--------------------------------------------------------------------
ElementConforms - 02_reverse.py: PASS
--------------------------------------------------------------------
ElementConforms - 03_ectp_fwd_errs.py: PASS
--------------------------------------------------------------------
ElementConforms - 04_ectp_rev_errs.py: PASS
--------------------------------------------------------------------
ElementSettingData - 01_forward.py: PASS
--------------------------------------------------------------------
ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS
--------------------------------------------------------------------
EnabledLogicalElementCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS
--------------------------------------------------------------------
HostSystem - 01_enum.py: PASS
--------------------------------------------------------------------
HostSystem - 02_hostsystem_to_rasd.py: XFAIL
ERROR - InstanceID Mismatch
ERROR - Returned CrossClass_GuestDom/mouse:xen instead of
CrossClass_GuestDom/mouse:usb
Class not found
Bug:<00009>
--------------------------------------------------------------------
HostSystem - 03_hs_to_settdefcap.py: PASS
--------------------------------------------------------------------
HostSystem - 04_hs_to_EAPF.py: PASS
--------------------------------------------------------------------
HostSystem - 05_hs_gi_errs.py: PASS
--------------------------------------------------------------------
HostSystem - 06_hs_to_vsms.py: PASS
--------------------------------------------------------------------
HostedAccessPoint - 01_forward.py: PASS
--------------------------------------------------------------------
HostedAccessPoint - 02_reverse.py: PASS
--------------------------------------------------------------------
HostedDependency - 01_forward.py: PASS
--------------------------------------------------------------------
HostedDependency - 02_reverse.py: PASS
--------------------------------------------------------------------
HostedDependency - 03_enabledstate.py: XFAIL
ERROR - Exception: (1, u'Unable to pause domain: this function
is not supported by the hypervisor: virDomainSuspend')
ERROR - Failed to suspend the dom: hd_domain1
InvokeMethod(RequestStateChange): Unable to pause domain: this function is
not supported by the hypervisor: virDomainSuspend
Bug:<00011>
--------------------------------------------------------------------
HostedDependency - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 01_forward.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 02_reverse.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 03_forward_errs.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
HostedService - 01_forward.py: PASS
--------------------------------------------------------------------
HostedService - 02_reverse.py: PASS
--------------------------------------------------------------------
HostedService - 03_forward_errs.py: PASS
--------------------------------------------------------------------
HostedService - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS
--------------------------------------------------------------------
LogicalDisk - 01_disk.py: SKIP
--------------------------------------------------------------------
LogicalDisk - 02_nodevs.py: SKIP
ERROR - System has defined domains; unable to run
--------------------------------------------------------------------
LogicalDisk - 03_ld_gi_errs.py: SKIP
--------------------------------------------------------------------
Memory - 01_memory.py: PASS
--------------------------------------------------------------------
Memory - 02_defgetmem.py: PASS
--------------------------------------------------------------------
Memory - 03_mem_gi_errs.py: PASS
--------------------------------------------------------------------
NetworkPort - 01_netport.py: SKIP
--------------------------------------------------------------------
NetworkPort - 02_np_gi_errors.py: SKIP
--------------------------------------------------------------------
NetworkPort - 03_user_netport.py: SKIP
--------------------------------------------------------------------
Processor - 01_processor.py: SKIP
--------------------------------------------------------------------
Processor - 02_definesys_get_procs.py: SKIP
--------------------------------------------------------------------
Processor - 03_proc_gi_errs.py: SKIP
--------------------------------------------------------------------
Profile - 01_enum.py: PASS
--------------------------------------------------------------------
Profile - 02_profile_to_elec.py: PASS
--------------------------------------------------------------------
Profile - 03_rprofile_gi_errs.py: PASS
--------------------------------------------------------------------
RASD - 01_verify_rasd_fields.py: PASS
--------------------------------------------------------------------
RASD - 02_enum.py: PASS
--------------------------------------------------------------------
RASD - 03_rasd_errs.py: PASS
--------------------------------------------------------------------
RASD - 04_disk_rasd_size.py: SKIP
--------------------------------------------------------------------
RASD - 05_disk_rasd_emu_type.py: SKIP
--------------------------------------------------------------------
RedirectionService - 01_enum_crs.py: PASS
--------------------------------------------------------------------
RedirectionService - 02_enum_crscap.py: PASS
--------------------------------------------------------------------
RedirectionService - 03_RedirectionSAP_errs.py: PASS
--------------------------------------------------------------------
ReferencedProfile - 01_verify_refprof.py: PASS
--------------------------------------------------------------------
ReferencedProfile - 02_refprofile_errs.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 01_forward.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 02_reverse.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 03_forward_errs.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 05_RAPF_err.py: SKIP
--------------------------------------------------------------------
ResourcePool - 01_enum.py: PASS
--------------------------------------------------------------------
ResourcePool - 02_rp_gi_errors.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 01_enum.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 03_CreateResourcePool.py: SKIP
--------------------------------------------------------------------
ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: SKIP
--------------------------------------------------------------------
ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: SKIP
--------------------------------------------------------------------
ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py:
SKIP
--------------------------------------------------------------------
ResourcePoolConfigurationService - 07_DeleteResourcePool.py: SKIP
--------------------------------------------------------------------
ServiceAccessBySAP - 01_forward.py: PASS
--------------------------------------------------------------------
ServiceAccessBySAP - 02_reverse.py: PASS
--------------------------------------------------------------------
SettingsDefine - 01_forward.py: PASS
--------------------------------------------------------------------
SettingsDefine - 02_reverse.py: PASS
--------------------------------------------------------------------
SettingsDefine - 03_sds_fwd_errs.py: PASS
--------------------------------------------------------------------
SettingsDefine - 04_sds_rev_errs.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 01_forward.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 03_forward_errs.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS
--------------------------------------------------------------------
SystemDevice - 01_forward.py: PASS
--------------------------------------------------------------------
SystemDevice - 02_reverse.py: PASS
--------------------------------------------------------------------
SystemDevice - 03_fwderrs.py: PASS
--------------------------------------------------------------------
VSSD - 01_enum.py: PASS
--------------------------------------------------------------------
VSSD - 02_bootldr.py: SKIP
--------------------------------------------------------------------
VSSD - 03_vssd_gi_errs.py: PASS
--------------------------------------------------------------------
VSSD - 04_vssd_to_rasd.py: XFAIL
ERROR - InstanceID Mismatch
ERROR - Returned VSSDC_dom/mouse:xen instead of
VSSDC_dom/mouse:usb
Bug:<00009>
--------------------------------------------------------------------
VirtualSystemManagementCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 01_definesystem_name.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 02_destroysystem.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 03_definesystem_ess.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 04_definesystem_ers.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 05_destroysystem_neg.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 06_addresource.py: SKIP
--------------------------------------------------------------------
VirtualSystemManagementService - 07_addresource_neg.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 08_modifyresource.py: SKIP
--------------------------------------------------------------------
VirtualSystemManagementService - 09_procrasd_persist.py: SKIP
--------------------------------------------------------------------
VirtualSystemManagementService - 10_hv_version.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 11_define_memrasdunits.py: SKIP
--------------------------------------------------------------------
VirtualSystemManagementService - 12_referenced_config.py: SKIP
--------------------------------------------------------------------
VirtualSystemManagementService - 13_refconfig_additional_devs.py: SKIP
--------------------------------------------------------------------
VirtualSystemManagementService - 14_define_sys_disk.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL
ERROR - rstest_domain not updated properly.
ERROR - Exp AutomaticRecoveryAction=3, got 2
Bug:<00008>
--------------------------------------------------------------------
VirtualSystemMigrationCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationService - 01_migratable_host.py: SKIP
--------------------------------------------------------------------
VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP
--------------------------------------------------------------------
VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP
--------------------------------------------------------------------
VirtualSystemMigrationSettingData - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 01_forward.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 02_reverse.py: XFAIL
ERROR - Returned VSSDC_dom/mouse:xen instead of
VSSDC_dom/mouse:usb
Bug:<00009>
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotService - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py:
PASS
--------------------------------------------------------------------
15 years, 10 months
[PATCH] [TEST] Fixing VSMS 09_procrasd_persist.py tc
by Deepti B. Kalakeri
# HG changeset patch
# User Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
# Date 1234510269 28800
# Node ID 2a980012c95deb888c86072476277a73ffd4587e
# Parent 1c9b73e578833fd9fb6d496ebc506e04d52213cf
[TEST] Fixing VSMS 09_procrasd_persist.py tc.
1) Added description to the tc.
2) Removed unnecessary import stmts
3) Changed the tc to use cim_define(), cim_start(), cim_destroy().
4) Added the check to verify the VirtualQuantity
5) Aligned the tc to fit in 80 columns
Added verification of the Linmit, Weight, VirtualQuantity persistance over sequence of
define/start/destroy sequence.
Tested for KVM/Xen/LXC with current sources, KVM with F9 rpm.
This tc fails with KVM on F10.
Signed-off-by: Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
diff -r 1c9b73e57883 -r 2a980012c95d suites/libvirt-cim/cimtest/VirtualSystemManagementService/09_procrasd_persist.py
--- a/suites/libvirt-cim/cimtest/VirtualSystemManagementService/09_procrasd_persist.py Thu Feb 12 01:54:24 2009 -0800
+++ b/suites/libvirt-cim/cimtest/VirtualSystemManagementService/09_procrasd_persist.py Thu Feb 12 23:31:09 2009 -0800
@@ -19,56 +19,88 @@
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
+# Purpose:
+# Verify values for VirtualQuantity, limit and weight of ProcRASD are
+# persisted properly over define/start/destroy sequence of the guest.
+#
+# Steps:
+# 1) Get the default rasds
+# 2) Set the ProcRASD VirtualQuantity, Weight, Limit, InstanceID values
+# 3) Define the guest using the configuration
+# 4) Verify the proc settings of the guest
+# 5) start the guest and verify the proc settings of the guest
+# 6) Destroy and undefine the guest
+# Repeat the Sequence 3 - 6 in loop to see that
+# the VirtualQuantity, limit and weight are maintained as passed to
+# via the ProcRASD.
+#
import sys
-import pywbem
-from XenKvmLib.common_util import call_request_state_change, \
- poll_for_state_change
-from XenKvmLib import vsms
-from XenKvmLib.enumclass import GetInstance
-from XenKvmLib.common_util import get_typed_class
-from VirtLib import utils
+from pywbem.cim_types import Uint64, Uint32
+from XenKvmLib.vxml import get_class
+from XenKvmLib.enumclass import EnumInstances
+from XenKvmLib.classes import get_typed_class, inst_to_mof
from CimTest.Globals import logger
from XenKvmLib.const import do_main
from CimTest.ReturnCodes import FAIL, PASS
-from XenKvmLib.test_doms import destroy_and_undefine_domain
+from XenKvmLib.rasd import get_default_rasds
sup_types = ['Xen', 'XenFV', 'KVM']
-default_dom = 'rstest_domain'
+test_dom = 'procrasd_persist_dom'
-nvcpu = 2
+nvcpu = 3
weight = 124
-limit = 256
+limit = 512
-REQUESTED_STATE = 2
-TIME = "00000000000000.000000:000"
+def setup_guest(ip, virt, cxml, prasd_cn):
+ rasds = get_default_rasds(ip, virt)
+ rasd_list= { prasd_cn : None }
+
+ for rasd in rasds:
+ if rasd.classname == prasd_cn:
+ rasd['InstanceID'] = '%s/proc' %test_dom
+ rasd['VirtualQuantity'] = Uint64(nvcpu)
+ rasd['Weight'] = Uint32(weight)
+ rasd['Limit'] = Uint64(limit)
+ rasd_list[prasd_cn] = inst_to_mof(rasd)
-def setup_rasd_mof(ip, vtype):
- vssd, rasd = vsms.default_vssd_rasd_str(default_dom, virt=vtype)
+ if rasd_list[prasd_cn] is None:
+ logger.error("Unable to set template ProcRASD")
+ return FAIL
- class_pasd = vsms.get_pasd_class(vtype)
- proc_inst = class_pasd(default_dom, nvcpu, weight, limit)
- proc_mof = proc_inst.mof()
+ cxml.set_res_settings(rasd_list)
+ ret = cxml.cim_define(ip)
+ if not ret:
+ logger.error("Unable to define %s ", test_dom)
+ return FAIL
- for i in range(len(rasd)):
- if "ProcResourceAllocationSettingData" in rasd[i]:
- rasd[i] = proc_mof
- return PASS, vssd, rasd
+ return PASS
- return FAIL, vssd, rasd
+def check_proc_sched(server, cn_name):
+ try:
+ proc_rasd = None
+ rasds = EnumInstances(server, cn_name, ret_cim_inst=True)
+ for rasd in rasds:
+ if test_dom in rasd["InstanceID"]:
+ proc_rasd = rasd
-def check_proc_sched(server, virt):
- try:
- key_list = {"InstanceID" : '%s/proc' %default_dom}
- cn_name = get_typed_class(virt, 'ProcResourceAllocationSettingData')
- proc = GetInstance(server, cn_name, key_list)
+ if proc_rasd == None:
+ logger.error("Did not find test RASD on server")
+ return FAIL
- if proc.Limit != limit:
- logger.error("Limit is %i, expected %i", proc.Limit, limit)
+ if proc_rasd["VirtualQuantity"] != nvcpu:
+ logger.error("VirtualQuantity is %i, expected %i",
+ proc_rasd["VirtualQuantity"], nvcpu)
return FAIL
- if proc.Weight != weight:
- logger.error("Weight is %i, expected %i", proc.Weight, weight)
+ if proc_rasd["Limit"] != limit:
+ logger.error("Limit is %i, expected %i",
+ proc_rasd["Limit"], limit)
+ return FAIL
+
+ if proc_rasd["Weight"] != weight:
+ logger.error("Weight is %i, expected %i",
+ proc_rasd["Weight"], weight)
return FAIL
except Exception, details:
@@ -79,40 +111,50 @@ def check_proc_sched(server, virt):
@do_main(sup_types)
def main():
- options = main.options
+ options = main.options
+ virt = options.virt
+ server = options.ip
+
+ cxml = get_class(virt)(test_dom)
+ prasd_cn = get_typed_class(virt, "ProcResourceAllocationSettingData")
+ dom_define = dom_start = False
+ try:
+ for count in range(3):
+ status = setup_guest(server, virt, cxml, prasd_cn)
+ if status != PASS:
+ return status
+
+ dom_define = True
+ status = check_proc_sched(server, prasd_cn)
+ if status != PASS:
+ raise Exception("CPU scheduling not set properly for "
+ " defined dom: %s" % test_dom)
+
+ status = cxml.cim_start(server)
+ if status != PASS:
+ raise Exception("Unable to start %s " % test_dom)
- status, vssd, rasd = setup_rasd_mof(options.ip, options.virt)
- if status != PASS:
- return status
+ dom_start = True
+ status = check_proc_sched(server, prasd_cn)
+ if status != PASS:
+ raise Exception("CPU scheduling not set properly for the dom: "
+ "%s" % test_dom)
- try:
- service = vsms.get_vsms_class(options.virt)(options.ip)
- service.DefineSystem(SystemSettings=vssd,
- ResourceSettings=rasd,
- ReferenceConfiguration=' ')
+ cxml.cim_destroy(server)
+ dom_start = False
- rc = call_request_state_change(default_dom, options.ip,
- REQUESTED_STATE, TIME, options.virt)
- if rc != 0:
- raise Exception("Unable to start %s using RequestedStateChange()" %
- default_dom)
-
- status, dom_cs = poll_for_state_change(options.ip, options.virt,
- default_dom, REQUESTED_STATE)
- if status != PASS:
- raise Exception("%s didn't change state as expected" % default_dom)
-
- status = check_proc_sched(options.ip, options.virt)
- if status != PASS:
- raise Exception("%s CPU scheduling not set properly" % default_dom)
-
- status = PASS
+ cxml.undefine(server)
+ dom_define = False
except Exception, details:
logger.error("Exception: details %s", details)
status = FAIL
- destroy_and_undefine_domain(default_dom, options.ip, options.virt)
+ if dom_start == True:
+ cxml.cim_destroy(server)
+
+ if dom_define == True:
+ cxml.undefine(server)
return status
15 years, 10 months
ProcRASD VirtualQuantity Field issue for KVM on F10.
by Deepti B Kalakeri
Hi,
The VirtualQuantity field of the ProcRASD is not getting set properly in
case of a *running* KVM guest on F10 with the libvirt-0.5.0-1.fc10.x86_64.
While this is not the case for running KVM guest on F9 with
libvirt-0.4.4-2.fc9.x86_64. Also, there is no problem with a *running*
Xen guest.
The following is the error message in the KVM debug output:
libvir: Domain error : invalid argument in virDomainGetVcpus
libvir: Domain error : invalid argument in virDomainGetVcpus
This is coming from the call to virDomainGetVcpus() from the
domain_vcpu_count() function defined in libxkutil/misc_util.c file.
I verified the signature of the virDomainGetVcpus() with the one given
on libvirt.org and it matches.
The problem is only when the guest is started, else for the defined
guest the VirtualQuantity field of the ProcRASD is set to the vcpu
value used.
_Steps to reproduce:
_1) Apply the patch "Fixing VSMS 09_procrasd_persist.py tc" and run
Or
2) use the following xml:
<domain type="kvm">
<name>procrasd_persist</name>
<on_poweroff>destroy</on_poweroff>
<on_crash>destroy</on_crash>
<uuid>ca793060-a7d0-42d9-9bd2-1db7149f2fe1</uuid>
<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"/>
</disk>
<interface type="network">
<mac address="11:22:33:aa:bb:cc"/>
<source network="default"/>
</interface>
<input type="mouse" bus="ps2"/>
<graphics type="vnc" port="-1" listen="127.0.0.1" keymap="en-us"/>
</devices>
</domain>
1) Define the guest using the above xml.
2) Verify the VirtualQuantity field of the ProcRASD. It will be set to
the value given in the vcpu.
3) start the guest.
4) Verify the VirtualQuantity field of the ProcRASD. It will be set to 0
and not to the value given in the vcpu.
I am not sure if this is expected behavior for KVM only or if Xen guest
should also behave in the same way, or is it a probable regression in
the latest libvirt library on F10.
I suspect the libvirt library though. Any thoughts ???
--
Thanks and Regards,
Deepti B. Kalakeri
IBM Linux Technology Center
deeptik(a)linux.vnet.ibm.com
15 years, 10 months
Test Run Summary (Feb 09 2009): Xen on Red Hat Enterprise Linux Server release 5.2 Beta (Tikanga) with Pegasus
by Deepti B Kalakeri
=================================================
Test Run Summary (Feb 09 2009): Xen on Red Hat Enterprise Linux Server release 5.2 Beta (Tikanga) with Pegasus
=================================================
Distro: Red Hat Enterprise Linux Server release 5.2 Beta (Tikanga)
Kernel: 2.6.18-88.el5xen
libvirt: 0.3.3
Hypervisor: Xen 3.1.0
CIMOM: Pegasus 2.7.0
Libvirt-cim revision: 811
Libvirt-cim changeset: 72dc446be12c
Cimtest revision: 615
Cimtest changeset: 263e285881ac
=================================================
FAIL : 6
XFAIL : 1
SKIP : 3
PASS : 132
-----------------
Total : 142
=================================================
FAIL Test Summary:
ElementConforms - 01_forward.py: FAIL
HostSystem - 03_hs_to_settdefcap.py: FAIL
KVMRedirectionSAP - 01_enum_KVMredSAP.py: FAIL
RASD - 01_verify_rasd_fields.py: FAIL
SettingsDefineCapabilities - 01_forward.py: FAIL
VirtualSystemMigrationService - 02_host_migrate_type.py: FAIL
=================================================
XFAIL Test Summary:
ComputerSystem - 33_suspend_reboot.py: XFAIL
=================================================
SKIP Test Summary:
ComputerSystem - 02_nosystems.py: SKIP
LogicalDisk - 02_nodevs.py: SKIP
NetworkPort - 03_user_netport.py: SKIP
=================================================
Full report:
--------------------------------------------------------------------
AllocationCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
AllocationCapabilities - 02_alloccap_gi_errs.py: PASS
--------------------------------------------------------------------
ComputerSystem - 01_enum.py: PASS
--------------------------------------------------------------------
ComputerSystem - 02_nosystems.py: SKIP
--------------------------------------------------------------------
ComputerSystem - 03_defineVS.py: PASS
--------------------------------------------------------------------
ComputerSystem - 04_defineStartVS.py: PASS
--------------------------------------------------------------------
ComputerSystem - 05_activate_defined_start.py: PASS
--------------------------------------------------------------------
ComputerSystem - 06_paused_active_suspend.py: PASS
--------------------------------------------------------------------
ComputerSystem - 22_define_suspend.py: PASS
--------------------------------------------------------------------
ComputerSystem - 23_pause_pause.py: PASS
--------------------------------------------------------------------
ComputerSystem - 27_define_pause_errs.py: PASS
--------------------------------------------------------------------
ComputerSystem - 32_start_reboot.py: PASS
--------------------------------------------------------------------
ComputerSystem - 33_suspend_reboot.py: XFAIL
ERROR - Got CIM error CIM_ERR_NOT_SUPPORTED: State not supported with return code 7
ERROR - Exception: Unable Suspend dom 'test_domain'
InvokeMethod(RequestStateChange): CIM_ERR_NOT_SUPPORTED: State not supported
Bug:<00012>
--------------------------------------------------------------------
ComputerSystem - 35_start_reset.py: PASS
--------------------------------------------------------------------
ComputerSystem - 40_RSC_start.py: PASS
--------------------------------------------------------------------
ComputerSystem - 41_cs_to_settingdefinestate.py: PASS
--------------------------------------------------------------------
ComputerSystem - 42_cs_gi_errs.py: PASS
--------------------------------------------------------------------
ComputerSystemIndication - 01_created_indication.py: PASS
--------------------------------------------------------------------
ElementAllocatedFromPool - 01_forward.py: PASS
--------------------------------------------------------------------
ElementAllocatedFromPool - 02_reverse.py: PASS
--------------------------------------------------------------------
ElementAllocatedFromPool - 03_reverse_errs.py: PASS
--------------------------------------------------------------------
ElementAllocatedFromPool - 04_forward_errs.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 01_forward.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 02_reverse.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 03_forward_errs.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
ElementCapabilities - 05_hostsystem_cap.py: PASS
--------------------------------------------------------------------
ElementConforms - 01_forward.py: FAIL
ERROR - verify_fields() exception: u'Xen_AllocationCapabilities'
ERROR - Exception: Failed to verify instance
CIM_ERR_INVALID_CLASS: Linux_ComputerSystem
--------------------------------------------------------------------
ElementConforms - 02_reverse.py: PASS
--------------------------------------------------------------------
ElementConforms - 03_ectp_fwd_errs.py: PASS
--------------------------------------------------------------------
ElementConforms - 04_ectp_rev_errs.py: PASS
--------------------------------------------------------------------
ElementSettingData - 01_forward.py: PASS
--------------------------------------------------------------------
ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS
--------------------------------------------------------------------
EnabledLogicalElementCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS
--------------------------------------------------------------------
HostSystem - 01_enum.py: PASS
--------------------------------------------------------------------
HostSystem - 02_hostsystem_to_rasd.py: PASS
--------------------------------------------------------------------
HostSystem - 03_hs_to_settdefcap.py: FAIL
ERROR - 'Xen_SettingsDefineCapabilities' returned 16 RASD objects instead of 8
CIM_ERR_INVALID_CLASS: Linux_ComputerSystem
--------------------------------------------------------------------
HostSystem - 04_hs_to_EAPF.py: PASS
--------------------------------------------------------------------
HostSystem - 05_hs_gi_errs.py: PASS
--------------------------------------------------------------------
HostSystem - 06_hs_to_vsms.py: PASS
--------------------------------------------------------------------
HostedDependency - 01_forward.py: PASS
--------------------------------------------------------------------
HostedDependency - 02_reverse.py: PASS
--------------------------------------------------------------------
HostedDependency - 03_enabledstate.py: PASS
--------------------------------------------------------------------
HostedDependency - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 01_forward.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 02_reverse.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 03_forward_errs.py: PASS
--------------------------------------------------------------------
HostedResourcePool - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
HostedService - 01_forward.py: PASS
--------------------------------------------------------------------
HostedService - 02_reverse.py: PASS
--------------------------------------------------------------------
HostedService - 03_forward_errs.py: PASS
--------------------------------------------------------------------
HostedService - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
KVMRedirectionSAP - 01_enum_KVMredSAP.py: FAIL
ERROR - Exception details: 'ElementName' Value Mismatch, Expected 5959:-1, Got -1:-1
ERROR - Exception: Failed to verify information for the defined dom:test_kvmredsap_dom
--------------------------------------------------------------------
LogicalDisk - 01_disk.py: PASS
--------------------------------------------------------------------
LogicalDisk - 02_nodevs.py: SKIP
ERROR - System has defined domains; unable to run
--------------------------------------------------------------------
LogicalDisk - 03_ld_gi_errs.py: PASS
--------------------------------------------------------------------
Memory - 01_memory.py: PASS
--------------------------------------------------------------------
Memory - 02_defgetmem.py: PASS
--------------------------------------------------------------------
Memory - 03_mem_gi_errs.py: PASS
--------------------------------------------------------------------
NetworkPort - 01_netport.py: PASS
--------------------------------------------------------------------
NetworkPort - 02_np_gi_errors.py: PASS
--------------------------------------------------------------------
NetworkPort - 03_user_netport.py: SKIP
--------------------------------------------------------------------
Processor - 01_processor.py: PASS
--------------------------------------------------------------------
Processor - 02_definesys_get_procs.py: PASS
--------------------------------------------------------------------
Processor - 03_proc_gi_errs.py: PASS
--------------------------------------------------------------------
Profile - 01_enum.py: PASS
--------------------------------------------------------------------
Profile - 02_profile_to_elec.py: PASS
--------------------------------------------------------------------
Profile - 03_rprofile_gi_errs.py: PASS
--------------------------------------------------------------------
RASD - 01_verify_rasd_fields.py: FAIL
ERROR - (6, u'CIM_ERR_NOT_FOUND: No such instance (domguest/proc)')
ERROR - Enum RASDs failed
--------------------------------------------------------------------
RASD - 02_enum.py: PASS
--------------------------------------------------------------------
RASD - 03_rasd_errs.py: PASS
--------------------------------------------------------------------
RASD - 04_disk_rasd_size.py: PASS
--------------------------------------------------------------------
RASD - 05_disk_rasd_emu_type.py: PASS
--------------------------------------------------------------------
RedirectionService - 01_enum_crs.py: PASS
--------------------------------------------------------------------
RedirectionService - 02_enum_crscap.py: PASS
--------------------------------------------------------------------
RedirectionService - 03_RedirectionSAP_errs.py: PASS
--------------------------------------------------------------------
ReferencedProfile - 01_verify_refprof.py: PASS
--------------------------------------------------------------------
ReferencedProfile - 02_refprofile_errs.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 01_forward.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 02_reverse.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 03_forward_errs.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 04_reverse_errs.py: PASS
--------------------------------------------------------------------
ResourceAllocationFromPool - 05_RAPF_err.py: PASS
--------------------------------------------------------------------
ResourcePool - 01_enum.py: PASS
--------------------------------------------------------------------
ResourcePool - 02_rp_gi_errors.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 01_enum.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: PASS
--------------------------------------------------------------------
ResourcePoolConfigurationService - 07_DeleteResourcePool.py: PASS
--------------------------------------------------------------------
SettingsDefine - 01_forward.py: PASS
--------------------------------------------------------------------
SettingsDefine - 02_reverse.py: PASS
--------------------------------------------------------------------
SettingsDefine - 03_sds_fwd_errs.py: PASS
--------------------------------------------------------------------
SettingsDefine - 04_sds_rev_errs.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 01_forward.py: FAIL
ERROR - Xen_SettingsDefineCapabilities returned 16 ResourcePool objects instead of 8
--------------------------------------------------------------------
SettingsDefineCapabilities - 03_forward_errs.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS
--------------------------------------------------------------------
SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS
--------------------------------------------------------------------
SystemDevice - 01_forward.py: PASS
--------------------------------------------------------------------
SystemDevice - 02_reverse.py: PASS
--------------------------------------------------------------------
SystemDevice - 03_fwderrs.py: PASS
--------------------------------------------------------------------
VSSD - 01_enum.py: PASS
--------------------------------------------------------------------
VSSD - 02_bootldr.py: PASS
--------------------------------------------------------------------
VSSD - 03_vssd_gi_errs.py: PASS
--------------------------------------------------------------------
VSSD - 04_vssd_to_rasd.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 01_definesystem_name.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 02_destroysystem.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 03_definesystem_ess.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 04_definesystem_ers.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 05_destroysystem_neg.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 06_addresource.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 07_addresource_neg.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 08_modifyresource.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 09_procrasd_persist.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 10_hv_version.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 11_define_memrasdunits.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 12_referenced_config.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 13_refconfig_additional_devs.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 14_define_sys_disk.py: PASS
--------------------------------------------------------------------
VirtualSystemManagementService - 15_mod_system_settings.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationService - 01_migratable_host.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationService - 02_host_migrate_type.py: FAIL
ERROR - EnabledState is 9 instead of 2.
ERROR - Try to increase the timeout and run the test again
ERROR - Error start domain dom_migrate
--------------------------------------------------------------------
VirtualSystemMigrationService - 05_migratable_host_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationSettingData - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 01_forward.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 02_reverse.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotService - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS
--------------------------------------------------------------------
VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS
--------------------------------------------------------------------
--
Thanks and Regards,
Deepti B. Kalakeri
IBM Linux Technology Center
deeptik(a)linux.vnet.ibm.com
15 years, 10 months
[PATCH] [TEST] #2 Fix DiskRASD and InputRASD verification for LXC
by yunguol@cn.ibm.com
# HG changeset patch
# User Guolian Yun <yunguol(a)cn.ibm.com>
# Date 1234491879 28800
# Node ID f5ef41b6e30f104813132be50f405afdef80cc8a
# Parent 1c9b73e578833fd9fb6d496ebc506e04d52213cf
[TEST] #2 Fix DiskRASD and InputRASD verification for LXC
Updates from 1 to 2:
Remove import lib of "from XenKvmLib.rasd import InstId_err", that is no longer used in this test case
1) Set test_disk as '/tmp' for LXC
2) Return XFAIL_RC when libvirt allows the user to specify a mouse with "xen" bus type for LXC
Tested for KVM/LXC with current sources
Signed-off-by: Guolian Yun<yunguol(a)cn.ibm.com>
diff -r 1c9b73e57883 -r f5ef41b6e30f suites/libvirt-cim/cimtest/VirtualSystemSettingDataComponent/02_reverse.py
--- a/suites/libvirt-cim/cimtest/VirtualSystemSettingDataComponent/02_reverse.py Thu Feb 12 01:54:24 2009 -0800
+++ b/suites/libvirt-cim/cimtest/VirtualSystemSettingDataComponent/02_reverse.py Thu Feb 12 18:24:39 2009 -0800
@@ -51,11 +51,11 @@
from XenKvmLib.test_doms import destroy_and_undefine_all
from XenKvmLib import vxml
from XenKvmLib.classes import get_typed_class
-from XenKvmLib.rasd import InstId_err
from CimTest.Globals import logger, CIM_ERROR_ASSOCIATORS
from XenKvmLib.const import do_main
-from CimTest.ReturnCodes import PASS, FAIL
+from CimTest.ReturnCodes import PASS, FAIL, XFAIL_RC
+bug_libvirt = "00009"
sup_types = ['Xen', 'XenFV', 'KVM', 'LXC']
test_dom = "VSSDC_dom"
@@ -66,7 +66,7 @@
def check_rasd_values(id, exp_id):
try:
if id != exp_id:
- InstId_err(assoc_info[i], rasd_list['proc_rasd'])
+ logger.error("Returned %s instead of %s", id, exp_id)
return FAIL
except Exception, detail :
@@ -127,6 +127,8 @@
elif inst.classname == input_cn:
status = check_rasd_values(inst['InstanceID'],
rasd_list['input_rasd'])
+ if status == FAIL and virt == "LXC":
+ return XFAIL_RC(bug_libvirt)
elif inst.classname == grap_cn:
status = check_rasd_values(inst['InstanceID'],
rasd_list['grap_rasd'])
@@ -154,6 +156,8 @@
global test_disk
if options.virt == "Xen":
test_disk = "xvdb"
+ elif options.virt == "LXC":
+ test_disk = "/tmp"
else:
test_disk = "hdb"
15 years, 10 months
[PATCH] [TEST] Fix DiskRASD and InputRASD verification for LXC
by yunguol@cn.ibm.com
# HG changeset patch
# User Guolian Yun <yunguol(a)cn.ibm.com>
# Date 1234428234 28800
# Node ID 7948c996ba56f86e2791a0d46d5f69266fa2ed8c
# Parent 0daae14ce5848711408fdd465fd2c03f20314466
[TEST] Fix DiskRASD and InputRASD verification for LXC
1) Set test_disk as '/tmp' for LXC
2) Return XFAIL_RC when libvirt allows the user to specify a mouse with "xen" bus type for LXC
Tested for KVM/LXC with current sources
Signed-off-by: Guolian Yun<yunguol(a)cn.ibm.com>
diff -r 0daae14ce584 -r 7948c996ba56 suites/libvirt-cim/cimtest/VirtualSystemSettingDataComponent/02_reverse.py
--- a/suites/libvirt-cim/cimtest/VirtualSystemSettingDataComponent/02_reverse.py Wed Feb 11 21:00:52 2009 -0200
+++ b/suites/libvirt-cim/cimtest/VirtualSystemSettingDataComponent/02_reverse.py Thu Feb 12 00:43:54 2009 -0800
@@ -54,8 +54,9 @@
from XenKvmLib.rasd import InstId_err
from CimTest.Globals import logger, CIM_ERROR_ASSOCIATORS
from XenKvmLib.const import do_main
-from CimTest.ReturnCodes import PASS, FAIL
+from CimTest.ReturnCodes import PASS, FAIL, XFAIL_RC
+bug_libvirt = "00009"
sup_types = ['Xen', 'XenFV', 'KVM', 'LXC']
test_dom = "VSSDC_dom"
@@ -66,7 +67,7 @@
def check_rasd_values(id, exp_id):
try:
if id != exp_id:
- InstId_err(assoc_info[i], rasd_list['proc_rasd'])
+ logger.error("Returned %s instead of %s", id, exp_id)
return FAIL
except Exception, detail :
@@ -127,6 +128,8 @@
elif inst.classname == input_cn:
status = check_rasd_values(inst['InstanceID'],
rasd_list['input_rasd'])
+ if status == FAIL and virt == "LXC":
+ return XFAIL_RC(bug_libvirt)
elif inst.classname == grap_cn:
status = check_rasd_values(inst['InstanceID'],
rasd_list['grap_rasd'])
@@ -154,6 +157,8 @@
global test_disk
if options.virt == "Xen":
test_disk = "xvdb"
+ elif options.virt == "LXC":
+ test_disk = "/tmp"
else:
test_disk = "hdb"
15 years, 10 months
[PATCH] [TEST] #3 Update libraries present to follow the new coding style
by yunguol@cn.ibm.com
# HG changeset patch
# User Guolian Yun <yunguol(a)cn.ibm.com>
# Date 1234432464 28800
# Node ID f457c790dad0152f5b46dec271e865ca15c1d492
# Parent 0daae14ce5848711408fdd465fd2c03f20314466
[TEST] #3 Update libraries present to follow the new coding style
Updates from 2 to 3:
Add a space in logger info when split lines
Updates from 1 to 2:
Fixed logger info description to avoid extra whitespace
1) Use commas instead of percent signs when passing parameters to logger.error() and logger.info()
2) Split lines to 80-char width limit
Tested for KVM/LXC with current sources
Signed-off-by: Guolian Yun<yunguol(a)cn.ibm.com>
diff -r 0daae14ce584 -r f457c790dad0 suites/libvirt-cim/lib/XenKvmLib/assoc.py
--- a/suites/libvirt-cim/lib/XenKvmLib/assoc.py Wed Feb 11 21:00:52 2009 -0200
+++ b/suites/libvirt-cim/lib/XenKvmLib/assoc.py Thu Feb 12 01:54:24 2009 -0800
@@ -139,8 +139,8 @@
val = eval('exp_inst.' + key)
if prop_vals[i][1] != val:
- logger.error("%s val mismatch: got %s, expected %s" % (key,
- prop_vals[i][1], val))
+ logger.error("%s val mismatch: got %s, expected %s", key,
+ prop_vals[i][1], val)
return FAIL
return PASS
diff -r 0daae14ce584 -r f457c790dad0 suites/libvirt-cim/lib/XenKvmLib/common_util.py
--- a/suites/libvirt-cim/lib/XenKvmLib/common_util.py Wed Feb 11 21:00:52 2009 -0200
+++ b/suites/libvirt-cim/lib/XenKvmLib/common_util.py Thu Feb 12 01:54:24 2009 -0800
@@ -60,7 +60,7 @@
cs = enumclass.GetInstance(ip, cs_class, keys)
if cs.Name != domain_name:
- logger.error("VS %s is not found" % domain_name)
+ logger.error("VS %s is not found", domain_name)
return (1, cs)
except Exception, detail:
@@ -104,11 +104,11 @@
return PASS
return FAIL
- logger.error('Unexpected rc code %s and description:\n %s' % (rc, desc))
+ logger.error('Unexpected rc code %s and description:\n %s', rc, desc)
return FAIL
except Exception, details:
- logger.error('Error invoke method `DefineSystem\'. %s' % details)
+ logger.error('Error invoke method `DefineSystem\'. %s', details)
return FAIL
if exp_err != None:
@@ -150,7 +150,7 @@
TimeoutPeriod=pywbem.cim_types.CIMDateTime(time))
except Exception, detail:
- logger.error("Exception: %s" % detail)
+ logger.error("Exception: %s", detail)
return FAIL
return PASS
@@ -189,16 +189,16 @@
break
except Exception, detail:
- logger.error("Exception: %s" % detail)
+ logger.error("Exception: %s", detail)
return FAIL, dom_cs
if dom_cs is None or dom_cs.Name != dom:
- logger.error("CS instance not returned for %s." % dom)
+ logger.error("CS instance not returned for %s.", dom)
return FAIL, dom_cs
if dom_cs.EnabledState != exp_state:
- logger.error("EnabledState is %i instead of %i." % (dom_cs.EnabledState,
- exp_state))
+ logger.error("EnabledState is %i instead of %i.", dom_cs.EnabledState,
+ exp_state)
logger.error("Try to increase the timeout and run the test again")
return FAIL, dom_cs
diff -r 0daae14ce584 -r f457c790dad0 suites/libvirt-cim/lib/XenKvmLib/const.py
--- a/suites/libvirt-cim/lib/XenKvmLib/const.py Wed Feb 11 21:00:52 2009 -0200
+++ b/suites/libvirt-cim/lib/XenKvmLib/const.py Thu Feb 12 01:54:24 2009 -0800
@@ -140,8 +140,8 @@
destroy_and_undefine_all(options.ip, options.virt)
rc = f()
except Exception, e:
- logger.error('%s : %s' % (e.__class__.__name__, e))
- logger.error("%s" % traceback.print_exc())
+ logger.error('%s : %s', e.__class__.__name__, e)
+ logger.error("%s", traceback.print_exc())
rc = FAIL
return rc
setattr(do_try, 'options', options)
diff -r 0daae14ce584 -r f457c790dad0 suites/libvirt-cim/lib/XenKvmLib/test_xml.py
--- a/suites/libvirt-cim/lib/XenKvmLib/test_xml.py Wed Feb 11 21:00:52 2009 -0200
+++ b/suites/libvirt-cim/lib/XenKvmLib/test_xml.py Thu Feb 12 01:54:24 2009 -0800
@@ -45,10 +45,11 @@
default_mac = '11:22:33:aa:bb:cc'
-def testxml(test_dom="domU1", mem = 128, vcpus = 1, mac = default_mac, \
- disk_file_path = disk_path, disk = "xvda"):
+def testxml(test_dom="domU1", mem = 128, vcpus = 1, mac = default_mac,
+ disk_file_path = disk_path, disk = "xvda"):
if not (os.path.exists(kernel_path) and os.path.exists(init_path)) :
- logger.error("ERROR: Either the kernel image or the init_path does not exist")
+ logger.error("ERROR: Either the kernel image or the "
+ "init_path does not exist")
sys.exit(SKIP)
test_xml = """
<domain type='xen' id='23'>
@@ -76,19 +77,20 @@
</disk>
</devices>
</domain>
- """ % ( test_dom, set_uuid(), kernel_path, init_path, mem*1024, vcpus, mac, \
- disk_file_path, disk )
+ """ % ( test_dom, set_uuid(), kernel_path, init_path, mem*1024, vcpus,
+ mac, disk_file_path, disk )
return test_xml
-def testxml_bl(test_dom="domU1", mem = 128, vcpus = 1, mac = default_mac, \
- disk_file_path = disk_path, disk = "xvda", server = "", \
+def testxml_bl(test_dom="domU1", mem = 128, vcpus = 1, mac = default_mac,
+ disk_file_path = disk_path, disk = "xvda", server = "",
gtype = 0):
if server == "":
- logger.error("ERROR: Server info cannot be empty \
-specify either localhost or remote machine ip/name " )
+ logger.error("ERROR: Server info cannot be empty "
+ "specify either localhost or remote machine ip/name ")
sys.exit(SKIP)
if not (os.path.exists(kernel_path) and os.path.exists(init_path)) :
- logger.error("ERROR: Either the kernel image or the init_path does not exist")
+ logger.error("ERROR: Either the kernel image or the "
+ "init_path does not exist")
sys.exit(SKIP)
test_xml = """
<domain type='xen' id='23'>
@@ -117,15 +119,16 @@
</disk>
</devices>
</domain>
- """ % ( test_dom, set_uuid(), bootloader(server, gtype), \
+ """ % ( test_dom, set_uuid(), bootloader(server, gtype),
kernel_path, init_path, mem*1024, vcpus, mac, disk_file_path, disk )
return test_xml
-def testxml_bridge(test_dom="domU1", mem = 128, vcpus = 1, \
- mac = default_mac, disk_file_path = disk_path,
- disk = "xvda", server = ""):
+def testxml_bridge(test_dom="domU1", mem = 128, vcpus = 1,
+ mac = default_mac, disk_file_path = disk_path,
+ disk = "xvda", server = ""):
if not (os.path.exists(kernel_path) and os.path.exists(init_path)) :
- logger.error("ERROR: Either the kernel image or the init_path does not exist")
+ logger.error("ERROR: Either the kernel image or the "
+ "init_path does not exist")
sys.exit(SKIP)
vir_network = net_list(server)
if len(vir_network) > 0 :
@@ -140,7 +143,8 @@
net_xml, bridge = netxml(server, bridgename, networkname)
ret = create_vnet(server, net_xml)
if not ret:
- logger.error("Failed to create the Virtual Network '%s'", networkname)
+ logger.error("Failed to create the Virtual Network '%s'",
+ networkname)
sys.exit(SKIP)
test_xml = """
@@ -179,7 +183,8 @@
if bridgename in bridges:
bridge_name = bridgename + str(random.randint(1, 100))
if bridge_name in bridges:
- logger.error("Need to give different bridge name since it alreay exists")
+ logger.error("Need to give different bridge name since "
+ "it alreay exists")
sys.exit(SKIP)
else:
bridge_name = bridgename
diff -r 0daae14ce584 -r f457c790dad0 suites/libvirt-cim/lib/XenKvmLib/vsmigrations.py
--- a/suites/libvirt-cim/lib/XenKvmLib/vsmigrations.py Wed Feb 11 21:00:52 2009 -0200
+++ b/suites/libvirt-cim/lib/XenKvmLib/vsmigrations.py Thu Feb 12 01:54:24 2009 -0800
@@ -78,7 +78,7 @@
DestinationHost=ip)
except Exception, details:
logger.error("Error invoke 'CheckVirtualSystemIsMigratableToHost\'.")
- logger.error("%s" % details)
+ logger.error("%s", details)
return FAIL
if rc == None or rc[1]['IsMigratable'] != True:
@@ -142,7 +142,7 @@
status = FAIL
if status != PASS:
- logger.error("%s migrate failed" % test_dom)
+ logger.error("%s migrate failed", test_dom)
return FAIL
return PASS
@@ -155,7 +155,7 @@
for i in range(0, 50):
if job_inst.JobState == 7:
if job_inst.Status != "Completed":
- logger.error("%s migrate failed" % test_dom)
+ logger.error("%s migrate failed", test_dom)
return FAIL
list_after = domain_list(ip)
status = verify_domain_list(list_after, local_migrate, test_dom)
diff -r 0daae14ce584 -r f457c790dad0 suites/libvirt-cim/lib/XenKvmLib/vsms_util.py
--- a/suites/libvirt-cim/lib/XenKvmLib/vsms_util.py Wed Feb 11 21:00:52 2009 -0200
+++ b/suites/libvirt-cim/lib/XenKvmLib/vsms_util.py Thu Feb 12 01:54:24 2009 -0800
@@ -28,7 +28,7 @@
get_bridge_from_network_xml
def print_mod_err_msg(func_str, details):
- logger.error('Error invoking ModifyRS: %s' % func_str)
+ logger.error('Error invoking ModifyRS: %s', func_str)
logger.error(details)
def mod_disk_res(server, service, cxml, dasd, ndpath):
@@ -37,7 +37,7 @@
cxml.dumpxml(server)
dpath = cxml.xml_get_disk_source()
if dpath != ndpath:
- logger.error("Got %s, exp %s." % (dpath, ndpath))
+ logger.error("Got %s, exp %s.", dpath, ndpath)
raise Exception('Error changing rs for disk path')
logger.info('good status for disk path')
except Exception, details:
@@ -61,8 +61,8 @@
name = network_by_bridge(br_name, server, virt)
if type != ntype or name != net_name:
- logger.error('Got %s, exp %s. Got %s, exp %s' %
- (type, ntype, name, net_name))
+ logger.error('Got %s, exp %s. Got %s, exp %s',
+ type, ntype, name, net_name)
raise Exception('Error changing rs for net mac')
logger.info('good status for net mac')
except Exception, details:
@@ -77,7 +77,7 @@
cxml.dumpxml(server)
mem = cxml.xml_get_mem()
if int(mem) != int(nmem) * 1024:
- logger.error("Got %d, exp %d." % (int(mem), (int(nmem) * 1024)))
+ logger.error("Got %d, exp %d.", int(mem), (int(nmem) * 1024))
raise Exception('Error changing rs for mem')
logger.info('good status for mem')
except Exception, details:
@@ -96,7 +96,7 @@
logger.info("Unable to get vcpuinfo from virsh, using XML values")
cpu = cxml.xml_get_vcpu()
if int(cpu) != int(ncpu):
- logger.error("Got %d, exp %d." % (int(cpu), int(ncpu)))
+ logger.error("Got %d, exp %d.", int(cpu), int(ncpu))
raise Exception('Error changing rs for vcpu')
logger.info('good status for vcpu')
except Exception, details:
@@ -106,7 +106,7 @@
return PASS
def print_add_err_msg(func_str, details):
- logger.error('Error invoking AddRS: %s' % func_str)
+ logger.error('Error invoking AddRS: %s', func_str)
logger.error(details)
def add_disk_res(server, service, cxml, vssd_ref, dasd, attr):
@@ -119,8 +119,8 @@
dpath = cxml.get_value_xpath(
'/domain/devices/disk/source/@file[. = "%s"]' % attr['src_path'])
if disk_dev != attr['nddev'] or dpath != attr['src_path']:
- logger.error("Got %s, exp %s. Got %s, exp %s" % (disk_dev,
- attr['nddev'], dpath, attr['src_path']))
+ logger.error("Got %s, exp %s. Got %s, exp %s", disk_dev,
+ attr['nddev'], dpath, attr['src_path'])
raise Exception('Error adding rs for disk_dev')
logger.info('good status for disk path')
except Exception, details:
@@ -154,8 +154,8 @@
name = attr['net_name']
if mac != attr['nmac'] or name != attr['net_name']:
- logger.error("Got %s, exp %s. Got %s, exp %s." % (mac,
- attr['nmac'], name, attr['net_name']))
+ logger.error("Got %s, exp %s. Got %s, exp %s.", mac,
+ attr['nmac'], name, attr['net_name'])
raise Exception('Error adding rs for net mac')
logger.info('good status for net_mac')
diff -r 0daae14ce584 -r f457c790dad0 suites/libvirt-cim/lib/XenKvmLib/vxml.py
--- a/suites/libvirt-cim/lib/XenKvmLib/vxml.py Wed Feb 11 21:00:52 2009 -0200
+++ b/suites/libvirt-cim/lib/XenKvmLib/vxml.py Thu Feb 12 01:54:24 2009 -0800
@@ -525,14 +525,14 @@
ResourceSettings=res_settings,
ReferenceConfiguration=ref_conf)
except pywbem.CIMError, (rc, desc):
- logger.error('Got CIM error %s with return code %s' % (desc, rc))
+ logger.error('Got CIM error %s with return code %s', desc, rc)
self.err_rc = rc
self.err_desc = desc
return False
except Exception, details:
- logger.error('Got error %s with exception %s' \
- % (details, details.__class__.__name__))
+ logger.error('Got error %s with exception %s',
+ details, details.__class__.__name__)
return False
set_uuid(viruuid(self.domain_name, ip, self.virt))
@@ -546,15 +546,15 @@
try:
ret = service.DestroySystem(AffectedSystem=target)
except pywbem.CIMError, (rc, desc):
- logger.error('Got CIM error %s with return code %s' % (desc, rc))
+ logger.error('Got CIM error %s with return code %s', desc, rc)
self.err_rc = rc
self.err_desc = desc
return False
except Exception, details:
logger.error('Error invoking DestroySystem')
- logger.error('Got error %s with exception %s' \
- % (details, details.__class__.__name__))
+ logger.error('Got error %s with exception %s',
+ details, details.__class__.__name__)
return False
return ret[0] == 0
@@ -580,7 +580,7 @@
except Exception, detail:
logger.error("Unable to check guest state")
- logger.error("Exception: %s" % detail)
+ logger.error("Exception: %s", detail)
return FAIL
return PASS
@@ -604,7 +604,7 @@
TimeoutPeriod=time_period)
except pywbem.CIMError, (rc, desc):
- logger.error('Got CIM error %s with return code %s' % (desc, rc))
+ logger.error('Got CIM error %s with return code %s', desc, rc)
self.err_rc = rc
self.err_desc = desc
return FAIL
15 years, 10 months