[Kimchi-devel] [PATCH 1/5] Dedicated ISO pool: create an out of box ISO pool

Aline Manera alinefm at linux.vnet.ibm.com
Wed Jun 11 17:00:46 UTC 2014


Reviewed-by: Aline Manera <alinefm at linux.vnet.ibm.com>

On 06/10/2014 07:06 AM, lvroyce at linux.vnet.ibm.com wrote:
> From: Royce Lv <lvroyce at 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 at linux.vnet.ibm.com>
> ---
>   src/kimchi/model/model.py | 25 ++++++++++++++-----------
>   1 file changed, 14 insertions(+), 11 deletions(-)
>
> diff --git a/src/kimchi/model/model.py b/src/kimchi/model/model.py
> index a766ca5..579f2d1 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,9 @@ 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 +43,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 +63,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 "




More information about the Kimchi-devel mailing list