cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bfede...@apache.org
Subject [2/2] git commit: updated refs/heads/ui-vm-affinity to 5d235f6
Date Mon, 15 Apr 2013 21:56:49 GMT
Add new 'affinity' UI section for managing affinity groups


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

Branch: refs/heads/ui-vm-affinity
Commit: 5d235f690d4d8a5413a4dc0e530e1760dee3514a
Parents: 38ca737
Author: Brian Federle <brian.federle@citrix.com>
Authored: Mon Apr 15 14:56:44 2013 -0700
Committer: Brian Federle <brian.federle@citrix.com>
Committed: Mon Apr 15 14:56:44 2013 -0700

----------------------------------------------------------------------
 ui/scripts/affinity.js           |  147 +++++++++++++++++++++++++++++++++
 ui/scripts/cloudStack.js         |    9 +-
 ui/scripts/ui-custom/affinity.js |    2 +-
 3 files changed, 153 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5d235f69/ui/scripts/affinity.js
----------------------------------------------------------------------
diff --git a/ui/scripts/affinity.js b/ui/scripts/affinity.js
new file mode 100644
index 0000000..8bfd844
--- /dev/null
+++ b/ui/scripts/affinity.js
@@ -0,0 +1,147 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+(function(cloudStack) {
+  cloudStack.sections.affinityGroups = {
+    title: 'label.affinity.groups',
+    listView: {
+      id: 'affinityGroups',
+      fields: {
+        name: { label: 'label.name' },
+        type: { label: 'label.type' }
+      },
+      dataProvider: function(args) {
+        args.response.success({
+          data: [
+            { id: 1, name: 'Affinity Group 1', type: 'Affinity' },
+            { id: 2, name: 'Affinity Group 2', type: 'Anti-affinity' },
+            { id: 3, name: 'Anti-affinity Group', type: 'Anti-affinity' }
+          ]
+        });
+      },
+      actions: {
+        add: {
+          label: 'label.add.affinity.group',
+
+          messages: {
+            confirm: function(args) {
+              return 'message.add.volume';
+            },
+            notification: function(args) {
+              return 'label.add.affinity.group';
+            }
+          },
+
+          createForm: {
+            title: 'label.add.affinity.group',
+            fields: {
+              name: {
+                label: 'label.name',
+                validation: { required: true }
+              },
+              type: {
+                label: 'label.availability.zone',
+                select: function(args) {
+                  args.response.success({
+                    data: [
+                      { id: 'Affinity', description: 'Affinity' },
+                      { id: 'AntiAffinity', description: 'Anti-Affinity' }
+                    ]
+                  });
+                }
+              },              
+              availabilityZone: {
+                label: 'label.availability.zone',
+                select: function(args) {
+                  $.ajax({
+                    url: createURL("listZones&available=true"),
+                    dataType: "json",
+                    async: true,
+                    success: function(json) {
+                      var items = json.listzonesresponse.zone;
+                      args.response.success({descriptionField: 'name', data: items});
+                    }
+                  });
+                }
+              },
+            }
+          },
+
+          action: function(args) {
+            args.response.success();
+          },
+
+          notification: {
+            poll: function(args) { args.complete(); }
+          }
+        }
+      },
+      detailView: {
+        actions: {
+          edit: {
+            label: 'label.edit',
+            action: function(args) {
+              args.response.success();
+            },
+            messages: {
+              notification: function(args) { return 'label.edit.affinity.group'; }
+            }
+          },
+          remove: {
+            label: 'label.delete.affinity.group',
+            action: function(args) {
+              args.response.success();
+            },
+            messages: {
+              confirm: function(args) {
+                return 'message.delete.affinity.group';
+              },
+              notification: function(args) {
+                return 'label.delete.affinity.group';
+              }
+            },
+            notification: {
+              // poll: pollAsyncJobResult,
+              poll: function(args) { args.complete(); }
+            }
+          }
+        },
+
+        viewAll: { path: 'instances', label: 'label.instances' },
+        
+        tabs: {
+          details: {
+            title: 'label.details',
+            fields: [
+              {
+                name: { label: 'label.name', isEditable: true }
+              },
+              {
+                type: { label: 'label.type', isCompact: true }
+              }
+            ],
+
+            dataProvider: function(args) {
+              setTimeout(function() {
+                args.response.success({ data: args.context.affinityGroups[0] });
+              }, 20);
+            }
+          }
+        }
+      }
+    }
+  };
+})(cloudStack);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5d235f69/ui/scripts/cloudStack.js
----------------------------------------------------------------------
diff --git a/ui/scripts/cloudStack.js b/ui/scripts/cloudStack.js
index a8bca91..3e9bef0 100644
--- a/ui/scripts/cloudStack.js
+++ b/ui/scripts/cloudStack.js
@@ -22,16 +22,16 @@
       var sections = [];
 
       if(isAdmin()) {
-        sections = ["dashboard", "instances", "storage", "network", "templates", "accounts",
"domains", "events", "system", "global-settings", "configuration", "projects", "regions"];
+        sections = ["dashboard", "instances", "storage", "network", "templates", "accounts",
"domains", "events", "system", "global-settings", "configuration", "projects", "regions",
"affinityGroups"];
       }
       else if(isDomainAdmin()) {
-        sections = ["dashboard", "instances", "storage", "network", "templates", "accounts",
"domains", "events", "projects"];
+        sections = ["dashboard", "instances", "storage", "network", "templates", "accounts",
"domains", "events", "projects", "affinityGroups"];
       }
       else if (g_userProjectsEnabled) {
-        sections = ["dashboard", "instances", "storage", "network", "templates", "accounts",
"events", "projects"];
+        sections = ["dashboard", "instances", "storage", "network", "templates", "accounts",
"events", "projects", "affinityGroups"];
       }
       else { //normal user
-        sections = ["dashboard", "instances", "storage", "network", "templates", "accounts",
"events"];
+        sections = ["dashboard", "instances", "storage", "network", "templates", "accounts",
"events", "affinityGroups"];
       }
 
       if (cloudStack.plugins.length) {
@@ -46,6 +46,7 @@
        */
       dashboard: {},      
       instances: {},
+      affinityGroups: {},
       storage: {},
       network: {},
       templates: {},

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5d235f69/ui/scripts/ui-custom/affinity.js
----------------------------------------------------------------------
diff --git a/ui/scripts/ui-custom/affinity.js b/ui/scripts/ui-custom/affinity.js
index 281ea2f..1012e7b 100644
--- a/ui/scripts/ui-custom/affinity.js
+++ b/ui/scripts/ui-custom/affinity.js
@@ -69,7 +69,7 @@
       }).dialog({
         dialogClass: 'multi-edit-add-list panel',
         width: 825,
-        title: _l('label.select.vm.for.static.nat'),
+        title: _l('label.affinity.groups'),
         buttons: [
           {
             text: _l('label.apply'),


Mime
View raw message