UI: Update IP address server calls to support per-NIC IPs Update the following actions on IP address section to support per-NIC IP addresses:
- List IPs -> listNics - Add IP -> addIpToNic - Remove IP -> removeIpFromNic These API calls will be conditionally invoked in place of the existing calls if a NIC is selected -- i.e., args.context.nics is present Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/6c8182b6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/6c8182b6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/6c8182b6 Branch: refs/heads/Health-Check-UI Commit: 6c8182b6f4740a98a613dc440a84c6a080b43d95 Parents: b652d2e Author: Brian Federle <brian.fede...@citrix.com> Authored: Mon Feb 25 11:35:41 2013 -0800 Committer: Brian Federle <brian.fede...@citrix.com> Committed: Mon Feb 25 11:35:41 2013 -0800 ---------------------------------------------------------------------- ui/scripts/network.js | 194 +++++++++++++++++++++++++++----------------- 1 files changed, 120 insertions(+), 74 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6c8182b6/ui/scripts/network.js ---------------------------------------------------------------------- diff --git a/ui/scripts/network.js b/ui/scripts/network.js index 84cc067..cca0e6c 100755 --- a/ui/scripts/network.js +++ b/ui/scripts/network.js @@ -1585,30 +1585,47 @@ }); } } - $.ajax({ - url: createURL('associateIpAddress'), - data: dataObj, - success: function(data) { - args.response.success({ - _custom: { - jobId: data.associateipaddressresponse.jobid, - getUpdatedItem: function(data) { - var newIP = data.queryasyncjobresultresponse.jobresult.ipaddress; - return $.extend(newIP, { - state: 'Allocated' - }); - }, - getActionFilter: function() { - return actionFilters.ipAddress; + + if (args.context.nics) { + $.ajax({ + url: createURL('addIpToNic'), + data: { + nicId: args.context.nics[0].id + }, + success: function(json) { + args.response.success({ + _custom: { + jobId: json.addiptonicresponse.jobid } - } - }); - }, + }); + } + }); + } else { + $.ajax({ + url: createURL('associateIpAddress'), + data: dataObj, + success: function(data) { + args.response.success({ + _custom: { + jobId: data.associateipaddressresponse.jobid, + getUpdatedItem: function(data) { + var newIP = data.queryasyncjobresultresponse.jobresult.ipaddress; + return $.extend(newIP, { + state: 'Allocated' + }); + }, + getActionFilter: function() { + return actionFilters.ipAddress; + } + } + }); + }, - error: function(json) { - args.response.error(parseXMLHttpResponse(json)); - } - }); + error: function(json) { + args.response.error(parseXMLHttpResponse(json)); + } + }); + } }, notification: { @@ -1643,27 +1660,42 @@ }); } - $.ajax({ - url: createURL('listPublicIpAddresses'), - data: data, - dataType: "json", - async: true, - success: function(json) { - var items = json.listpublicipaddressesresponse.publicipaddress; - - $(items).each(function() { - getExtaPropertiesForIpObj(this, args); - }); - - args.response.success({ - actionFilter: actionFilters.ipAddress, - data: items - }); - }, - error: function(data) { - args.response.error(parseXMLHttpResponse(data)); - } - }); + if (args.context.nics) { + $.ajax({ + url: createURL('listNics'), + data: { + nicId: args.context.nics[0].id, + vmId: args.context.instances[0].id + }, + success: function(json) { + args.response.success({ + data: json.listnicsresponse.nic[0].ipAddresses + }); + } + }); + } else { + $.ajax({ + url: createURL('listPublicIpAddresses'), + data: data, + dataType: "json", + async: true, + success: function(json) { + var items = json.listpublicipaddressesresponse.publicipaddress; + + $(items).each(function() { + getExtaPropertiesForIpObj(this, args); + }); + + args.response.success({ + actionFilter: actionFilters.ipAddress, + data: items + }); + }, + error: function(data) { + args.response.error(parseXMLHttpResponse(data)); + } + }); + } }, // Detail view @@ -2017,39 +2049,53 @@ remove: { label: 'label.action.release.ip', action: function(args) { - $.ajax({ - url: createURL('disassociateIpAddress'), - data: { - id: args.context.ipAddresses[0].id - }, - dataType: 'json', - async: true, - success: function(data) { - args.response.success({ - _custom: { - jobId: data.disassociateipaddressresponse.jobid, - getActionFilter: function() { - return function(args) { - var allowedActions = ['enableStaticNAT']; + if (args.context.nics) { + $.ajax({ + url: createURL('removeIpFromNic'), + data: { + id: args.context.ipAddresses[0].id + }, + success: function(json) { + args.response.success({ + _custom: { jobId: json.removeipfromnicresponse.jobid } + }); + } + }); + } else { + $.ajax({ + url: createURL('disassociateIpAddress'), + data: { + id: args.context.ipAddresses[0].id + }, + dataType: 'json', + async: true, + success: function(data) { + args.response.success({ + _custom: { + jobId: data.disassociateipaddressresponse.jobid, + getActionFilter: function() { + return function(args) { + var allowedActions = ['enableStaticNAT']; - return allowedActions; - }; - }, - getUpdatedItem: function(args) { - return { - state: 'Released' - }; - }, - onComplete: function() { - $(window).trigger('cloudStack.fullRefresh'); + return allowedActions; + }; + }, + getUpdatedItem: function(args) { + return { + state: 'Released' + }; + }, + onComplete: function() { + $(window).trigger('cloudStack.fullRefresh'); + } } - } - }); - }, - error: function(data) { - args.response.error(parseXMLHttpResponse(data)); - } - }); + }); + }, + error: function(data) { + args.response.error(parseXMLHttpResponse(data)); + } + }); + } }, messages: { confirm: function(args) {