diff --git a/client/WEB-INF/classes/resources/messages.properties b/client/WEB-INF/classes/resources/messages.properties
index 5b14fa4296d..929d752b411 100644
--- a/client/WEB-INF/classes/resources/messages.properties
+++ b/client/WEB-INF/classes/resources/messages.properties
@@ -4,6 +4,8 @@
#Labels
+image.directory=Image Directory
+
label.action.create.template.from.vm=Create Template from VM
label.action.create.template.from.volume=Create Template from Volume
diff --git a/client/WEB-INF/classes/resources/messages_es.properties b/client/WEB-INF/classes/resources/messages_es.properties
index 83380be9891..0895551cf0c 100644
--- a/client/WEB-INF/classes/resources/messages_es.properties
+++ b/client/WEB-INF/classes/resources/messages_es.properties
@@ -4,6 +4,8 @@
#Labels
+image.directory=Directorio de la imagen
+
label.action.create.template.from.vm=Crear plantilla de VM
label.action.create.template.from.volume=Crear plantilla de volumen
diff --git a/client/WEB-INF/classes/resources/messages_ja.properties b/client/WEB-INF/classes/resources/messages_ja.properties
index cc7b40f7fd5..40c5b989fde 100644
--- a/client/WEB-INF/classes/resources/messages_ja.properties
+++ b/client/WEB-INF/classes/resources/messages_ja.properties
@@ -4,6 +4,8 @@
#Labels
+image.directory=画像ディレクトリ
+
label.action.create.template.from.vm=VMからのテンプレートを作成する
label.action.create.template.from.volume=ボリュームからのテンプレートを作成する
diff --git a/client/WEB-INF/classes/resources/messages_zh_CN.properties b/client/WEB-INF/classes/resources/messages_zh_CN.properties
index 15c0bdbb381..7827a075f4b 100644
--- a/client/WEB-INF/classes/resources/messages_zh_CN.properties
+++ b/client/WEB-INF/classes/resources/messages_zh_CN.properties
@@ -4,6 +4,8 @@
#Labels
+image.directory=图片目录
+
label.action.create.template.from.vm=创建虚拟机模板
label.action.create.template.from.volume=从卷创建模板
diff --git a/ui/jsp/instance.jsp b/ui/jsp/instance.jsp
index 0ee26a88df0..f2fea01e732 100644
--- a/ui/jsp/instance.jsp
+++ b/ui/jsp/instance.jsp
@@ -1456,7 +1456,14 @@ dictionary = {
-
+
+
+
+
+
+
+
diff --git a/ui/scripts/cloud.core.instance.js b/ui/scripts/cloud.core.instance.js
index 725c6b480da..00affbef8c0 100644
--- a/ui/scripts/cloud.core.instance.js
+++ b/ui/scripts/cloud.core.instance.js
@@ -2524,23 +2524,40 @@ function doCreateTemplateFromVM($actionLink, $detailsTab, $midmenuItem1) {
$dialogCreateTemplate
.dialog('option', 'buttons', {
"Create": function() {
- var thisDialog = $(this);
- thisDialog.dialog("close");
-
+ var $thisDialog = $(this);
+
// validate values
var isValid = true;
- isValid &= validateString("Name", thisDialog.find("#create_template_name"), thisDialog.find("#create_template_name_errormsg"));
- isValid &= validateString("Display Text", thisDialog.find("#create_template_desc"), thisDialog.find("#create_template_desc_errormsg"));
- if (!isValid) return;
+ isValid &= validateString("Name", $thisDialog.find("#create_template_name"), $thisDialog.find("#create_template_name_errormsg"));
+ isValid &= validateString("Display Text", $thisDialog.find("#create_template_desc"), $thisDialog.find("#create_template_desc_errormsg"));
+ isValid &= validateString("Image Directory", $thisDialog.find("#image_directory"), $thisDialog.find("#image_directory_errormsg"), false); //image directory is required when creating template from VM whose hypervisor is BareMetal
+ if (!isValid)
+ return;
- var name = trim(thisDialog.find("#create_template_name").val());
- var desc = trim(thisDialog.find("#create_template_desc").val());
- var osType = thisDialog.find("#create_template_os_type").val();
- var isPublic = thisDialog.find("#create_template_public").val();
- var password = thisDialog.find("#create_template_password").val();
+ $thisDialog.dialog("close");
- var id = $midmenuItem1.data("jsonObj").id;
- var apiCommand = "command=createTemplate&virtualmachineid="+id+"&name="+todb(name)+"&displayText="+todb(desc)+"&osTypeId="+osType+"&isPublic="+isPublic+"&passwordEnabled="+password;
+ var array1 = [];
+
+ var name = $thisDialog.find("#create_template_name").val();
+ array1.push("&name="+todb(name));
+
+ var desc = $thisDialog.find("#create_template_desc").val();
+ array1.push("&displayText="+todb(desc));
+
+ var osType = $thisDialog.find("#create_template_os_type").val();
+ array1.push("&osTypeId="+osType);
+
+ var isPublic = $thisDialog.find("#create_template_public").val();
+ array1.push("&isPublic="+isPublic);
+
+ var password = $thisDialog.find("#create_template_password").val();
+ array1.push("&passwordEnabled="+password);
+
+ var imageDirectory = $thisDialog.find("#image_directory").val();
+ array1.push("&url="+todb(imageDirectory));
+
+ var id = $midmenuItem1.data("jsonObj").id;
+ var apiCommand = "command=createTemplate&virtualmachineid="+id+array1.join("");
doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab);
},
"Cancel": function() {