[Kimchi-devel] [PATCHv1 1/5] Storage volume upload: Dispatch volume create to right handler

lvroyce0210 at gmail.com lvroyce0210 at gmail.com
Mon Sep 1 11:50:50 UTC 2014


From: Royce Lv <lvroyce at linux.vnet.ibm.com>

As we are starting to support upload and download to create volume,
they need to be distinguished from previous creating through libvirt api.
Adding a dispatcher to support this.

Signed-off-by: Royce Lv <lvroyce at linux.vnet.ibm.com>
---
 src/kimchi/i18n.py                 |  2 ++
 src/kimchi/model/storagevolumes.py | 14 ++++++++++++++
 2 files changed, 16 insertions(+)

diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py
index 2eae7e8..bbec591 100644
--- a/src/kimchi/i18n.py
+++ b/src/kimchi/i18n.py
@@ -185,6 +185,8 @@ messages = {
     "KCHVOL0015E": _("Storage volume format not supported"),
     "KCHVOL0016E": _("Storage volume requires a volume name"),
     "KCHVOL0017E": _("Unable to update database with storage volume information due error: %(err)s"),
+    "KCHVOL0018E": _("Only one of %(param)s can be specified"),
+    "KCHVOL0019E": _("Creating volume from %(param)s is not supported"),
 
     "KCHIFACE0001E": _("Interface %(name)s does not exist"),
 
diff --git a/src/kimchi/model/storagevolumes.py b/src/kimchi/model/storagevolumes.py
index b60884c..fc63a16 100644
--- a/src/kimchi/model/storagevolumes.py
+++ b/src/kimchi/model/storagevolumes.py
@@ -44,6 +44,20 @@ class StorageVolumesModel(object):
         self.objstore = kargs['objstore']
 
     def create(self, pool_name, params):
+        vol_source = ['file', 'url', 'capacity']
+
+        if sum(1 for p in vol_source if p in params) != 1:
+            raise InvalidParameter("KCHVOL0018E", {'param': str(vol_source)})
+
+        for p in vol_source:
+            if p in params:
+                try:
+                    create_func = getattr(self, "_create_volume_with_" + p)
+                except AttributeError:
+                    raise InvalidParameter("KCHVOL0019E", {'param': p})
+                return create_func(pool_name, params)
+
+    def _create_volume_with_capacity(self, pool_name, params):
         vol_xml = """
         <volume>
           <name>%(name)s</name>
-- 
1.8.3.2




More information about the Kimchi-devel mailing list