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) {