Repository: cloudstack
Updated Branches:
  refs/heads/master 24dd6cee7 -> f9450cc11


CLOUDSTACK-6694: WIP: Add front-end for internal LB subselect


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/f9450cc1
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/f9450cc1
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/f9450cc1

Branch: refs/heads/master
Commit: f9450cc1187544379e7f075960fca4c5103139a0
Parents: 24dd6ce
Author: Brian Federle <brian.fede...@citrix.com>
Authored: Tue Sep 2 13:56:18 2014 -0700
Committer: Brian Federle <brian.fede...@citrix.com>
Committed: Tue Sep 2 13:56:18 2014 -0700

----------------------------------------------------------------------
 ui/scripts/vpc.js | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f9450cc1/ui/scripts/vpc.js
----------------------------------------------------------------------
diff --git a/ui/scripts/vpc.js b/ui/scripts/vpc.js
index 83c5b83..4981efe 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);

Reply via email to