diff --git a/ui/scripts/network.js b/ui/scripts/network.js index 35e6f2b0d36..e06cd849681 100644 --- a/ui/scripts/network.js +++ b/ui/scripts/network.js @@ -814,6 +814,24 @@ } }, + staticNATDataProvider: function(args) { + $.ajax({ + url: createURL('listPublicIpAddresses'), + data: { + id: args.context.ipAddresses[0].id + }, + dataType: 'json', + async: true, + success: function(data) { + var ipAddress = data.listpublicipaddressesresponse.publicipaddress[0]; + + args.response.success({ + data: ipAddress + }); + } + }); + }, + vmDataProvider: function(args) { $.ajax({ url: createURL('listVirtualMachines'), diff --git a/ui/scripts/ui-custom/ipRules.js b/ui/scripts/ui-custom/ipRules.js index 960627ceff6..5289a402361 100644 --- a/ui/scripts/ui-custom/ipRules.js +++ b/ui/scripts/ui-custom/ipRules.js @@ -46,48 +46,56 @@ var $chart = $('#template').find('.network-chart.static-nat').clone(); var $vmName = $chart.find('li.static-nat-enabled .vmname'); var $browser = $('#browser .container'); - var vmID = context.ipAddresses[0].virtualmachineid; - var vmName = context.ipAddresses[0].virtualmachinename; - var vmDetails = args.vmDetails; var vmDataProvider = args.vmDataProvider; + var vmDetails = args.vmDetails; + + args.staticNATDataProvider({ + context: context, + response: { + success: function(args) { + var vmID = args.data.virtualmachineid; + var vmName = args.data.virtualmachinename; + + $vmName.append( + $('').html('VM: ' + vmName) + ); + + $vmName.click(function() { + $browser.cloudBrowser('addPanel', { + title: 'Static NAT VM Details', + complete: function($newPanel) { + vmDataProvider({ + context: context, + response: { + success: function(args) { + var instance = args.data; + var detailViewArgs = $.extend(true, {}, vmDetails, { + $browser: $browser, + context: $.extend(true, {}, context, { + instances: [instance] + }), + jsonObj: instance, + id: instance.id + }); + + // No actions available + detailViewArgs.actions = {}; + + $newPanel.detailView(detailViewArgs); + } + } + }); + } + }); + }); + } + } + }); $chart.find('li.firewall .view-details').click(function() { makeMultiEditPanel($(this), { title: 'NAT Port Range'}); }); - $vmName.append( - $('').html('VM: ' + vmName) - ); - - $vmName.click(function() { - $browser.cloudBrowser('addPanel', { - title: 'Static NAT VM Details', - complete: function($newPanel) { - vmDataProvider({ - context: context, - response: { - success: function(args) { - var instance = args.data; - var detailViewArgs = $.extend(true, {}, vmDetails, { - $browser: $browser, - context: $.extend(true, {}, context, { - instances: [instance] - }), - jsonObj: instance, - id: instance.id - }); - - // No actions available - detailViewArgs.actions = {}; - - $newPanel.detailView(detailViewArgs); - } - } - }); - } - }); - }); - return $chart; };