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, $) { | (function(cloudStack, $) { | ||||||
| 
 | 
 | ||||||
|   var requiredNetworkOfferingExists = false; |   var requiredNetworkOfferingExists = false; | ||||||
|  |   var networkServiceObjs = []; | ||||||
| 	 | 	 | ||||||
|   cloudStack.sections.configuration = { |   cloudStack.sections.configuration = { | ||||||
|     title: 'Configuration', |     title: 'Configuration', | ||||||
| @ -1107,61 +1108,81 @@ | |||||||
|                         dataType: 'json', |                         dataType: 'json', | ||||||
|                         async: true, |                         async: true, | ||||||
|                         success: function(data) { |                         success: function(data) { | ||||||
|                           var networkServices = data.listsupportednetworkservicesresponse.networkservice; |                           networkServiceObjs = data.listsupportednetworkservicesresponse.networkservice; | ||||||
|                           var fields = {}; |                           var fields = {}, providerCanenableindividualserviceMap = {}, providerServicesMap = {}; | ||||||
|                           $(networkServices).each(function() { |                           $(networkServiceObjs).each(function() { | ||||||
|                             var name = this.name; |                             var serviceName = this.name; | ||||||
|                             var providers = this.provider; |                             var providerObjs = this.provider; | ||||||
|                             var displayName; |                             var serviceDisplayName; | ||||||
| 
 | 
 | ||||||
|                             // Sanitize names
 |                             // Sanitize names
 | ||||||
|                             switch (name) { |                             switch (serviceName) { | ||||||
|                             case 'Vpn': displayName = 'VPN'; break; |                             case 'Vpn': serviceDisplayName = 'VPN'; break; | ||||||
|                             case 'Dhcp': displayName = 'DHCP'; break; |                             case 'Dhcp': serviceDisplayName = 'DHCP'; break; | ||||||
|                             case 'Dns': displayName = 'DNS'; break; |                             case 'Dns': serviceDisplayName = 'DNS'; break; | ||||||
|                             case 'Lb': displayName = 'Load Balancer'; break; |                             case 'Lb': serviceDisplayName = 'Load Balancer'; break; | ||||||
|                             case 'SourceNat': displayName = 'Source NAT'; break; |                             case 'SourceNat': serviceDisplayName = 'Source NAT'; break; | ||||||
|                             case 'StaticNat': displayName = 'Static NAT'; break; |                             case 'StaticNat': serviceDisplayName = 'Static NAT'; break; | ||||||
|                             case 'PortForwarding': displayName = 'Port Forwarding'; break; |                             case 'PortForwarding': serviceDisplayName = 'Port Forwarding'; break; | ||||||
|                             case 'SecurityGroup': displayName = 'Security Groups'; break; |                             case 'SecurityGroup': serviceDisplayName = 'Security Groups'; break; | ||||||
|                             case 'UserData': displayName = 'User Data'; break; |                             case 'UserData': serviceDisplayName = 'User Data'; break; | ||||||
|                             default: displayName = name; break; |                             default: serviceDisplayName = serviceName; break; | ||||||
|                             } |                             } | ||||||
| 
 | 
 | ||||||
|                             var id = { |                             var id = { | ||||||
|                               isEnabled: 'service' + '.' + name + '.' + 'isEnabled', |                               isEnabled: 'service' + '.' + serviceName + '.' + 'isEnabled', | ||||||
|                               capabilities: 'service' + '.' + name + '.' + 'capabilities', |                               capabilities: 'service' + '.' + serviceName + '.' + 'capabilities', | ||||||
|                               provider: 'service' + '.' + name + '.' + 'provider' |                               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] = { | 															fields[id.provider] = { | ||||||
| 																label: displayName + ' Provider', | 																label: serviceDisplayName + ' Provider', | ||||||
| 																isHidden: true, | 																isHidden: true, | ||||||
| 																dependsOn: id.isEnabled, | 																dependsOn: id.isEnabled, | ||||||
| 																select: function(args) {																 | 																select: function(args) {																 | ||||||
| 																	//Virtual Router needs to be the first choice in provider dropdown (Bug 12509)																	
 | 																	//Virtual Router needs to be the first choice in provider dropdown (Bug 12509)																	
 | ||||||
| 																	var items = []; | 																	var items = []; | ||||||
| 																	$(providers).each(function(){ | 																	$(providerObjs).each(function(){ | ||||||
| 																	  if(this.name == "VirtualRouter") | 																	  if(this.name == "VirtualRouter") | ||||||
| 																		  items.unshift({id: this.name, description: this.name}); | 																		  items.unshift({id: this.name, description: this.name}); | ||||||
| 																		else | 																		else | ||||||
| 																		  items.push({id: this.name, description: this.name}); | 																		  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({ | 																	args.response.success({ | ||||||
| 																		data: items | 																		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] = { | 														  fields[id.provider] = { | ||||||
| 															  label: displayName + ' Provider', | 															  label: serviceDisplayName + ' Provider', | ||||||
| 																isHidden: true, | 																isHidden: true, | ||||||
| 																defaultValue: providers[0].name | 																defaultValue: providerObjs[0].name | ||||||
| 															}; | 															}; | ||||||
| 														}														 | 														}														 | ||||||
|                           }); |                           }); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user