diff --git a/ui/scripts/configuration.js b/ui/scripts/configuration.js index 66782096170..1bb285bb3e0 100644 --- a/ui/scripts/configuration.js +++ b/ui/scripts/configuration.js @@ -839,7 +839,7 @@ }, dataProvider: function(args) { $.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", async: true, success: function(json) { diff --git a/ui/scripts/instances.js b/ui/scripts/instances.js index 3383b511231..22f220d3c4f 100644 --- a/ui/scripts/instances.js +++ b/ui/scripts/instances.js @@ -266,15 +266,19 @@ if(selectedZoneObj.securitygroupsenabled == false) { if (networks != null && networks.length > 0) { for (var i = 0; i < networks.length; i++) { - if (networks[i].type == 'Virtual') { - virtualNetwork = networks[i]; - break; + if (networks[i].type == 'Isolated') { + //loop through + var sourceNatObj = ipFindNetworkServiceByName("SourceNat", networkObj); + if(sourceNatObj != null) { + virtualNetwork = networks[i]; + break; + } } } } - if (virtualNetwork == null) { //if there is no virtualNetwork + if (virtualNetwork == null) { //if there is no isolatedNetwork $.ajax({ - url: createURL("listNetworkOfferings&guestiptype=Virtual"), //check DefaultVirtualizedNetworkOffering + url: createURL("listNetworkOfferings&guestiptype=Isolated&supportedServices=sourceNat&state=Enabled"), //check networkOffering for isolatedNetwork dataType: "json", async: false, success: function(json) { @@ -284,9 +288,9 @@ if (networkOfferings[i].isdefault == true && (networkOfferings[i].availability == "Required" || networkOfferings[i].availability == "Optional") ) { - // Create a virtual network - var networkName = "Virtual 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."; + // Create a isolated network + var networkName = "Isolated Network"; + 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({ url: createURL("createNetwork&networkOfferingId="+networkOfferings[i].id+"&name="+todb(networkName)+"&displayText="+todb(networkDesc)+"&zoneId="+args.currentData.zoneid), dataType: "json", diff --git a/ui/scripts/sharedFunctions.js b/ui/scripts/sharedFunctions.js index 5798c0b46cc..1ee53022027 100644 --- a/ui/scripts/sharedFunctions.js +++ b/ui/scripts/sharedFunctions.js @@ -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 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': { 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: { details: { title: 'Details', fields: [ { 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) { - args.response.success({ data: testData.data.networks[0] }); + dataProvider: function(args) { + //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" array1.push("&securitygroupenabled=false"); + /* var vlanStart = args.data["vlan-range-start"]; if(vlanStart != null && vlanStart.length > 0) { var vlanEnd = args.data["vlan-range-end"]; @@ -376,7 +493,8 @@ else array1.push("&vlan=" + todb(vlanStart)); } - + */ + var guestcidraddress = args.data["guest-cidr"]; if(guestcidraddress != null && guestcidraddress.length > 0) { array1.push("&guestcidraddress="+todb(guestcidraddress)); @@ -397,7 +515,107 @@ args.response.success({data:item}); 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({ url: createURL("listCapabilities"),