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