|
|
|
@@ -35,14 +35,14 @@ function loadNodesPage() {
|
|
|
|
|
// If groups are not already loaded
|
|
|
|
|
if (!$('#groups').length) {
|
|
|
|
|
// Create a groups division
|
|
|
|
|
groupDIV = $('<div id="groups"></div>');
|
|
|
|
|
nodesDIV = $('<div id="nodes"></div>');
|
|
|
|
|
$('#content').append(groupDIV);
|
|
|
|
|
$('#content').append(nodesDIV);
|
|
|
|
|
var groups = $('<div id="groups"></div>');
|
|
|
|
|
var nodes = $('<div id="nodes"></div>');
|
|
|
|
|
$('#content').append(groups);
|
|
|
|
|
$('#content').append(nodes);
|
|
|
|
|
|
|
|
|
|
// Create loader
|
|
|
|
|
var loader = createLoader();
|
|
|
|
|
groupDIV.append(loader);
|
|
|
|
|
groups.append(loader);
|
|
|
|
|
|
|
|
|
|
// Create info bar
|
|
|
|
|
var info = createInfoBar('Select a group to view its nodes.');
|
|
|
|
@@ -89,14 +89,15 @@ function loadGroups(data) {
|
|
|
|
|
// Remove loader
|
|
|
|
|
$('#groups').find('img').remove();
|
|
|
|
|
|
|
|
|
|
// Save group in cookie
|
|
|
|
|
var groups = data.rsp;
|
|
|
|
|
setGroupsCookies(data);
|
|
|
|
|
|
|
|
|
|
// Create a list of groups
|
|
|
|
|
var ul = $('<ul></ul>');
|
|
|
|
|
var item = $('<li id="root"><h3>Groups</h3></li>');
|
|
|
|
|
ul.append(item);
|
|
|
|
|
var subUL = $('<ul></ul>');
|
|
|
|
|
ul.append(item);
|
|
|
|
|
item.append(subUL);
|
|
|
|
|
|
|
|
|
|
// Create a link for each group
|
|
|
|
@@ -193,7 +194,7 @@ function loadGroups(data) {
|
|
|
|
|
var addNodeForm = $('<div class="form"></div>');
|
|
|
|
|
addNodeForm.append(info);
|
|
|
|
|
addNodeForm.append('<div><label for="mgt">Hardware management:</label>'
|
|
|
|
|
+ '<select id="mgt" name="mgt">'
|
|
|
|
|
+ '<select id="mgt" name="mgt">'
|
|
|
|
|
+ '<option>ipmi</option>'
|
|
|
|
|
+ '<option>blade</option>'
|
|
|
|
|
+ '<option>hmc</option>'
|
|
|
|
@@ -337,8 +338,7 @@ function loadNodes(data) {
|
|
|
|
|
// Variable to send command and request node status
|
|
|
|
|
var getNodeStatus = true;
|
|
|
|
|
|
|
|
|
|
// Clear cookie containing list of nodes where
|
|
|
|
|
// their attributes need to be updated
|
|
|
|
|
// Clear cookie containing list of nodes where their attributes need to be updated
|
|
|
|
|
$.cookie('nodes2update', '');
|
|
|
|
|
// Clear hash table containing node attributes
|
|
|
|
|
origAttrs = '';
|
|
|
|
@@ -387,7 +387,6 @@ function loadNodes(data) {
|
|
|
|
|
sorted.sort();
|
|
|
|
|
|
|
|
|
|
// Add column for check box, node, ping, power, and comments
|
|
|
|
|
// Power status for nodes will not be requested until user clicks on power link
|
|
|
|
|
sorted.unshift('<input type="checkbox" onclick="selectAllCheckbox(event, $(this))">',
|
|
|
|
|
'node',
|
|
|
|
|
'<span><a>status</a></span><img src="images/loader.gif"></img>',
|
|
|
|
@@ -395,7 +394,7 @@ function loadNodes(data) {
|
|
|
|
|
'comments');
|
|
|
|
|
|
|
|
|
|
// Create a datatable
|
|
|
|
|
var dTable = new DataTable('nodesDataTable');
|
|
|
|
|
var dTable = new DataTable('nodesDatatable');
|
|
|
|
|
dTable.init(sorted);
|
|
|
|
|
|
|
|
|
|
// Go through each node
|
|
|
|
@@ -403,11 +402,9 @@ function loadNodes(data) {
|
|
|
|
|
// Create a row
|
|
|
|
|
var row = new Array();
|
|
|
|
|
|
|
|
|
|
// Create a check box
|
|
|
|
|
// Create a check box, node link, and get node status
|
|
|
|
|
var checkBx = '<input type="checkbox" name="' + node + '"/>';
|
|
|
|
|
// Open node onclick
|
|
|
|
|
var nodeLink = $('<a class="node" id="' + node + '">' + node + '</a>').bind('click', loadNode);
|
|
|
|
|
// Get node status
|
|
|
|
|
var status = attrs[node]['status'].replace('sshd', 'ping');
|
|
|
|
|
|
|
|
|
|
// Push in checkbox, node link, status, and power
|
|
|
|
@@ -433,7 +430,6 @@ function loadNodes(data) {
|
|
|
|
|
|
|
|
|
|
// Create tooltip
|
|
|
|
|
var tip = createCommentsToolTip(comment);
|
|
|
|
|
// Create container to put icon and comment in
|
|
|
|
|
var col = $('<span></span>').append(icon);
|
|
|
|
|
col.append(tip);
|
|
|
|
|
row.push(col);
|
|
|
|
@@ -461,7 +457,7 @@ function loadNodes(data) {
|
|
|
|
|
} else {
|
|
|
|
|
row.push('');
|
|
|
|
|
}
|
|
|
|
|
} // End of if
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Add the row to the table
|
|
|
|
@@ -488,7 +484,7 @@ function loadNodes(data) {
|
|
|
|
|
// Power on
|
|
|
|
|
var powerOnLnk = $('<a>Power on</a>');
|
|
|
|
|
powerOnLnk.bind('click', function(event) {
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDataTable');
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDatatable');
|
|
|
|
|
if (tgtNodes) {
|
|
|
|
|
powerNode(tgtNodes, 'on');
|
|
|
|
|
}
|
|
|
|
@@ -497,7 +493,7 @@ function loadNodes(data) {
|
|
|
|
|
// Power off
|
|
|
|
|
var powerOffLnk = $('<a>Power off</a>');
|
|
|
|
|
powerOffLnk.bind('click', function(event) {
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDataTable');
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDatatable');
|
|
|
|
|
if (tgtNodes) {
|
|
|
|
|
powerNode(tgtNodes, 'off');
|
|
|
|
|
}
|
|
|
|
@@ -506,7 +502,7 @@ function loadNodes(data) {
|
|
|
|
|
// Clone
|
|
|
|
|
var cloneLnk = $('<a>Clone</a>');
|
|
|
|
|
cloneLnk.bind('click', function(event) {
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDataTable').split(',');
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDatatable').split(',');
|
|
|
|
|
for (var i in tgtNodes) {
|
|
|
|
|
var mgt = getNodeAttr(tgtNodes[i], 'mgt');
|
|
|
|
|
|
|
|
|
@@ -540,7 +536,7 @@ function loadNodes(data) {
|
|
|
|
|
// Delete
|
|
|
|
|
var deleteLnk = $('<a>Delete</a>');
|
|
|
|
|
deleteLnk.bind('click', function(event) {
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDataTable');
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDatatable');
|
|
|
|
|
if (tgtNodes) {
|
|
|
|
|
loadDeletePage(tgtNodes);
|
|
|
|
|
}
|
|
|
|
@@ -549,7 +545,7 @@ function loadNodes(data) {
|
|
|
|
|
// Unlock
|
|
|
|
|
var unlockLnk = $('<a>Unlock</a>');
|
|
|
|
|
unlockLnk.bind('click', function(event) {
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDataTable');
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDatatable');
|
|
|
|
|
if (tgtNodes) {
|
|
|
|
|
loadUnlockPage(tgtNodes);
|
|
|
|
|
}
|
|
|
|
@@ -558,7 +554,7 @@ function loadNodes(data) {
|
|
|
|
|
// Run script
|
|
|
|
|
var scriptLnk = $('<a>Run script</a>');
|
|
|
|
|
scriptLnk.bind('click', function(event) {
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDataTable');
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDatatable');
|
|
|
|
|
if (tgtNodes) {
|
|
|
|
|
loadScriptPage(tgtNodes);
|
|
|
|
|
}
|
|
|
|
@@ -567,7 +563,7 @@ function loadNodes(data) {
|
|
|
|
|
// Update
|
|
|
|
|
var updateLnk = $('<a>Update</a>');
|
|
|
|
|
updateLnk.bind('click', function(event) {
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDataTable');
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDatatable');
|
|
|
|
|
if (tgtNodes) {
|
|
|
|
|
loadUpdatenodePage(tgtNodes);
|
|
|
|
|
}
|
|
|
|
@@ -576,7 +572,7 @@ function loadNodes(data) {
|
|
|
|
|
// Set boot state
|
|
|
|
|
var setBootStateLnk = $('<a>Set boot state</a>');
|
|
|
|
|
setBootStateLnk.bind('click', function(event) {
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDataTable');
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDatatable');
|
|
|
|
|
if (tgtNodes) {
|
|
|
|
|
loadNodesetPage(tgtNodes);
|
|
|
|
|
}
|
|
|
|
@@ -586,7 +582,7 @@ function loadNodes(data) {
|
|
|
|
|
// Boot to network
|
|
|
|
|
var boot2NetworkLnk = $('<a>Boot to network</a>');
|
|
|
|
|
boot2NetworkLnk.bind('click', function(event) {
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDataTable');
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDatatable');
|
|
|
|
|
if (tgtNodes) {
|
|
|
|
|
loadNetbootPage(tgtNodes);
|
|
|
|
|
}
|
|
|
|
@@ -595,7 +591,7 @@ function loadNodes(data) {
|
|
|
|
|
// Remote console
|
|
|
|
|
var rcons = $('<a>Open console</a>');
|
|
|
|
|
rcons.bind('click', function(event){
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDataTable');
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDatatable');
|
|
|
|
|
if (tgtNodes) {
|
|
|
|
|
loadRconsPage(tgtNodes);
|
|
|
|
|
}
|
|
|
|
@@ -604,19 +600,18 @@ function loadNodes(data) {
|
|
|
|
|
// Edit properties
|
|
|
|
|
var editProps = $('<a>Edit properties</a>');
|
|
|
|
|
editProps.bind('click', function(event){
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDataTable').split(',');
|
|
|
|
|
var tgtNodes = getNodesChecked('nodesDatatable').split(',');
|
|
|
|
|
for (var i in tgtNodes) {
|
|
|
|
|
loadEditPropsPage(tgtNodes[i]);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var advancedLnk = $('<a>Advanced</a>');
|
|
|
|
|
|
|
|
|
|
// Power actions
|
|
|
|
|
var powerActions = [ powerOnLnk, powerOffLnk ];
|
|
|
|
|
var powerActionMenu = createMenu(powerActions);
|
|
|
|
|
|
|
|
|
|
// Advanced actions
|
|
|
|
|
var advancedLnk = $('<a>Advanced</a>');
|
|
|
|
|
var advancedActions;
|
|
|
|
|
if ('compute' == group) {
|
|
|
|
|
advancedActions = [ boot2NetworkLnk, scriptLnk, setBootStateLnk, updateLnk, rcons, editProps ];
|
|
|
|
@@ -634,11 +629,15 @@ function loadNodes(data) {
|
|
|
|
|
actionMenu.superfish();
|
|
|
|
|
actionsDIV.append(actionMenu);
|
|
|
|
|
actionBar.append(actionsDIV);
|
|
|
|
|
$('#nodesTab').append(actionBar);
|
|
|
|
|
|
|
|
|
|
// Insert table
|
|
|
|
|
// Insert action bar and nodes datatable
|
|
|
|
|
$('#nodesTab').append(actionBar);
|
|
|
|
|
$('#nodesTab').append(dTable.object());
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create menu to save and undo table changes
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// Save changes
|
|
|
|
|
var saveLnk = $('<a>Save</a>');
|
|
|
|
|
saveLnk.bind('click', function(event){
|
|
|
|
@@ -650,36 +649,37 @@ function loadNodes(data) {
|
|
|
|
|
undoLnk.bind('click', function(event){
|
|
|
|
|
restoreNodeAttrs();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create menu to save and undo table changes
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// It will be hidden until a change is made
|
|
|
|
|
var tableActionsMenu = createMenu([saveLnk, undoLnk]).hide();
|
|
|
|
|
tableActionsMenu.css('margin-left', '100px');
|
|
|
|
|
actionsDIV.append(tableActionsMenu);
|
|
|
|
|
|
|
|
|
|
// Turn table into a datatable
|
|
|
|
|
var myDataTable = $('#nodesDataTable').dataTable({
|
|
|
|
|
var myDataTable = $('#nodesDatatable').dataTable({
|
|
|
|
|
'iDisplayLength': 50
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Change how datatable behaves
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// Do not sort ping, power, and comment column
|
|
|
|
|
var pingCol = $('#nodesDataTable thead tr th').eq(2);
|
|
|
|
|
var powerCol = $('#nodesDataTable thead tr th').eq(3);
|
|
|
|
|
var commentCol = $('#nodesDataTable thead tr th').eq(4);
|
|
|
|
|
var pingCol = $('#nodesDatatable thead tr th').eq(2);
|
|
|
|
|
var powerCol = $('#nodesDatatable thead tr th').eq(3);
|
|
|
|
|
var commentCol = $('#nodesDatatable thead tr th').eq(4);
|
|
|
|
|
pingCol.unbind('click');
|
|
|
|
|
powerCol.unbind('click');
|
|
|
|
|
commentCol.unbind('click');
|
|
|
|
|
|
|
|
|
|
// Create enough space for loader to be displayed
|
|
|
|
|
$('#nodesDataTable tbody tr td:nth-child(3)').css('min-width', '60px');
|
|
|
|
|
$('#nodesDataTable tbody tr td:nth-child(4)').css('min-width', '60px');
|
|
|
|
|
$('#nodesDatatable tbody tr td:nth-child(3)').css('min-width', '60px');
|
|
|
|
|
$('#nodesDatatable tbody tr td:nth-child(4)').css('min-width', '60px');
|
|
|
|
|
|
|
|
|
|
// Center align power, ping, and comments
|
|
|
|
|
$('#nodesDataTable tbody tr td:nth-child(3)').css('text-align', 'center');
|
|
|
|
|
$('#nodesDataTable tbody tr td:nth-child(4)').css('text-align', 'center');
|
|
|
|
|
$('#nodesDataTable tbody tr td:nth-child(5)').css('text-align', 'center');
|
|
|
|
|
$('#nodesDatatable tbody tr td:nth-child(3)').css('text-align', 'center');
|
|
|
|
|
$('#nodesDatatable tbody tr td:nth-child(4)').css('text-align', 'center');
|
|
|
|
|
$('#nodesDatatable tbody tr td:nth-child(5)').css('text-align', 'center');
|
|
|
|
|
|
|
|
|
|
// Instead refresh the node status and power status
|
|
|
|
|
pingCol.find('span a').bind('click', function(event) {
|
|
|
|
@@ -716,8 +716,9 @@ function loadNodes(data) {
|
|
|
|
|
/**
|
|
|
|
|
* Enable editable columns
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// Do not make 1st, 2nd, 3rd, 4th, or 5th column editable
|
|
|
|
|
$('#nodesDataTable td:not(td:nth-child(1),td:nth-child(2),td:nth-child(3),td:nth-child(4),td:nth-child(5))').editable(
|
|
|
|
|
$('#nodesDatatable td:not(td:nth-child(1),td:nth-child(2),td:nth-child(3),td:nth-child(4),td:nth-child(5))').editable(
|
|
|
|
|
function(value, settings) {
|
|
|
|
|
// Change text color to red
|
|
|
|
|
$(this).css('color', 'red');
|
|
|
|
@@ -726,7 +727,7 @@ function loadNodes(data) {
|
|
|
|
|
var colPos = this.cellIndex;
|
|
|
|
|
|
|
|
|
|
// Get row index
|
|
|
|
|
var dTable = $('#nodesDataTable').dataTable();
|
|
|
|
|
var dTable = $('#nodesDatatable').dataTable();
|
|
|
|
|
var rowPos = dTable.fnGetPosition(this.parentNode);
|
|
|
|
|
|
|
|
|
|
// Update datatable
|
|
|
|
@@ -743,8 +744,7 @@ function loadNodes(data) {
|
|
|
|
|
|
|
|
|
|
return (value);
|
|
|
|
|
}, {
|
|
|
|
|
onblur : 'submit', // Clicking outside editable area submits
|
|
|
|
|
// changes
|
|
|
|
|
onblur : 'submit', // Clicking outside editable area submits changes
|
|
|
|
|
type : 'textarea',
|
|
|
|
|
placeholder: ' ',
|
|
|
|
|
height : '30px' // The height of the text area
|
|
|
|
@@ -771,7 +771,7 @@ function loadNodes(data) {
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
// Hide status loader
|
|
|
|
|
var statCol = $('#nodesDataTable thead tr th').eq(2);
|
|
|
|
|
var statCol = $('#nodesDatatable thead tr th').eq(2);
|
|
|
|
|
statCol.find('img').hide();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -839,7 +839,7 @@ function loadNodes(data) {
|
|
|
|
|
*/
|
|
|
|
|
function loadPowerStatus(data) {
|
|
|
|
|
// Get datatable
|
|
|
|
|
var dTable = $('#nodesDataTable').dataTable();
|
|
|
|
|
var dTable = $('#nodesDatatable').dataTable();
|
|
|
|
|
var power = data.rsp;
|
|
|
|
|
var rowPos, node, status, args;
|
|
|
|
|
|
|
|
|
@@ -849,14 +849,14 @@ function loadPowerStatus(data) {
|
|
|
|
|
node = jQuery.trim(args[0]);
|
|
|
|
|
status = jQuery.trim(args[1]);
|
|
|
|
|
// Get the row containing the node
|
|
|
|
|
rowPos = findRowIndexUsingCol(node, '#nodesDataTable', 1);
|
|
|
|
|
rowPos = findRowIndexUsingCol(node, '#nodesDatatable', 1);
|
|
|
|
|
|
|
|
|
|
// Update the power status column
|
|
|
|
|
dTable.fnUpdate(status, rowPos, 3);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Hide power loader
|
|
|
|
|
var powerCol = $('#nodesDataTable thead tr th').eq(3);
|
|
|
|
|
var powerCol = $('#nodesDatatable thead tr th').eq(3);
|
|
|
|
|
powerCol.find('img').hide();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -869,7 +869,7 @@ function loadPowerStatus(data) {
|
|
|
|
|
*/
|
|
|
|
|
function refreshPowerStatus(group) {
|
|
|
|
|
// Show power loader
|
|
|
|
|
var powerCol = $('#nodesDataTable thead tr th').eq(3);
|
|
|
|
|
var powerCol = $('#nodesDatatable thead tr th').eq(3);
|
|
|
|
|
powerCol.find('img').show();
|
|
|
|
|
|
|
|
|
|
// Get the power status
|
|
|
|
@@ -896,25 +896,26 @@ function refreshPowerStatus(group) {
|
|
|
|
|
*/
|
|
|
|
|
function loadNodeStatus(data) {
|
|
|
|
|
// Get data table
|
|
|
|
|
var dTable = $('#nodesDataTable').dataTable();
|
|
|
|
|
var dTable = $('#nodesDatatable').dataTable();
|
|
|
|
|
var rsp = data.rsp;
|
|
|
|
|
var args, rowPos, node, status;
|
|
|
|
|
|
|
|
|
|
// Get all nodes within the datatable
|
|
|
|
|
for (var i in rsp) {
|
|
|
|
|
args = rsp[i].split(':');
|
|
|
|
|
|
|
|
|
|
// args[0] = node and args[1] = status
|
|
|
|
|
node = jQuery.trim(args[0]);
|
|
|
|
|
status = jQuery.trim(args[1]).replace('sshd', 'ping');
|
|
|
|
|
// Get the row containing the node
|
|
|
|
|
rowPos = findRowIndexUsingCol(node, '#nodesDataTable', 1);
|
|
|
|
|
rowPos = findRowIndexUsingCol(node, '#nodesDatatable', 1);
|
|
|
|
|
|
|
|
|
|
// Update the ping status column
|
|
|
|
|
dTable.fnUpdate(status, rowPos, 2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Hide status loader
|
|
|
|
|
var statCol = $('#nodesDataTable thead tr th').eq(2);
|
|
|
|
|
var statCol = $('#nodesDatatable thead tr th').eq(2);
|
|
|
|
|
statCol.find('img').hide();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -927,7 +928,7 @@ function loadNodeStatus(data) {
|
|
|
|
|
*/
|
|
|
|
|
function refreshNodeStatus(group) {
|
|
|
|
|
// Show ping loader
|
|
|
|
|
var pingCol = $('#nodesDataTable thead tr th').eq(2);
|
|
|
|
|
var pingCol = $('#nodesDatatable thead tr th').eq(2);
|
|
|
|
|
pingCol.find('img').show();
|
|
|
|
|
|
|
|
|
|
// Get the node status
|
|
|
|
@@ -1317,6 +1318,7 @@ function loadDeletePage(tgtNodes) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Create delete form
|
|
|
|
|
var deleteForm = $('<div class="form"></div>');
|
|
|
|
|
deleteForm.append(statBar);
|
|
|
|
|
deleteForm.append(statBar);
|
|
|
|
@@ -1351,6 +1353,9 @@ function loadDeletePage(tgtNodes) {
|
|
|
|
|
$(this).attr('disabled', 'true');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Cancel
|
|
|
|
|
*/
|
|
|
|
|
var cancelBtn = createButton('Cancel');
|
|
|
|
|
cancelBtn.bind('click', function(){
|
|
|
|
|
myTab.remove($(this).parent().parent().attr('id'));
|
|
|
|
@@ -1387,7 +1392,7 @@ function updateStatusBar(data) {
|
|
|
|
|
$('#' + statBarId).append(prg);
|
|
|
|
|
} else if (cmd == 'rmvm') {
|
|
|
|
|
// Get data table
|
|
|
|
|
var dTable = $('#nodesDataTable').dataTable();
|
|
|
|
|
var dTable = $('#nodesDatatable').dataTable();
|
|
|
|
|
var failed = false;
|
|
|
|
|
|
|
|
|
|
// Hide loader
|
|
|
|
@@ -1407,7 +1412,7 @@ function updateStatusBar(data) {
|
|
|
|
|
for (var i in tgts) {
|
|
|
|
|
if (!failed) {
|
|
|
|
|
// Get the row containing the node link and delete it
|
|
|
|
|
rowPos = findRowIndexUsingCol(tgts[i], '#nodesDataTable', 1);
|
|
|
|
|
rowPos = findRowIndexUsingCol(tgts[i], '#nodesDatatable', 1);
|
|
|
|
|
dTable.fnDeleteRow(rowPos);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -1452,7 +1457,7 @@ function updateStatusBar(data) {
|
|
|
|
|
*/
|
|
|
|
|
function updatePowerStatus(data) {
|
|
|
|
|
// Get datatable
|
|
|
|
|
var dTable = $('#nodesDataTable').dataTable();
|
|
|
|
|
var dTable = $('#nodesDatatable').dataTable();
|
|
|
|
|
|
|
|
|
|
// Get xCAT response
|
|
|
|
|
var rsp = data.rsp;
|
|
|
|
@@ -1465,7 +1470,7 @@ function updatePowerStatus(data) {
|
|
|
|
|
// If there is no error
|
|
|
|
|
if (rsp[i].indexOf("Error") < 0 || rsp[i].indexOf("Failed") < 0) {
|
|
|
|
|
// Get the row containing the node link
|
|
|
|
|
rowPos = findRowIndexUsingCol(node, '#nodesDataTable', 1);
|
|
|
|
|
rowPos = findRowIndexUsingCol(node, '#nodesDatatable', 1);
|
|
|
|
|
|
|
|
|
|
// If it was power on, then the data return would contain "Starting"
|
|
|
|
|
strPos = rsp[i].indexOf("Starting");
|
|
|
|
@@ -1492,8 +1497,8 @@ function updatePowerStatus(data) {
|
|
|
|
|
* @return Nothing
|
|
|
|
|
*/
|
|
|
|
|
function runScript(inst) {
|
|
|
|
|
// Get tab ID
|
|
|
|
|
var tabId = 'scriptTab' + inst;
|
|
|
|
|
|
|
|
|
|
// Get node name
|
|
|
|
|
var tgts = $('#' + tabId + ' input[name=target]').val();
|
|
|
|
|
// Get script
|
|
|
|
@@ -1559,7 +1564,6 @@ function getNodeAttr(node, attrName) {
|
|
|
|
|
|
|
|
|
|
// Get the attribute for the given node
|
|
|
|
|
var attr = row.find('td:eq(' + attrIndex + ')');
|
|
|
|
|
|
|
|
|
|
return attr.text();
|
|
|
|
|
} else {
|
|
|
|
|
return '';
|
|
|
|
@@ -1574,6 +1578,7 @@ function getNodeAttr(node, attrName) {
|
|
|
|
|
* @return Nothing
|
|
|
|
|
*/
|
|
|
|
|
function setOSImageCookies(data) {
|
|
|
|
|
// Get response
|
|
|
|
|
var rsp = data.rsp;
|
|
|
|
|
|
|
|
|
|
var imageNames = new Array;
|
|
|
|
@@ -1581,6 +1586,7 @@ function setOSImageCookies(data) {
|
|
|
|
|
var osVersHash = new Object();
|
|
|
|
|
var osArchsHash = new Object();
|
|
|
|
|
|
|
|
|
|
// Go through each index
|
|
|
|
|
for (var i = 1; i < rsp.length; i++) {
|
|
|
|
|
// Get the image name
|
|
|
|
|
var cols = rsp[i].split(',');
|
|
|
|
@@ -1588,6 +1594,7 @@ function setOSImageCookies(data) {
|
|
|
|
|
var profile = cols[1].replace(new RegExp('"', 'g'), '');
|
|
|
|
|
var osVer = cols[5].replace(new RegExp('"', 'g'), '');
|
|
|
|
|
var osArch = cols[7].replace(new RegExp('"', 'g'), '');
|
|
|
|
|
|
|
|
|
|
imageNames.push(osImage);
|
|
|
|
|
profilesHash[profile] = 1;
|
|
|
|
|
osVersHash[osVer] = 1;
|
|
|
|
@@ -1765,12 +1772,12 @@ function flagNode2Update(node) {
|
|
|
|
|
*/
|
|
|
|
|
function updateNodeAttrs(group) {
|
|
|
|
|
// Get the nodes datatable
|
|
|
|
|
var dTable = $('#nodesDataTable').dataTable();
|
|
|
|
|
var dTable = $('#nodesDatatable').dataTable();
|
|
|
|
|
// Get all nodes within the datatable
|
|
|
|
|
var rows = dTable.fnGetNodes();
|
|
|
|
|
|
|
|
|
|
// Get table headers
|
|
|
|
|
var headers = $('#nodesDataTable thead tr th');
|
|
|
|
|
var headers = $('#nodesDatatable thead tr th');
|
|
|
|
|
|
|
|
|
|
// Get list of nodes to update
|
|
|
|
|
var nodesList = $.cookie('nodes2update');
|
|
|
|
@@ -1786,7 +1793,7 @@ function updateNodeAttrs(group) {
|
|
|
|
|
args = '';
|
|
|
|
|
|
|
|
|
|
// Get the row containing the node link
|
|
|
|
|
rowPos = findRowIndexUsingCol(nodes[i], '#nodesDataTable', 1);
|
|
|
|
|
rowPos = findRowIndexUsingCol(nodes[i], '#nodesDatatable', 1);
|
|
|
|
|
$(rows[rowPos]).find('td').each(function (){
|
|
|
|
|
if ($(this).css('color') == 'red') {
|
|
|
|
|
// Change color back to normal
|
|
|
|
@@ -1843,9 +1850,9 @@ function restoreNodeAttrs() {
|
|
|
|
|
var nodes = nodesList.split(';');
|
|
|
|
|
|
|
|
|
|
// Get the nodes datatable
|
|
|
|
|
var dTable = $('#nodesDataTable').dataTable();
|
|
|
|
|
var dTable = $('#nodesDatatable').dataTable();
|
|
|
|
|
// Get table headers
|
|
|
|
|
var headers = $('#nodesDataTable thead tr th');
|
|
|
|
|
var headers = $('#nodesDatatable thead tr th');
|
|
|
|
|
// Get all nodes within the datatable
|
|
|
|
|
var rows = dTable.fnGetNodes();
|
|
|
|
|
|
|
|
|
@@ -1855,7 +1862,7 @@ function restoreNodeAttrs() {
|
|
|
|
|
for (var i in nodes) {
|
|
|
|
|
if (nodes[i]) {
|
|
|
|
|
// Get the row containing the node link
|
|
|
|
|
rowPos = findRowIndexUsingCol(nodes[i], '#nodesDataTable', 1);
|
|
|
|
|
rowPos = findRowIndexUsingCol(nodes[i], '#nodesDatatable', 1);
|
|
|
|
|
$(rows[rowPos]).find('td').each(function (){
|
|
|
|
|
if ($(this).css('color') == 'red') {
|
|
|
|
|
// Change color back to normal
|
|
|
|
@@ -1875,8 +1882,7 @@ function restoreNodeAttrs() {
|
|
|
|
|
} // End of if
|
|
|
|
|
} // End of for
|
|
|
|
|
|
|
|
|
|
// Clear cookie containing list of nodes where
|
|
|
|
|
// their attributes need to be updated
|
|
|
|
|
// Clear cookie containing list of nodes where their attributes need to be updated
|
|
|
|
|
$.cookie('nodes2update', '');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -2447,8 +2453,12 @@ function openSetPropsDialog() {
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Show results
|
|
|
|
|
*/
|
|
|
|
|
* Show results
|
|
|
|
|
*
|
|
|
|
|
* @param data
|
|
|
|
|
* Data returned from HTTP request
|
|
|
|
|
* @return Nothing
|
|
|
|
|
*/
|
|
|
|
|
success: function(data) {
|
|
|
|
|
// Get output
|
|
|
|
|
var out = data.rsp;
|
|
|
|
|