From 77bc04b90f134a6da89369ec3118f5cf041c7c95 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Fri, 18 Jan 2013 10:38:38 -0800 Subject: [PATCH 1/3] CLOUDSTACK-537: cloudstack UI - Advanced SG-enabled zone - Instance wizard UI: Support advanced zone with security groups For advanced zones with SG enabled, show both the add guest network step as well as the add security group step. reviewed-by: jessica --- ui/index.jsp | 2 +- ui/scripts/instanceWizard.js | 31 ++++++++++++++++++++------ ui/scripts/ui-custom/instanceWizard.js | 19 ++++++++++++++-- 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/ui/index.jsp b/ui/index.jsp index a9b83e6fdd5..3fe6bad5f4a 100644 --- a/ui/index.jsp +++ b/ui/index.jsp @@ -220,7 +220,7 @@ under the License. -
+

diff --git a/ui/scripts/instanceWizard.js b/ui/scripts/instanceWizard.js index e4b1f31d427..65ec33fe0bf 100644 --- a/ui/scripts/instanceWizard.js +++ b/ui/scripts/instanceWizard.js @@ -268,25 +268,30 @@ } if (selectedZoneObj.networktype == "Advanced") { //Advanced zone. Show network list. - var $networkStep = $(".step.network:visible .nothing-to-select"); + var $networkStep = $(".step.network:visible .nothing-to-select"); + var $networkStepContainer = $('.step.network:visible'); + if(args.initArgs.pluginForm != null && args.initArgs.pluginForm.name == "vpcTierInstanceWizard") { //from VPC Tier chart step5ContainerType = 'nothing-to-select'; $networkStep.find("#from_instance_page_1").hide(); $networkStep.find("#from_instance_page_2").hide(); $networkStep.find("#from_vpc_tier").text("tier " + args.context.networks[0].name); $networkStep.find("#from_vpc_tier").show(); - } - else { //from Instance page + } else { //from Instance page if(selectedZoneObj.securitygroupsenabled != true) { // Advanced SG-disabled zone step5ContainerType = 'select-network'; $networkStep.find("#from_instance_page_1").show(); $networkStep.find("#from_instance_page_2").show(); $networkStep.find("#from_vpc_tier").text(""); $networkStep.find("#from_vpc_tier").hide(); + } else { // Advanced SG-enabled zone + step5ContainerType = 'select-advanced-sg'; } - else { // Advanced SG-enabled zone - step5ContainerType = 'select-security-group'; - } + + if ($networkStepContainer.hasClass('next-use-security-groups')) { + $networkStepContainer.removeClass('repeat next-use-security-groups loaded'); + step5ContainerType = 'select-security-group'; + } } } else { //Basic zone. Show securigy group list or nothing(when no SecurityGroup service in guest network) @@ -320,7 +325,7 @@ } //step5ContainerType = 'nothing-to-select'; //for testing only, comment it out before checking in - if(step5ContainerType == 'select-network') { + if(step5ContainerType == 'select-network' || step5ContainerType == 'select-advanced-sg') { var defaultNetworkArray = [], optionalNetworkArray = []; var networkData = { zoneId: args.currentData.zoneid @@ -379,6 +384,9 @@ }); //get network offerings (end) *** + if (step5ContainerType == 'select-advanced-sg') { + $networkStepContainer.addClass('repeat next-use-security-groups'); + } args.response.success({ type: 'select-network', @@ -449,6 +457,15 @@ // Create a new VM!!!! var array1 = []; + // + // @jessica + // If using an advanced security group zone, get the guest networks like this + // + // var myNetworks = $('.multi-wizard:visible form').data('my-networks'); + // + // -- and get the security groups from args.data['security-groups'] + // + //step 1 : select zone array1.push("&zoneId=" + args.data.zoneid); diff --git a/ui/scripts/ui-custom/instanceWizard.js b/ui/scripts/ui-custom/instanceWizard.js index d2724a524f3..f2cfd9ced53 100644 --- a/ui/scripts/ui-custom/instanceWizard.js +++ b/ui/scripts/ui-custom/instanceWizard.js @@ -598,6 +598,8 @@ response: { success: function(args) { var vpcs = args.data.vpcs; + var addClass = args.addClass; + var removeClass = args.removeClass; // Populate VPC drop-down $vpcSelect.html(''); @@ -753,7 +755,8 @@ ) ); - $targetStep.addClass('loaded'); + if (!$targetStep.hasClass('repeat') && + !$targetStep.hasClass('always-load')) $targetStep.addClass('loaded'); } // Show launch vm button if last step @@ -806,6 +809,14 @@ //step 5 - select network if($activeStep.find('.wizard-step-conditional.select-network:visible').size() > 0) { + var data = $activeStep.data('my-networks'); + + if (!data) { + $activeStep.closest('form').data('my-networks', cloudStack.serializeForm( + $activeStep.closest('form') + )['my-networks']); + } + if($activeStep.find('input[type=checkbox]:checked').size() == 0) { //if no checkbox is checked cloudStack.dialog.notice({ message: 'message.step.4.continue' }); return false; @@ -828,7 +839,11 @@ } } - showStep($steps.filter(':visible').index() + 2); + if ($activeStep.hasClass('repeat')) { + showStep($steps.filter(':visible').index() + 1); + } else { + showStep($steps.filter(':visible').index() + 2); + } return false; } From c9921ea0773d7b06933c74d03024fabd62943013 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Fri, 18 Jan 2013 10:44:44 -0800 Subject: [PATCH 2/3] CLOUDSTACK-537: cloudstack UI - Advanced SG-enabled zone - VM Wizard - step 5 - show network list first, then security group list. reviewed-by: Brian --- ui/scripts/instanceWizard.js | 70 +++++++++++++++--------------------- 1 file changed, 29 insertions(+), 41 deletions(-) diff --git a/ui/scripts/instanceWizard.js b/ui/scripts/instanceWizard.js index 65ec33fe0bf..b98147b2056 100644 --- a/ui/scripts/instanceWizard.js +++ b/ui/scripts/instanceWizard.js @@ -457,15 +457,6 @@ // Create a new VM!!!! var array1 = []; - // - // @jessica - // If using an advanced security group zone, get the guest networks like this - // - // var myNetworks = $('.multi-wizard:visible form').data('my-networks'); - // - // -- and get the security groups from args.data['security-groups'] - // - //step 1 : select zone array1.push("&zoneId=" + args.data.zoneid); @@ -562,41 +553,38 @@ if(checkedSecurityGroupIdArray.length > 0) array1.push("&securitygroupids=" + checkedSecurityGroupIdArray.join(",")); - - /* - if(selectedZoneObj.networktype == "Advanced" && selectedZoneObj.securitygroupsenabled == true) { // Advanced SG-enabled zone - var networkData = { - zoneId: selectedZoneObj.id, - type: 'Shared', - supportedServices: 'SecurityGroup' - }; - if (!(cloudStack.context.projects && cloudStack.context.projects[0])) { - networkData.domainid = g_domainid; - networkData.account = g_account; - } + + if(selectedZoneObj.networktype == "Advanced" && selectedZoneObj.securitygroupsenabled == true) { // Advanced SG-enabled zone + var array2 = []; + var myNetworks = $('.multi-wizard:visible form').data('my-networks'); //widget limitation: If using an advanced security group zone, get the guest networks like this + var defaultNetworkId = $('.multi-wizard:visible form').find('input[name=defaultNetwork]:checked').val(); + + var checkedNetworkIdArray; + if(typeof(myNetworks) == "object" && myNetworks.length != null) { //myNetworks is an array of string, e.g. ["203", "202"], + checkedNetworkIdArray = myNetworks; + } + else if(typeof(myNetworks) == "string" && myNetworks.length > 0) { //myNetworks is a string, e.g. "202" + checkedNetworkIdArray = []; + checkedNetworkIdArray.push(myNetworks); + } + else { // typeof(myNetworks) == null + checkedNetworkIdArray = []; + } - var selectedNetworkObj = null; - $.ajax({ - url: createURL('listNetworks'), - data: networkData, - async: false, - success: function(json) { - var networks = json.listnetworksresponse.network; - if(networks != null && networks.length > 0) { - selectedNetworkObj = networks[0]; //each Advanced SG-enabled zone has only one guest network that is Shared and has SecurityGroup service - } + //add default network first + if(defaultNetworkId != null && defaultNetworkId.length > 0 && defaultNetworkId != 'new-network') + array2.push(defaultNetworkId); + + //then, add other checked networks + if(checkedNetworkIdArray.length > 0) { + for(var i=0; i < checkedNetworkIdArray.length; i++) { + if(checkedNetworkIdArray[i] != defaultNetworkId) //exclude defaultNetworkId that has been added to array2 + array2.push(checkedNetworkIdArray[i]); } - }); - if(selectedNetworkObj != null) { - array1.push("&networkIds=" + selectedNetworkObj.id); } - else { - alert('unable to find any Shared network with SecurityGroup service. Therefore, unable to deploy VM in this Advanced SecurityGroup-enabled zone.'); - return; - } - } - */ - + + array1.push("&networkIds=" + array2.join(",")); + } } else if (step5ContainerType == 'nothing-to-select') { if(args.context.networks != null) { //from VPC tier From a5ac88db88837c6b123ae59491318c94a75d6ceb Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Fri, 18 Jan 2013 11:00:18 -0800 Subject: [PATCH 3/3] CLOUDSTACK-938: Add missing checkbatchs2svpn.sh --- .../config/opt/cloud/bin/checkbatchs2svpn.sh | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100755 patches/systemvm/debian/config/opt/cloud/bin/checkbatchs2svpn.sh diff --git a/patches/systemvm/debian/config/opt/cloud/bin/checkbatchs2svpn.sh b/patches/systemvm/debian/config/opt/cloud/bin/checkbatchs2svpn.sh new file mode 100755 index 00000000000..80e3213753b --- /dev/null +++ b/patches/systemvm/debian/config/opt/cloud/bin/checkbatchs2svpn.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +for i in $* +do + info=`/opt/cloud/bin/checks2svpn.sh $i` + ret=$? + echo -n "$i:$ret:$info&" +done +