diff --git a/client/WEB-INF/classes/resources/messages.properties b/client/WEB-INF/classes/resources/messages.properties
index 54ac2f3fe3a..20970fea94d 100644
--- a/client/WEB-INF/classes/resources/messages.properties
+++ b/client/WEB-INF/classes/resources/messages.properties
@@ -757,7 +757,8 @@ label.load.balancer=Load Balancer
label.load.balancing.policies=Load balancing policies
label.load.balancing=Load Balancing
label.loading=Loading
-label.local.storage.enabled=Local storage enabled
+label.local.storage.enabled=Enable local storage for User VMs
+label.local.storage.enabled.system.vms=Enable local storage for System VMs
label.local.storage=Local Storage
label.local=Local
label.login=Login
diff --git a/ui/dictionary2.jsp b/ui/dictionary2.jsp
index e588528b9d2..12518beee93 100644
--- a/ui/dictionary2.jsp
+++ b/ui/dictionary2.jsp
@@ -1057,6 +1057,7 @@ under the License.
'label.add.private.gateway': '',
'label.ovm3.pool': '',
'label.ovm3.cluster': '',
-'label.ovm3.vip': ''
+'label.ovm3.vip': '',
+'label.local.storage.enabled.system.vms': ''
});
diff --git a/ui/scripts/zoneWizard.js b/ui/scripts/zoneWizard.js
index 2ae056b8a33..f39f25e03f8 100755
--- a/ui/scripts/zoneWizard.js
+++ b/ui/scripts/zoneWizard.js
@@ -388,7 +388,10 @@
},
addPrimaryStorage: function(args) {
- return args.data.localstorageenabled != 'on';
+ if(args.data.localstorageenabled == 'on' && args.data.localstorageenabledforsystemvm == 'on') {
+ return false; //skip step only when both localstorage and localstorage for system vm are checked
+ }
+ return true;
}
},
@@ -689,23 +692,15 @@
label: 'label.local.storage.enabled',
isBoolean: true,
onChange: function(args) {
- var $checkbox = args.$checkbox;
- if ($checkbox.is(':checked')) {
- cloudStack.dialog.confirm({
- message: 'message.zoneWizard.enable.local.storage',
- action: function() {
- $checkbox.attr('checked', true);
- },
- cancelAction: function() {
- $checkbox.attr('checked', false);
- }
- });
+ }
+ },
- return false;
- }
+ localstorageenabledforsystemvm: {
+ label: 'label.local.storage.enabled.system.vms',
+ isBoolean: true,
+ onChange: function(args) {
- return true;
}
}
}
@@ -2346,8 +2341,8 @@
},
action: function(args) {
- var $wizard = args.wizard;
-
+ var $wizard = args.wizard;
+ var formData = args.data;
var advZoneConfiguredVirtualRouterCount = 0; //for multiple physical networks in advanced zone. Each physical network has 2 virtual routers: regular one and VPC one.
var success = args.response.success;
@@ -4522,29 +4517,52 @@
});
}
- $.ajax({
- url: createURL("addHost"),
- type: "POST",
- data: data,
- success: function(json) {
- stepFns.addPrimaryStorage({
- data: $.extend(args.data, {
- returnedHost: json.addhostresponse.host[0]
- })
- });
- },
- error: function(XMLHttpResponse) {
- var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
- error('addHost', errorMsg, {
- fn: 'addHost',
- args: args
- });
- }
- });
+ var addHostAjax = function() {
+ $.ajax({
+ url: createURL("addHost"),
+ type: "POST",
+ data: data,
+ success: function(json) {
+ stepFns.addPrimaryStorage({
+ data: $.extend(args.data, {
+ returnedHost: json.addhostresponse.host[0]
+ })
+ });
+ },
+ error: function(XMLHttpResponse) {
+ var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
+ error('addHost', errorMsg, {
+ fn: 'addHost',
+ args: args
+ });
+ }
+ });
+ };
+
+ if(args.data.zone.localstorageenabledforsystemvm == 'on') {
+ $.ajax({
+ url: createURL("updateConfiguration&name=system.vm.use.local.storage&value=true&zoneid=" + args.data.returnedZone.id),
+ dataType: "json",
+ success: function(json) {
+ addHostAjax();
+ },
+ error: function(XMLHttpResponse) {
+ var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
+ error('addHost', errorMsg, {
+ fn: 'addHost',
+ args: args
+ });
+ }
+ });
+ } else {
+ addHostAjax();
+ }
+
+
},
addPrimaryStorage: function(args) {
- if (args.data.zone.localstorageenabled == 'on') { //use local storage, don't need primary storage. So, skip this step.
+ if (args.data.zone.localstorageenabled == 'on' && args.data.zone.localstorageenabledforsystemvm == 'on') { //use local storage, don't need primary storage. So, skip this step.
stepFns.addSecondaryStorage({
data: args.data
});