Started feature to install Ganglia onto nodes.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@9370 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
965bb3d14e
commit
3db536fdca
@ -203,9 +203,9 @@ function loadGroups4Ganglia(data) {
|
||||
var info = $('<div class="ui-state-highlight ui-corner-all"></div>');
|
||||
info.append('<span class="ui-icon ui-icon-info" style="display: inline-block; margin: 10px 5px;"></span>');
|
||||
var msg = $('<p style="display: inline-block; width: 95%;"></p>');
|
||||
msg.append('Review the nodes that are monitored by Ganglia. You can turn on Ganglia monitoring on a node by selecting it and clicking on Monitor. If you are satisfied with the nodes you want to monitor, ');
|
||||
msg.append('Review the nodes that are monitored by Ganglia. Install Ganglia onto a node you want to monitor by selecting it and clicking on Install. Turn on Ganglia monitoring for a node by selecting it and clicking on Monitor. If you are satisfied with the nodes you want to monitor, ');
|
||||
msg.append(gangliaLnk);
|
||||
msg.append(' to open Ganglia page.');
|
||||
msg.append(' to open the Ganglia page.');
|
||||
info.append(msg);
|
||||
info.css('margin-bottom', '10px');
|
||||
$('#nodes').append(info);
|
||||
@ -376,7 +376,7 @@ function loadNodes4Ganglia(data) {
|
||||
'node',
|
||||
'<span><a>status</a></span><img src="images/loader.gif"></img>',
|
||||
'<span><a>power</a></span><img src="images/loader.gif" style="display: none;"></img>',
|
||||
'<a>ganglia</a><img src="images/loader.gif"></img>');
|
||||
'<span><a>ganglia</a></span><img src="images/loader.gif" style="display: none;"></img>');
|
||||
|
||||
// Create a datatable
|
||||
var gangliaTable = new DataTable(gangliaTableId);
|
||||
@ -481,6 +481,15 @@ function loadNodes4Ganglia(data) {
|
||||
monitorNode(tgtNodes, 'off');
|
||||
}
|
||||
});
|
||||
|
||||
// Install Ganglia
|
||||
var installLnk = $('<a>Install</a>');
|
||||
installLnk.click(function() {
|
||||
var tgtNodes = getNodesChecked(gangliaTableId);
|
||||
if (tgtNodes) {
|
||||
openInstallDialog(tgtNodes);
|
||||
}
|
||||
});
|
||||
|
||||
// Power actions
|
||||
var monitorActions = [ monitorOnLnk, monitorOffLnk ];
|
||||
@ -488,7 +497,7 @@ function loadNodes4Ganglia(data) {
|
||||
|
||||
// Create an action menu
|
||||
var actionsDIV = $('<div></div>');
|
||||
var actions = [ [ powerLnk, powerActionMenu ], [ monitorLnk, monitorActionMenu ] ];
|
||||
var actions = [ [ powerLnk, powerActionMenu ], [ monitorLnk, monitorActionMenu ], installLnk ];
|
||||
var actionMenu = createMenu(actions);
|
||||
actionMenu.superfish();
|
||||
actionsDIV.append(actionMenu);
|
||||
@ -546,33 +555,33 @@ function loadNodes4Ganglia(data) {
|
||||
powerCol.find('span a').bind('click', function(event) {
|
||||
refreshPowerStatus(group, gangliaTableId);
|
||||
});
|
||||
gangliaCol.bind('click', function(event) {
|
||||
gangliaCol.find('span a').bind('click', function(event) {
|
||||
refreshGangliaStatus(group);
|
||||
});
|
||||
|
||||
// Create tooltip for status
|
||||
var pingTip = createStatusToolTip();
|
||||
pingCol.find('span').append(pingTip);
|
||||
pingCol.find('span a').tooltip({
|
||||
var tooltipConf = {
|
||||
position: "center right",
|
||||
offset: [-2, 10],
|
||||
effect: "fade",
|
||||
opacity: 0.8,
|
||||
relative: true,
|
||||
predelay: 800
|
||||
});
|
||||
};
|
||||
|
||||
var pingTip = createStatusToolTip();
|
||||
pingCol.find('span').append(pingTip);
|
||||
pingCol.find('span a').tooltip(tooltipConf);
|
||||
|
||||
// Create tooltip for power
|
||||
var powerTip = createPowerToolTip();
|
||||
powerCol.find('span').append(powerTip);
|
||||
powerCol.find('span a').tooltip({
|
||||
position: "center right",
|
||||
offset: [-2, 10],
|
||||
effect: "fade",
|
||||
opacity: 0.8,
|
||||
relative: true,
|
||||
predelay: 800
|
||||
});
|
||||
powerCol.find('span a').tooltip(tooltipConf);
|
||||
|
||||
// Create tooltip for ganglia
|
||||
var gangliaTip = createGangliaToolTip();
|
||||
gangliaCol.find('span').append(gangliaTip);
|
||||
gangliaCol.find('span a').tooltip(tooltipConf);
|
||||
|
||||
/**
|
||||
* Get node and ganglia status
|
||||
@ -1003,4 +1012,103 @@ function addNodes2GangliaTable(data) {
|
||||
|
||||
success : loadGangliaStatus
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a tool tip for ganglia status
|
||||
*
|
||||
* @return Tool tip
|
||||
*/
|
||||
function createGangliaToolTip() {
|
||||
// Create tooltip container
|
||||
var toolTip = $('<div class="tooltip">Click here to refresh the Ganglia status</div>').css({
|
||||
'width': '150px'
|
||||
});
|
||||
return toolTip;
|
||||
}
|
||||
|
||||
/**
|
||||
* Open dialog to install Ganglia on a given node
|
||||
*
|
||||
* @param node
|
||||
* Node to install Ganglia on
|
||||
* @return Nothing
|
||||
*/
|
||||
function openInstallDialog(node) {
|
||||
var form = $('<div class="form"></div>');
|
||||
|
||||
// Create info bar
|
||||
var info = createInfoBar('Select the directory containing the Ganglia packages to install onto the given node range. Be aware that the Ganglia packages must be present in the /install directory.');
|
||||
form.append(info);
|
||||
|
||||
// Create node range input
|
||||
var nr = $('<div></div>');
|
||||
var nrLabel = $('<label>Node range:</label>').css('vertical-align', 'middle');
|
||||
var nrInput = $('<input type="text" id="node" name="node"/>').val(node);
|
||||
nr.append(nrLabel);
|
||||
nr.append(nrInput);
|
||||
form.append(nr);
|
||||
|
||||
// Create Ganglia directory input
|
||||
var directory = $('<div></div>');
|
||||
var dirLabel = $('<label>Directory:</label>').css('vertical-align', 'middle');
|
||||
var dirInput = $('<input type="text" id="directory" name="directory"/>').css('width', '300px');
|
||||
directory.append(dirLabel);
|
||||
directory.append(dirInput);
|
||||
form.append(directory);
|
||||
|
||||
// Create button to browse for Ganglia directory
|
||||
var browseBtn = createButton('Browse');
|
||||
directory.append(browseBtn);
|
||||
// Browse server directory and files
|
||||
browseBtn.serverBrowser({
|
||||
onSelect : function(path) {
|
||||
$('input[name="directory"]').val(path);
|
||||
},
|
||||
onLoad : function() {
|
||||
return $('input[name="directory"]').val();
|
||||
},
|
||||
knownExt : [ 'exe', 'js', 'txt' ],
|
||||
knownPaths : [ {
|
||||
text : 'Install',
|
||||
image : 'desktop.png',
|
||||
path : '/install'
|
||||
} ],
|
||||
imageUrl : 'images/serverbrowser/',
|
||||
systemImageUrl : 'images/serverbrowser/',
|
||||
handlerUrl : 'lib/getpath.php',
|
||||
title : 'Browse',
|
||||
requestMethod : 'POST',
|
||||
width : '500',
|
||||
height : '300',
|
||||
basePath : '/install' // Limit user to only install directory
|
||||
});
|
||||
|
||||
// Open dialog to install Ganglia
|
||||
form.dialog({
|
||||
modal: true,
|
||||
width: 600,
|
||||
buttons: {
|
||||
'Install': function(){
|
||||
installGanglia($('input[name="node"]').val(), $('input[name="directory"]').val());
|
||||
$(this).dialog('close');
|
||||
},
|
||||
'Cancel': function(){
|
||||
$(this).dialog('close');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Install Ganglia on a given node
|
||||
*
|
||||
* @param node
|
||||
* Node to install Ganglia on
|
||||
* @param directory
|
||||
* Directory containing Ganglia packages
|
||||
* @return Nothing
|
||||
*/
|
||||
function installGanglia(node, directory) {
|
||||
|
||||
}
|
@ -159,7 +159,7 @@ function loadMonitorPage() {
|
||||
monTableBody.find('td:nth-child(1)').css('white-space', 'nowrap');
|
||||
|
||||
// Append info bar
|
||||
$('#monitorTab div').empty().append(createInfoBar('Select a monitoring tool to use.'));
|
||||
$('#monitorTab div').empty().append(createInfoBar('Select a monitoring tool to use'));
|
||||
$('#monitorTab .form').append(monTable);
|
||||
|
||||
// Open monitoring tool onclick
|
||||
@ -289,7 +289,7 @@ function loadUnfinish(monitorName, tab) {
|
||||
*
|
||||
* @return Nothing
|
||||
*/
|
||||
function toggleMonitor() {
|
||||
function toggleMonitor() {
|
||||
// Get the name of the monitoring tool
|
||||
var name = $(this).attr('name');
|
||||
// Get the status to toggle to, either on or off
|
||||
@ -300,8 +300,8 @@ function toggleMonitor() {
|
||||
if (status == 'Off') {
|
||||
command = 'monstop' ;
|
||||
}
|
||||
|
||||
$.ajax( {
|
||||
|
||||
$.ajax({
|
||||
url : 'lib/cmd.php',
|
||||
dataType : 'json',
|
||||
data : {
|
||||
|
Loading…
Reference in New Issue
Block a user