mirror of https://github.com/apache/cloudstack.git
Add new 'affinity' UI section for managing affinity groups
This commit is contained in:
parent
38ca737318
commit
5d235f690d
|
|
@ -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);
|
||||
|
|
@ -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: {},
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
|
|
|
|||
Loading…
Reference in New Issue