mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
remove primary storage page since primary storage is only a sub-page (tab) in host page.
This commit is contained in:
parent
9c1447c80e
commit
a8e62cf669
@ -49,7 +49,6 @@
|
||||
<script type="text/javascript" src="scripts/cloud.core.pod.js?t=<%=now%>"></script>
|
||||
<script type="text/javascript" src="scripts/cloud.core.cluster.js?t=<%=now%>"></script>
|
||||
<script type="text/javascript" src="scripts/cloud.core.host.js?t=<%=now%>"></script>
|
||||
<script type="text/javascript" src="scripts/cloud.core.primarystorage.js?t=<%=now%>"></script>
|
||||
<script type="text/javascript" src="scripts/cloud.core.systemvm.js?t=<%=now%>"></script>
|
||||
|
||||
<!-- Favicon -->
|
||||
|
||||
@ -1,350 +0,0 @@
|
||||
<%@ page import="java.util.*" %>
|
||||
|
||||
<%@ page import="com.cloud.utils.*" %>
|
||||
|
||||
<%
|
||||
Locale browserLocale = request.getLocale();
|
||||
CloudResourceBundle t = CloudResourceBundle.getBundle("resources/resource", browserLocale);
|
||||
%>
|
||||
|
||||
<div class="main_title" id="right_panel_header">
|
||||
<div class="main_titleicon">
|
||||
<img src="images/title_storageicon.gif"/></div>
|
||||
<h1>
|
||||
Primary Storage
|
||||
</h1>
|
||||
</div>
|
||||
<div class="contentbox" id="right_panel_content">
|
||||
<div class="info_detailbox errorbox" id="after_action_info_container_on_top" style="display: none">
|
||||
<p id="after_action_info">
|
||||
</p>
|
||||
</div>
|
||||
<div class="tabbox" style="margin-top: 15px;">
|
||||
<div class="content_tabs on" id="tab_details">
|
||||
<%=t.t("details")%></div>
|
||||
</div>
|
||||
<!-- Details tab (start)-->
|
||||
<div id="tab_content_details">
|
||||
<div id="tab_spinning_wheel" class="rightpanel_mainloader_panel" style="display: none;">
|
||||
<div class="rightpanel_mainloaderbox">
|
||||
<div class="rightpanel_mainloader_animatedicon">
|
||||
</div>
|
||||
<p>
|
||||
Loading …</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="tab_container">
|
||||
<div class="grid_container">
|
||||
<div class="grid_header">
|
||||
<div id="grid_header_title" class="grid_header_title">
|
||||
(title)</div>
|
||||
<div class="grid_actionbox" id="action_link">
|
||||
<div class="grid_actionsdropdown_box" id="action_menu" style="display: none;">
|
||||
<ul class="actionsdropdown_boxlist" id="action_list">
|
||||
<li>
|
||||
<%=t.t("no.available.actions")%></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="gridheader_loaderbox" id="spinning_wheel" style="border: 1px solid #999;
|
||||
display: none;">
|
||||
<div class="gridheader_loader" id="icon">
|
||||
</div>
|
||||
<p id="description">
|
||||
Waiting …</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows odd">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("ID")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="id">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows even">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("name")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="name">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows odd">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("state")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="state">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows even">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("zone")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="zonename">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows odd">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("pod")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="podname">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows even">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("cluster")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="clustername">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows odd">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("type")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="type">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows even">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("IP.or.FQDN")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="ipaddress">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows odd">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("path")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="path">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows even">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("disk.total")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="disksizetotal">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows odd">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("disk.allocated")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="disksizeallocated">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows even">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("tags")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="tags">
|
||||
</div>
|
||||
<input class="text" id="tags_edit" style="width: 200px; display: none;" type="text" />
|
||||
<div id="tags_edit_errormsg" style="display:none"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_botactionpanel">
|
||||
<div class="gridbot_buttons" id="save_button" style="display:none;">Save</div>
|
||||
<div class="gridbot_buttons" id="cancel_button" style="display:none;">Cancel</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Details tab (end)-->
|
||||
</div>
|
||||
|
||||
<!-- Add Host Dialog -->
|
||||
<div id="dialog_add_host" title="Add Host" style="display: none">
|
||||
<p>
|
||||
Add a host for zone <b><span id="zone_name"></span></b>, pod <b><span id="pod_name">
|
||||
</span></b>
|
||||
</p>
|
||||
<div class="dialog_formcontent">
|
||||
<form action="#" method="post" id="form_acquire">
|
||||
<ol>
|
||||
<li>
|
||||
<label for="host_hostname">
|
||||
Host name:</label>
|
||||
<input class="text" type="text" name="host_hostname" id="host_hostname" />
|
||||
<div id="host_hostname_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label for="user_name">
|
||||
User name:</label>
|
||||
<input class="text" type="text" name="host_username" id="host_username" />
|
||||
<div id="host_username_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label for="user_name">
|
||||
Password:</label>
|
||||
<input class="text" type="password" name="host_password" id="host_password" autocomplete="off" />
|
||||
<div id="host_password_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
|
||||
</div>
|
||||
</li>
|
||||
<li id="cluster_options_container">
|
||||
<label>
|
||||
</label><span><u>Cluster Options</u></span> </li>
|
||||
<li id="new_cluster_radio_container">
|
||||
<label>
|
||||
<input type="radio" name="cluster" value="new_cluster_radio" checked /> New
|
||||
cluster:</label>
|
||||
<input class="text" type="text" id="new_cluster_name" />
|
||||
<div id="new_cluster_name_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
|
||||
</div>
|
||||
</li>
|
||||
<li id="existing_cluster_radio_container">
|
||||
<label>
|
||||
<input type="radio" name="cluster" value="existing_cluster_radio" /> Join cluster:</label>
|
||||
<select class="select" id="cluster_select">
|
||||
</select>
|
||||
</li>
|
||||
<li id="no_cluster_radio_container">
|
||||
<label>
|
||||
<input type="radio" name="cluster" value="no_cluster_radio" /> Standalone</label>
|
||||
<span style="padding-left: 20px"></span></li>
|
||||
</ol>
|
||||
</form>
|
||||
</div>
|
||||
<!--Loading box-->
|
||||
<div id="spinning_wheel" class="ui_dialog_loaderbox" style="display: none;">
|
||||
<div class="ui_dialog_loader">
|
||||
</div>
|
||||
<p>
|
||||
Adding....</p>
|
||||
</div>
|
||||
<!--Confirmation msg box-->
|
||||
<!--Note: for error msg, just have to add error besides everything for eg. add error(class) next to ui_dialog_messagebox error, ui_dialog_msgicon error, ui_dialog_messagebox_text error. -->
|
||||
<div id="info_container" class="ui_dialog_messagebox error" style="display: none;">
|
||||
<div id="icon" class="ui_dialog_msgicon error">
|
||||
</div>
|
||||
<div id="info" class="ui_dialog_messagebox_text error">
|
||||
(info)</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Add Primary Storage Dialog -->
|
||||
<div id="dialog_add_pool" title="Add Primary Storage" style="display: none">
|
||||
<p>
|
||||
Add a new Primary Storage for zone <b><span id="zone_name"></span></b>, pod <b><span
|
||||
id="pod_name"></span></b>
|
||||
</p>
|
||||
<div class="dialog_formcontent">
|
||||
<form action="#" method="post" id="form_acquire">
|
||||
<ol>
|
||||
<li id="pool_cluster_container">
|
||||
<label for="pool_cluster">
|
||||
Cluster:</label>
|
||||
<select class="select" id="pool_cluster">
|
||||
</select>
|
||||
<div id="pool_cluster_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label for="user_name">
|
||||
Name:</label>
|
||||
<input class="text" type="text" name="add_pool_name" id="add_pool_name" />
|
||||
<div id="add_pool_name_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label for="add_pool_protocol">
|
||||
Protocol:</label>
|
||||
<select class="select" id="add_pool_protocol">
|
||||
<option value="nfs">NFS</option>
|
||||
<option value="iscsi">ISCSI</option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<label for="add_pool_nfs_server">
|
||||
Server:</label>
|
||||
<input class="text" type="text" name="add_pool_nfs_server" id="add_pool_nfs_server" />
|
||||
<div id="add_pool_nfs_server_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
|
||||
</div>
|
||||
</li>
|
||||
<li id="add_pool_path_container">
|
||||
<label for="add_pool_path">
|
||||
Path:</label>
|
||||
<input class="text" type="text" name="add_pool_path" id="add_pool_path" />
|
||||
<div id="add_pool_path_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
|
||||
</div>
|
||||
</li>
|
||||
<li id="add_pool_iqn_container" style="display: none">
|
||||
<label for="add_pool_iqn">
|
||||
Target IQN:</label>
|
||||
<input class="text" type="text" name="add_pool_iqn" id="add_pool_iqn" />
|
||||
<div id="add_pool_iqn_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
|
||||
</div>
|
||||
</li>
|
||||
<li id="add_pool_lun_container" style="display: none">
|
||||
<label for="add_pool_lun">
|
||||
LUN #:</label>
|
||||
<input class="text" type="text" name="add_pool_lun" id="add_pool_lun" />
|
||||
<div id="add_pool_lun_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
|
||||
</div>
|
||||
</li>
|
||||
<li id="add_pool_tags_container">
|
||||
<label for="add_pool_tags">
|
||||
Tags:</label>
|
||||
<input class="text" type="text" id="add_pool_tags" />
|
||||
<div id="add_pool_tags_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</form>
|
||||
</div>
|
||||
<!--Loading box-->
|
||||
<div id="spinning_wheel" class="ui_dialog_loaderbox" style="display: none;">
|
||||
<div class="ui_dialog_loader">
|
||||
</div>
|
||||
<p>
|
||||
Adding....</p>
|
||||
</div>
|
||||
<!--Confirmation msg box-->
|
||||
<!--Note: for error msg, just have to add error besides everything for eg. add error(class) next to ui_dialog_messagebox error, ui_dialog_msgicon error, ui_dialog_messagebox_text error. -->
|
||||
<div id="info_container" class="ui_dialog_messagebox error" style="display: none;">
|
||||
<div id="icon" class="ui_dialog_msgicon error">
|
||||
</div>
|
||||
<div id="info" class="ui_dialog_messagebox_text error">
|
||||
(info)</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- dialogs -->
|
||||
<div id="dialog_confirmation_delete_primarystorage" title="Confirmation" style="display: none">
|
||||
<p>
|
||||
<%=t.t("please.confirm.you.want.to.delete.the.primary.storage")%>
|
||||
</p>
|
||||
</div>
|
||||
@ -1,314 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2010 Cloud.com, Inc. All rights reserved.
|
||||
*
|
||||
* This software is licensed under the GNU General Public License v3 or later.
|
||||
*
|
||||
* It is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or any later version.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
function primarystorageGetMidmenuId(jsonObj) {
|
||||
return "midmenuItem_primarystorage_" + jsonObj.id;
|
||||
}
|
||||
|
||||
function primarystorageToMidmenu(jsonObj, $midmenuItem1) {
|
||||
$midmenuItem1.attr("id", primarystorageGetMidmenuId(jsonObj));
|
||||
$midmenuItem1.data("jsonObj", jsonObj);
|
||||
|
||||
var $iconContainer = $midmenuItem1.find("#icon_container").show();
|
||||
$iconContainer.find("#icon").attr("src", "images/midmenuicon_primarystorage.png");
|
||||
|
||||
$midmenuItem1.find("#first_row").text(fromdb(jsonObj.name).substring(0,25));
|
||||
$midmenuItem1.find("#second_row").text(jsonObj.ipaddress.substring(0,25));
|
||||
|
||||
updateHostStateInMidMenu(jsonObj, $midmenuItem1);
|
||||
}
|
||||
|
||||
function primarystorageToRightPanel($midmenuItem1) {
|
||||
copyActionInfoFromMidMenuToRightPanel($midmenuItem1);
|
||||
resourceLoadPage("jsp/primarystorage.jsp", $midmenuItem1); //after reloading "jsp/primarystorage.jsp", afterLoadPrimaryStorageJSP() will be called.
|
||||
}
|
||||
|
||||
function afterLoadPrimaryStorageJSP($midmenuItem1) {
|
||||
initAddHostButton($("#midmenu_add_host_button"), "primarystorage_page", $midmenuItem1);
|
||||
initAddPrimaryStorageButton($("#midmenu_add_primarystorage_button"), "primarystorage_page", $midmenuItem1);
|
||||
|
||||
initDialog("dialog_add_host");
|
||||
initDialog("dialog_add_pool");
|
||||
bindEventHandlerToDialogAddPool($("#dialog_add_pool"));
|
||||
initDialog("dialog_confirmation_delete_primarystorage");
|
||||
|
||||
$("#right_panel_content").data("$midmenuItem1", $midmenuItem1);
|
||||
primarystorageJsonToDetailsTab();
|
||||
}
|
||||
|
||||
function primarystorageJsonToDetailsTab() {
|
||||
var $midmenuItem1 = $("#right_panel_content").data("$midmenuItem1");
|
||||
if($midmenuItem1 == null)
|
||||
return;
|
||||
|
||||
var jsonObj = $midmenuItem1.data("jsonObj");
|
||||
if(jsonObj == null)
|
||||
return;
|
||||
|
||||
$.ajax({
|
||||
data: createURL("command=listStoragePools&id="+jsonObj.id),
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function(json) {
|
||||
var items = json.liststoragepoolsresponse.storagepool;
|
||||
if(items != null && items.length > 0) {
|
||||
jsonObj = items[0];
|
||||
$midmenuItem1.data("jsonObj", jsonObj);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var $thisTab = $("#right_panel_content").find("#tab_content_details");
|
||||
$thisTab.find("#tab_container").hide();
|
||||
$thisTab.find("#tab_spinning_wheel").show();
|
||||
|
||||
$thisTab.find("#id").text(fromdb(jsonObj.id));
|
||||
$thisTab.find("#grid_header_title").text(fromdb(jsonObj.name));
|
||||
$thisTab.find("#name").text(fromdb(jsonObj.name));
|
||||
|
||||
setHostStateInRightPanel(fromdb(jsonObj.state), $thisTab.find("#state"));
|
||||
|
||||
$thisTab.find("#zonename").text(fromdb(jsonObj.zonename));
|
||||
$thisTab.find("#podname").text(fromdb(jsonObj.podname));
|
||||
$thisTab.find("#clustername").text(fromdb(jsonObj.clustername));
|
||||
var storageType = "ISCSI Share";
|
||||
if (jsonObj.type == 'NetworkFilesystem')
|
||||
storageType = "NFS Share";
|
||||
$thisTab.find("#type").text(fromdb(storageType));
|
||||
$thisTab.find("#ipaddress").text(fromdb(jsonObj.ipaddress));
|
||||
$thisTab.find("#path").text(fromdb(jsonObj.path));
|
||||
$thisTab.find("#disksizetotal").text(convertBytes(jsonObj.disksizetotal));
|
||||
$thisTab.find("#disksizeallocated").text(convertBytes(jsonObj.disksizeallocated));
|
||||
|
||||
$thisTab.find("#tags").text(fromdb(jsonObj.tags));
|
||||
$thisTab.find("#tags_edit").val(fromdb(jsonObj.tags));
|
||||
|
||||
//actions ***
|
||||
var $actionLink = $thisTab.find("#action_link");
|
||||
$actionLink.bind("mouseover", function(event) {
|
||||
$(this).find("#action_menu").show();
|
||||
return false;
|
||||
});
|
||||
$actionLink.bind("mouseout", function(event) {
|
||||
$(this).find("#action_menu").hide();
|
||||
return false;
|
||||
});
|
||||
var $actionMenu = $thisTab.find("#action_link #action_menu");
|
||||
$actionMenu.find("#action_list").empty();
|
||||
//buildActionLinkForTab("Edit Primary Storage", primarystorageActionMap, $actionMenu, $midmenuItem1, $thisTab); //because updateStoragePool API is commented out.
|
||||
|
||||
if (jsonObj.state == 'Up' || jsonObj.state == "Connecting") {
|
||||
buildActionLinkForTab("Enable Maintenance Mode", primarystorageActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
}
|
||||
else if(jsonObj.state == 'Down') {
|
||||
buildActionLinkForTab("Enable Maintenance Mode", primarystorageActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
buildActionLinkForTab("Delete Primary Storage", primarystorageActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
|
||||
}
|
||||
else if(jsonObj.state == "Alert") {
|
||||
buildActionLinkForTab("Delete Primary Storage", primarystorageActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
}
|
||||
else if (jsonObj.state == "ErrorInMaintenance") {
|
||||
buildActionLinkForTab("Enable Maintenance Mode", primarystorageActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
buildActionLinkForTab("Cancel Maintenance Mode", primarystorageActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
}
|
||||
else if (jsonObj.state == "PrepareForMaintenance") {
|
||||
buildActionLinkForTab("Cancel Maintenance Mode", primarystorageActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
}
|
||||
else if (jsonObj.state == "Maintenance") {
|
||||
buildActionLinkForTab("Cancel Maintenance Mode", primarystorageActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
buildActionLinkForTab("Delete Primary Storage", primarystorageActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
}
|
||||
else if (jsonObj.state == "Disconnected"){
|
||||
buildActionLinkForTab("Delete Primary Storage", primarystorageActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
}
|
||||
else {
|
||||
alert("Unsupported Host State: " + jsonObj.state);
|
||||
}
|
||||
|
||||
$thisTab.find("#tab_spinning_wheel").hide();
|
||||
$thisTab.find("#tab_container").show();
|
||||
}
|
||||
|
||||
function primarystorageClearRightPanel() {
|
||||
primarystorageJsonClearDetailsTab();
|
||||
}
|
||||
|
||||
function primarystorageJsonClearDetailsTab() {
|
||||
var $thisTab = $("#right_panel_content").find("#tab_content_details");
|
||||
$thisTab.find("#id").text("");
|
||||
$thisTab.find("#name").text("");
|
||||
$thisTab.find("#state").text("");
|
||||
$thisTab.find("#zonename").text("");
|
||||
$thisTab.find("#podname").text("");
|
||||
$thisTab.find("#clustername").text("");
|
||||
$thisTab.find("#type").text("");
|
||||
$thisTab.find("#ipaddress").text("");
|
||||
$thisTab.find("#path").text("");
|
||||
$thisTab.find("#disksizetotal").text("");
|
||||
$thisTab.find("#disksizeallocated").text("");
|
||||
$thisTab.find("#tags").text("");
|
||||
}
|
||||
|
||||
var primarystorageActionMap = {
|
||||
"Edit Primary Storage": {
|
||||
dialogBeforeActionFn: doEditPrimaryStorage
|
||||
},
|
||||
"Enable Maintenance Mode": {
|
||||
isAsyncJob: true,
|
||||
asyncJobResponse: "prepareprimarystorageformaintenanceresponse",
|
||||
dialogBeforeActionFn: doEnableMaintenanceModeForPrimaryStorage,
|
||||
inProcessText: "Enabling Maintenance Mode....",
|
||||
afterActionSeccessFn: function(json, $midmenuItem1, id) {
|
||||
var item = json.queryasyncjobresultresponse.jobresult.storagepool;
|
||||
primarystorageToMidmenu(item, $midmenuItem1);
|
||||
primarystorageToRightPanel($midmenuItem1);
|
||||
$("#right_panel_content #after_action_info").text("We are actively enabling maintenance. Please refresh periodically for an updated status.");
|
||||
}
|
||||
},
|
||||
"Cancel Maintenance Mode": {
|
||||
isAsyncJob: true,
|
||||
asyncJobResponse: "cancelprimarystoragemaintenanceresponse",
|
||||
dialogBeforeActionFn: doCancelMaintenanceModeForPrimaryStorage,
|
||||
inProcessText: "Cancelling Maintenance Mode....",
|
||||
afterActionSeccessFn: function(json, $midmenuItem1, id) {
|
||||
var item = json.queryasyncjobresultresponse.jobresult.storagepool;
|
||||
primarystorageToMidmenu(item, $midmenuItem1);
|
||||
primarystorageToRightPanel($midmenuItem1);
|
||||
$("#right_panel_content #after_action_info").text("We are actively cancelling your scheduled maintenance. Please refresh periodically for an updated status.");
|
||||
}
|
||||
},
|
||||
"Delete Primary Storage": {
|
||||
isAsyncJob: false,
|
||||
dialogBeforeActionFn: doDeletePrimaryStorage,
|
||||
inProcessText: "Deleting Primary Storage....",
|
||||
afterActionSeccessFn: function(json, $midmenuItem1, id) {
|
||||
$midmenuItem1.slideUp("slow", function() {
|
||||
$(this).remove();
|
||||
});
|
||||
clearRightPanel();
|
||||
primarystorageClearRightPanel();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function doEditPrimaryStorage($actionLink, $detailsTab, $midmenuItem1) {
|
||||
var $readonlyFields = $detailsTab.find("#tags");
|
||||
var $editFields = $detailsTab.find("#tags_edit");
|
||||
|
||||
$readonlyFields.hide();
|
||||
$editFields.show();
|
||||
$detailsTab.find("#cancel_button, #save_button").show();
|
||||
|
||||
$detailsTab.find("#cancel_button").unbind("click").bind("click", function(event){
|
||||
$editFields.hide();
|
||||
$readonlyFields.show();
|
||||
$("#save_button, #cancel_button").hide();
|
||||
return false;
|
||||
});
|
||||
$detailsTab.find("#save_button").unbind("click").bind("click", function(event){
|
||||
doEditPrimaryStorage2($actionLink, $detailsTab, $midmenuItem1, $readonlyFields, $editFields);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
function doEditPrimaryStorage2($actionLink, $detailsTab, $midmenuItem1, $readonlyFields, $editFields) {
|
||||
var jsonObj = $midmenuItem1.data("jsonObj");
|
||||
var id = jsonObj.id;
|
||||
|
||||
// validate values
|
||||
var isValid = true;
|
||||
isValid &= validateString("Tags", $detailsTab.find("#tags_edit"), $detailsTab.find("#tags_edit_errormsg"), true); //optional
|
||||
if (!isValid)
|
||||
return;
|
||||
|
||||
var array1 = [];
|
||||
|
||||
var tags = $detailsTab.find("#tags_edit").val();
|
||||
array1.push("&tags="+todb(tags));
|
||||
|
||||
if(array1.length == 0)
|
||||
return;
|
||||
|
||||
$.ajax({
|
||||
data: createURL("command=updateStoragePool&id="+id+array1.join("")),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
primarystorageToMidmenu(jsonObj, $midmenuItem1);
|
||||
primarystorageToRightPanel($midmenuItem1);
|
||||
|
||||
$editFields.hide();
|
||||
$readonlyFields.show();
|
||||
$("#save_button, #cancel_button").hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function doEnableMaintenanceModeForPrimaryStorage($actionLink, $detailsTab, $midmenuItem1){
|
||||
var jsonObj = $midmenuItem1.data("jsonObj");
|
||||
|
||||
$("#dialog_confirmation")
|
||||
.text("Warning: placing the primary storage into maintenance mode will cause all VMs using volumes from it to be stopped. Do you want to continue?")
|
||||
.dialog("option", "buttons", {
|
||||
"OK": function() {
|
||||
$(this).dialog("close");
|
||||
var id = jsonObj.id;
|
||||
var apiCommand = "command=enableStorageMaintenance&id="+id;
|
||||
doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab);
|
||||
},
|
||||
"Cancel": function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}).dialog("open");
|
||||
}
|
||||
|
||||
function doCancelMaintenanceModeForPrimaryStorage($actionLink, $detailsTab, $midmenuItem1){
|
||||
var jsonObj = $midmenuItem1.data("jsonObj");
|
||||
|
||||
$("#dialog_confirmation")
|
||||
.text("Please confirm you want to cancel maintenace")
|
||||
.dialog("option", "buttons", {
|
||||
"OK": function() {
|
||||
$(this).dialog("close");
|
||||
var id = jsonObj.id;
|
||||
var apiCommand = "command=cancelStorageMaintenance&id="+id;
|
||||
doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab);
|
||||
},
|
||||
"Cancel": function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}).dialog("open");
|
||||
}
|
||||
|
||||
function doDeletePrimaryStorage($actionLink, $detailsTab, $midmenuItem1){
|
||||
var jsonObj = $midmenuItem1.data("jsonObj");
|
||||
|
||||
$("#dialog_confirmation_delete_primarystorage")
|
||||
.dialog("option", "buttons", {
|
||||
"OK": function() {
|
||||
$(this).dialog("close");
|
||||
var id = jsonObj.id;
|
||||
var apiCommand = "command=deleteStoragePool&id="+id;
|
||||
doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab);
|
||||
},
|
||||
"Cancel": function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}).dialog("open");
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user