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

lvroyce at linux.vnet.ibm.com lvroyce at linux.vnet.ibm.com
Thu Jun 12 08:03:38 UTC 2014


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 "
-- 
1.8.3.2




More information about the Kimchi-devel mailing list