[PATCH] issue #66: Auto generate template name in backend when none is provided

From: Aline Manera <alinefm@br.ibm.com> The only required parameter to create a template is the cdrom ISO image. The name must be create automatically on backend when no one is passed. Fix it. Signed-off-by: Aline Manera <alinefm@br.ibm.com> --- src/kimchi/mockmodel.py | 8 +++++++- src/kimchi/model/templates.py | 9 ++++++++- ui/js/src/kimchi.template_add_main.js | 16 ---------------- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/src/kimchi/mockmodel.py b/src/kimchi/mockmodel.py index 50b5f0e..f99b4cd 100644 --- a/src/kimchi/mockmodel.py +++ b/src/kimchi/mockmodel.py @@ -216,7 +216,13 @@ class MockModel(object): raise NotFoundError("KCHTMPL0002E", {'name': name}) def templates_create(self, params): - name = params['name'] + name = params.get('name', '').strip() + if not name: + iso = params['cdrom'] + iso_name = os.path.splitext(iso[iso.rfind('/') + 1:])[0] + name = iso_name + str(int(time.time()*1000)) + params['name'] = name + if name in self._mock_templates: raise InvalidOperation("KCHTMPL0001E", {'name': name}) diff --git a/src/kimchi/model/templates.py b/src/kimchi/model/templates.py index 7afb0e0..3062bd7 100644 --- a/src/kimchi/model/templates.py +++ b/src/kimchi/model/templates.py @@ -19,6 +19,7 @@ import copy import os +import time import libvirt @@ -34,7 +35,13 @@ class TemplatesModel(object): self.conn = kargs['conn'] def create(self, params): - name = params['name'] + name = params.get('name', '').strip() + if not name: + iso = params['cdrom'] + iso_name = os.path.splitext(iso[iso.rfind('/') + 1:])[0] + name = iso_name + str(int(time.time()*1000)) + params['name'] = name + conn = self.conn.get() pool_uri = params.get(u'storagepool', '') diff --git a/ui/js/src/kimchi.template_add_main.js b/ui/js/src/kimchi.template_add_main.js index 31326df..098a706 100644 --- a/ui/js/src/kimchi.template_add_main.js +++ b/ui/js/src/kimchi.template_add_main.js @@ -219,7 +219,6 @@ kimchi.template_add_main = function() { return; } var data = { - "name" : kimchi.get_iso_name(isoFile), "cdrom" : isoFile }; addTemplate(data); @@ -331,7 +330,6 @@ kimchi.template_add_main = function() { return; } var data = { - "name" : kimchi.get_iso_name(isoUrl), "cdrom" : isoUrl }; addTemplate(data); @@ -355,7 +353,6 @@ kimchi.template_add_main = function() { var successNum = 0; var addTemplate = function(isoInfo) { var data = { - "name" : kimchi.get_iso_name(isoInfo.name), "os_distro" : isoInfo.os_distro, "os_version" : isoInfo.os_version, "cdrom" : isoInfo.path @@ -419,16 +416,3 @@ kimchi.is_iso_file = function(isoFile) { } return false; }; - -kimchi.get_iso_name = function(isoPath) { - if ((isoPath.charAt(isoPath.length - 1) == "/") == true) { - isoPath = isoPath.substring(0, isoPath.length - 1) - } - if (/.iso$/.test(isoPath)) { - return isoPath.substring(isoPath.lastIndexOf("/") + 1, - isoPath.lastIndexOf(".")) + new Date().getTime(); - } else { - return isoPath.substring(isoPath.lastIndexOf("/") + 1) + - new Date().getTime(); - } -}; -- 1.7.10.4

Reviewed-by: Daniel Barboza <danielhb@linux.vnet.ibm.com> On 02/28/2014 12:25 PM, Aline Manera wrote:
From: Aline Manera <alinefm@br.ibm.com>
The only required parameter to create a template is the cdrom ISO image. The name must be create automatically on backend when no one is passed. Fix it.
Signed-off-by: Aline Manera <alinefm@br.ibm.com> --- src/kimchi/mockmodel.py | 8 +++++++- src/kimchi/model/templates.py | 9 ++++++++- ui/js/src/kimchi.template_add_main.js | 16 ---------------- 3 files changed, 15 insertions(+), 18 deletions(-)
diff --git a/src/kimchi/mockmodel.py b/src/kimchi/mockmodel.py index 50b5f0e..f99b4cd 100644 --- a/src/kimchi/mockmodel.py +++ b/src/kimchi/mockmodel.py @@ -216,7 +216,13 @@ class MockModel(object): raise NotFoundError("KCHTMPL0002E", {'name': name})
def templates_create(self, params): - name = params['name'] + name = params.get('name', '').strip() + if not name: + iso = params['cdrom'] + iso_name = os.path.splitext(iso[iso.rfind('/') + 1:])[0] + name = iso_name + str(int(time.time()*1000)) + params['name'] = name + if name in self._mock_templates: raise InvalidOperation("KCHTMPL0001E", {'name': name})
diff --git a/src/kimchi/model/templates.py b/src/kimchi/model/templates.py index 7afb0e0..3062bd7 100644 --- a/src/kimchi/model/templates.py +++ b/src/kimchi/model/templates.py @@ -19,6 +19,7 @@
import copy import os +import time
import libvirt
@@ -34,7 +35,13 @@ class TemplatesModel(object): self.conn = kargs['conn']
def create(self, params): - name = params['name'] + name = params.get('name', '').strip() + if not name: + iso = params['cdrom'] + iso_name = os.path.splitext(iso[iso.rfind('/') + 1:])[0] + name = iso_name + str(int(time.time()*1000)) + params['name'] = name + conn = self.conn.get()
pool_uri = params.get(u'storagepool', '') diff --git a/ui/js/src/kimchi.template_add_main.js b/ui/js/src/kimchi.template_add_main.js index 31326df..098a706 100644 --- a/ui/js/src/kimchi.template_add_main.js +++ b/ui/js/src/kimchi.template_add_main.js @@ -219,7 +219,6 @@ kimchi.template_add_main = function() { return; } var data = { - "name" : kimchi.get_iso_name(isoFile), "cdrom" : isoFile }; addTemplate(data); @@ -331,7 +330,6 @@ kimchi.template_add_main = function() { return; } var data = { - "name" : kimchi.get_iso_name(isoUrl), "cdrom" : isoUrl }; addTemplate(data); @@ -355,7 +353,6 @@ kimchi.template_add_main = function() { var successNum = 0; var addTemplate = function(isoInfo) { var data = { - "name" : kimchi.get_iso_name(isoInfo.name), "os_distro" : isoInfo.os_distro, "os_version" : isoInfo.os_version, "cdrom" : isoInfo.path @@ -419,16 +416,3 @@ kimchi.is_iso_file = function(isoFile) { } return false; }; - -kimchi.get_iso_name = function(isoPath) { - if ((isoPath.charAt(isoPath.length - 1) == "/") == true) { - isoPath = isoPath.substring(0, isoPath.length - 1) - } - if (/.iso$/.test(isoPath)) { - return isoPath.substring(isoPath.lastIndexOf("/") + 1, - isoPath.lastIndexOf(".")) + new Date().getTime(); - } else { - return isoPath.substring(isoPath.lastIndexOf("/") + 1) + - new Date().getTime(); - } -};
participants (3)
-
Aline Manera
-
Daniel H Barboza
-
Ramon Medeiros