From f9450cc1187544379e7f075960fca4c5103139a0 Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Tue, 2 Sep 2014 13:56:18 -0700 Subject: [PATCH] CLOUDSTACK-6694: WIP: Add front-end for internal LB subselect --- ui/scripts/vpc.js | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/ui/scripts/vpc.js b/ui/scripts/vpc.js index 83c5b834a08..4981efe5fc0 100644 --- a/ui/scripts/vpc.js +++ b/ui/scripts/vpc.js @@ -955,6 +955,54 @@ listView: $.extend(true, {}, cloudStack.sections.instances.listView, { type: 'checkbox', filters: false, + multiSelect: false, + subselect: { + isMultiple: true, + label: 'label.use.vm.ip', + dataProvider: function(args) { + var instance = args.context.instances[0]; + var network = args.context.networks[0]; + + $.ajax({ + url: createURL('listNics'), + data: { + virtualmachineid: instance.id, + nicId: instance.nic[0].id + }, + success: function(json) { + var nic = json.listnicsresponse.nic[0]; + var primaryIp = nic.ipaddress; + var secondaryIps = nic.secondaryip ? nic.secondaryip : []; + var ipSelection = []; + var existingIps = $(args.context.subItemData).map( + function(index, item) { return item.itemIp; } + ); + + // Add primary IP as default + if ($.inArray(primaryIp, existingIps) == -1) { + ipSelection.push({ + id: primaryIp, + description: primaryIp + ' (Primary)' + }); + } + + // Add secondary IPs + $(secondaryIps).map(function(index, secondaryIp) { + if ($.inArray(secondaryIp.ipaddress, existingIps) == -1) { + ipSelection.push({ + id: secondaryIp.ipaddress, + description: secondaryIp.ipaddress + }); + } + }); + + args.response.success({ + data: ipSelection + }); + } + }); + } + }, dataProvider: function(args) { var assignedInstances; $.ajax({ @@ -1007,7 +1055,18 @@ } }), action: function(args) { + var $rows = $(':ui-dialog .list-view tbody tr'); var vms = args.context.instances; + + // Assign subselect values + $(vms).each(function() { + var vm = this; + var $vmRow = $rows.filter(function() { + return $(this).data('json-obj') === vm; + }); + $.extend(vm, { _subselect: $vmRow.find('.subselect select').val() }); + }); + var array1 = []; for (var i = 0; i < vms.length; i++) { array1.push(vms[i].id);