libvirt-cim-bounces(a)redhat.com wrote on 2008-12-25 05:44:15:
> +import sys
> +import pywbem
pywbem is not used
> +from VirtLib import utils
utils is not used
> +from XenKvmLib import enumclass
Instead of importing all of the enumclass module, instead you can import
just the EnumInstances() function:
from XenKvmLib.enumclass import EnumInstances
> +from XenKvmLib.classes import get_typed_class
> +from XenKvmLib.test_doms import undefine_test_domain
undefine_test_domain() isn't used, this can be removed
> +from XenKvmLib.common_util import parse_instance_id
> +from XenKvmLib.const import do_main
> +from XenKvmLib import vxml
Since you only use get_class(), it's better to do:
from XenKvmLib.vxml import get_class
> +from CimTest.ReturnCodes import PASS, FAIL
> +from CimTest.Globals import logger, CIM_ERROR_ENUMERATE
CIM_ERROR_ENUMERATE is not used
> +from XenKvmLib.const import get_provider_version
> +
> +SUPPORTED_TYPES = ['KVM']
This should also support Xen and XenFV.
I cann't connect to the machine for Xen test, so #6 patch only supports
KVM.
Once the machine brings up, I will work on follow up patch.
Thanks!
> +default_dom = 'test_domain'
> +libvirt_em_type_changeset = 737
> +
> +@do_main(SUPPORTED_TYPES)
> +def main():
> + status = FAIL
> + options = main.options
> + curr_cim_rev, changeset = get_provider_version(options.virt,
options.ip)
> + if curr_cim_rev < libvirt_em_type_changeset:
> + return SKIP
> +
> + emu_types = [0, 1]
> + for exp_emu_type in emu_types:
> + cxml = vxml.get_class(options.virt)(default_dom,
emu_type=exp_emu_type)
> + ret = cxml.cim_define(options.ip)
> + if not ret:
> + logger.error("Failed to call DefineSystem()")
> + return FAIL
> +
> + drasd= get_typed_class(options.
virt,'DiskResourceAllocationSettingData')
> + try:
> + drasd_list = enumclass.EnumInstances(options.ip, drasd,
> + ret_cim_inst=True)
> + if len(drasd_list) < 1:
> + raise Exception("%s returned %i instances,
excepted at least 1.",
Typo - excepted should be expected. Also, this line is 81 characters -
removing the ".' should fix that =)
> + drasd, len(drasd_list))
> +
> + found_rasd = None
> + for rasd in drasd_list:
> + guest, dev, status =
parse_instance_id(rasd['InstanceID'])
> + if status != PASS:
> + raise Exception("Unable to parse InstanceID: %s"
\
> + %
rasd['InstanceID'])
> + if guest == default_dom:
> + if rasd['EmulatedType'] == exp_emu_type:
> + found_rasd = rasd
> + status = PASS
> + break
> + else:
> + raise Exception("EmulatedType Mismatch: got
%d,
\
> + expected %d",
rasd['EmulatedType'],
exp_emu_type)
The indention is off here. Also, you'll need to use % not commas. This
should be:
raise Exception("EmulatedType Mismatch: got %d, \
expected %d" % (rasd['EmulatedType'],
exp_emu_type))
> +
> + if found_rasd == None:
This should be: if found_rasd is None
> + raise Exception("The defined dom is not found")
This error message is a bit vague.. it should be something like
"DiskRASD for define guest was not found"
> + except Exception, detail:
> + logger.error("Exception: %s", detail)
> + cxml.undefine(options.ip)
No need to have the undefine() call here. Instead, change the return
FAIL to status = FAIL and remove the undefine() call.
> + return FAIL
> +
> + cxml.undefine(options.ip)
Put the undefine() outside of the for loop. The for loop should be in
the try block. So your code should look like:
try:
for ...
....
except Exception, detail:
logger.error("Exception: %s", detail)
status = FAIL
cxml.undefine(options.ip)
return status
> class LXC_DiskResourceAllocationSettingData(CIMClassMOF):
> - def __init__(self, mountpoint, source, name):
> + def __init__(self, mountpoint, source, name, emu_type=None):
> self.MountPoint = mountpoint
> self.Address = source
> self.InstanceID = '%s/%s' % (name, mountpoint)
> + if emu_type != None:
> + self.EmulatedType = emu_type
The patch doesn't update the schema for LXC - it's Xen and KVM only.
> diff -r b7d80fdeb2a3 -r 7b57ee2aab2c suites/libvirt-
cim/lib/XenKvmLib/vxml.py
> --- a/suites/libvirt-cim/lib/XenKvmLib/vxml.py Mon Dec 22 23:03:
01 2008 -0800
> +++ b/suites/libvirt-cim/lib/XenKvmLib/vxml.py Tue Dec 23 22:53:
59 2008 -0800
> @@ -466,11 +466,13 @@
>
> class VirtCIM:
> def __init__(self, virt, dom_name, disk_dev, disk_source,
> - net_type, net_name, net_mac, vcpus, mem,
mem_allocunits):
> + net_type, net_name, net_mac, vcpus, mem,
> + mem_allocunits, emu_type=None):
Don't have emu_type=None - have it be a mandatory value like all the
others. The init for KVM sets it as None if nothing is passed in.
--
Kaitlin Rupert
IBM Linux Technology Center
kaitlin(a)linux.vnet.ibm.com
_______________________________________________
Libvirt-cim mailing list
Libvirt-cim(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvirt-cim