mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	bug 13373: create network offering dialog - when a provider who can not enable individual service gets selected, make all services supported by this provider have this provider selected in provider dropdown.
This commit is contained in:
		
							parent
							
								
									a8476ac0de
								
							
						
					
					
						commit
						cc3bf1e6d2
					
				| @ -1,6 +1,7 @@ | ||||
| (function(cloudStack, $) { | ||||
| 
 | ||||
|   var requiredNetworkOfferingExists = false; | ||||
|   var networkServiceObjs = []; | ||||
| 	 | ||||
|   cloudStack.sections.configuration = { | ||||
|     title: 'Configuration', | ||||
| @ -1107,61 +1108,81 @@ | ||||
|                         dataType: 'json', | ||||
|                         async: true, | ||||
|                         success: function(data) { | ||||
|                           var networkServices = data.listsupportednetworkservicesresponse.networkservice; | ||||
|                           var fields = {}; | ||||
|                           $(networkServices).each(function() { | ||||
|                             var name = this.name; | ||||
|                             var providers = this.provider; | ||||
|                             var displayName; | ||||
|                           networkServiceObjs = data.listsupportednetworkservicesresponse.networkservice; | ||||
|                           var fields = {}, providerCanenableindividualserviceMap = {}, providerServicesMap = {}; | ||||
|                           $(networkServiceObjs).each(function() { | ||||
|                             var serviceName = this.name; | ||||
|                             var providerObjs = this.provider; | ||||
|                             var serviceDisplayName; | ||||
| 
 | ||||
|                             // Sanitize names
 | ||||
|                             switch (name) { | ||||
|                             case 'Vpn': displayName = 'VPN'; break; | ||||
|                             case 'Dhcp': displayName = 'DHCP'; break; | ||||
|                             case 'Dns': displayName = 'DNS'; break; | ||||
|                             case 'Lb': displayName = 'Load Balancer'; break; | ||||
|                             case 'SourceNat': displayName = 'Source NAT'; break; | ||||
|                             case 'StaticNat': displayName = 'Static NAT'; break; | ||||
|                             case 'PortForwarding': displayName = 'Port Forwarding'; break; | ||||
|                             case 'SecurityGroup': displayName = 'Security Groups'; break; | ||||
|                             case 'UserData': displayName = 'User Data'; break; | ||||
|                             default: displayName = name; break; | ||||
|                             switch (serviceName) { | ||||
|                             case 'Vpn': serviceDisplayName = 'VPN'; break; | ||||
|                             case 'Dhcp': serviceDisplayName = 'DHCP'; break; | ||||
|                             case 'Dns': serviceDisplayName = 'DNS'; break; | ||||
|                             case 'Lb': serviceDisplayName = 'Load Balancer'; break; | ||||
|                             case 'SourceNat': serviceDisplayName = 'Source NAT'; break; | ||||
|                             case 'StaticNat': serviceDisplayName = 'Static NAT'; break; | ||||
|                             case 'PortForwarding': serviceDisplayName = 'Port Forwarding'; break; | ||||
|                             case 'SecurityGroup': serviceDisplayName = 'Security Groups'; break; | ||||
|                             case 'UserData': serviceDisplayName = 'User Data'; break; | ||||
|                             default: serviceDisplayName = serviceName; break; | ||||
|                             } | ||||
| 
 | ||||
|                             var id = { | ||||
|                               isEnabled: 'service' + '.' + name + '.' + 'isEnabled', | ||||
|                               capabilities: 'service' + '.' + name + '.' + 'capabilities', | ||||
|                               provider: 'service' + '.' + name + '.' + 'provider' | ||||
|                               isEnabled: 'service' + '.' + serviceName + '.' + 'isEnabled', | ||||
|                               capabilities: 'service' + '.' + serviceName + '.' + 'capabilities', | ||||
|                               provider: 'service' + '.' + serviceName + '.' + 'provider' | ||||
|                             }; | ||||
| 
 | ||||
|                             fields[id.isEnabled] = { label: displayName, isBoolean: true }; | ||||
|                             fields[id.isEnabled] = { label: serviceDisplayName, isBoolean: true }; | ||||
| 																												 | ||||
| 														if(providers != null && providers.length > 1) {	//present provider dropdown when there are multiple providers for a service												
 | ||||
| 														if(providerObjs != null && providerObjs.length > 1) {	//present provider dropdown when there are multiple providers for a service												
 | ||||
| 															fields[id.provider] = { | ||||
| 																label: displayName + ' Provider', | ||||
| 																label: serviceDisplayName + ' Provider', | ||||
| 																isHidden: true, | ||||
| 																dependsOn: id.isEnabled, | ||||
| 																select: function(args) {																 | ||||
| 																	//Virtual Router needs to be the first choice in provider dropdown (Bug 12509)																	
 | ||||
| 																	var items = []; | ||||
| 																	$(providers).each(function(){ | ||||
| 																	$(providerObjs).each(function(){ | ||||
| 																	  if(this.name == "VirtualRouter") | ||||
| 																		  items.unshift({id: this.name, description: this.name}); | ||||
| 																		else | ||||
| 																		  items.push({id: this.name, description: this.name}); | ||||
| 																																				 | ||||
| 																		if(!(this.name in providerCanenableindividualserviceMap)) | ||||
| 																		  providerCanenableindividualserviceMap[this.name] = this.canenableindividualservice; | ||||
| 																																				 | ||||
|                                     if(!(this.name in providerServicesMap))													 | ||||
|                                       providerServicesMap[this.name] = [serviceName]; | ||||
|                                     else																			 | ||||
| 																		  providerServicesMap[this.name].push(serviceName);																		 | ||||
| 																	}); | ||||
| 																															 | ||||
| 																	args.response.success({ | ||||
| 																		data: items | ||||
| 																	}); | ||||
| 																																																	 | ||||
| 																	args.$select.change(function() {																	  			 | ||||
|                                     var providerName = $(this).val();																	 | ||||
| 																		var canenableindividualservice = providerCanenableindividualserviceMap[providerName];																	   | ||||
| 																		if(canenableindividualservice == false) { //This provider can NOT enable individual service, therefore, make all services supported by this provider have this provider selected in provider dropdown
 | ||||
| 																		  var serviceNames = providerServicesMap[providerName];																		  | ||||
| 																			$(serviceNames).each(function(){																			  | ||||
| 																				var providerDropdownId = 'service' + '.' + this + '.' + 'provider';																				 | ||||
| 																				$("select[name='" + providerDropdownId + "']").val(providerName);																				 | ||||
| 																			});																			 | ||||
| 																		}																		 | ||||
| 																	});		 | ||||
| 																} | ||||
| 															}; | ||||
| 														} | ||||
| 														else if(providers != null && providers.length == 1){ //present hidden field when there is only one provider for a service		
 | ||||
| 														else if(providerObjs != null && providerObjs.length == 1){ //present hidden field when there is only one provider for a service		
 | ||||
| 														  fields[id.provider] = { | ||||
| 															  label: displayName + ' Provider', | ||||
| 															  label: serviceDisplayName + ' Provider', | ||||
| 																isHidden: true, | ||||
| 																defaultValue: providers[0].name | ||||
| 																defaultValue: providerObjs[0].name | ||||
| 															}; | ||||
| 														}														 | ||||
|                           }); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user