
From: Royce Lv <lvroyce@linux.vnet.ibm.com> An out of box ISO pool is created to make sure user will find a well known place to put his ISO. Signed-off-by: Royce Lv <lvroyce@linux.vnet.ibm.com> --- src/kimchi/model/model.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/kimchi/model/model.py b/src/kimchi/model/model.py index a766ca5..3c6dc8c 100644 --- a/src/kimchi/model/model.py +++ b/src/kimchi/model/model.py @@ -24,6 +24,8 @@ import sys import cherrypy import libvirt +import lxml.etree as ET +from lxml.builder import E from kimchi.basemodel import BaseModel from kimchi.model.libvirtconnection import LibvirtConnection @@ -31,6 +33,10 @@ from kimchi.objectstore import ObjectStore from kimchi.utils import import_module, listPathModules +DEFAULT_POOLS = {'default': {'path': '/var/lib/libvirt/images'}, + 'ISO': {'path': '/var/lib/libvirt/isos'}} + + class Model(BaseModel): def __init__(self, libvirt_uri='qemu:///system', objstore_loc=None): self.objstore = ObjectStore(objstore_loc) @@ -38,7 +44,8 @@ class Model(BaseModel): kargs = {'objstore': self.objstore, 'conn': self.conn} if 'qemu:///' in libvirt_uri: - self._default_pool_check() + for pool_name, pool_arg in DEFAULT_POOLS.iteritems(): + self._default_pool_check(pool_name, pool_arg) this = os.path.basename(__file__) this_mod = os.path.splitext(this)[0] @@ -57,21 +64,18 @@ class Model(BaseModel): return super(Model, self).__init__(models) - def _default_pool_check(self): + def _default_pool_check(self, pool_name, pool_arg): conn = self.conn.get() - xml = """ - <pool type='dir'> - <name>default</name> - <target> - <path>/var/lib/libvirt/images</path> - </target> - </pool> - """ + pool = E.pool(E.name(pool_name), type='dir') + pool.append(E.target(E.path(pool_arg['path']))) + xml = ET.tostring(pool) try: - pool = conn.storagePoolLookupByName("default") + pool = conn.storagePoolLookupByName(pool_name) except libvirt.libvirtError: try: pool = conn.storagePoolDefineXML(xml, 0) + # Add build step to make sure target directory created + pool.build(libvirt.VIR_STORAGE_POOL_BUILD_NEW) pool.setAutostart(1) except libvirt.libvirtError, e: cherrypy.log.error("Fatal: Cannot create default pool because " -- 1.8.3.2