You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by je...@apache.org on 2013/07/08 20:58:49 UTC
git commit: updated refs/heads/4.2 to 3953cbe
Updated Branches:
refs/heads/4.2 39e6e7f09 -> 3953cbe35
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/3953cbe3
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/3953cbe3
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/3953cbe3
Branch: refs/heads/4.2
Commit: 3953cbe35edfd7ee98a07c09cc271fdcc399bfcb
Parents: 39e6e7f
Author: Jessica Wang <je...@apache.org>
Authored: Tue Jul 2 16:14:54 2013 -0700
Committer: Jessica Wang <je...@apache.org>
Committed: Mon Jul 8 11:58:39 2013 -0700
----------------------------------------------------------------------
ui/scripts/vpc.js | 110 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 108 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3953cbe3/ui/scripts/vpc.js
----------------------------------------------------------------------
diff --git a/ui/scripts/vpc.js b/ui/scripts/vpc.js
index e31121e..d5a02f6 100644
--- a/ui/scripts/vpc.js
+++ b/ui/scripts/vpc.js
@@ -584,7 +584,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: {
@@ -632,7 +723,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) {