CLOUDSTACK-766: Support assigning VLAN ID to network

On add network form, if selected network offering has
specifyVlan=true, show VLAN text field.
This commit is contained in:
Brian Federle 2013-06-03 11:29:40 -07:00
parent 24d6055177
commit acc71fb735
2 changed files with 69 additions and 12 deletions

View File

@ -376,20 +376,41 @@
var items = json.listvpcsresponse.vpc; var items = json.listvpcsresponse.vpc;
var baseUrl = 'listNetworkOfferings&zoneid=' + args.zoneId; var baseUrl = 'listNetworkOfferings&zoneid=' + args.zoneId;
var listUrl; var listUrl;
var data = {
guestiptype: 'Isolated',
supportedServices: 'SourceNat',
state: 'Enabled',
};
if(items != null && items.length > 0) if(items != null && items.length > 0)
listUrl = baseUrl; listUrl = baseUrl;
else else
listUrl = baseUrl + '&forVpc=false'; listUrl = baseUrl + '&forVpc=false';
if (args.context.vpc) {
data.forVpc = true;
}
$.ajax({ $.ajax({
url: createURL(listUrl), url: createURL(listUrl),
data: { data: data,
guestiptype: 'Isolated',
supportedServices: 'SourceNat',
specifyvlan: false,
state: 'Enabled'
},
success: function(json) { success: function(json) {
networkOfferingObjs = json.listnetworkofferingsresponse.networkoffering; networkOfferingObjs = json.listnetworkofferingsresponse.networkoffering;
args.$select.change(function() {
var $vlan = args.$select.closest('form').find('[rel=vlan]');
var networkOffering = $.grep(
networkOfferingObjs, function(netoffer) {
return netoffer.id == args.$select.val();
}
)[0];
if (networkOffering.specifyvlan) {
$vlan.css('display', 'inline-block');
} else {
$vlan.hide();
}
});
args.response.success({ args.response.success({
data: $.map(networkOfferingObjs, function(zone) { data: $.map(networkOfferingObjs, function(zone) {
return { return {
@ -405,26 +426,39 @@
} }
}, },
vlan: {
label: 'VLAN',
validation: { required: true },
isHidden: true
},
vpcid: { vpcid: {
label: 'label.vpc', label: 'label.vpc',
dependsOn: 'networkOfferingId', dependsOn: 'networkOfferingId',
select: function(args) { select: function(args) {
var networkOfferingObj; var networkOfferingObj;
var $form = args.$select.closest('form'); var $form = args.$select.closest('form');
var data = {
listAll: true,
details: 'min'
};
if (args.context.vpc) {
data.id = args.context.vpc[0].id;
}
$(networkOfferingObjs).each(function(key, value) { $(networkOfferingObjs).each(function(key, value) {
if(value.id == args.networkOfferingId) { if(value.id == args.networkOfferingId) {
networkOfferingObj = value; networkOfferingObj = value;
return false; //break each loop return false; //break each loop
} }
}); });
if(networkOfferingObj.forvpc == true) { if(networkOfferingObj.forvpc == true) {
args.$select.closest('.form-item').css('display', 'inline-block'); args.$select.closest('.form-item').css('display', 'inline-block');
$.ajax({ $.ajax({
url: createURL('listVPCs'), url: createURL('listVPCs'),
data: { data: data,
listAll: true,
details: 'min'
},
success: function(json) { success: function(json) {
var items = json.listvpcsresponse.vpc; var items = json.listvpcsresponse.vpc;
var data; var data;
@ -477,12 +511,17 @@
vpcid: args.data.vpcid vpcid: args.data.vpcid
}); });
} }
if (args.$form.find('.form-item[rel=vlan]').css('display') != 'none') {
$.extend(dataObj, { vlan: args.data.vlan });
}
if(args.data.networkDomain != null && args.data.networkDomain.length > 0 && args.$form.find('.form-item[rel=vpcid]').css("display") == "none") { if(args.data.networkDomain != null && args.data.networkDomain.length > 0 && args.$form.find('.form-item[rel=vpcid]').css("display") == "none") {
$.extend(dataObj, { $.extend(dataObj, {
networkDomain: args.data.networkDomain networkDomain: args.data.networkDomain
}); });
} }
$.ajax({ $.ajax({
url: createURL('createNetwork'), url: createURL('createNetwork'),
data: dataObj, data: dataObj,

View File

@ -3047,11 +3047,24 @@
zoneid: args.zoneId, zoneid: args.zoneId,
guestiptype: 'Isolated', guestiptype: 'Isolated',
supportedServices: 'SourceNat', supportedServices: 'SourceNat',
specifyvlan: false,
state: 'Enabled' state: 'Enabled'
}, },
success: function(json) { success: function(json) {
var networkOfferings = json.listnetworkofferingsresponse.networkoffering; var networkOfferings = json.listnetworkofferingsresponse.networkoffering;
args.$select.change(function() {
var $vlan = args.$select.closest('form').find('[rel=vlan]');
var networkOffering = $.grep(
networkOfferings, function(netoffer) {
return netoffer.id == args.$select.val();
}
)[0];
if (networkOffering.specifyvlan) {
$vlan.css('display', 'inline-block');
} else {
$vlan.hide();
}
});
//only one network(tier) is allowed to have PublicLb (i.e. provider is PublicLb provider like "VpcVirtualRouter", "Netscaler") in a VPC //only one network(tier) is allowed to have PublicLb (i.e. provider is PublicLb provider like "VpcVirtualRouter", "Netscaler") in a VPC
var items; var items;
@ -3086,6 +3099,11 @@
}); });
} }
}, },
vlan: {
label: 'VLAN',
validation: { required: true },
isHidden: true
},
gateway: { gateway: {
label: 'label.gateway', label: 'label.gateway',
docID: 'helpTierGateway', docID: 'helpTierGateway',