From 8deeb90a6dcd90797d36f3c0ecd903a068140093 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Fri, 31 May 2013 15:33:15 -0700 Subject: [PATCH] CLOUDSTACK-2746: UI - InternalLB - VPC section - tiers - add tier dialog - network offering dropdown - exclude PublicLb network offerings only when PublicLb networks exists (i.e. LB network whose provider is VpcVirtualRouter or Netscaler exists). --- ui/scripts/vpc.js | 50 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/ui/scripts/vpc.js b/ui/scripts/vpc.js index 8f984148a07..033ac7f4d0e 100644 --- a/ui/scripts/vpc.js +++ b/ui/scripts/vpc.js @@ -3002,7 +3002,7 @@ validation: { required: true }, dependsOn: 'zoneId', select: function(args) { - var networkSupportingLbExists = false; + var publicLbNetworkExists = false; $.ajax({ url: createURL('listNetworks'), data: { @@ -3010,11 +3010,35 @@ supportedservices: 'LB' }, success: function(json) { - var networkSupportingLbExists; - if(json.listnetworksresponse.network != null && json.listnetworksresponse.network.length > 0) - networkSupportingLbExists = true; - else - networkSupportingLbExists = false; + var publicLbNetworkExists = false; + + var lbNetworks = json.listnetworksresponse.network; + if(lbNetworks != null) { + for(var i = 0; i < lbNetworks.length; i++) { + var thisNetworkOfferingIncludesPublicLbService = false; + $.ajax({ + url: createURL('listNetworkOfferings'), + data: { + id: lbNetworks[i].networkofferingid + }, + async: false, + success: function(json) { + var networkOffering = json.listnetworkofferingsresponse.networkoffering[0]; + $(networkOffering.service).each(function(){ + var thisService = this; + if(thisService.name == "Lb" && lbProviderMap.publicLb.vpc.indexOf(thisService.provider[0].name) != -1) { + thisNetworkOfferingIncludesPublicLbService = true; + return false; //break $.each() loop + } + }); + } + }); + if(thisNetworkOfferingIncludesPublicLbService == true) { + publicLbNetworkExists = true; + break; //break for loop + } + } + } $.ajax({ url: createURL('listNetworkOfferings'), @@ -3029,19 +3053,19 @@ success: function(json) { var networkOfferings = json.listnetworkofferingsresponse.networkoffering; - var items; - if(networkSupportingLbExists == true) { + //only one network(tier) is allowed to have PublicLb (i.e. provider is PublicLb provider like "VpcVirtualRouter", "Netscaler") in a VPC + var items; + if(publicLbNetworkExists == true) { //so, if a PublicLb network(tier) already exists in the vpc, exclude PublicLb network offerings from dropdown items = $.grep(networkOfferings, function(networkOffering) { - var includingPublicLbService = false; + var thisNetworkOfferingIncludesPublicLbService = false; $(networkOffering.service).each(function(){ - var thisService = this; - //only one tier is allowed to have PublicLb provider in a VPC + var thisService = this; if(thisService.name == "Lb" && lbProviderMap.publicLb.vpc.indexOf(thisService.provider[0].name) != -1) { - includingPublicLbService = true; + thisNetworkOfferingIncludesPublicLbService = true; return false; //break $.each() loop } }); - return !includingPublicLbService; + return !thisNetworkOfferingIncludesPublicLbService; }); } else {