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

View File

@ -3047,11 +3047,24 @@
zoneid: args.zoneId,
guestiptype: 'Isolated',
supportedServices: 'SourceNat',
specifyvlan: false,
state: 'Enabled'
},
success: function(json) {
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
var items;
@ -3086,6 +3099,11 @@
});
}
},
vlan: {
label: 'VLAN',
validation: { required: true },
isHidden: true
},
gateway: {
label: 'label.gateway',
docID: 'helpTierGateway',