cloudStack 3.0 new UI - NaaS

This commit is contained in:
Jessica Wang 2011-11-09 19:10:49 -08:00
parent e62ce165f5
commit d7edcd6957
4 changed files with 287 additions and 37 deletions

View File

@ -839,7 +839,7 @@
}, },
dataProvider: function(args) { dataProvider: function(args) {
$.ajax({ $.ajax({
url: createURL("listNetworkOfferings&guestiptype=Virtual&page=" + args.page + "&pagesize=" + pageSize), url: createURL("listNetworkOfferings&guestiptype=Isolated&supportedServices=sourceNat&page=" + args.page + "&pagesize=" + pageSize),
dataType: "json", dataType: "json",
async: true, async: true,
success: function(json) { success: function(json) {

View File

@ -266,15 +266,19 @@
if(selectedZoneObj.securitygroupsenabled == false) { if(selectedZoneObj.securitygroupsenabled == false) {
if (networks != null && networks.length > 0) { if (networks != null && networks.length > 0) {
for (var i = 0; i < networks.length; i++) { for (var i = 0; i < networks.length; i++) {
if (networks[i].type == 'Virtual') { if (networks[i].type == 'Isolated') {
//loop through
var sourceNatObj = ipFindNetworkServiceByName("SourceNat", networkObj);
if(sourceNatObj != null) {
virtualNetwork = networks[i]; virtualNetwork = networks[i];
break; break;
} }
} }
} }
if (virtualNetwork == null) { //if there is no virtualNetwork }
if (virtualNetwork == null) { //if there is no isolatedNetwork
$.ajax({ $.ajax({
url: createURL("listNetworkOfferings&guestiptype=Virtual"), //check DefaultVirtualizedNetworkOffering url: createURL("listNetworkOfferings&guestiptype=Isolated&supportedServices=sourceNat&state=Enabled"), //check networkOffering for isolatedNetwork
dataType: "json", dataType: "json",
async: false, async: false,
success: function(json) { success: function(json) {
@ -284,9 +288,9 @@
if (networkOfferings[i].isdefault == true if (networkOfferings[i].isdefault == true
&& (networkOfferings[i].availability == "Required" || networkOfferings[i].availability == "Optional") && (networkOfferings[i].availability == "Required" || networkOfferings[i].availability == "Optional")
) { ) {
// Create a virtual network // Create a isolated network
var networkName = "Virtual Network"; var networkName = "Isolated Network";
var networkDesc = "A dedicated virtualized network for your account. The broadcast domain is contained within a VLAN and all public network access is routed out by a virtual router."; var networkDesc = "A dedicated isolated network for your account. The broadcast domain is contained within a VLAN and all public network access is routed out by a virtual router.";
$.ajax({ $.ajax({
url: createURL("createNetwork&networkOfferingId="+networkOfferings[i].id+"&name="+todb(networkName)+"&displayText="+todb(networkDesc)+"&zoneId="+args.currentData.zoneid), url: createURL("createNetwork&networkOfferingId="+networkOfferings[i].id+"&name="+todb(networkName)+"&displayText="+todb(networkDesc)+"&zoneId="+args.currentData.zoneid),
dataType: "json", dataType: "json",

View File

@ -283,6 +283,34 @@ cloudStack.converters = {
} }
} }
//find service object in network object
function ipFindNetworkServiceByName(pName, networkObj) {
if(networkObj == null)
return null;
if(networkObj.service != null) {
for(var i=0; i<networkObj.service.length; i++) {
var networkServiceObj = networkObj.service[i];
if(networkServiceObj.name == pName)
return networkServiceObj;
}
}
return null;
}
//find capability object in service object in network object
function ipFindCapabilityByName(pName, networkServiceObj) {
if(networkServiceObj == null)
return null;
if(networkServiceObj.capability != null) {
for(var i=0; i<networkServiceObj.capability.length; i++) {
var capabilityObj = networkServiceObj.capability[i];
if(capabilityObj.name == pName)
return capabilityObj;
}
}
return null;
}
//VM Instance //VM Instance
function getVmName(p_vmName, p_vmDisplayname) { function getVmName(p_vmName, p_vmDisplayname) {
if(p_vmDisplayname == null) if(p_vmDisplayname == null)

View File

@ -12,45 +12,117 @@
'public': { 'public': {
detailView: { detailView: {
actions: { actions: {
/*
edit: { edit: {
label: 'Edit network details', label: 'Edit network details',
action: function(args) { action: function(args) {
args.response.success(); args.response.success();
} }
} }
*/
}, },
tabs: { tabs: {
details: { details: {
title: 'Details', title: 'Details',
fields: [ fields: [
{ {
name: { label: 'name' }, networkofferingdisplaytext: { label: "Network offering description" }
displaytext: { label: 'displaytext' }
}, },
{ {
broadcastdomaintype: { label: 'broadcastdomaintype' }, id: { label: "ID" },
traffictype: { label: 'traffictype' }, broadcastdomaintype: { label: 'Broadcast domain type' },
gateway: { label: 'gateway' }, traffictype: { label: 'Traffic type' },
netmask: { label: 'netmask' }, gateway: { label: 'Gateway' },
startip: { isEditable: true, label: 'startip' }, netmask: { label: 'Netmask' },
endip: { isEditable: true, label: 'endip' }, startip: { label: 'Start IP' },
zoneid: { label: 'zoneid' }, endip: { label: 'End IP' },
networkofferingid: { label: 'networkofferingid' }, zoneid: { label: 'Zone ID' },
networkofferingname: { label: 'networkofferingname' }, networkofferingid: { label: 'Network offering ID' },
networkofferingdisplaytext: { label: 'networkofferingdisplaytext' }, networkofferingname: { label: 'Network offering name' },
networkofferingavailability: { label: 'networkofferingavailability' }, networkofferingavailability: { label: 'network offering availability' },
isshared: { label: 'isshared' }, isshared: {
issystem: { label: 'issystem' }, label: 'Shared',
state: { label: 'state' }, converter: cloudStack.converters.toBooleanText
related: { label: 'related' }, },
broadcasturi: { label: 'broadcasturi' }, issystem: {
dns1: { label: 'dns1' }, label: 'System',
type: { label: 'type' } converter: cloudStack.converters.toBooleanText
},
isdefault: {
label: 'Default',
converter: cloudStack.converters.toBooleanText
},
securitygroupenabled: {
label: 'Security group enabled',
converter: cloudStack.converters.toBooleanText
},
state: { label: 'State' },
related: { label: 'Related' },
dns1: { label: 'DNS 1' },
dns2: { label: 'DNS 2' },
vlan: { label: 'VLAN' },
domainid: { label: 'Domain ID' },
account: { label: 'Account' }
} }
], ],
//???
dataProvider: function(args) { dataProvider: function(args) {
args.response.success({ data: testData.data.networks[0] }); debugger;
var showPublicNetwork = true;
var zoneObj = args.context.zones[0];
if(zoneObj.networktype == "Basic") {
//$("#add_network_button").hide();
$.ajax({
url: createURL("listExternalFirewalls&zoneid=" + zoneObj.id),
dataType: "json",
async: false,
success: function(json) {
var items = json.listexternalfirewallsresponse.externalfirewall;
if(items != null && items.length > 0) {
showPublicNetwork = true;
//$("#add_iprange_button,#tab_ipallocation").show();
} }
else {
showPublicNetwork = false;
//$("#add_iprange_button,#tab_ipallocation").hide();
}
}
});
}
else { // Advanced zone
showPublicNetwork = true;
//$("#add_network_button,#add_iprange_button,#tab_ipallocation").show();
//listMidMenuItems2(("listNetworks&type=Direct&zoneId="+zoneObj.id), networkGetSearchParams, "listnetworksresponse", "network", directNetworkToMidmenu, directNetworkToRightPanel, directNetworkGetMidmenuId, false, 1);
}
if(showPublicNetwork == true && zoneObj.securitygroupsenabled == false) { //public network
$.ajax({
url: createURL("listNetworks&trafficType=Public&isSystem=true&zoneId="+zoneObj.id),
dataType: "json",
async: false,
success: function(json) {
var items = json.listnetworksresponse.network;
args.response.success({data: items});
}
});
}
else if (showPublicNetwork == true && zoneObj.securitygroupsenabled == true){
$.ajax({
url: createURL("listNetworks&type=Direct&trafficType=Guest&isSystem=true&zoneId="+zoneObj.id),
dataType: "json",
async: false,
success: function(json) {
var items = json.listnetworksresponse.network;
args.response.success({data: items});
}
});
}
else {
args.response.success({data: null});
}
}
//???
} }
} }
} }
@ -74,16 +146,60 @@
}, },
'guest': { 'guest': {
detailView: { detailView: {
actions: {
edit: {
label: 'Edit',
action: function(args) {
$.ajax({
url: createURL("updatePhysicalNetwork&id=" + args.context.guest[0].id + "&state=Enabled&vlan=" + args.data.vlan),
dataType: "json",
success: function(json) {
var item = json.updatephysicalnetworkresponse.physicalnetwork;
args.response.success({data: item});
}
});
}
}
},
tabs: { tabs: {
details: { details: {
title: 'Details', title: 'Details',
fields: [ fields: [
{ {
name: { label: 'Name' } name: { label: 'Name' }
},
{
id: { label: 'ID' },
state: { label: 'State' },
vlan: {
label: 'VLAN',
isEditable: true
},
broadcastdomainrange: { label: 'Broadcast domain range' },
zoneid: { label: 'Zone ID' },
guestcidraddress: { label: 'CIDR' }
} }
], ],
dataProvider: function(args) { dataProvider: function(args) {
args.response.success({ data: testData.data.networks[0] }); //var zoneId = args.context.zones[0].id;
var zoneId = 1; //hardcode it until Brian fixes the bug.
var physicalNetworkObj = [];
$.ajax({
url: createURL("listPhysicalNetworks&zoneId=" + zoneId),
dataType: "json",
async: false,
success: function(json) {
var items = json.listphysicalnetworksresponse.physicalnetwork;
physicalNetworkObj = items[0];
}
});
//physicalNetworkObj["guestcidraddress"] = args.context.zones[0].guestcidraddress;
physicalNetworkObj["guestcidraddress"] = "10.1.1.0/24"; //hardcode it until Brian fixes the bug.
args.response.success({data: physicalNetworkObj});
} }
} }
} }
@ -368,6 +484,7 @@
else { //args.data["isolation-mode"] == "vlan" else { //args.data["isolation-mode"] == "vlan"
array1.push("&securitygroupenabled=false"); array1.push("&securitygroupenabled=false");
/*
var vlanStart = args.data["vlan-range-start"]; var vlanStart = args.data["vlan-range-start"];
if(vlanStart != null && vlanStart.length > 0) { if(vlanStart != null && vlanStart.length > 0) {
var vlanEnd = args.data["vlan-range-end"]; var vlanEnd = args.data["vlan-range-end"];
@ -376,6 +493,7 @@
else else
array1.push("&vlan=" + todb(vlanStart)); array1.push("&vlan=" + todb(vlanStart));
} }
*/
var guestcidraddress = args.data["guest-cidr"]; var guestcidraddress = args.data["guest-cidr"];
if(guestcidraddress != null && guestcidraddress.length > 0) { if(guestcidraddress != null && guestcidraddress.length > 0) {
@ -397,7 +515,107 @@
args.response.success({data:item}); args.response.success({data:item});
zoneId = item.id; zoneId = item.id;
//$("#leftmenu_security_group_container").show();
//???
var physicalNetworkId;
$.ajax({
url: createURL("listPhysicalNetworks&zoneId=" + zoneId),
dataType: "json",
async: false,
success: function(json) {
var items = json.listphysicalnetworksresponse.physicalnetwork;
if(items != null && items.length > 0)
physicalNetworkId = items[0].id
}
});
if(physicalNetworkId != null) {
/*
var array1 = [];
var vlanStart = args.data["vlan-range-start"];
if(vlanStart != null && vlanStart.length > 0) {
var vlanEnd = args.data["vlan-range-end"];
if (vlanEnd != null && vlanEnd.length > 0)
array1.push("&vlan=" + todb(vlanStart + "-" + vlanEnd));
else
array1.push("&vlan=" + todb(vlanStart));
}
$.ajax({
url: createURL("updatePhysicalNetwork&id=" + physicalNetworkId + "&state=Enabled" + array1.join("")),
dataType: "json",
async: false,
success: function(json) {
var jid = json.updatephysicalnetworkresponse.jobid;
$.ajax({
url: createURL("queryAsyncJobResult&jobId=" + jid),
dataType: "json",
async: false,
success: function(json) {
var result = json.queryasyncjobresultresponse;
if (result.jobstatus == 0) {
return; //Job has not completed
} else {
if (result.jobstatus == 1) { // Succeeded
args.complete();
}
else if (result.jobstatus == 2) { // Failed
args.error({message:result.jobresult.errortext});
}
}
},
error: function(XMLHttpResponse) {
args.error();
}
});
}
});
*/
var networkServiceProviderId;
$.ajax({
url: createURL("listNetworkServiceProviders&physicalNetworkId=" + physicalNetworkId),
dataType: "json",
async: false,
success: function(json) {
var items = json.listnetworkserviceprovidersresponse.networkserviceprovider;
if(items != null && items.length > 0)
networkServiceProviderId = items[0].id
}
});
if(networkServiceProviderId != null) {
$.ajax({
url: createURL("updateNetworkServiceProvider&id=" + networkServiceProviderId + "&state=Enabled"),
dataType: "json",
async: false,
success: function(json) {
var jid = json.updatephysicalnetworkresponse.jobid;
$.ajax({
url: createURL("queryAsyncJobResult&jobId=" + jid),
dataType: "json",
async: false,
success: function(json) {
var result = json.queryasyncjobresultresponse;
if (result.jobstatus == 0) {
return; //Job has not completed
} else {
if (result.jobstatus == 1) { // Succeeded
args.complete();
}
else if (result.jobstatus == 2) { // Failed
args.error({message:result.jobresult.errortext});
}
}
},
error: function(XMLHttpResponse) {
args.error();
}
});
}
});
}
}
//???
$.ajax({ $.ajax({
url: createURL("listCapabilities"), url: createURL("listCapabilities"),