diff --git a/ui/index.html b/ui/index.html
index 57e427c6c79..dfc790ec1fe 100644
--- a/ui/index.html
+++ b/ui/index.html
@@ -42,6 +42,7 @@
+
diff --git a/ui/scripts/cloud.core.init.js b/ui/scripts/cloud.core.init.js
new file mode 100644
index 00000000000..9328014d050
--- /dev/null
+++ b/ui/scripts/cloud.core.init.js
@@ -0,0 +1,791 @@
+$(document).ready(function() {
+ // 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: "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_username = null;
+ g_account = null;
+ g_domainid = null;
+ g_timezoneoffset = null;
+ g_timezone = null;
+
+ $.cookie('JSESSIONID', 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: "command=login&response=json" + array1.join(""),
+ dataType: "json",
+ async: false,
+ success: function(json) {
+ g_mySession = $.cookie('JSESSIONID');
+ 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;
+
+ $.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});
+
+ // 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("content/tab_domains.html", 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: "command=listZones&available=true&response=json",
+ 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("");
+ if(noPods) {
+ $.ajax({
+ data: "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: "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: "command=listPods&zoneId="+zoneId+"&response=json",
+ 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("");
+ for (var i = 0; i < pods.length; i++) {
+ podSelect.append("");
+ }
+ }
+ $("#capacity_pod_select").change();
+ }
+ });
+ });
+ $("#capacity_zone_select").change();
+
+ // Show Recent Alerts
+ $.ajax({
+ data: "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: "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 - " + sanitizeXSS(alerts[i].name) + " 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: "command=listVirtualMachines&pageSize=500&response=json",
+ dataType: "json",
+ success: function(json) {
+ if (json.listvirtualmachinesresponse.virtualmachine != undefined)
+ thisTab.find("#dashboard_instances").text(json.listvirtualmachinesresponse.virtualmachine.length);
+ }
+ });
+ $.ajax({
+ data: "command=listVolumes&pageSize=500&response=json",
+ dataType: "json",
+ success: function(json) {
+ if (json.listvolumesresponse.volume)
+ thisTab.find("#dashboard_volumes").text(json.listvolumesresponse.volume.length);
+ }
+ });
+ $.ajax({
+ data: "command=listSnapshots&pageSize=500&response=json",
+ dataType: "json",
+ success: function(json) {
+ if (json.listsnapshotsresponse.snapshot)
+ thisTab.find("#dashboard_snapshots").text(json.listsnapshotsresponse.snapshot.length);
+ }
+ });
+ $.ajax({
+ data: "command=listAccounts&pageSize=500&response=json",
+ dataType: "json",
+ success: function(json) {
+ if (json.listaccountsresponse.account)
+ thisTab.find("#dashboard_accounts").text(json.listaccountsresponse.account.length);
+ }
+ });
+ $.ajax({
+ data: "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: "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: "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_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");
+
+ 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";
+
+ $.ajax({
+ data: "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;
+ }
+ });
+});
diff --git a/ui/scripts/cloud.core.js b/ui/scripts/cloud.core.js
index 8d171a6227e..06be51b0e44 100644
--- a/ui/scripts/cloud.core.js
+++ b/ui/scripts/cloud.core.js
@@ -16,7 +16,7 @@
*
*/
-// Version: @VERSION@
+// Version: 1.9.1.4
// global variables
var g_mySession = null;
@@ -689,797 +689,4 @@ timezones['Australia/Darwin']='[UTC+09:30] Central Standard Time (Northern Terri
timezones['Australia/Brisbane']='[UTC+10:00] Eastern Standard Time (Queensland)';
timezones['Australia/Canberra']='[UTC+10:00] Eastern Standard Time (New South Wales)';
timezones['Pacific/Guam']='[UTC+10:00] Chamorro Standard Time';
-timezones['Pacific/Auckland']='[UTC+12:00] New Zealand Standard Time';
-
-$(document).ready(function() {
- // 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: "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_username = null;
- g_account = null;
- g_domainid = null;
- g_timezoneoffset = null;
- g_timezone = null;
-
- $.cookie('JSESSIONID', 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: "command=login&response=json" + array1.join(""),
- dataType: "json",
- async: false,
- success: function(json) {
- g_mySession = $.cookie('JSESSIONID');
- 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;
-
- $.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});
-
- // 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("content/tab_domains.html", 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: "command=listZones&available=true&response=json",
- 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("");
- if(noPods) {
- $.ajax({
- data: "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: "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: "command=listPods&zoneId="+zoneId+"&response=json",
- 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("");
- for (var i = 0; i < pods.length; i++) {
- podSelect.append("");
- }
- }
- $("#capacity_pod_select").change();
- }
- });
- });
- $("#capacity_zone_select").change();
-
- // Show Recent Alerts
- $.ajax({
- data: "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: "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 - " + sanitizeXSS(alerts[i].name) + " 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: "command=listVirtualMachines&pageSize=500&response=json",
- dataType: "json",
- success: function(json) {
- if (json.listvirtualmachinesresponse.virtualmachine != undefined)
- thisTab.find("#dashboard_instances").text(json.listvirtualmachinesresponse.virtualmachine.length);
- }
- });
- $.ajax({
- data: "command=listVolumes&pageSize=500&response=json",
- dataType: "json",
- success: function(json) {
- if (json.listvolumesresponse.volume)
- thisTab.find("#dashboard_volumes").text(json.listvolumesresponse.volume.length);
- }
- });
- $.ajax({
- data: "command=listSnapshots&pageSize=500&response=json",
- dataType: "json",
- success: function(json) {
- if (json.listsnapshotsresponse.snapshot)
- thisTab.find("#dashboard_snapshots").text(json.listsnapshotsresponse.snapshot.length);
- }
- });
- $.ajax({
- data: "command=listAccounts&pageSize=500&response=json",
- dataType: "json",
- success: function(json) {
- if (json.listaccountsresponse.account)
- thisTab.find("#dashboard_accounts").text(json.listaccountsresponse.account.length);
- }
- });
- $.ajax({
- data: "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: "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: "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_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");
-
- 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";
-
- $.ajax({
- data: "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;
- }
- });
-});
-
+timezones['Pacific/Auckland']='[UTC+12:00] New Zealand Standard Time';
\ No newline at end of file