cloudstack 3.0 UI - VPC - IP Address page - configuration tab - fix a bug that root-admin was unable to see LB service of IP Address owned by regular-user or domain-admin.
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/0db33288 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/0db33288 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/0db33288 Branch: refs/heads/master Commit: 0db332887e5934a30f1ca3c1eb6d7f4b0dc56995 Parents: 0c8ce06 Author: Jessica Wang <[email protected]> Authored: Tue Aug 7 10:45:58 2012 -0700 Committer: Jessica Wang <[email protected]> Committed: Wed Aug 8 10:22:49 2012 -0700 ---------------------------------------------------------------------- ui/scripts/network.js | 261 ++++++++++++++++++++++--------------------- 1 files changed, 134 insertions(+), 127 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0db33288/ui/scripts/network.js ---------------------------------------------------------------------- diff --git a/ui/scripts/network.js b/ui/scripts/network.js index fbcde8d..6b79f71 100644 --- a/ui/scripts/network.js +++ b/ui/scripts/network.js @@ -1714,137 +1714,144 @@ var havingVpnService = false; if('networks' in args.context && args.context.networks[0].vpcid == null) { //a non-VPC network from Guest Network section - $.ajax({ - url: createURL("listNetworkOfferings&id=" + args.context.networks[0].networkofferingid), - dataType: "json", - async: false, - success: function(json) { - var networkoffering = json.listnetworkofferingsresponse.networkoffering[0]; - $(networkoffering.service).each(function(){ - var thisService = this; - if(thisService.name == "Firewall") - havingFirewallService = true; - if(thisService.name == "PortForwarding") - havingPortForwardingService = true; - if(thisService.name == "Lb") - havingLbService = true; - if(thisService.name == "Vpn") - havingVpnService = true; - }); - } - }); - } - else { //a VPC network from Guest Network section or from VPC section + $.ajax({ + url: createURL('listNetworkOfferings'), + data: { + listAll: true, + id: args.context.networks[0].networkofferingid + }, + async: false, + success: function(json) { + var networkoffering = json.listnetworkofferingsresponse.networkoffering[0]; + $(networkoffering.service).each(function(){ + var thisService = this; + if(thisService.name == "Firewall") + havingFirewallService = true; + if(thisService.name == "PortForwarding") + havingPortForwardingService = true; + if(thisService.name == "Lb") + havingLbService = true; + if(thisService.name == "Vpn") + havingVpnService = true; + }); + } + }); + } + else { //a VPC network from Guest Network section or from VPC section // Firewall is not supported in IP from VPC section // (because ACL has already supported in tier from VPC section) - havingFirewallService = false; - disallowedActions.push("firewall"); - - havingVpnService = false; //VPN is not supported in IP from VPC section - - if(args.context.ipAddresses[0].associatednetworkid == null) { //IP is not associated with any tier yet - havingPortForwardingService = true; - havingLbService = true; - } - else { //IP is associated with a tier - $.ajax({ - url: createURL("listNetworks&id=" + args.context.ipAddresses[0].associatednetworkid), - async: false, - success: function(json) { - var networkObj = json.listnetworksresponse.network[0]; - $.ajax({ - url: createURL("listNetworkOfferings&id=" + networkObj.networkofferingid), - async: false, - success: function(json) { - var networkoffering = json.listnetworkofferingsresponse.networkoffering[0]; - $(networkoffering.service).each(function(){ - var thisService = this; - if(thisService.name == "PortForwarding") - havingPortForwardingService = true; - if(thisService.name == "Lb") - havingLbService = true; - }); - } - }); - } - }); - } - } - - if(args.context.ipAddresses[0].networkOfferingConserveMode == false) { - /* - (1) If IP is SourceNat, no StaticNat/VPN/PortForwarding/LoadBalancer can be enabled/added. - */ - if (args.context.ipAddresses[0].issourcenat){ - if(havingFirewallService == false) { //firewall is not supported in IP from VPC section (because ACL has already supported in tier from VPC section) - disallowedActions.push("firewall"); - } - - disallowedActions.push("portForwarding"); - disallowedActions.push("loadBalancing"); - } - - /* - (2) If IP is non-SourceNat, show StaticNat/VPN/PortForwarding/LoadBalancer at first. - 1. Once StaticNat is enabled, hide VPN/PortForwarding/LoadBalancer. - 2. If VPN service is supported (i.e. IP comes from Guest Network section, not from VPC section), once VPN is enabled, hide StaticNat/PortForwarding/LoadBalancer. - 3. Once a PortForwarding rule is added, hide StaticNat/VPN/LoadBalancer. - 4. Once a LoadBalancer rule is added, hide StaticNat/VPN/PortForwarding. - */ - else { //args.context.ipAddresses[0].issourcenat == false - if(havingFirewallService == false) - disallowedActions.push("firewall"); - if(havingPortForwardingService == false) - disallowedActions.push("portForwarding"); - if(havingLbService == false) - disallowedActions.push("loadBalancing"); - - if (args.context.ipAddresses[0].isstaticnat) { //1. Once StaticNat is enabled, hide VPN/PortForwarding/LoadBalancer. - disallowedActions.push("portForwarding"); - disallowedActions.push("loadBalancing"); - } - if (havingVpnService && args.context.ipAddresses[0].vpnenabled) { //2. If VPN service is supported (i.e. IP comes from Guest Network section, not from VPC section), once VPN is enabled, hide StaticNat/PortForwarding/LoadBalancer. - disallowedActions.push("portForwarding"); - disallowedActions.push("loadBalancing"); - } - - //3. Once a PortForwarding rule is added, hide StaticNat/VPN/LoadBalancer. - $.ajax({ - url: createURL('listPortForwardingRules'), - data: { - ipaddressid: args.context.ipAddresses[0].id, - listAll: true - }, - dataType: 'json', - async: false, - success: function(json) { - // Get instance - var rules = json.listportforwardingrulesresponse.portforwardingrule; - if(rules != null && rules.length > 0) { - disallowedActions.push("loadBalancing"); - } - } - }); - - //4. Once a LoadBalancer rule is added, hide StaticNat/VPN/PortForwarding. - $.ajax({ - url: createURL('listLoadBalancerRules'), + havingFirewallService = false; + disallowedActions.push("firewall"); + + havingVpnService = false; //VPN is not supported in IP from VPC section + + if(args.context.ipAddresses[0].associatednetworkid == null) { //IP is not associated with any tier yet + havingPortForwardingService = true; + havingLbService = true; + } + else { //IP is associated with a tier + $.ajax({ + url: createURL('listNetworks'), data: { - publicipid: args.context.ipAddresses[0].id, - listAll: true + listAll: true, + id: args.context.ipAddresses[0].associatednetworkid }, - dataType: 'json', - async: false, - success: function(json) { - var rules = json.listloadbalancerrulesresponse.loadbalancerrule; - if(rules != null && rules.length > 0) { - disallowedActions.push("portForwarding"); - } - } - }); - } - } - + async: false, + success: function(json) { + var networkObj = json.listnetworksresponse.network[0]; + $.ajax({ + url: createURL("listNetworkOfferings&id=" + networkObj.networkofferingid), + async: false, + success: function(json) { + var networkoffering = json.listnetworkofferingsresponse.networkoffering[0]; + $(networkoffering.service).each(function(){ + var thisService = this; + if(thisService.name == "PortForwarding") + havingPortForwardingService = true; + if(thisService.name == "Lb") + havingLbService = true; + }); + } + }); + } + }); + } + } + + if(args.context.ipAddresses[0].networkOfferingConserveMode == false) { + /* + (1) If IP is SourceNat, no StaticNat/VPN/PortForwarding/LoadBalancer can be enabled/added. + */ + if (args.context.ipAddresses[0].issourcenat){ + if(havingFirewallService == false) { //firewall is not supported in IP from VPC section (because ACL has already supported in tier from VPC section) + disallowedActions.push("firewall"); + } + + disallowedActions.push("portForwarding"); + disallowedActions.push("loadBalancing"); + } + + /* + (2) If IP is non-SourceNat, show StaticNat/VPN/PortForwarding/LoadBalancer at first. + 1. Once StaticNat is enabled, hide VPN/PortForwarding/LoadBalancer. + 2. If VPN service is supported (i.e. IP comes from Guest Network section, not from VPC section), once VPN is enabled, hide StaticNat/PortForwarding/LoadBalancer. + 3. Once a PortForwarding rule is added, hide StaticNat/VPN/LoadBalancer. + 4. Once a LoadBalancer rule is added, hide StaticNat/VPN/PortForwarding. + */ + else { //args.context.ipAddresses[0].issourcenat == false + if(havingFirewallService == false) + disallowedActions.push("firewall"); + if(havingPortForwardingService == false) + disallowedActions.push("portForwarding"); + if(havingLbService == false) + disallowedActions.push("loadBalancing"); + + if (args.context.ipAddresses[0].isstaticnat) { //1. Once StaticNat is enabled, hide VPN/PortForwarding/LoadBalancer. + disallowedActions.push("portForwarding"); + disallowedActions.push("loadBalancing"); + } + if (havingVpnService && args.context.ipAddresses[0].vpnenabled) { //2. If VPN service is supported (i.e. IP comes from Guest Network section, not from VPC section), once VPN is enabled, hide StaticNat/PortForwarding/LoadBalancer. + disallowedActions.push("portForwarding"); + disallowedActions.push("loadBalancing"); + } + + //3. Once a PortForwarding rule is added, hide StaticNat/VPN/LoadBalancer. + $.ajax({ + url: createURL('listPortForwardingRules'), + data: { + ipaddressid: args.context.ipAddresses[0].id, + listAll: true + }, + dataType: 'json', + async: false, + success: function(json) { + // Get instance + var rules = json.listportforwardingrulesresponse.portforwardingrule; + if(rules != null && rules.length > 0) { + disallowedActions.push("loadBalancing"); + } + } + }); + + //4. Once a LoadBalancer rule is added, hide StaticNat/VPN/PortForwarding. + $.ajax({ + url: createURL('listLoadBalancerRules'), + data: { + publicipid: args.context.ipAddresses[0].id, + listAll: true + }, + dataType: 'json', + async: false, + success: function(json) { + var rules = json.listloadbalancerrulesresponse.loadbalancerrule; + if(rules != null && rules.length > 0) { + disallowedActions.push("portForwarding"); + } + } + }); + } + } + return disallowedActions; },
