Deepti B. Kalakeri wrote:
# HG changeset patch
# User Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
# Date 1210765549 25200
# Node ID 6671b339cc8fd7c2cc7cada2ac15bc93635fbe4b
# Parent 63c2d5e576bd750c0ba0975424a72ac24105c6f7
[TEST] Adding create_diskpool() function.
Modified vxml to get the poolname and networkname .
To create the storage pool on machine with libvirt >= 0.4.1
Signed-off-by: Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
diff -r 63c2d5e576bd -r 6671b339cc8f suites/libvirt-cim/lib/XenKvmLib/common_util.py
--- a/suites/libvirt-cim/lib/XenKvmLib/common_util.py Wed May 14 04:36:40 2008 -0700
+++ b/suites/libvirt-cim/lib/XenKvmLib/common_util.py Wed May 14 04:45:49 2008 -0700
@@ -1,3 +1,4 @@
+#!/usr/bin/python
#
# Copyright 2008 IBM Corp.
#
@@ -33,6 +34,8 @@ from CimTest.Globals import logger, log_
from CimTest.Globals import logger, log_param, CIM_ERROR_ENUMERATE
from CimTest.ReturnCodes import PASS, FAIL, XFAIL_RC
from XenKvmLib.const import CIM_REV
+from VirtLib.live import diskpool_list, virsh_version, net_list
+from XenKvmLib.vxml import PoolXML, NetXML
test_dpath = "foo"
diskpoolconf_rev = 558
@@ -294,3 +297,53 @@ def create_diskpool_file():
return conf_file()
+def create_diskpool(server, virt='KVM'):
+ status = PASS
+ try:
+ dpool_list = diskpool_list(server, virt='KVM')
+ if len(dpool_list) > 0:
+ dpoolname=dpool_list[0]
+ else:
+ diskxml = PoolXML(server, virt=virt)
+ ret = diskxml.create_vpool()
+ if not ret:
+ logger.error('Failed to create the disk pool "%s"',
+ dpoolname)
+ status = FAIL
+ dpoolname=diskxml.xml_get_diskpool_name()
You'll want to include this line in an else. If you are unable to get
create the diskpool, then you'll be unable to get the name using
xml_get_diskpool_name().
+ except Exception, detail:
+ logger.error("Exception: In fn create_diskpool(): %s", detail)
+ status=FAIL
+ return status, dpoolname
Before the try, you'll want to declare dpoolname = None or something
similar. If you encounter an exception before dpoolname is assigned,
then you'll hit a python error because you're referencing dpoolname
before its assigned.
+
+def create_diskpool_conf(server, virt):
+ libvirt_version = virsh_version(server, virt)
+ if virt == 'KVM' and libvirt_version >= '0.4.1' and \
+ CIM_REV > diskpoolconf_rev:
I missed during the last review - the diskpool isn't specific to KVM.
KVM, Xen, and XenFV will use a diskpool if the version of libvirt is >=
0.4.1.
+ status, dpoolname = create_diskpool(server, virt=virt)
+ diskid = "%s/%s" % ("DiskPool", dpoolname)
+ else:
+ status = create_diskpool_file()
+ diskid = "%s/%s" % ("DiskPool", test_dpath)
+
+ return status, diskid
+
+
+def create_netpool_conf(server, virt):
+ status = PASS
+ try:
+ vir_network = net_list(server, virt)
+ if len(vir_network) > 0:
+ test_network = vir_network[0]
+ else:
+ netxml = NetXML(server, virt=virt)
+ ret = netxml.create_vnet()
+ if not ret:
+ logger.error("Failed to create Virtual Network '%s'",
+ test_network)
+ status = FAIL
+ test_network = netxml.xml_get_netpool_name()
+ except Exception, detail:
+ logger.error("Exception: In fn create_netpool_conf(): %s", detail)
+ status=FAIL
+ return status, test_network
You'll want to define test_network before the try, otherwise
test_network won't be defined if you encounter an exception.
--
Kaitlin Rupert
IBM Linux Technology Center
kaitlin(a)linux.vnet.ibm.com