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/master Commit: 5d235f690d4d8a5413a4dc0e530e1760dee3514a Parents: 38ca737 Author: Brian Federle <brian.fede...@citrix.com> Authored: Mon Apr 15 14:56:44 2013 -0700 Committer: Brian Federle <brian.fede...@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'),