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,7 +1,8 @@
|
||||
(function(cloudStack, $) {
|
||||
|
||||
var requiredNetworkOfferingExists = false;
|
||||
|
||||
var networkServiceObjs = [];
|
||||
|
||||
cloudStack.sections.configuration = {
|
||||
title: 'Configuration',
|
||||
id: '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