mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
882 lines
36 KiB
JavaScript
Executable File
882 lines
36 KiB
JavaScript
Executable File
$(document).ready(function() {
|
|
|
|
|
|
$("#accordion_menu").accordion({
|
|
autoHeight: false,
|
|
collapsible: true,
|
|
active: false,
|
|
change: function(event, ui) {
|
|
if(ui.newContent.length==0) //collapse
|
|
ui.oldHeader.find("#arrow_icon").removeClass("open").addClass("close");
|
|
else //expand
|
|
ui.newHeader.find("#arrow_icon").removeClass("close").addClass("open");
|
|
}
|
|
});
|
|
|
|
$("#accordion_menu").show();
|
|
|
|
var $rightPanel = $("#right_panel");
|
|
var $addLink = $("#add_link");
|
|
var $actionLink = $("#action_link");
|
|
var $actionMenu = $("#action_menu");
|
|
var $actionList = $actionMenu.find("#action_list");
|
|
var $midmenuContainer = $("#midmenu_container");
|
|
var $midmenuItemVm = $("#midmenu_item_vm");
|
|
var $actionListItem = $("#action_list_item");
|
|
|
|
$("#leftmenu_instance_group_header").bind("click", function(event) {
|
|
var $arrowIcon = $(this).find("#arrow_icon");
|
|
clickInstanceGroupHeader($arrowIcon);
|
|
return false;
|
|
});
|
|
|
|
var $midmenuItem = $("#midmenu_item");
|
|
function listMidMenuItems(leftmenuId, apiName, jsonResponse1, jsonResponse2, descriptionProperty) {
|
|
$("#"+leftmenuId).bind("click", function(event) {
|
|
$.ajax({
|
|
cache: false,
|
|
data: createURL("command="+apiName+"&response=json"),
|
|
dataType: "json",
|
|
success: function(json) {
|
|
$midmenuContainer.empty();
|
|
var items = json[jsonResponse1][jsonResponse2];
|
|
for(var i=0; i<items.length;i++) {
|
|
var item = items[i];
|
|
var $midmenuItem1 = $midmenuItem.clone();
|
|
$midmenuItem1.find("#description").text(item[descriptionProperty].substring(0,30));
|
|
$midmenuContainer.append($midmenuItem1.show());
|
|
}
|
|
//selectedItemType = jsonResponse2;
|
|
}
|
|
});
|
|
return false;
|
|
});
|
|
}
|
|
listMidMenuItems("leftmenu_event", "listEvents", "listeventsresponse", "event", "description");
|
|
listMidMenuItems("leftmenu_alert", "listAlerts", "listalertsresponse", "alert", "description");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$actionLink.bind("mouseover", function(event) {
|
|
$actionMenu.show();
|
|
return false;
|
|
});
|
|
$actionLink.bind("mouseout", function(event) {
|
|
$actionMenu.hide();
|
|
return false;
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// Prevent the UI from being iframed if the iframe isn't from the same domain.
|
|
try {
|
|
if ( top != self && self.location.hostname != top.location.hostname) {
|
|
// leaving the code here in the oft change an older browser is being used that does not have
|
|
// cross-site scripting prevention.
|
|
alert("Detected a frame (" + top.location.hostname + ") not from the same domain (" + self.location.hostname + "). Moving app to top of browser to prevent any security tampering.");
|
|
top.location.href = window.location.href;
|
|
}
|
|
} catch (err) {
|
|
// This means the domains are different because the browser is preventing access to the parent's domain.
|
|
alert("Detected a frame not from the same domain (" + self.location.hostname + "). Moving app to top of browser to prevent any security tampering.");
|
|
top.location.href = window.location.href;
|
|
}
|
|
|
|
// We don't support IE6 at the moment, so let's just inform customers it won't work
|
|
var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
|
|
var gteIE7 = false /*@cc_on || @_jscript_version >= 5.7 @*/;
|
|
|
|
// Disable IE6 browsers as UI does not support it
|
|
if (IE6 == true) {
|
|
alert("Only IE7, IE8, FireFox 3.x, Chrome, and Safari browsers are supported at this time.");
|
|
return;
|
|
}
|
|
|
|
/*
|
|
initializeTestTool();
|
|
*/
|
|
|
|
// We will be dropping all the main tab content into this container
|
|
mainContainer = $("#maincontentarea");
|
|
|
|
// Tab Links, dashboard is the initial active tab
|
|
mainContainer.load("content/tab_dashboard.html");
|
|
|
|
// Default AJAX Setup
|
|
$.ajaxSetup({
|
|
url: "/client/api",
|
|
dataType: "json",
|
|
cache: false,
|
|
error: function(XMLHttpResponse) {
|
|
handleError(XMLHttpResponse);
|
|
},
|
|
beforeSend: function(XMLHttpRequest) {
|
|
if (g_mySession == $.cookie("JSESSIONID")) {
|
|
return true;
|
|
} else {
|
|
$("#dialog_session_expired").dialog("open");
|
|
return false;
|
|
}
|
|
}
|
|
});
|
|
|
|
// LOGIN/LOGOUT
|
|
// 'Enter' Key in any login form element = Submit click
|
|
$("#logoutpage #loginForm").keypress(function(event) {
|
|
var formId = $(event.target).attr("id");
|
|
if(event.keyCode == keycode_Enter && formId != "loginbutton") {
|
|
login();
|
|
}
|
|
});
|
|
|
|
$("#logoutpage .loginbutton").bind("click", function(event) {
|
|
login();
|
|
return false;
|
|
});
|
|
|
|
$("#logoutaccount_link").bind("click", function(event) {
|
|
$.ajax({
|
|
data: createURL("command=logout&response=json"),
|
|
dataType: "json",
|
|
success: function(json) {
|
|
logout(true);
|
|
},
|
|
error: function() {
|
|
logout(true);
|
|
},
|
|
beforeSend : function(XMLHTTP) {
|
|
return true;
|
|
}
|
|
});
|
|
});
|
|
|
|
// FUNCTION: logs the user out
|
|
var activeTab = null;
|
|
function logout(refresh) {
|
|
g_mySession = null;
|
|
g_sessionKey = null;
|
|
g_username = null;
|
|
g_account = null;
|
|
g_domainid = null;
|
|
g_timezoneoffset = null;
|
|
g_timezone = null;
|
|
|
|
$.cookie('JSESSIONID', null);
|
|
$.cookie('sessionKey', null);
|
|
$.cookie('username', null);
|
|
$.cookie('account', null);
|
|
$.cookie('domainid', null);
|
|
$.cookie('role', null);
|
|
$.cookie('networktype', null);
|
|
$.cookie('timezoneoffset', null);
|
|
$.cookie('timezone', null);
|
|
|
|
$("body").stopTime();
|
|
|
|
// default is to redisplay the login page
|
|
if (onLogoutCallback()) {
|
|
if (refresh) {
|
|
location.replace('/client');
|
|
return false;
|
|
}
|
|
$("#account_password").val("");
|
|
$(".loginbutton_box p").hide();
|
|
$("#logoutpage").show();
|
|
$("body").css("background", "#4e4e4e url(images/logout_bg.gif) repeat-x top left");
|
|
mainContainer.empty();
|
|
$("#mainmaster").hide();
|
|
$("#overlay_black").hide();
|
|
|
|
var menuOnClass = "menutab_on";
|
|
var menuOffClass = "menutab_off";
|
|
var tab = null;
|
|
if (isAdmin()) {
|
|
tab = $("#menutab_dashboard_root");
|
|
menuOnClass = "admin_menutab_on";
|
|
menuOffClass = "admin_menutab_off";
|
|
} else if (isDomainAdmin()) {
|
|
tab = $("#menutab_dashboard_domain");
|
|
menuOnClass = "admin_menutab_on";
|
|
menuOffClass = "admin_menutab_off";
|
|
} else if (isUser()) {
|
|
tab = $("#menutab_dashboard_user");
|
|
menuOnClass = "menutab_on";
|
|
menuOffClass = "menutab_off";
|
|
}
|
|
if (activeTab != null) {
|
|
activeTab.removeClass(menuOnClass).addClass(menuOffClass);
|
|
activeTab = null;
|
|
}
|
|
if (tab != null) {
|
|
tab.removeClass(menuOffClass).addClass(menuOnClass);
|
|
}
|
|
g_role = null;
|
|
$("#account_username").focus();
|
|
}
|
|
}
|
|
|
|
// FUNCTION: logs the user in
|
|
function login() {
|
|
var array1 = [];
|
|
var username = encodeURIComponent($("#account_username").val());
|
|
array1.push("&username="+username);
|
|
|
|
var password = $.md5(encodeURIComponent($("#account_password").val()));
|
|
array1.push("&password="+password);
|
|
|
|
var domain = encodeURIComponent($("#account_domain").val());
|
|
if(domain != null && domain.length > 0)
|
|
array1.push("&domain="+domain);
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
data: createURL("command=login&response=json" + array1.join("")),
|
|
dataType: "json",
|
|
async: false,
|
|
success: function(json) {
|
|
g_mySession = $.cookie('JSESSIONID');
|
|
g_sessionKey = encodeURIComponent(json.loginresponse.sessionkey);
|
|
g_role = json.loginresponse.type;
|
|
g_username = json.loginresponse.username;
|
|
g_account = json.loginresponse.account;
|
|
g_domainid = json.loginresponse.domainid;
|
|
g_timezone = json.loginresponse.timezone;
|
|
g_timezoneoffset = json.loginresponse.timezoneoffset;
|
|
if (json.loginresponse.networktype != null)
|
|
g_networkType = json.loginresponse.networktype;
|
|
if (json.loginresponse.hypervisortype != null)
|
|
g_hypervisorType = json.loginresponse.hypervisortype;
|
|
if (json.loginresponse.directattachnetworkgroupsenabled != null)
|
|
g_directAttachNetworkGroupsEnabled = json.loginresponse.directattachnetworkgroupsenabled;
|
|
if (json.loginresponse.directattacheduntaggedenabled != null)
|
|
g_directAttachedUntaggedEnabled = json.loginresponse.directattacheduntaggedenabled;
|
|
if (json.loginresponse.systemvmuselocalstorage != null)
|
|
g_systemVmUseLocalStorage = json.loginresponse.systemvmuselocalstorage;
|
|
|
|
$.cookie('sessionKey', g_sessionKey, { expires: 1});
|
|
$.cookie('networktype', g_networkType, { expires: 1});
|
|
$.cookie('hypervisortype', g_hypervisorType, { expires: 1});
|
|
$.cookie('username', g_username, { expires: 1});
|
|
$.cookie('account', g_account, { expires: 1});
|
|
$.cookie('domainid', g_domainid, { expires: 1});
|
|
$.cookie('role', g_role, { expires: 1});
|
|
$.cookie('timezoneoffset', g_timezoneoffset, { expires: 1});
|
|
$.cookie('timezone', g_timezone, { expires: 1});
|
|
$.cookie('directattachnetworkgroupsenabled', g_directAttachNetworkGroupsEnabled, { expires: 1});
|
|
$.cookie('directattacheduntaggedenabled', g_directAttachedUntaggedEnabled, { expires: 1});
|
|
$.cookie('systemvmuselocalstorage', g_systemVmUseLocalStorage, { expires: 1});
|
|
|
|
// Set Role
|
|
if (isUser()) {
|
|
$(".loginbutton_box p").text("").hide();
|
|
$("#menutab_role_user #menutab_dashboard_user").click();
|
|
} else if (isAdmin()) {
|
|
$(".loginbutton_box p").text("").hide();
|
|
$("#menutab_role_root #menutab_dashboard_root").click();
|
|
} else if (isDomainAdmin()) {
|
|
$(".loginbutton_box p").text("").hide();
|
|
$("#menutab_role_domain #menutab_dashboard_domain").click();
|
|
} else {
|
|
$(".loginbutton_box p").text("Account type of '" + username + "' is neither user nor admin.").show();
|
|
return;
|
|
}
|
|
|
|
$("#logoutpage").hide();
|
|
$("body").css("background", "#FFF repeat top left");
|
|
$("#mainmaster").show();
|
|
},
|
|
error: function() {
|
|
$("#account_password").val("");
|
|
$("#logoutpage").show();
|
|
$(".loginbutton_box p").text("Your username/password does not match our records.").show();
|
|
$("#account_username").focus();
|
|
},
|
|
beforeSend: function(XMLHttpRequest) {
|
|
return true;
|
|
}
|
|
});
|
|
}
|
|
|
|
// Dialogs
|
|
$("#dialog_confirmation").dialog({
|
|
autoOpen: false,
|
|
modal: true,
|
|
zIndex: 2000
|
|
});
|
|
|
|
$("#dialog_info").dialog({
|
|
autoOpen: false,
|
|
modal: true,
|
|
zIndex: 2000,
|
|
buttons: { "OK": function() { $(this).dialog("close"); } }
|
|
});
|
|
|
|
$("#dialog_alert").dialog({
|
|
autoOpen: false,
|
|
modal: true,
|
|
zIndex: 2000,
|
|
buttons: { "OK": function() { $(this).dialog("close"); } }
|
|
});
|
|
$("#dialog_alert").siblings(".ui-widget-header").css("background", "url('/client/css/images/ui-bg_errorglass_30_ffffff_1x400.png') repeat-x scroll 50% 50% #393939");
|
|
$("#dialog_alert").siblings(".ui-dialog-buttonpane").find(".ui-state-default").css("background", "url('/client/css/images/ui-bg_errorglass_30_ffffff_1x400.png') repeat-x scroll 50% 50% #393939");
|
|
|
|
$("#dialog_error").dialog({
|
|
autoOpen: false,
|
|
modal: true,
|
|
zIndex: 2000,
|
|
buttons: { "Close": function() { $(this).dialog("close"); } }
|
|
});
|
|
$("#dialog_error").siblings(".ui-widget-header").css("background", "url('/client/css/images/ui-bg_errorglass_30_ffffff_1x400.png') repeat-x scroll 50% 50% #393939");
|
|
$("#dialog_error").siblings(".ui-dialog-buttonpane").find(".ui-state-default").css("background", "url('/client/css/images/ui-bg_errorglass_30_ffffff_1x400.png') repeat-x scroll 50% 50% #393939");
|
|
|
|
$("#dialog_session_expired").dialog({
|
|
autoOpen: false,
|
|
modal: true,
|
|
zIndex: 2000,
|
|
buttons: { "OK": function() { logout(true); $(this).dialog("close"); } }
|
|
});
|
|
$("#dialog_session_expired").siblings(".ui-widget-header").css("background", "url('/client/css/images/ui-bg_errorglass_30_ffffff_1x400.png') repeat-x scroll 50% 50% #393939");
|
|
$("#dialog_session_expired").siblings(".ui-dialog-buttonpane").find(".ui-state-default").css("background", "url('/client/css/images/ui-bg_errorglass_30_ffffff_1x400.png') repeat-x scroll 50% 50% #393939");
|
|
|
|
$("#dialog_server_error").dialog({
|
|
autoOpen: false,
|
|
modal: true,
|
|
zIndex: 2000,
|
|
buttons: { "OK": function() { $(this).dialog("close"); } }
|
|
});
|
|
$("#dialog_server_error").siblings(".ui-widget-header").css("background", "url('/client/css/images/ui-bg_errorglass_30_ffffff_1x400.png') repeat-x scroll 50% 50% #393939");
|
|
$("#dialog_server_error").siblings(".ui-dialog-buttonpane").find(".ui-state-default").css("background", "url('/client/css/images/ui-bg_errorglass_30_ffffff_1x400.png') repeat-x scroll 50% 50% #393939");
|
|
|
|
// Menu Tabs
|
|
$("#global_nav").bind("click", function(event) {
|
|
var tab = $(event.target);
|
|
var tabId = tab.attr("id");
|
|
var menuOnClass = "menutab_on";
|
|
var menuOffClass = "menutab_off";
|
|
if (tabId == "menutab_dashboard_user" || tabId == "menutab_dashboard_root" || tabId == "menutab_dashboard_domain") {
|
|
showDashboardTab();
|
|
} else if (tabId == "menutab_vm") {
|
|
mainContainer.load("content/tab_instances.html", function() {
|
|
showInstancesTab(tab.data("domainId"), tab.data("account"));
|
|
});
|
|
} else if (tabId == "menutab_networking") {
|
|
mainContainer.load("content/tab_networking.html", function() {
|
|
showNetworkingTab(tab.data("domainId"), tab.data("account"));
|
|
});
|
|
} else if (tabId == "menutab_templates") {
|
|
mainContainer.load("content/tab_templates.html", function() {
|
|
showTemplatesTab();
|
|
});
|
|
} else if (tabId == "menutab_events") {
|
|
mainContainer.load("content/tab_events.html", function() {
|
|
showEventsTab(tab.data("showEvents"));
|
|
});
|
|
} else if (tabId == "menutab_hosts") {
|
|
mainContainer.load("content/tab_hosts.html", function() {
|
|
showHostsTab();
|
|
});
|
|
} else if (tabId == "menutab_storage") {
|
|
mainContainer.load("content/tab_storage.html", function() {
|
|
showStorageTab(tab.data("domainId"), tab.data("targetTab"));
|
|
});
|
|
} else if (tabId == "menutab_accounts") {
|
|
mainContainer.load("content/tab_accounts.html", function() {
|
|
showAccountsTab(tab.data("domainId"));
|
|
});
|
|
} else if (tabId == "menutab_domain") {
|
|
mainContainer.load("jsp/tab_domains.jsp", function() {
|
|
showDomainsTab();
|
|
});
|
|
} else if (tabId == "menutab_configuration") {
|
|
mainContainer.load("content/tab_configuration.html", function() {
|
|
showConfigurationTab();
|
|
});
|
|
} else {
|
|
return false;
|
|
}
|
|
|
|
if (isAdmin() || isDomainAdmin()) {
|
|
menuOnClass = "admin_menutab_on";
|
|
menuOffClass = "admin_menutab_off";
|
|
} else if (isUser()) {
|
|
menuOnClass = "menutab_on";
|
|
menuOffClass = "menutab_off";
|
|
}
|
|
if (activeTab != null) {
|
|
activeTab.removeClass(menuOnClass).addClass(menuOffClass);
|
|
}
|
|
tab.removeClass(menuOffClass).addClass(menuOnClass);
|
|
activeTab = tab;
|
|
removeDialogs();
|
|
return false;
|
|
});
|
|
|
|
// Dashboard Tab
|
|
function showDashboardTab() {
|
|
mainContainer.load("content/tab_dashboard.html", function() {
|
|
$(".header_topright #header_username").text($.cookie("username"));
|
|
|
|
if (isAdmin()) {
|
|
var sessionExpired = false;
|
|
var zones = null;
|
|
var noZones = false;
|
|
var noPods = true;
|
|
$("#menutab_dashboard_root, #menutab_vm, #menutab_networking_old, #menutab_networking, #menutab_templates, #menutab_events, #menutab_hosts, #menutab_storage, #menutab_accounts, #menutab_domain").hide();
|
|
$.ajax({
|
|
data: createURL("command=listZones&available=true&response=json"+maxPageSize),
|
|
dataType: "json",
|
|
async: false,
|
|
success: function(json) {
|
|
zones = json.listzonesresponse.zone;
|
|
var zoneSelect = $("#capacity_zone_select").empty();
|
|
if (zones != null && zones.length > 0) {
|
|
for (var i = 0; i < zones.length; i++) {
|
|
zoneSelect.append("<option value='" + zones[i].id + "'>" + sanitizeXSS(zones[i].name) + "</option>");
|
|
if(noPods) {
|
|
$.ajax({
|
|
data: createURL("command=listPods&zoneId="+zones[i].id+"&response=json"),
|
|
dataType: "json",
|
|
async: false,
|
|
success: function(json) {
|
|
var pods = json.listpodsresponse.pod;
|
|
if (pods != null && pods.length > 0) {
|
|
noPods = false;
|
|
$("#menutab_dashboard_root, #menutab_vm, #menutab_networking_old, #menutab_networking, #menutab_templates, #menutab_events, #menutab_hosts, #menutab_storage, #menutab_accounts, #menutab_domain").show();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
} else {
|
|
noZones = true;
|
|
}
|
|
},
|
|
beforeSend: function(XMLHttpRequest) {
|
|
return true;
|
|
}
|
|
});
|
|
if (sessionExpired) return false;
|
|
if (noZones || noPods) {
|
|
$("#tab_dashboard_user").hide();
|
|
$("#menutab_role_user").hide();
|
|
$("#menutab_role_root").show();
|
|
$("#menutab_configuration").click();
|
|
return false;
|
|
}
|
|
|
|
var capacities = null;
|
|
$.ajax({
|
|
cache: false,
|
|
async: false,
|
|
data: createURL("command=listCapacity&response=json"),
|
|
dataType: "json",
|
|
success: function(json) {
|
|
capacities = json.listcapacityresponse.capacity;
|
|
}
|
|
});
|
|
|
|
$("#capacity_pod_select").bind("change", function(event) {
|
|
// Reset to Defaults
|
|
$("#public_ip_total, #storage_total, #storage_alloc_total, #sec_storage_total, #memory_total, #cpu_total, #private_ip_total").text("N/A");
|
|
$("#public_ip_used, #storage_used, #storage_alloc, #sec_storage_used, #memory_used, #cpu_used, #private_ip_used,").attr("style", "width:50%").text("N/A");
|
|
$(".db_bargraph_barbox_safezone").attr("style", "width:0%");
|
|
$(".db_bargraph_barbox_unsafezone").attr("style", "width:0%");
|
|
|
|
var selectedZone = $("#capacity_zone_select option:selected").text();
|
|
var selectedPod = $("#capacity_pod_select").val();
|
|
|
|
if (capacities != null && capacities.length > 0) {
|
|
for (var i = 0; i < capacities.length; i++) {
|
|
var capacity = capacities[i];
|
|
if (capacity.zonename == selectedZone) {
|
|
// Public IPs
|
|
if (capacity.type == "4") {
|
|
$("#public_ip_used").attr("style", "width: " + ((parseFloat(capacity.percentused) < 50) ? "50%" : capacity.percentused + "%")).text("Used: " + capacity.capacityused + " / " + capacity.percentused + "%");
|
|
$("#public_ip_total").text("Total: " + capacity.capacitytotal);
|
|
var usedPercentage = parseInt(capacity.percentused);
|
|
if (usedPercentage > 70) {
|
|
$("#capacity_public_ip .db_bargraph_barbox_safezone").attr("style", "width:70%");
|
|
if(usedPercentage <= 100)
|
|
$("#capacity_public_ip .db_bargraph_barbox_unsafezone").attr("style", "width:"+(usedPercentage - 70)+"%");
|
|
else
|
|
$("#capacity_public_ip .db_bargraph_barbox_unsafezone").attr("style", "width:30%");
|
|
} else {
|
|
$("#capacity_public_ip .db_bargraph_barbox_safezone").attr("style", "width:"+usedPercentage+"%");
|
|
$("#capacity_public_ip .db_bargraph_barbox_unsafezone").attr("style", "width:0%");
|
|
}
|
|
// Secondary Storage
|
|
} else if (capacity.type == "6") {
|
|
$("#sec_storage_used").attr("style", "width: " + ((parseFloat(capacity.percentused) < 50) ? "50%" : capacity.percentused + "%")).text("Used: " + convertBytes(parseInt(capacity.capacityused)) + " / " + capacity.percentused + "%");
|
|
$("#sec_storage_total").text("Total: " + convertBytes(parseInt(capacity.capacitytotal)));
|
|
var usedPercentage = parseInt(capacity.percentused);
|
|
if (usedPercentage > 70) {
|
|
$("#capacity_sec_storage .db_bargraph_barbox_safezone").attr("style", "width:70%");
|
|
if(usedPercentage <= 100)
|
|
$("#capacity_sec_storage .db_bargraph_barbox_unsafezone").attr("style", "width:"+(usedPercentage - 70)+"%");
|
|
else
|
|
$("#capacity_sec_storage .db_bargraph_barbox_unsafezone").attr("style", "width:30%");
|
|
} else {
|
|
$("#capacity_sec_storage .db_bargraph_barbox_safezone").attr("style", "width:"+usedPercentage+"%");
|
|
$("#capacity_sec_storage .db_bargraph_barbox_unsafezone").attr("style", "width:0%");
|
|
}
|
|
} else {
|
|
if (capacity.podname == selectedPod) {
|
|
// Memory
|
|
if (capacity.type == "0") {
|
|
$("#memory_used").attr("style", "width: " + ((parseFloat(capacity.percentused) < 50) ? "50%" : capacity.percentused + "%")).text("Used: " + convertBytes(parseInt(capacity.capacityused)) + " / " + capacity.percentused + "%");
|
|
$("#memory_total").text("Total: " + convertBytes(parseInt(capacity.capacitytotal)));
|
|
var usedPercentage = parseInt(capacity.percentused);
|
|
if (usedPercentage > 70) {
|
|
$("#capacity_memory .db_bargraph_barbox_safezone").attr("style", "width:70%");
|
|
if(usedPercentage <= 100)
|
|
$("#capacity_memory .db_bargraph_barbox_unsafezone").attr("style", "width:"+(usedPercentage - 70)+"%");
|
|
else
|
|
$("#capacity_memory .db_bargraph_barbox_unsafezone").attr("style", "width:30%");
|
|
} else {
|
|
$("#capacity_memory .db_bargraph_barbox_safezone").attr("style", "width:"+usedPercentage+"%");
|
|
$("#capacity_memory .db_bargraph_barbox_unsafezone").attr("style", "width:0%");
|
|
}
|
|
// CPU
|
|
} else if (capacity.type == "1") {
|
|
$("#cpu_used").attr("style", "width: " + ((parseFloat(capacity.percentused) < 50) ? "50%" : capacity.percentused + "%")).text("Used: " + convertHz(parseInt(capacity.capacityused)) + " / " + capacity.percentused + "%");
|
|
$("#cpu_total").text("Total: " + convertHz(parseInt(capacity.capacitytotal)));
|
|
var usedPercentage = parseInt(capacity.percentused);
|
|
if (usedPercentage > 70) {
|
|
$("#capacity_cpu .db_bargraph_barbox_safezone").attr("style", "width:70%");
|
|
if(usedPercentage <= 100)
|
|
$("#capacity_cpu .db_bargraph_barbox_unsafezone").attr("style", "width:"+(usedPercentage - 70)+"%");
|
|
else
|
|
$("#capacity_cpu .db_bargraph_barbox_unsafezone").attr("style", "width:30%");
|
|
} else {
|
|
$("#capacity_cpu .db_bargraph_barbox_safezone").attr("style", "width:"+usedPercentage+"%");
|
|
$("#capacity_cpu .db_bargraph_barbox_unsafezone").attr("style", "width:0%");
|
|
}
|
|
// Storage Used
|
|
} else if (capacity.type == "2") {
|
|
$("#storage_used").attr("style", "width: " + ((parseFloat(capacity.percentused) < 50) ? "50%" : capacity.percentused + "%")).text("Used: " + convertBytes(parseInt(capacity.capacityused)) + " / " + capacity.percentused + "%");
|
|
$("#storage_total").text("Total: " + convertBytes(parseInt(capacity.capacitytotal)));
|
|
var usedPercentage = parseInt(capacity.percentused);
|
|
if (usedPercentage > 70) {
|
|
$("#capacity_storage .db_bargraph_barbox_safezone").attr("style", "width:70%");
|
|
if(usedPercentage <= 100)
|
|
$("#capacity_storage .db_bargraph_barbox_unsafezone").attr("style", "width:"+(usedPercentage - 70)+"%");
|
|
else
|
|
$("#capacity_storage .db_bargraph_barbox_unsafezone").attr("style", "width:30%");
|
|
} else {
|
|
$("#capacity_storage .db_bargraph_barbox_safezone").attr("style", "width:"+usedPercentage+"%");
|
|
$("#capacity_storage .db_bargraph_barbox_unsafezone").attr("style", "width:0%");
|
|
}
|
|
// Storage Allocated
|
|
} else if (capacity.type == "3") {
|
|
$("#storage_alloc").attr("style", "width: " + ((parseFloat(capacity.percentused) < 50) ? "50%" : capacity.percentused + "%")).text("Used: " + convertBytes(parseInt(capacity.capacityused)) + " / " + capacity.percentused + "%");
|
|
$("#storage_alloc_total").text("Total: " + convertBytes(parseInt(capacity.capacitytotal)));
|
|
var usedPercentage = parseInt(capacity.percentused);
|
|
if (usedPercentage > 70) {
|
|
$("#capacity_storage_alloc .db_bargraph_barbox_safezone").attr("style", "width:70%");
|
|
if(usedPercentage <= 100)
|
|
$("#capacity_storage_alloc .db_bargraph_barbox_unsafezone").attr("style", "width:"+(usedPercentage - 70)+"%");
|
|
else
|
|
$("#capacity_storage_alloc .db_bargraph_barbox_unsafezone").attr("style", "width:30%");
|
|
} else {
|
|
$("#capacity_storage_alloc .db_bargraph_barbox_safezone").attr("style", "width:"+usedPercentage+"%");
|
|
$("#capacity_storage_alloc .db_bargraph_barbox_unsafezone").attr("style", "width:0%");
|
|
}
|
|
// Private IPs
|
|
} else if (capacity.type == "5") {
|
|
$("#private_ip_used").attr("style", "width: " + ((parseFloat(capacity.percentused) < 50) ? "50%" : capacity.percentused + "%")).text("Used: " + capacity.capacityused + " / " + capacity.percentused + "%");
|
|
$("#private_ip_total").text("Total: " + capacity.capacitytotal);
|
|
var usedPercentage = parseInt(capacity.percentused);
|
|
if (usedPercentage > 70) {
|
|
$("#capacity_private_ip .db_bargraph_barbox_safezone").attr("style", "width:70%");
|
|
if(usedPercentage <= 100)
|
|
$("#capacity_private_ip .db_bargraph_barbox_unsafezone").attr("style", "width:"+(usedPercentage - 70)+"%");
|
|
else
|
|
$("#capacity_private_ip .db_bargraph_barbox_unsafezone").attr("style", "width:30%");
|
|
} else {
|
|
$("#capacity_private_ip .db_bargraph_barbox_safezone").attr("style", "width:"+usedPercentage+"%");
|
|
$("#capacity_private_ip .db_bargraph_barbox_unsafezone").attr("style", "width:0%");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
$("#capacity_zone_select").bind("change", function(event) {
|
|
var zoneId = $(this).val();
|
|
$.ajax({
|
|
data: createURL("command=listPods&zoneId="+zoneId+"&response=json"+maxPageSize),
|
|
dataType: "json",
|
|
async: false,
|
|
success: function(json) {
|
|
var pods = json.listpodsresponse.pod;
|
|
var podSelect = $("#capacity_pod_select").empty();
|
|
if (pods != null && pods.length > 0) {
|
|
podSelect.append("<option value='All'>All</option>");
|
|
for (var i = 0; i < pods.length; i++) {
|
|
podSelect.append("<option value='" + pods[i].name + "'>" + sanitizeXSS(pods[i].name) + "</option>");
|
|
}
|
|
}
|
|
$("#capacity_pod_select").change();
|
|
}
|
|
});
|
|
});
|
|
$("#capacity_zone_select").change();
|
|
|
|
// Show Recent Alerts
|
|
$.ajax({
|
|
data: createURL("command=listAlerts&response=json"),
|
|
dataType: "json",
|
|
success: function(json) {
|
|
var alerts = json.listalertsresponse.alert;
|
|
if (alerts != null && alerts.length > 0) {
|
|
var alertGrid = $("#alert_grid_content").empty();
|
|
var length = (alerts.length>=5) ? 5 : alerts.length;
|
|
for (var i = 0; i < length; i++) {
|
|
var errorTemplate = $("#recent_error_template").clone(true);
|
|
errorTemplate.find("#db_error_type").text(toAlertType(alerts[i].type));
|
|
errorTemplate.find("#db_error_msg").append(sanitizeXSS(alerts[i].description));
|
|
setDateField(alerts[i].sent, errorTemplate.find("#db_error_date"));
|
|
alertGrid.append(errorTemplate.show());
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
// Show Host Alerts
|
|
$.ajax({
|
|
data: createURL("command=listHosts&state=Alert&response=json"),
|
|
dataType: "json",
|
|
success: function(json) {
|
|
var alerts = json.listhostsresponse.host;
|
|
if (alerts != null && alerts.length > 0) {
|
|
var alertGrid = $("#host_alert_grid_content").empty();
|
|
var length = (alerts.length>=4) ? 4 : alerts.length;
|
|
for (var i = 0; i < length; i++) {
|
|
var errorTemplate = $("#recent_error_template").clone(true);
|
|
errorTemplate.find("#db_error_type").text("Host - Alert State");
|
|
errorTemplate.find("#db_error_msg").append("Host - <b>" + sanitizeXSS(alerts[i].name) + "</b> has been detected in Alert state.");
|
|
setDateField(alerts[i].disconnected, errorTemplate.find("#db_error_date"));
|
|
alertGrid.append(errorTemplate.show());
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
$("#alert_more").bind("click", function(event) {
|
|
event.preventDefault();
|
|
|
|
$("#menutab_role_root #menutab_events").data("showEvents", false).click();
|
|
});
|
|
$("#host_alert_more").bind("click", function(event) {
|
|
event.preventDefault();
|
|
$("#menutab_hosts").click();
|
|
});
|
|
|
|
$("#tab_dashboard_user, #tab_dashboard_domain, #loading_gridtable").hide();
|
|
$("#tab_dashboard_root").show();
|
|
$("#menutab_role_user").hide();
|
|
$("#menutab_role_root").show();
|
|
$("#menutab_role_domain").hide();
|
|
$("#launch_test").show();
|
|
} else if (isDomainAdmin()) {
|
|
var thisTab = $("#tab_dashboard_domain");
|
|
$("#tab_dashboard_user, #tab_dashboard_root, #loading_gridtable").hide();
|
|
thisTab.show();
|
|
$("#menutab_role_user").hide();
|
|
$("#menutab_role_root").hide();
|
|
$("#menutab_role_domain").show();
|
|
$("#launch_test").hide();
|
|
|
|
// Need to use/create better API for this as there is a limit of pageSize
|
|
// to list count.
|
|
$.ajax({
|
|
data: createURL("command=listVirtualMachines&response=json"+maxPageSize),
|
|
dataType: "json",
|
|
success: function(json) {
|
|
if (json.listvirtualmachinesresponse.virtualmachine != undefined)
|
|
thisTab.find("#dashboard_instances").text(json.listvirtualmachinesresponse.virtualmachine.length);
|
|
}
|
|
});
|
|
$.ajax({
|
|
data: createURL("command=listVolumes&response=json"+maxPageSize),
|
|
dataType: "json",
|
|
success: function(json) {
|
|
if (json.listvolumesresponse.volume)
|
|
thisTab.find("#dashboard_volumes").text(json.listvolumesresponse.volume.length);
|
|
}
|
|
});
|
|
$.ajax({
|
|
data: createURL("command=listSnapshots&response=json"+maxPageSize),
|
|
dataType: "json",
|
|
success: function(json) {
|
|
if (json.listsnapshotsresponse.snapshot)
|
|
thisTab.find("#dashboard_snapshots").text(json.listsnapshotsresponse.snapshot.length);
|
|
}
|
|
});
|
|
$.ajax({
|
|
data: createURL("command=listAccounts&response=json"+maxPageSize),
|
|
dataType: "json",
|
|
success: function(json) {
|
|
if (json.listaccountsresponse.account)
|
|
thisTab.find("#dashboard_accounts").text(json.listaccountsresponse.account.length);
|
|
}
|
|
});
|
|
$.ajax({
|
|
data: createURL("command=listEvents&level=ERROR&response=json"),
|
|
dataType: "json",
|
|
success: function(json) {
|
|
var events = json.listeventsresponse.event;
|
|
if (events != null && events.length > 0) {
|
|
var errorGrid = thisTab.find("#error_grid_content").empty();
|
|
var length = (events.length>=3) ? 3 : events.length;
|
|
for (var i = 0; i < length; i++) {
|
|
var errorTemplate = $("#recent_error_template").clone(true);
|
|
errorTemplate.find("#db_error_type").text(events[i].type);
|
|
errorTemplate.find("#db_error_msg").text(sanitizeXSS(events[i].description));
|
|
setDateField(events[i].created, errorTemplate.find("#db_error_date"));
|
|
errorGrid.append(errorTemplate.show());
|
|
}
|
|
}
|
|
}
|
|
});
|
|
} else if(isUser()) {
|
|
$("#launch_test").hide();
|
|
$.ajax({
|
|
cache: false,
|
|
data: createURL("command=listAccounts&response=json"),
|
|
dataType: "json",
|
|
success: function(json) {
|
|
var accounts = json.listaccountsresponse.account;
|
|
if (accounts != null && accounts.length > 0) {
|
|
var statJSON = accounts[0];
|
|
var sent = parseInt(statJSON.sentbytes);
|
|
var rec = parseInt(statJSON.receivedbytes);
|
|
|
|
if(sent==0 && rec==0)
|
|
$("#network_bandwidth_panel").hide();
|
|
else
|
|
$("#network_bandwidth_panel").show();
|
|
|
|
$("#menutab_role_user").show();
|
|
$("#menutab_role_root").hide();
|
|
$("#menutab_role_domain").hide();
|
|
$("#tab_dashboard_user").show();
|
|
$("#tab_dashboard_root, #tab_dashboard_domain, #loading_gridtable").hide();
|
|
|
|
// This is in bytes, so let's change to KB
|
|
sent = Math.round(sent / 1024);
|
|
rec = Math.round(rec / 1024);
|
|
$("#db_sent").text(sent + "KB");
|
|
$("#db_received").text(rec + "KB");
|
|
$("#db_available_public_ips").text(statJSON.ipavailable);
|
|
$("#db_owned_public_ips").text(statJSON.iptotal);
|
|
$("#db_running_vms").text(statJSON.vmrunning + " VM(s)");
|
|
$("#db_stopped_vms").text(statJSON.vmstopped + " VM(s)");
|
|
$("#db_total_vms").text(statJSON.vmtotal + " VM(s)");
|
|
$("#db_avail_vms").text(statJSON.vmavailable + " VM(s)");
|
|
$("#db_account_id").text(statJSON.id);
|
|
$("#db_account").text(statJSON.name);
|
|
$("#db_type").text(toRole(statJSON.accounttype));
|
|
$("#db_domain").text(statJSON.domain);
|
|
}
|
|
|
|
// Events
|
|
$.ajax({
|
|
data: createURL("command=listEvents&level=ERROR&response=json"),
|
|
dataType: "json",
|
|
success: function(json) {
|
|
var events = json.listeventsresponse.event;
|
|
if (events != null && events.length > 0) {
|
|
var errorGrid = $("#error_grid_content").empty();
|
|
var length = (events.length>=3) ? 3 : events.length;
|
|
for (var i = 0; i < length; i++) {
|
|
var errorTemplate = $("#recent_error_template").clone(true);
|
|
errorTemplate.find("#db_error_type").text(events[i].type);
|
|
errorTemplate.find("#db_error_msg").text(sanitizeXSS(events[i].description));
|
|
setDateField(events[i].created, errorTemplate.find("#db_error_date"));
|
|
errorGrid.append(errorTemplate.show());
|
|
}
|
|
}
|
|
}
|
|
});
|
|
},
|
|
beforeSend: function(XMLHttpRequest) {
|
|
return true;
|
|
}
|
|
});
|
|
} else { //no role
|
|
logout(false);
|
|
return;
|
|
}
|
|
});
|
|
}
|
|
|
|
// Check whether the session is valid.
|
|
g_mySession = $.cookie("JSESSIONID");
|
|
g_sessionKey = $.cookie("sessionKey");
|
|
g_role = $.cookie("role");
|
|
g_username = $.cookie("username");
|
|
g_account = $.cookie("account");
|
|
g_domainid = $.cookie("domainid");
|
|
g_networkType = $.cookie("networktype");
|
|
g_hypervisorType = $.cookie("hypervisortype");
|
|
g_timezone = $.cookie("timezone");
|
|
g_directAttachNetworkGroupsEnabled = $.cookie("directattachnetworkgroupsenabled");
|
|
g_directAttachedUntaggedEnabled = $.cookie("directattacheduntaggedenabled");
|
|
g_systemVmUseLocalStorage = $.cookie("systemvmuselocalstorage");
|
|
|
|
if($.cookie("timezoneoffset") != null)
|
|
g_timezoneoffset = isNaN($.cookie("timezoneoffset"))?null: parseFloat($.cookie("timezoneoffset"));
|
|
else
|
|
g_timezoneoffset = null;
|
|
|
|
if (!g_networkType || g_networkType.length == 0)
|
|
g_networkType = "vnet";
|
|
|
|
if (!g_hypervisorType || g_hypervisorType.length == 0)
|
|
g_hypervisorType = "kvm";
|
|
|
|
if (!g_directAttachNetworkGroupsEnabled || g_directAttachNetworkGroupsEnabled.length == 0)
|
|
g_directAttachNetworkGroupsEnabled = "false";
|
|
|
|
if (!g_directAttachedUntaggedEnabled || g_directAttachedUntaggedEnabled.length == 0)
|
|
g_directAttachedUntaggedEnabled = "false";
|
|
|
|
if (!g_systemVmUseLocalStorage || g_systemVmUseLocalStorage.length == 0)
|
|
g_systemVmUseLocalStorage = "false";
|
|
|
|
$.ajax({
|
|
data: createURL("command=listZones&available=true&response=json"),
|
|
dataType: "json",
|
|
async: false,
|
|
success: function(json) {
|
|
// session is valid, continue
|
|
if (isUser()) {
|
|
$("#menutab_role_user #menutab_dashboard_user").click();
|
|
} else if (isAdmin()) {
|
|
$("#menutab_role_root #menutab_dashboard_root").click();
|
|
} else if (isDomainAdmin()) {
|
|
$("#menutab_role_domain #menutab_dashboard_domain").click();
|
|
} else {
|
|
logout(false);
|
|
}
|
|
},
|
|
error: function(xmlHTTP) {
|
|
logout(false);
|
|
},
|
|
beforeSend: function(xmlHTTP) {
|
|
return true;
|
|
}
|
|
});
|
|
});
|
|
|