You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2013/07/04 00:25:59 UTC

[20/50] [abbrv] git commit: updated refs/heads/vmsync to 78fa5e1

CLOUDSTACK-3164: UI - VPC section - tier - Internal LB - detailView - add assignVMs action in detailView (will show on Quickview in listView as well).


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

Branch: refs/heads/vmsync
Commit: 1bdb80a20b0429a33662ab350b405e12f19ac690
Parents: 9a3067f
Author: Jessica Wang <je...@apache.org>
Authored: Tue Jul 2 16:14:54 2013 -0700
Committer: Jessica Wang <je...@apache.org>
Committed: Tue Jul 2 16:16:51 2013 -0700

----------------------------------------------------------------------
 ui/scripts/vpc.js | 110 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 108 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1bdb80a2/ui/scripts/vpc.js
----------------------------------------------------------------------
diff --git a/ui/scripts/vpc.js b/ui/scripts/vpc.js
index 5742286..7cbf63a 100644
--- a/ui/scripts/vpc.js
+++ b/ui/scripts/vpc.js
@@ -582,7 +582,98 @@
           detailView: {
             isMaximized: true,
             name: 'Internal LB details',
-            actions: {              
+            actions: {                
+              assignVMs: {
+                label: 'Assign VMs',
+                messages: {
+                  notification: function(args) { return 'Assign VMs'; }
+                },
+                needsRefresh: true,
+                listView: $.extend(true, {}, cloudStack.sections.instances.listView, {
+                  type: 'checkbox',
+                  filters: false,
+                  dataProvider: function(args) {       
+                    var assignedInstances;
+                    $.ajax({
+                      url: createURL('listLoadBalancers'),
+                      data: {
+                        id: args.context.internalLoadBalancers[0].id
+                      },
+                      async: false,
+                      success: function(json) {    
+                        assignedInstances = json.listloadbalancerssresponse.loadbalancer[0].loadbalancerinstance;         
+                        if(assignedInstances == null)
+                          assignedInstances = []; 
+                      }
+                    });                     
+                    
+                    $.ajax({
+                      url: createURL('listVirtualMachines'),
+                      data: {
+                        networkid: args.context.networks[0].id,
+                        listAll: true
+                      },
+                      success: function(json) {
+                        var instances = json.listvirtualmachinesresponse.virtualmachine;
+
+                        // Pre-select existing instances in LB rule
+                        $(instances).map(function(index, instance) {
+                          instance._isSelected = $.grep(assignedInstances,                                  
+                            function(assignedInstance) {
+                              return assignedInstance.id == instance.id;
+                            }
+                          ).length ? true : false;
+                        });
+                        
+                        //remove assigned VMs (i.e. instance._isSelected == true)
+                        var items = [];
+                        if(instances != null) {
+                          for(var i = 0; i < instances.length; i++) {
+                            if(instances[i]._isSelected == true)
+                              continue;
+                            else
+                              items.push(instances[i]);
+                          }
+                        }
+                        
+                        args.response.success({
+                          data: items
+                        });
+                      }
+                    });
+                  }
+                }),
+                action: function(args) {                          
+                  var vms = args.context.instances;
+                  var array1 = [];
+                  for(var i = 0; i < vms.length; i++) {
+                    array1.push(vms[i].id);
+                  }
+                  var virtualmachineids = array1.join(',');
+                  
+                  $.ajax({
+                    url: createURL('assignToLoadBalancerRule'),
+                    data: {
+                      id: args.context.internalLoadBalancers[0].id,
+                      virtualmachineids: virtualmachineids
+                    },
+                    dataType: 'json',
+                    async: true,
+                    success: function(data) {                          
+                      var jid = data.assigntoloadbalancerruleresponse.jobid;                                                   
+                      args.response.success({
+                        _custom: { 
+                          jobId: jid
+                        }
+                      });
+                    }
+                  });
+                },
+                notification: {
+                  poll: pollAsyncJobResult
+                }                      
+              },
+                            
               remove: {
                 label: 'Delete Internal LB',
                 messages: {
@@ -630,7 +721,22 @@
                     sourceipaddress: { label: 'Source IP Address' },
                     sourceport: { label: 'Source Port' },
                     instanceport: { label: 'Instance Port' },
-                    algorithm: { label: 'label.algorithm' }                        
+                    algorithm: { label: 'label.algorithm' },
+                    loadbalancerinstance: { 
+                      label: 'Assigned VMs',
+                      converter: function(objArray) {                       
+                        var s = '';
+                        if(objArray != null) {
+                          for(var i = 0; i < objArray.length; i++) {
+                            if(i > 0) {
+                              s += ', ';      
+                            }                                                    
+                            s += objArray[i].name + ' ('+ objArray[i].ipaddress + ')';
+                          }
+                        }                        
+                        return s;                     
+                      }
+                    }
                   }
                 ],                    
                 dataProvider: function(args) {