diff --git a/ui/new/jsp/account.jsp b/ui/new/jsp/account.jsp index e82770f784c..d4f0e263269 100644 --- a/ui/new/jsp/account.jsp +++ b/ui/new/jsp/account.jsp @@ -139,3 +139,60 @@ + + +
+ + + + \ No newline at end of file diff --git a/ui/new/scripts/cloud.core2.account.js b/ui/new/scripts/cloud.core2.account.js index 7bf04e1b8a1..28a3ff10457 100644 --- a/ui/new/scripts/cloud.core2.account.js +++ b/ui/new/scripts/cloud.core2.account.js @@ -1,5 +1,18 @@ -function afterLoadAccountJSP() { +var systemAccountId = 1; +var adminAccountId = 2; +function afterLoadAccountJSP() { + activateDialog($("#dialog_resource_limits").dialog({ + autoOpen: false, + modal: true, + zIndex: 2000 + })); + + activateDialog($("#dialog_disable_account").dialog({ + autoOpen: false, + modal: true, + zIndex: 2000 + })); } function accountToMidmenu(jsonObj, $midmenuItem1) { @@ -20,15 +33,135 @@ function accountToMidmenu(jsonObj, $midmenuItem1) { function accountToRigntPanel($midmenuItem) { var jsonObj = $midmenuItem.data("jsonObj"); + accountJsonToDetailsTab(jsonObj); +} + +function accountJsonToDetailsTab(jsonObj) { + var $detailsTab = $("#right_panel_content #tab_content_details"); + $detailsTab.data("jsonObj", jsonObj); + $detailsTab.find("#id").text(jsonObj.id); + $detailsTab.find("#role").text(toRole(jsonObj.accounttype)); + $detailsTab.find("#account").text(fromdb(jsonObj.name)); + $detailsTab.find("#domain").text(fromdb(jsonObj.domain)); + $detailsTab.find("#vm_total").text(jsonObj.vmtotal); + $detailsTab.find("#ip_total").text(jsonObj.iptotal); + $detailsTab.find("#bytes_received").text(jsonObj.receivedbytes); + $detailsTab.find("#bytes_sent").text(jsonObj.sentbytes); + $detailsTab.find("#state").text(jsonObj.state); - var $rightPanelContent = $("#right_panel_content"); - $rightPanelContent.find("#id").text(jsonObj.id); - $rightPanelContent.find("#role").text(toRole(jsonObj.accounttype)); - $rightPanelContent.find("#account").text(fromdb(jsonObj.name)); - $rightPanelContent.find("#domain").text(fromdb(jsonObj.domain)); - $rightPanelContent.find("#vm_total").text(jsonObj.vmtotal); - $rightPanelContent.find("#ip_total").text(jsonObj.iptotal); - $rightPanelContent.find("#bytes_received").text(jsonObj.receivedbytes); - $rightPanelContent.find("#bytes_sent").text(jsonObj.sentbytes); - $rightPanelContent.find("#state").text(jsonObj.state); -} \ No newline at end of file + //actions *** + var $actionMenu = $("#right_panel_content #tab_content_details #action_link #action_menu"); + $actionMenu.find("#action_list").empty(); + if(jsonObj.id != systemAccountId && jsonObj.id != adminAccountId) { + if (jsonObj.accounttype == roleTypeUser || jsonObj.accounttype == roleTypeDomainAdmin) + buildActionLinkForDetailsTab("Resource limits", accountActionMap, $actionMenu, accountListAPIMap); + +// if(jsonObj.state == "enabled") +// buildActionLinkForDetailsTab("Disable", accountActionMap, $actionMenu, accountListAPIMap); +// else if(jsonObj.state == "disabled") +// buildActionLinkForDetailsTab("Enable", accountActionMap, $actionMenu, accountListAPIMap); + } +} + +var accountActionMap = { + "Resource limits": { + customActionFn : doResourceLimits + } +}; + +var accountListAPIMap = { + listAPI: "listAccounts", + listAPIResponse: "listaccountsresponse", + listAPIResponseObj: "account" +}; + +function updateResourceLimit(domainId, account, type, max) { + $.ajax({ + data: createURL("command=updateResourceLimit&domainid="+domainId+"&account="+account+"&resourceType="+type+"&max="+max), + dataType: "json", + success: function(json) { + } + }); +} + +function doResourceLimits () { + var $detailsTab = $("#right_panel_content #tab_content_details"); + var jsonObj = $detailsTab.data("jsonObj"); + var domainId = jsonObj.domainid; + var account = jsonObj.name; + $.ajax({ + cache: false, + data: createURL("command=listResourceLimits&domainid="+domainId+"&account="+account), + dataType: "json", + success: function(json) { + var limits = json.listresourcelimitsresponse.resourcelimit; + var preInstanceLimit, preIpLimit, preDiskLimit, preSnapshotLimit, preTemplateLimit = -1; + if (limits != null) { + for (var i = 0; i < limits.length; i++) { + var limit = limits[i]; + switch (limit.resourcetype) { + case "0": + preInstanceLimit = limit.max; + $("#dialog_resource_limits #limits_vm").val(limit.max); + break; + case "1": + preIpLimit = limit.max; + $("#dialog_resource_limits #limits_ip").val(limit.max); + break; + case "2": + preDiskLimit = limit.max; + $("#dialog_resource_limits #limits_volume").val(limit.max); + break; + case "3": + preSnapshotLimit = limit.max; + $("#dialog_resource_limits #limits_snapshot").val(limit.max); + break; + case "4": + preTemplateLimit = limit.max; + $("#dialog_resource_limits #limits_template").val(limit.max); + break; + } + } + } + $("#dialog_resource_limits") + .dialog('option', 'buttons', { + "Save": function() { + // validate values + var isValid = true; + isValid &= validateNumber("Instance Limit", $("#dialog_resource_limits #limits_vm"), $("#dialog_resource_limits #limits_vm_errormsg"), -1, 32000, false); + isValid &= validateNumber("Public IP Limit", $("#dialog_resource_limits #limits_ip"), $("#dialog_resource_limits #limits_ip_errormsg"), -1, 32000, false); + isValid &= validateNumber("Disk Volume Limit", $("#dialog_resource_limits #limits_volume"), $("#dialog_resource_limits #limits_volume_errormsg"), -1, 32000, false); + isValid &= validateNumber("Snapshot Limit", $("#dialog_resource_limits #limits_snapshot"), $("#dialog_resource_limits #limits_snapshot_errormsg"), -1, 32000, false); + isValid &= validateNumber("Template Limit", $("#dialog_resource_limits #limits_template"), $("#dialog_resource_limits #limits_template_errormsg"), -1, 32000, false); + if (!isValid) return; + + var instanceLimit = trim($("#dialog_resource_limits #limits_vm").val()); + var ipLimit = trim($("#dialog_resource_limits #limits_ip").val()); + var diskLimit = trim($("#dialog_resource_limits #limits_volume").val()); + var snapshotLimit = trim($("#dialog_resource_limits #limits_snapshot").val()); + var templateLimit = trim($("#dialog_resource_limits #limits_template").val()); + + $(this).dialog("close"); + if (instanceLimit != preInstanceLimit) { + updateResourceLimit(domainId, account, 0, instanceLimit); + } + if (ipLimit != preIpLimit) { + updateResourceLimit(domainId, account, 1, ipLimit); + } + if (diskLimit != preDiskLimit) { + updateResourceLimit(domainId, account, 2, diskLimit); + } + if (snapshotLimit != preSnapshotLimit) { + updateResourceLimit(domainId, account, 3, snapshotLimit); + } + if (templateLimit != preTemplateLimit) { + updateResourceLimit(domainId, account, 4, templateLimit); + } + }, + "Cancel": function() { + $(this).dialog("close"); + } + }).dialog("open"); + } + }); +}