CLOUDSTACK-1888: UI > Domains > allow domain-admin to update resource limits on its sub-domains (but disallow on its own domain).

This commit is contained in:
Jessica Wang 2013-10-10 12:14:50 -07:00
parent 8bcf83698c
commit a414375632
1 changed files with 72 additions and 56 deletions

View File

@ -99,24 +99,31 @@
var domainObj;
var data = {
id: args.context.domains[0].id,
networkdomain: args.data.networkdomain
id: args.context.domains[0].id
};
if (args.data.name != null) {
if (args.data.name != null) { //args.data.name == undefined means name field is not editable (when log in as normal user or domain admin)
$.extend(data, {
name: args.data.name
});
}
$.ajax({
url: createURL("updateDomain"),
async: false,
data: data,
success: function(json) {
domainObj = json.updatedomainresponse.domain;
}
});
if (args.data.networkdomain != null) { //args.data.networkdomain == undefined means networkdomain field is not editable (when log in as normal user or domain admin)
$.extend(data, {
networkdomain: args.data.networkdomain
});
}
if('name' in data || 'networkdomain' in data) {
$.ajax({
url: createURL("updateDomain"),
async: false,
data: data,
success: function(json) {
domainObj = json.updatedomainresponse.domain;
}
});
}
if (args.data.vmLimit != null) {
$.ajax({
@ -328,8 +335,8 @@
fields: [{
name: {
label: 'label.name',
isEditable: function(context) {
if (context.domains[0].level != 0) //ROOT domain (whose level is 0) is not allowed to change domain name
isEditable: function(args) {
if (isAdmin() && args.domains[0].level != 0) //ROOT domain (whose level is 0) is not allowed to change domain name
return true;
else
return false;
@ -346,96 +353,101 @@
networkdomain: {
label: 'label.network.domain',
isEditable: true
},
vmLimit: {
label: 'label.instance.limits',
isEditable: function(context) {
if (context.domains[0].level != 0) //ROOT domain (whose level is 0) is not allowed to updateResourceLimits
isEditable: function(args) {
if (isAdmin())
return true;
else
return false;
}
},
vmLimit: {
label: 'label.instance.limits',
isEditable: function(args) {
if (args.domains[0].id == g_domainid) //disallow to update the field on the domain you log in as
return false;
else
return true;
}
},
ipLimit: {
label: 'label.ip.limits',
isEditable: function(context) {
if (context.domains[0].level != 0) //ROOT domain (whose level is 0) is not allowed to updateResourceLimits
return true;
else
isEditable: function(args) {
if (args.domains[0].id == g_domainid) //disallow to update the field on the domain you log in as
return false;
else
return true;
}
},
volumeLimit: {
label: 'label.volume.limits',
isEditable: function(context) {
if (context.domains[0].level != 0) //ROOT domain (whose level is 0) is not allowed to updateResourceLimits
return true;
else
isEditable: function(args) {
if (args.domains[0].id == g_domainid) //disallow to update the field on the domain you log in as
return false;
else
return true;
}
},
snapshotLimit: {
label: 'label.snapshot.limits',
isEditable: function(context) {
if (context.domains[0].level != 0) //ROOT domain (whose level is 0) is not allowed to updateResourceLimits
return true;
else
isEditable: function(args) {
if (args.domains[0].id == g_domainid) //disallow to update the field on the domain you log in as
return false;
else
return true;
}
},
templateLimit: {
label: 'label.template.limits',
isEditable: function(context) {
if (context.domains[0].level != 0) //ROOT domain (whose level is 0) is not allowed to updateResourceLimits
return true;
else
isEditable: function(args) {
if (args.domains[0].id == g_domainid) //disallow to update the field on the domain you log in as
return false;
else
return true;
}
},
vpcLimit: {
label: 'VPC limits',
isEditable: function(context) {
if (context.domains[0].level != 0) //ROOT domain (whose level is 0) is not allowed to updateResourceLimits
return true;
else
isEditable: function(args) {
if (args.domains[0].id == g_domainid) //disallow to update the field on the domain you log in as
return false;
else
return true;
}
},
cpuLimit: {
label: 'label.cpu.limits',
isEditable: function(context) {
if (context.domains[0].level != 0) //ROOT domain (whose level is 0) is not allowed to updateResourceLimits
return true;
else
isEditable: function(args) {
if (args.domains[0].id == g_domainid) //disallow to update the field on the domain you log in as
return false;
else
return true;
}
},
memoryLimit: {
label: 'label.memory.limits',
isEditable: function(context) {
if (context.domains[0].level != 0) //ROOT domain (whose level is 0) is not allowed to updateResourceLimits
return true;
else
isEditable: function(args) {
if (args.domains[0].id == g_domainid) //disallow to update the field on the domain you log in as
return false;
else
return true;
}
},
primaryStorageLimit: {
label: 'label.primary.storage.limits',
isEditable: function(context) {
if (context.domains[0].level != 0) //ROOT domain (whose level is 0) is not allowed to updateResourceLimits
return true;
else
isEditable: function(args) {
if (args.domains[0].id == g_domainid) //disallow to update the field on the domain you log in as
return false;
else
return true;
}
},
secondaryStorageLimit: {
label: 'label.secondary.storage.limits',
isEditable: function(context) {
if (context.domains[0].level != 0) //ROOT domain (whose level is 0) is not allowed to updateResourceLimits
return true;
else
isEditable: function(args) {
if (args.domains[0].id == g_domainid) //disallow to update the field on the domain you log in as
return false;
else
return true;
}
},
accountTotal: {
@ -620,6 +632,10 @@
if (jsonObj.level != 0) { //ROOT domain (whose level is 0) is not allowed to delete
allowedActions.push("delete");
}
} else if (isDomainAdmin()) {
if (args.context.domains[0].id != g_domainid) {
allowedActions.push("edit"); //merge updateResourceLimit into edit
}
}
allowedActions.push("updateResourceCount");
return allowedActions;