Corrected spelling and grammatical mistakes. Formatted code to have a consistent format. Change color scheme to match the rest of the UI, so every page has the same 'look and feel'. Added comments into code.

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@9329 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
phamt 2011-04-16 14:40:15 +00:00
parent 4acbac6541
commit 2c126bc49a
12 changed files with 749 additions and 824 deletions

View File

@ -685,21 +685,22 @@ table a:hover {
/*--------------- Discovery section ---------------*/
.discoverstep {
width: 200px;
width: 220px;
vertical-align: top;
float: left;
position: relative;
overflow: auto;
background-color: #CCCCFF;
padding: 10px 0px 0px 5px;
background-color: #A9D0F5;
padding: 5px 0px;
-moz-border-radius: .5em;
-webkit-border-radius: .5em;
border-radius: .5em;
}
.discoverstep span {
font: normal bold 13px/ 35px verdana, arial, helvetica, sans-serif;
margin: 0px 0px 10px 0px;
font: normal bold 12px/ 35px verdana, arial, helvetica, sans-serif;
padding: 5px;
margin: 0px 5px; /* Top right left bottom*/
}
.discovercontent {

View File

@ -1,13 +1,13 @@
/*associate the step name with step number*/
var steps = ['Discover Hardware',
'Cluster Patterns',
'Supernode Numbers',
'More Cluster Patterns',
'Power On Hardware',
'Discover Frames',
'Prepare Management Node',
'Update Definitions',
'Create Lpars',
var steps = ['Discover hardware',
'Cluster patterns',
'Supernode numbers',
'More cluster patterns',
'Power on hardware',
'Discover frames',
'Prepare management node',
'Update definitions',
'Create LPARs',
'Complete'];
/*associate the function with step number*/
@ -23,7 +23,7 @@ var initFunctions = [initSelectPlatform,
complete];
/*associate the function witch should be called before the page changed(when click next or back)
* if there is no need to call functions, use undefined.*/
*if there is no need to call functions, use undefined.*/
var nextFunctions = [getPlatform,
checkBasicPattern,
checkSupernode,
@ -67,7 +67,7 @@ function loadDiscoverPage(){
function updateDiscoverStep(){
$('#discoverStepDiv').empty();
var showString = '';
for(var index in steps){
for (var index in steps){
showString += '<span';
if (currentStep == index){
showString += ' style="background-color:yellow;"';
@ -101,7 +101,7 @@ function createDiscoverButtons(){
buttonDiv.append(backButton);
}
if(nextButton){
if (nextButton){
buttonDiv.append(nextButton);
}
@ -244,7 +244,7 @@ function expandNR(nodeRange){
var start = Number(parts[0]);
var end = Number(parts[1]);
var len = parts[0].length;
for(var i = parts[0]; i <= parts[1]; i++){
for (var i = parts[0]; i <= parts[1]; i++){
var ts = i.toString();
if (ts.length < len){
ts = "000000".substring(0, (len - ts.length)) + ts;
@ -261,25 +261,25 @@ function expandNR(nodeRange){
}
var begin = tempArray[0].match(/^(\D+)(\d+)$/);
if(2 > begin){
if (2 > begin){
retArray.push(nodeRange);
return retArray;
}
var end = tempArray[1].match(/^(\D+)(\d+)$/);
if(2 > end){
if (2 > end){
retArray.push(nodeRange);
return retArray;
}
if(begin[1] != end[1]){
if (begin[1] != end[1]){
retArray.push(nodeRange);
return retArray;
}
var prefix = begin[1];
var len = begin[2].length;
for(var i = begin[2]; i <= end[2]; i++){
for (var i = begin[2]; i <= end[2]; i++){
var ts = i.toString();
if (ts.length < len){
ts = "000000".substring(0, (len - ts.length)) + ts;
@ -302,7 +302,7 @@ function collectInputValue(){
$('#discoverContentDiv input[type=text]').each(function(){
var name = $(this).attr('name');
var value = $(this).attr('value');
if('' != value){
if ('' != value){
setDiscoverEnv(name, value);
}
else{
@ -514,7 +514,8 @@ function checkBasicPattern(operType){
//the input value check is finished.
if ('' != errMessage){
$('#patternDiv').prepend('<div class="ui-state-error ui-corner-all"><p>' + errMessage + '</p></div>');
var warnBar = createWarnBar(errMessage);
$('#patternDiv').prepend(warnBar);
return false;
}
@ -532,7 +533,8 @@ function checkBasicPattern(operType){
}
if ('' != errMessage){
$('#patternDiv').prepend('<div class="ui-state-error ui-corner-all"><p>' + errMessage + '</p></div>');
var warnBar = createWarnBar(errMessage);
$('#patternDiv').prepend(warnBar);
return false;
}
@ -614,8 +616,10 @@ function checkSupernode(operType){
}
}
var warnBar;
if (errString){
$('#supernodeDiv').prepend('<div class="ui-state-error ui-corner-all"><p>' + errString + '</p></div>');
warnBar = createWarnBar(errString);
$('#supernodeDiv').prepend(warnBar);
return false;
}
@ -623,7 +627,8 @@ function checkSupernode(operType){
if (eceNum != cecArray.length){
errString += 'The number of CEC calculated from supernode configure is ' + eceNum + ', but the number ' +
'calculated from CECs\' Name Range is ' + cecArray.length + '. Reconfigure the supernode please.';
$('#supernodeDiv').prepend('<div class="ui-state-error ui-corner-all"><p>' + errString + '</p></div>');
warnBar = createWarnBar(errString);
$('#supernodeDiv').prepend(warnBar);
return false;
}
@ -838,7 +843,8 @@ function checkSiteTable(operType){
return true;
}
$('#discoverContentDiv #siteDiv').prepend('<div class="ui-state-error ui-corner-all"><p>' + errMessage + '</p></div>');
var warnBar = createWarnBar(errMessage);
$('#discoverContentDiv #siteDiv').prepend(warnBar);
return false;
}
@ -931,6 +937,7 @@ function initDiscoverFrames(){
frameArray[i] + '</span></p>');
}
for (var i in mtmsArray){
$('#mtmsTd').append('<p><input name="mtmsradio" type="radio" onclick="createMap(this)"><span>' +
mtmsArray[i] + '</span></p>');
@ -1003,8 +1010,8 @@ function checkFrameMtms(operType){
var vpdFileCon = '';
$('#discoverShow .ui-state-error').remove();
if (0 < $('#discoverShow :radio').size()){
$('#discoverContentDiv #discoverShow').prepend('<div class="ui-state-error ui-corner-all"><p>' +
'Map all of the frame with mtms.</p></div>');
var warnBar = createWarnBar('Map all of the frame with mtms.');
$('#discoverContentDiv #discoverShow').prepend(warnBar);
return false;
}
@ -1284,12 +1291,12 @@ function lsslpWriteHMC(){
var mtmsArray = data.rsp[0].split(';');
var tempPar = '';
if(hmcArray.length != mtmsArray.length){
if (hmcArray.length != mtmsArray.length){
//error info
$('#hmcLine2 img').remove();
$('#discoverContentDiv div').append('<div class="ui-state-error ui-corner-all"><p>' +
'Error: Defined ' + hmcArray.length + ' hmcs, but discovered ' + mtmsArray.length +
' hmcs. Check the configuration please.</p></div>');
var warnBar = createWarnBar('Error: Defined ' + hmcArray.length + ' HMCs, but discovered ' + mtmsArray.length +
' HMCs. Please check the configuration.');
$('#discoverContentDiv div').prepend(warnBar);
createDiscoverButtons();
return;
}
@ -1423,13 +1430,13 @@ function ihCreateLpar(parentDiv){
var inputStr = getDiscoverEnv('partconf');
var testArray = reg.exec(inputStr);
if (!testArray || inputStr != testArray[0]){
$('#discoverContentDiv').prepend('<div class="ui-state-error ui-corner-all">' +
'<p>Input the correct configuration rule.</p></div>');
var warnBar = createWarnBar('Input the correct configuration rule.');
$('#discoverContentDiv').prepend(warnBar);
return;
}
var ruleArray = inputStr.split(',');
for(var i in ruleArray){
for (var i in ruleArray){
var octantCount = 0;
var octantArray = ruleArray[i].split(':');
var octantRule = Number(octantArray[1]);
@ -1450,10 +1457,10 @@ function ihCreateLpar(parentDiv){
lparCount += octantCount * octantRule;
}
if(getDiscoverEnv('lparNumPerCec') != lparCount){
$('#discoverContentDiv').prepend('<div class="ui-state-error ui-corner-all">' +
'<p>The Lpar number per CEC is ' + getDiscoverEnv('lparNumPerCec') + ', but the configuration ' +
'rule calculation is ' + lparCount + '.</p></div>');
if (getDiscoverEnv('lparNumPerCec') != lparCount){
var warnBar = createWarnBar('The LPAR number per CEC is ' + getDiscoverEnv('lparNumPerCec') + ', but the configuration ' +
'rule calculation is ' + lparCount + '.');
$('#discoverContentDiv').prepend(warnBar);
return;
}
@ -1508,13 +1515,15 @@ function updateCreateLparDia(cecname, cecNum){
$('#createLparDiv').remove();
});
}
function nonihCreateLpar(parentDiv){
var showStr = 'The machine type is not P7 IH, so you had to create lpars by command line manually.';
parentDiv.append(createInfoBar(showStr));
return;
}
/**
* Step 10: compelte
* Step 10: complete
*
* @param
*
@ -1528,5 +1537,4 @@ function complete(){
$('#discoverContentDiv').append(showStr);
createDiscoverButtons();
}

View File

@ -10,7 +10,7 @@ function loadUpdatePage() {
statusDiv.hide();
$('#updateTab').append(statusDiv);
$('#updateTab').append('<br>');
$('#updateTab').append('<br/>');
$('#updateTab').append(repositoryDiv);
$('#updateTab').append(rpmDiv);
@ -52,7 +52,7 @@ function showRepository(data) {
var stableRepository = "";
var show = "";
// get the corresponding repository by OS Type
// Get the corresponding repository by OS Type
if ("aix" == data.rsp) {
develRepository = "http://xcat.sourceforge.net/aix/devel/xcat-core/";
stableRepository = "http://xcat.sourceforge.net/aix/xcat-core/";
@ -63,28 +63,30 @@ function showRepository(data) {
var repoList = $('<ol></ol>');
// display the Devel Repository, remember user's last selection
// Display the Devel Repository, remember user's last selection
show = show + "<li><input type='radio' ";
if (1 == $.cookie('xcatrepository')) {
show = show + "checked='true'";
}
show = show + "name='reporadio' value='" + develRepository + "'>";
show = show + develRepository + "(<strong>Devel</strong>)</li>";
show = show + "<strong>Development</strong>: " + develRepository + "</li>";
repoList.append(show);
// display the Stable Repository, remember user's last selection
// Display the Stable Repository, remember user's last selection
show = "<li><input type='radio' ";
if (2 == $.cookie('xcatrepository')) {
show = show + "checked='true'";
}
show = show + "name='reporadio' value='" + stableRepository + "'>";
show = show + stableRepository + "(<strong>Stable</strong>)</li>";
show = show + "name='reporadio' value='" + stableRepository + "' checked='true'>";
show = show + "<strong>Stable</strong>: " + stableRepository + "</li>";
repoList.append(show);
// display the Input Repository, remember user's last selection
if (($.cookie('xcatrepository')) && (1 != $.cookie('xcatrepository')) && (2 != $.cookie('xcatrepository'))) {
// Display the Input Repository, remember user's last selection
if (($.cookie('xcatrepository')) && (1 != $.cookie('xcatrepository'))
&& (2 != $.cookie('xcatrepository'))) {
show = "<li><input type='radio' checked='true' name='reporadio' value=''>Other: ";
show += "<input style='width: 500px' id='repositoryaddr' value='" + $.cookie('xcatrepository') + "'</li>";
show += "<input style='width: 500px' id='repositoryaddr' value='"
+ $.cookie('xcatrepository') + "'</li>";
} else {
show = "<li><input type='radio' name='reporadio' value=''>Other: ";
show += "<input style='width: 500px' id='repositoryaddr' value=''</li>";
@ -103,7 +105,8 @@ function showRepository(data) {
function showRpmInfo(data) {
var rpms = null;
var show = "";
var rpmNames = new Array("xCAT-client", "perl-xCAT", "xCAT-server", "xCAT", "xCAT-rmc", "xCAT-UI");
var rpmNames = new Array("xCAT-client", "perl-xCAT", "xCAT-server", "xCAT", "xCAT-rmc",
"xCAT-UI");
var temp = 0;
if (null == data.rsp) {
$('#rpm fieldset').append("Error getting RPMs!");
@ -111,13 +114,13 @@ function showRpmInfo(data) {
}
rpms = data.rsp.split(/\n/);
// no rpm installed, return
// No rpm installed, return
if (1 > rpms.length) {
$('#rpm fieldset').append("No RPMs installed!");
return;
}
// clear the old data
// Clear the old data
$('#rpm fieldset').children().remove();
$('#rpm fieldset').append("<legend>xCAT RPMs</legend>");
show = "<table id=rpmtable >";
@ -126,27 +129,28 @@ function showRpmInfo(data) {
show += "<th><b>Package Name</b></th><th><b>Version</b></th>";
show += "</tr></thead>";
for (temp = 0; temp < rpms.length; temp++) {
// empty line continue
// Empty line continue
if ("" == rpms[temp]) {
continue;
}
// the rpm is not installed, continue
// The RPM is not installed, continue
if (-1 != rpms[temp].indexOf("not")) {
continue;
}
// show the version in table
// Show the version in table
show += "<tr>";
show += "<td><input type='checkbox' value='" + rpmNames[temp] + "'></td>";
show += "<td>" + rpmNames[temp] + "</td><td>" + rpms[temp].substr(rpmNames[temp].length + 1) + "</td>";
show += "<td>" + rpmNames[temp] + "</td><td>"
+ rpms[temp].substr(rpmNames[temp].length + 1) + "</td>";
show += "</tr>";
}
show += "</table>";
show += "<br\>";
$('#rpm fieldset').append(show);
// add the update button
// Add the update button
var updateButton = createButton('Update');
$('#rpm fieldset').append(updateButton);
updateButton.bind('click', function() {
@ -157,6 +161,7 @@ function showRpmInfo(data) {
/**
* Select all checkboxes
*
* @param Nothing
* @return Nothing
*/
function updateSelectAll() {
@ -182,7 +187,7 @@ function updateRpm() {
rpmPath = "";
}
// select other and we should use the value in the input
// Select other and we should use the value in the input
if ("" == rpmPath) {
// user input the repo, and we must stroe it in the cookie
rpmPath = $('#repositoryaddr').val();
@ -219,7 +224,7 @@ function updateRpm() {
}
if (!rpmPath) {
errMsg += "Please select or input a repository!";
errMsg += "Please select or specify a repository!";
}
if (!rpms || !rpmPath) {
@ -229,7 +234,7 @@ function updateRpm() {
return;
}
// remember users' choice and input
// Remember users' choice and input
$.cookie('xcatrepository', rpmPathType, {
path : '/xcat',
expires : 10
@ -241,7 +246,7 @@ function updateRpm() {
$('#update').append("<img id='loadingpic' src='images/loader.gif'>");
$('#rpm button').attr('disabled', 'true');
// send the update command to server
// Send the update command to server
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
@ -252,7 +257,7 @@ function updateRpm() {
msg : ''
},
success : ShowUpdateResult
success : showUpdateResult
});
}
@ -263,7 +268,7 @@ function updateRpm() {
* Data returned from HTTP request
* @return Nothing
*/
function ShowUpdateResult(data) {
function showUpdateResult(data) {
var temp = 0;
$('#loadingpic').remove();
@ -271,16 +276,16 @@ function ShowUpdateResult(data) {
if (0 < resArray.length) {
// Show last lines
if (('' == resArray[resArray.length - 1]) && (resArray.length > 1)) {
$('#update').append(resArray[resArray.length - 2]);
$('#update').append('<pre>' + resArray[resArray.length - 2] + '</pre>');
} else {
$('#update').append(resArray[resArray.length - 1]);
$('#update').append('<pre>' + resArray[resArray.length - 1] + '</pre>');
}
// Create link to show details
$('#update').append('<br/><a>Show details</a>');
$('#update a').css({
'color': '#0000FF',
'cursor': 'pointer'
$('#update a').css( {
'color' : '#0000FF',
'cursor' : 'pointer'
}).bind('click', function() {
// Toggle details and change text
$('#resDetail').toggle();
@ -291,15 +296,15 @@ function ShowUpdateResult(data) {
}
});
var resDetail = $('<div id="resDetail"></div>');
var resDetail = $('<pre id="resDetail"></pre>');
resDetail.hide();
$('#update').append(resDetail);
for (temp = 0; temp < resArray.length; temp++) {
resDetail.append(resArray[temp] + "<br>");
resDetail.append(resArray[temp] + '<br/>');
}
}
// update the rpm info
// Update the rpm info
$.ajax( {
url : 'lib/systemcmd.php',
dataType : 'json',

View File

@ -40,7 +40,7 @@ hmcPlugin.prototype.loadInventory = function(data) {
// Loop through each line
var fieldSet, legend, oList, item;
for ( var k = 0; k < inv.length; k++) {
for (var k = 0; k < inv.length; k++) {
// Remove node name in front
var str = inv[k].replace(node + ': ', '');
str = jQuery.trim(str);
@ -106,7 +106,7 @@ hmcPlugin.prototype.loadClonePage = function(node) {
// Add clone tab
tab.add(newTabId, 'Clone', cloneForm, true);
}
tab.select(newTabId);
};
@ -119,8 +119,8 @@ hmcPlugin.prototype.loadClonePage = function(node) {
*/
hmcPlugin.prototype.loadProvisionPage = function(tabId) {
// Get OS image names
if (!$.cookie('imagenames')){
$.ajax( {
if (!$.cookie('imagenames')) {
$.ajax({
url : 'lib/cmd.php',
dataType : 'json',
data : {
@ -135,7 +135,7 @@ hmcPlugin.prototype.loadProvisionPage = function(tabId) {
}
// Get groups
if (!$.cookie('groups')){
if (!$.cookie('groups')) {
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
@ -174,17 +174,9 @@ hmcPlugin.prototype.loadProvisionPage = function(tabId) {
// Create provision type drop down
provForm.append('<div><label>Provision:</label><select><option value="existing">Existing node</option></select></div>');
/**
* Create provision new node division
*/
// You should copy whatever is in this function, put it here, and customize it
//var provNew = createProvisionNew('hmc', inst);
//provForm.append(provNew);
/**
* Create provision existing node division
*/
// You should copy whatever is in this function, put it here, and customize it
provForm.append(createHmcProvisionExisting(inst));
var hmcProvisionBtn = createButton('Provision');
@ -192,48 +184,48 @@ hmcPlugin.prototype.loadProvisionPage = function(tabId) {
// Remove any warning messages
var tempTab = $(this).parent().parent();
tempTab.find('.ui-state-error').remove();
var ready = true;
var errMsg = '';
var tempNodes = '';
// Get nodes that were checked
tempNodes = getCheckedByObj(tempTab.find('table'));
if ('' == tempNodes){
if ('' == tempNodes) {
errMsg += 'You need to select a node.<br>';
ready = false;
}
else{
} else {
tempNodes = tempNodes.substr(0, tempNodes.length - 1);
}
// If all inputs are valid, ready to provision
if (ready) {
if (ready) {
// Disable provision button
$(this).attr('disabled', 'true');
// Show loader
tempTab.find('#statBar').show();
tempTab.find('#loader').show();
// Disable all selects, input and checkbox
tempTab.find('input').attr('disabled', 'disabled');
// Get operating system image
var os = tempTab.find('#osname').val();
var arch = tempTab.find('#arch').val();
var profile = tempTab.find('#pro').val();
/**
* (1) Set operating system
*/
$.ajax( {
$.ajax({
url : 'lib/cmd.php',
dataType : 'json',
data : {
cmd : 'nodeadd',
tgt : '',
args : tempNodes + ';noderes.netboot=yaboot;nodetype.os=' + os + ';nodetype.arch=' + arch + ';nodetype.profile=' + profile,
args : tempNodes + ';noderes.netboot=yaboot;nodetype.os=' + os
+ ';nodetype.arch=' + arch + ';nodetype.profile=' + profile,
msg : 'cmd=nodeadd;out=' + tempTab.attr('id')
},
@ -246,22 +238,22 @@ hmcPlugin.prototype.loadProvisionPage = function(tabId) {
}
});
provForm.append(hmcProvisionBtn);
// update the node table on group select
provForm.find('#groupname').bind('change', function(){
// Update the node table on group select
provForm.find('#groupname').bind('change', function() {
var groupName = $(this).val();
var nodeArea = $('#hmcSelectNodesTable' + inst);
nodeArea.empty();
if (!groupName){
if (!groupName) {
nodeArea.html('Select a group to view its nodes');
return;
}
nodeArea.append(createLoader());
createNodesArea(groupName, 'hmcSelectNodesTable'+ inst);
createNodesArea(groupName, 'hmcSelectNodesTable' + inst);
});
// Toggle provision new/existing on select
};
/**
* Load resources
*
@ -272,14 +264,14 @@ hmcPlugin.prototype.loadResources = function() {
var tabId = 'hmcResourceTab';
// Remove loader
$('#' + tabId).find('img').remove();
// Create info bar
var infoBar = createInfoBar('Under construction');
// Create resource form
var resrcForm = $('<div class="form"></div>');
resrcForm.append(infoBar);
$('#' + tabId).append(resrcForm);
};
@ -295,95 +287,92 @@ hmcPlugin.prototype.addNode = function() {
/**
* Create hmc provision existing form
*
* @return: form content
* @return: Form content
*/
function createHmcProvisionExisting(inst){
//create the group area.
function createHmcProvisionExisting(inst) {
// Create the group area
var strGroup = '<div><label>Group:</label>';
var groupNames = $.cookie('groups');
if (groupNames){
if (groupNames) {
strGroup += '<select id="groupname"><option></option>';
var temp = groupNames.split(',');
for (var i in temp){
for (var i in temp) {
strGroup += '<option value="' + temp[i] + '">' + temp[i] + '</option>';
}
strGroup += '</select>';
}
else{
} else {
strGroup += '<input type="text" id="groupname">';
}
strGroup += '</div>';
//create nodes area
var strNodes = '<div><label>Nodes:</label><div id="hmcSelectNodesTable' + inst +
'" style="display:inline-block;width:700px;overflow-y:auto;">Select a group to view its nodes</div></div>';
//create boot method
var strBoot = '<div><label>Boot Method:</label><select id="boot">' +
'<option value="install">install</option>' +
'<option value="netboot">netboot</option>' +
'<option value="statelite">statelite</option></select></div>';
// Create nodes area
var strNodes = '<div><label>Nodes:</label><div id="hmcSelectNodesTable'
+ inst
+ '" style="display:inline-block;width:700px;overflow-y:auto;">Select a group to view its nodes</div></div>';
// Create boot method
var strBoot = '<div><label>Boot Method:</label><select id="boot">'
+ '<option value="install">install</option>'
+ '<option value="netboot">netboot</option>'
+ '<option value="statelite">statelite</option></select></div>';
// Create operating system
var strOs = '<div><label>Operating system:</label>';
var osName = $.cookie('osvers');
if (osName){
if (osName) {
strOs += '<select id="osname">';
var temp = osName.split(',');
for (var i in temp){
for (var i in temp) {
strOs += '<option value="' + temp[i] + '">' + temp[i] + '</option>';
}
strOs += '</select>';
}
else{
} else {
strOs += '<input type="text" id="osname">';
}
strOs += '</div>';
//create architecture
// Create architecture
var strArch = '<div><label>Architecture:</label>';
var archName = $.cookie('osarchs');
if ('' != archName){
if ('' != archName) {
strArch += '<select id="arch">';
var temp = archName.split(',');
for (var i in temp){
for (var i in temp) {
strArch += '<option value="' + temp[i] + '">' + temp[i] + '</option>';
}
strArch += '</select>';
}
else{
} else {
strArch += '<input type="text" id="arch">';
}
strArch += '</div>';
//create profile
// Create profile
var strPro = '<div><label>Profile:</label>';
var proName = $.cookie('profiles');
if ('' != proName){
if ('' != proName) {
strPro += '<select id="pro">';
var temp = proName.split(',');
for (var i in temp){
for (var i in temp) {
strPro += '<option value="' + temp[i] + '">' + temp[i] + '</option>';
}
strPro += '</select>';
}
else{
} else {
strPro += '<input type="text" id="pro">';
}
strPro += '</div>';
var strRet = strGroup + strNodes + strBoot + strOs + strArch + strPro;
return strRet;
}
/**
* refresh the nodes area base on group selected
* Refresh the nodes area base on group selected
*
* @return Nothing
*/
function createNodesArea(groupName, areaId){
function createNodesArea(groupName, areaId) {
// Get group nodes
$.ajax( {
$.ajax({
url : 'lib/cmd.php',
dataType : 'json',
data : {
@ -406,19 +395,19 @@ function createNodesArea(groupName, areaId){
var index;
var showStr = '<table><thead><tr><th><input type="checkbox" onclick="selectAllCheckbox(event, $(this))"></th>';
showStr += '<th>Node</th></tr></thead><tbody>';
for (index in nodes){
for (index in nodes) {
var node = nodes[index][0];
if ('' == node){
if ('' == node) {
continue;
}
showStr += '<tr><td><input type="checkbox" name="' + node + '"/></td><td>' + node + '</td></tr>';
showStr += '<tr><td><input type="checkbox" name="' + node + '"/></td><td>'
+ node + '</td></tr>';
}
showStr += '</tbody></table>';
areaObj.empty().append(showStr);
if (index > 10){
if (index > 10) {
areaObj.css('height', '300px');
}
else{
} else {
areaObj.css('height', 'auto');
}
} // End of function(data)
@ -426,11 +415,11 @@ function createNodesArea(groupName, areaId){
}
/**
* provision for existing system p node
* Provision for existing system p node
*
* @return Nothing
*/
function pProvisionExisting(data){
function pProvisionExisting(data) {
// Get ajax response
var rsp = data.rsp;
var args = data.msg.split(';');
@ -439,21 +428,22 @@ function pProvisionExisting(data){
var cmd = args[0].replace('cmd=', '');
// Get provision tab instance
var tabId = args[1].replace('out=', '');
//get tab obj
// Get tab obj
var tempTab = $('#' + tabId);
/**
* (2) Prepare node for boot
*/
if (cmd == 'nodeadd') {
// Get operating system
var bootMethod = tempTab.find('#boot').val();
// Get nodes that were checked
var tgts = getCheckedByObj(tempTab.find('table'));
// Prepare node for boot
$.ajax( {
$.ajax({
url : 'lib/cmd.php',
dataType : 'json',
data : {
@ -465,14 +455,14 @@ function pProvisionExisting(data){
success : pProvisionExisting
});
}
}
/**
* (3) Boot node from network
*/
else if (cmd == 'nodeset') {
// Write ajax response to status bar
var prg = writeRsp(rsp, '');
var prg = writeRsp(rsp, '');
tempTab.find('#statBar').append(prg);
// If there was an error, do not continue
@ -480,12 +470,12 @@ function pProvisionExisting(data){
tempTab.find('#loader').remove();
return;
}
// Get nodes that were checked
var tgts = getCheckedByObj(tempTab.find('table'));
// Boot node from network
$.ajax( {
$.ajax({
url : 'lib/cmd.php',
dataType : 'json',
data : {
@ -497,36 +487,34 @@ function pProvisionExisting(data){
success : pProvisionExisting
});
}
}
/**
* (4) Done
*/
else if (cmd == 'rnetboot') {
// Write ajax response to status bar
var prg = writeRsp(rsp, '');
var prg = writeRsp(rsp, '');
tempTab.find('#statBar').append(prg);
tempTab.find('#loader').remove();
}
}
/**
* get all select elements' name in the obj,
* Get all select elements' name in the obj
*
* @return all nodes name, seperate by ','
* @return All nodes name, seperate by ','
*/
function getCheckedByObj(obj){
function getCheckedByObj(obj) {
var tempStr = '';
// Get nodes that were checked
obj.find('input:checked').each(function(){
if($(this).attr('name')){
obj.find('input:checked').each(function() {
if ($(this).attr('name')) {
tempStr += $(this).attr('name') + ',';
}
});
if ('' != tempStr){
if ('' != tempStr) {
tempStr = tempStr.substr(0, tempStr.length - 1);
}

View File

@ -153,14 +153,14 @@ function xcatrmcRpmCheck(){
var needHelp = false;
$('#rmcMonStatus').empty();
//check the xcat-rmc
if(-1 != softInstallStatus[0].indexOf("not")){
if (-1 != softInstallStatus[0].indexOf("not")){
needHelp = true;
$('#rmcMonStatus').append(
'Please install the <a href="http://xcat.sourceforge.net/#download" target="install_window">xCAT-rmc</a> first.<br/>');
}
//check the rrdtool
if(-1 != softInstallStatus[1].indexOf("not")){
if (-1 != softInstallStatus[1].indexOf("not")){
needHelp = true;
$('#rmcMonStatus').append(
'Please install the <a href="http://oss.oetiker.ch/rrdtool/download.en.html" target="install_window">RRD-tool</a> first.<br/>');
@ -357,8 +357,8 @@ function showDetail(){
$('#rmcmonDetail').append(detailFilter);
select = $('<select id="metric"></select>');
for(var node in globalNodesDetail){
for(var attr in globalNodesDetail[node]){
for (var node in globalNodesDetail){
for (var attr in globalNodesDetail[node]){
select.append('<option value="' + attr + '">' + attr + '</option>');
}
break;
@ -468,7 +468,6 @@ function showNode(nodeName){
$('#rmcmonDetail').show();
});
$('#nodeDetail').append(nodeTable);
for(var attr in globalNodesDetail[nodeName]){
@ -497,18 +496,18 @@ function showNode(nodeName){
function filterSort(attrName, sortType, retArray){
var tempObj = {};
for(var node in globalNodesDetail){
for (var node in globalNodesDetail){
tempObj['name'] = node;
tempObj['value'] = globalNodesDetail[node][attrName];
retArray.push(tempObj);
}
//by node name
if(3 == sortType){
if (3 == sortType){
retArray.sort(sortName);
}
//desend
else if(2 == sortType){
else if (2 == sortType){
retArray.sort(sortDes);
}
//ascend
@ -520,7 +519,7 @@ function filterSort(attrName, sortType, retArray){
}
function sortAsc(x, y){
if(x['value'] > y['value']){
if (x['value'] > y['value']){
return 1;
}
else{
@ -529,7 +528,7 @@ function sortAsc(x, y){
}
function sortDes(x, y){
if(x['value'] > y['value']){
if (x['value'] > y['value']){
return -1;
}
else{
@ -538,7 +537,7 @@ function sortDes(x, y){
}
function sortName(x, y){
if(x['name'] > y['name']){
if (x['name'] > y['name']){
return 1;
}
else{
@ -560,7 +559,7 @@ function showConfigureDia(){
for (var i in wholeAttrArray){
var name = wholeAttrArray[i];
var tempString = '<tr>';
if(selectedAttrHash[name]){
if (selectedAttrHash[name]){
tempString += '<td><input type="checkbox" name="' + name + '" checked="checked"></td>';
}
else{
@ -599,7 +598,7 @@ function showConfigureDia(){
//collect all attibutes' name
var str = '';
$('#rmcAttrTable input:checked').each(function(){
if('' == str){
if ('' == str){
str += $(this).attr('name');
}
else{
@ -631,7 +630,7 @@ function showConfigureDia(){
* load the rmc event tab.
*
* @param
*
* @return
*
*/
@ -661,7 +660,6 @@ function loadRmcEvent(){
/**
* get all conditions
*
*
* @return
*
*/
@ -678,7 +676,7 @@ function getConditions(){
msg : ''
},
success : function(data){
success : function (data){
$('#rmcEventStatus').empty();
$('#rmcEventButtons').show();
globalCondition = data.rsp[0];
@ -693,7 +691,6 @@ function getConditions(){
/**
* get all response
*
*
* @return
*
*/
@ -704,6 +701,7 @@ function getResponse(){
tempFlag = true;
break;
}
if (!tempFlag){
$.ajax({
url : 'lib/cmd.php',
@ -717,7 +715,7 @@ function getResponse(){
success : function(data){
var resps = data.rsp[0].split(';');
for(var i in resps){
for (var i in resps){
var name = resps[i];
name = name.substr(1, (name.length - 2));
globalResponse[name] = 1;
@ -755,7 +753,7 @@ function showEventLog(data){
var eventTable = new DataTable('lsEventTable');
eventTable.init(['Time', 'Type', 'Content']);
for(var i in data.rsp){
for (var i in data.rsp){
var row = data.rsp[i].split(';');
eventTable.add(row);
}
@ -840,7 +838,7 @@ function mkCondRespDia(){
msg : ''
},
success : function(data){
success : function (data){
var tempHash = new Object();
var oldSelectedResp = '';
var showStr = '';
@ -853,8 +851,8 @@ function mkCondRespDia(){
}
}
for(var name in globalResponse){
if(tempHash[name]){
for (var name in globalResponse){
if (tempHash[name]){
showStr += '<input type="checkbox" checked="checked" value="' + name + '">' + name + '<br/>';
oldSelectedResp += ';' + name;
}
@ -905,7 +903,7 @@ function mkCondRespDia(){
});
for (var i in newResp){
if(oldResp[i]){
if (oldResp[i]){
delete oldResp[i];
delete newResp[i];
}
@ -915,7 +913,7 @@ function mkCondRespDia(){
for (var i in oldResp){
oldString += ',"' + i + '"';
}
if('' != oldString){
if ('' != oldString){
oldString = oldString.substr(1);
}
@ -927,7 +925,7 @@ function mkCondRespDia(){
newString = newString.substr(1);
}
if(('' != oldString) || ('' != newString)){
if (('' != oldString) || ('' != newString)){
$('#rmcEventStatus').empty().append('Create/Remove associations').append(createLoader());
$.ajax({
url : 'lib/cmd.php',
@ -1298,7 +1296,7 @@ function createAssociationTable(cond){
var showStr = '<center><table><thead><tr><th>Condition Name</th><th>Status</th><th>Start/Stop</th></tr></thead>';
showStr += '<tbody>';
for(var i in conditions){
for (var i in conditions){
name = conditions[i];
tempLength = name.length;
tempStatus = name.substr(tempLength - 3);

View File

@ -1,36 +1,32 @@
/*
* Globle variable
*
*/
/**
* global variable
*/
var XcatmonTableId="XcatMonsettingTable";
var dataTables=new Object();
/*
* set datatable
*
*/
/**
* set datatable
*/
function setDatatable(id,obj){
dataTables[id]=obj;
}
/*
* get datatable from the given id
*
*
*/
/**
* get datatable from the given id
*/
function getDatatable(id){
return dataTables[id];
}
/*
*
*
*/
/**
* load xCAT monitor
*/
function loadXcatMon(){
//find the xcat mon tab
var xcatMonTab = $('#xcatmon');
xcatMonTab.append("<div id= xcatmonTable></div>");
// show the content of the table monsetting
//show the content of the table monsetting
$.ajax({
url:'lib/cmd.php',
dataType: 'json',
@ -43,17 +39,16 @@ function loadXcatMon(){
success: loadXcatMonSetting
});
}
function loadXcatMonSetting(data){
var apps;// contain the xcatmon apps config
function loadXcatMonSetting(data){
var apps; //contain the xcatmon apps config
var rsp=data.rsp;
var apps_flag=0;// Is the apps is stored?
var ping; // contain the xcatmon ping-interval setting
var apps_flag=0; //is the apps is stored?
var ping; //contain the xcatmon ping-interval setting
var ping_flag=0;
//create a infoBar
var infoBar=createInfoBar('Click on a cell to edit,Click outside the table to write to the cell.<br>Once you finish the xCATmon config.click on Apply.');
var infoBar=createInfoBar('Click on a cell to edit. Click outside the table to write to the cell.<br>Once you are finished configuring the xCAT monitor, click on Apply.');
$('#xcatmonTable').append(infoBar);
//create xcatmonTable
@ -62,7 +57,7 @@ function loadXcatMonSetting(data){
//create Datatable
var dTable;
// create the xcatmonTable header
//create the xcatmonTable header
var header=rsp[0].split(",");
header.splice(3,2);
header.splice(0,1);
@ -71,47 +66,44 @@ function loadXcatMonSetting(data){
header.push('<input type="checkbox" onclick="selectAllCheckbox(event,$(this))">');
header.unshift('');
XcatmonTable.init(header);//create the table header
XcatmonTable.init(header); //create the table header
// create container of original table contents
//create container of original table contents
var origCont= new Array();
origCont[0]=header;// table header
origCont[0]=header; //table header
//create contariner for new contents use for update the monsetting table
var newCont =new Object();
newCont[0]=rsp[0].split(",");// table header
newCont[0]=rsp[0].split(","); // table header
// create container for other monsetting lines not xcatmon
var otherCont =new Array();
$('#xcatmonTable').append(XcatmonTable.object());// add table object
var m=1;// the count for origCont
$('#xcatmonTable').append(XcatmonTable.object()); //add table object
var m=1; //the count for origCont
var n=0;
for( var i=1;i<rsp.length;i++){ // get the apps and the ping-interval configure
var pos=rsp[i].indexOf("xcatmon");// only check the xcatmon setting
if(pos ==1){
// get the useful info and add it to the page.
if((rsp[i].indexOf("apps")== -1 )&&(rsp[i].indexOf("ping")== -1)){
for (var i=1;i<rsp.length;i++){ //get the apps and the ping-interval configure
var pos=rsp[i].indexOf("xcatmon"); //only check the xcatmon setting
if (pos ==1){
//get the useful info and add it to the page.
if ((rsp[i].indexOf("apps")== -1 )&&(rsp[i].indexOf("ping")== -1)){
var cols=rsp[i].split(',');
// pair the semicolon of the content
for(var j=0;j<cols.length;j++){
if(cols[j].count('"')%2==1){
while(cols[j].count('"')%2==1){
//pair the semicolon of the content
for (var j=0;j<cols.length;j++){
if (cols[j].count('"')%2==1){
while (cols[j].count('"')%2==1){
cols[j]=cols[j]+","+cols[j+1];
cols.splice(j+1,1);
}
}
cols[j]=cols[j].replace(new RegExp('"','g'),'');
cols[j]=cols[j].replace(new RegExp('"','g'),'');
}
// remove the commend disable
//remove the commend disable
cols.splice(3,2);
// remove the xcatmon
//remove the xcatmon
cols.splice(0,1);
cols.push('<input type="checkbox" name="'+cols[0]+'" title="Click this checkbox will add/remove the app from the configure apps value." />');
@ -120,56 +112,49 @@ function loadXcatMonSetting(data){
XcatmonTable.add(cols);
origCont[m++]=cols;
}else{
if(!apps_flag){//check the apps setting
if(rsp[i].indexOf("apps") > -1){// check for is apps or not
apps=rsp[i].split(',');//
} else{
if (!apps_flag){ //check the apps setting
if (rsp[i].indexOf("apps") > -1){ //check for is apps or not
apps=rsp[i].split(',');
for(var j=0;j<apps.length;j++){// pair the semicolon
if(apps[j].count('"')%2==1){
while(apps[j].count('"')%2==1){
apps[j]=apps[j]+","+apps[j+1];
apps.splice(j+1,1);
for (var j=0;j<apps.length;j++){ //pair the semicolon
if (apps[j].count('"')%2==1){
while (apps[j].count('"')%2==1){
apps[j]=apps[j]+","+apps[j+1];
apps.splice(j+1,1);
}
}
apps[j]=apps[j].replace(new RegExp('"','g'),'');
}
apps_flag=1;// set the flag to 1 to avoid this subroute
apps_flag=1; //set the flag to 1 to avoid this subroute
}
}
// get into the ping setting subroute
if(!ping_flag){
//get into the ping setting subroute
if (!ping_flag){
//check the ping-interval config
if(rsp[i].indexOf("ping-interval")> -1){
if (rsp[i].indexOf("ping-interval")> -1){
ping=rsp[i].split(',');
// pair the semicolon
for(var j=0;j<ping.length;j++){
if(ping[j].count('"')%2 == 1){
while(ping[j].count('"')%2 == 1){
//pair the semicolon
for (var j=0;j<ping.length;j++){
if (ping[j].count('"')%2 == 1){
while (ping[j].count('"')%2 == 1){
ping[j]=ping[j]+","+ping[j+1];
ping.splice(j+1,1);
}
}
ping[j]=ping[j].replace((new RegExp('"','g')),'');
}
ping_flag=1;
}
}
}
}else if(pos !=1 ){
// the other monitor in the monsetting table
} else if(pos !=1 ){
//the other monitor in the monsetting table
var otherCols=rsp[i].split(',');
for(var k=0;k<otherCols.length;k++){
if(otherCols[k].count('"')%2==1){
while(otherCols[k].count('"')%2==1){
for (var k=0;k<otherCols.length;k++){
if (otherCols[k].count('"')%2==1){
while (otherCols[k].count('"')%2==1){
otherCols[k]=otherCols[k]+","+otherCols[k+1];
otherCols.splice(k+1,1);
}
@ -181,8 +166,8 @@ function loadXcatMonSetting(data){
}
}
// if the apps is not in the monsetting table.Then create the default apps row.
// When saving the changes,add the row to the table.
//if the apps is not in the monsetting table.Then create the default apps row.
//when saving the changes,add the row to the table.
if(!apps_flag){
apps=rsp[0].split(',');
apps[0]="xcatmon";
@ -190,31 +175,29 @@ function loadXcatMonSetting(data){
apps[2]="";
apps[3]="";
apps[4]="";
}
}
// If the ping-interval is not in the monsetting table.Then create the default ping-interval row.
//When saving the changes,add the row to the table.
//if the ping-interval is not in the monsetting table.Then create the default ping-interval row.
//when saving the changes,add the row to the table.
if(!ping_flag){
ping=rsp[0].split(',');
ping[0]="xcatmon";
ping[1]="ping-interval";
// the default ping-interval setting is 5
//the default ping-interval setting is 5
ping[2]="5";
ping[3]="";
ping[4]="";
}
// set the checkbox to be true according to the apps
//set the checkbox to be true according to the apps
var checked=apps[2].split(',');
for(var i=0;i<checked.length;i++){
// set the selcet checkbox to true
for (var i=0;i<checked.length;i++){
//set the selcet checkbox to true
$("input:checkbox[name="+checked[i]+"]").attr('checked',true);
for(var j =0;j<origCont.length;j++){
// set the origCont's checkbox to true
if(origCont[j][1]==checked[i]){
for (var j =0;j<origCont.length;j++){
//set the origCont's checkbox to true
if (origCont[j][1]==checked[i]){
origCont[j].splice(3,1);
origCont[j].push('<input type="checkbox" name="'+origCont[j][1]+'" title="Click this checkbox will add/remove the app from the configure apps value." checked=true/>');
}
}
@ -230,185 +213,170 @@ function loadXcatMonSetting(data){
$(this).find("span:last").remove();
}
);
*/
//make the table editable
$('#'+XcatmonTableId+' td:not(td:nth-child(1),td:last-child)').editable(
function(value,settings){
var colPos=this.cellIndex;
var rowPos=dTable.fnGetPosition(this.parentNode);
dTable.fnUpdate(value,rowPos,colPos);
return (value);
},{
onblur : 'submit',
type : 'textarea',
placeholder: ' ',
height : '30px'
}
);
//save the datatable
dTable=$('#'+XcatmonTableId).dataTable();
// set the datatable to the global variables datatables
setDatatable(XcatmonTableId,dTable);
//create button bar
var addBar = $('<div align="center"></div>');
$('#xcatmon').append(addBar);
// create the button add row
var addRowBtn=createButton('Add row');
// add the button to the page
addBar.append(addRowBtn);
// create the button apply
var ApplyBtn=createButton('Apply');
// add the apply button to the page
addBar.append(ApplyBtn);
// create the button Cancel
var CancelBtn=createButton('Cancel');
// add the cancel to the page
addBar.append(CancelBtn);
// button click function
//create a empty row
addRowBtn.bind('click',function(event){
// create the container of the new row
var row = new Array();
// add the delete button to the row
row.push('<span class="ui-icon ui-icon-close" onclick="deleteRow1(this)"></span>');
// add the xcatmon
// add the contain of the setting
for(var i =0;i<header.length-2;i++){
row.push('');
}
// add the checkbox
row.push('<input type="checkbox" name="'+row[2]+'" title="Click this checkbox will add/remove the app from the configure apps value."/>');
// get the datatable of the table
var dTable=getDatatable(XcatmonTableId);
// add the new row to the datatable
dTable.fnAddData(row);
// make the datatable editable
$(":checkbox[title]").tooltip();
$('#'+XcatmonTableId+' td:not(td:nth-child(1),td:last-child)').editable(
function(value,settings){
function (value,settings){
var colPos=this.cellIndex;
var rowPos=dTable.fnGetPosition(this.parentNode);
dTable.fnUpdate(value,rowPos,colPos);
return (value);
},{
},{
onblur : 'submit',
type : 'textarea',
placeholder: ' ',
height : '30px'
}
);
//save the datatable
dTable=$('#'+XcatmonTableId).dataTable();
//set the datatable to the global variables datatables
setDatatable(XcatmonTableId,dTable);
//create button bar
var addBar = $('<div align="center"></div>');
$('#xcatmon').append(addBar);
//create the button add row
var addRowBtn=createButton('Add row');
//add the button to the page
addBar.append(addRowBtn);
//create the button apply
var ApplyBtn=createButton('Apply');
//add the apply button to the page
addBar.append(ApplyBtn);
//create the button Cancel
var CancelBtn=createButton('Cancel');
//add the cancel to the page
addBar.append(CancelBtn);
//button click function
//create a empty row
addRowBtn.bind('click', function(event){
//create the container of the new row
var row = new Array();
//add the delete button to the row
row.push('<span class="ui-icon ui-icon-close" onclick="deleteRow1(this)"></span>');
//add the xcatmon
//add the contain of the setting
for (var i =0;i<header.length-2;i++){
row.push('');
}
//add the checkbox
row.push('<input type="checkbox" name="'+row[2]+'" title="Click this checkbox will add/remove the app from the configure apps value."/>');
//get the datatable of the table
var dTable=getDatatable(XcatmonTableId);
//add the new row to the datatable
dTable.fnAddData(row);
//make the datatable editable
$(":checkbox[title]").tooltip();
$('#'+XcatmonTableId+' td:not(td:nth-child(1),td:last-child)').editable(
function(value,settings){
var colPos=this.cellIndex;
var rowPos=dTable.fnGetPosition(this.parentNode);
dTable.fnUpdate(value,rowPos,colPos);
return (value);
},{
onblur : 'submit',
type : 'textarea',
placeholder: ' ',
height : '30px'
}
);
});
/*
* apply button
*
*
*
* The Apply button is used to store the contain of the table in the page to the monsetting table
* on the MN.
*
*/
ApplyBtn.bind('click',function(event){
// get the datatable of the page
/**
* apply button
*
* the Apply button is used to store the contain of the table in the page to
* the monsetting table on the MN.
*/
ApplyBtn.bind('click', function(event){
//get the datatable of the page
var dTable=getDatatable(XcatmonTableId);
// get the rows of the datatable
//get the rows of the datatable
var dRows=dTable.fnGetNodes();
var count=0;
// create the new container of the apps' value.
//create the new container of the apps' value.
var appValue="";
var tableName="monsetting";
var tmp;
var tmp1;
var closeBtn=createButton("close");
// get the contain of the rows
var closeBtn=createButton("close");
//get the contain of the rows
for (var i =0; i< dRows.length;i++){
if(dRows[i]){
// get the columns fo the row
if (dRows[i]){
//get the columns fo the row
var cols=dRows[i].childNodes;
// create the container of the new column
//create the container of the new column
var vals = new Array();
for(var j=1;j<cols.length-1;j++){
// get the value of every column(except the first and the last.why ? .ni dong de)
for (var j=1;j<cols.length-1;j++){
//get the value of every column(except the first and the last.why ? .ni dong de)
var val=cols.item(j).firstChild.nodeValue;
if(val == ' ' ){
if (val == ' ' ){
vals[j-1]='';
}else{
} else{
vals[j-1]=val;
}
}
// prepare another space for the array/
//prepare another space for the array/
var vals_orig=new Array();
// copy the data from vals to vals_orig
for(var p=0 ;p<2;p++){
var val=vals[p];
vals_orig[p]=val;
}
//copy the data from vals to vals_orig
for (var p=0 ;p<2;p++){
var val=vals[p];
vals_orig[p]=val;
}
vals.push("");
vals.push("");
vals.unshift("xcatmon");
// stored the new column to the newCont
//stored the new column to the newCont
newCont[i+1]=vals;
// check the checkbox of the row and add different checkbox to the orignCont
// for the cancle button
if(cols.item(cols.length-1).firstChild.checked){
vals_orig.push('<input type="checkbox" name="'+vals_orig[0]+'" title="Click this checkbox will add/remove the app from the configure apps value." checked=true/>');
}else{
vals_orig.push('<input type="checkbox" name="'+vals_orig[0]+'" title="Click this checkbox will add/remove the app from the configure apps value."/>');
}
// push the delete button to the row
//check the checkbox of the row and add different checkbox to the orignCont
//for the cancle button
if (cols.item(cols.length-1).firstChild.checked){
vals_orig.push('<input type="checkbox" name="'+vals_orig[0]+'" title="Click this checkbox will add/remove the app from the configure apps value." checked=true/>');
} else{
vals_orig.push('<input type="checkbox" name="'+vals_orig[0]+'" title="Click this checkbox will add/remove the app from the configure apps value."/>');
}
//push the delete button to the row
vals_orig.unshift('<span class="ui-icon ui-icon-close" onclick="deleteRow1(this)"></span>');
// add the row to the orignCont
//add the row to the orignCont
origCont[i+1]=vals_orig;
//tmp1=origCont;
//tmp=newCont;
count=i+1;
// check the checkbox fo everyrow for merging the appName to the apps values
if(cols.item(cols.length-1).firstChild.checked){
// the new value for the apps.get the name fo every app.
//check the checkbox fo everyrow for merging the appName to the apps values
if (cols.item(cols.length-1).firstChild.checked){
//the new value for the apps.get the name fo every app.
appValue=appValue.concat(cols.item(2).firstChild.nodeValue+",");
}
}
}
count++;
// delete the last "," of the apps value
//delete the last "," of the apps value
appValue=appValue.substring(0,(appValue.length-1));
apps[2]=appValue;
// tmp =apps;
// newCont add the apps row
//newCont add the apps row
newCont[count++]=apps;
// newCont add the ping-interval row
//newCont add the ping-interval row
newCont[count++]=ping;
//tmp=otherCont;
// add the other monitor setting of the mosetting
//add the other monitor setting of the mosetting
for(var j=0;j<otherCont.length;j++){
newCont[count++]=otherCont[j];
}
@ -416,16 +384,16 @@ function loadXcatMonSetting(data){
//tmp1=newCont;
setDatatable(XcatmonTableId,dTable);
// create the save dialog
//create the save dialog
var dialogSave=$('<div id="saveDialog" align="center">saving the configuration </div>');
dialogSave.append(createLoader());
addBar.append(dialogSave);
// open the dialog..modal is true
//open the dialog..modal is true
$("#saveDialog").dialog({modal: true});
// hide the cross...
//hide the cross...
$('.ui-dialog-titlebar-close').hide();
// pot the table name and the contain to the tabRestore.php
//put the table name and the contain to the tabRestore.php
$.ajax({
type : 'POST',
url : 'lib/tabRestore.php',
@ -434,91 +402,71 @@ function loadXcatMonSetting(data){
table : tableName,
cont : newCont
},
success : function (data){
// empty the dialog.add the close button
success : function(data){
//empty the dialog.add the close button
$("#saveDialog").empty().append('<p>The Configure has saved!</p>');
$("#saveDialog").append(closeBtn);
}
});
// close button function
closeBtn.bind('click',function(event){
$("#saveDialog").dialog("distroy");
$("#saveDialog").remove();
//close button function
closeBtn.bind('click', function(event){
$("#saveDialog").dialog("distroy");
$("#saveDialog").remove();
});
//clear the newCont
newCont=null;
newCont=new Object();
//just for tmp=newCont;
newCont[0]=rsp[0].split(",");
});
// clear the newCont
newCont=null;
newCont= new Object();
//just for tet tmp=newCont;
newCont[0]=rsp[0].split(",");
}
);
/*
* undo button
*
*/
CancelBtn.bind('click',function(event){
// get the datatable of the page
/**
* undo button
*/
CancelBtn.bind('click', function(event){
//get the datatable of the page
var dTable=getDatatable(XcatmonTableId);
// clear the datatable
//clear the datatable
dTable.fnClearTable();
// add the contain of the origCont to the datatable
for(var i=1;i<origCont.length;i++){
//add the contain of the origCont to the datatable
for (var i=1;i<origCont.length;i++){
dTable.fnAddData(origCont[i],true);
}
$(":checkbox[title]").tooltip();
$('#'+XcatmonTableId+' td:not(td:nth-child(1),td:last-child)').editable(
function(value,settings){
var colPos=this.cellIndex;
var rowPos=dTable.fnGetPosition(this.parentNode);
dTable.fnUpdate(value,rowPos,colPos);
return (value);
$('#'+XcatmonTableId+' td:not(td:nth-child(1),td:last-child)').editable(
function (value,settings){
var colPos=this.cellIndex;
var rowPos=dTable.fnGetPosition(this.parentNode);
dTable.fnUpdate(value,rowPos,colPos);
return (value);
},{
onblur : 'submit',
type : 'textarea',
placeholder: ' ',
height : '30px'
}
);
}
);
onblur : 'submit',
type : 'textarea',
placeholder: ' ',
height : '30px'
});
});
}
// delete a row from the table
/**
* delete a row from the table
*/
function deleteRow1(obj){
//var tableid=$(obj).parent().parent().parent().parent().attr('id');
var dTable=getDatatable(XcatmonTableId);
var rows=dTable.fnGetNodes();
var tgtRow=$(obj).parent().parent().get(0);
for (var i in rows){
if(rows[i] == tgtRow){
if (rows[i] == tgtRow){
dTable.fnDeleteRow(i, null,true);
break;
}
}
}

View File

@ -13,7 +13,7 @@ var hardwareInfo = {
'9119-590' : [ 'P5-590', '42' ],
'9119-595' : [ 'P5-595', '42' ],
// P6
//P6
'8203-E4A' : [ 'P6-520', '4' ],
'9407-M15' : [ 'P6-520', '4' ],
'9408-M25' : [ 'P6-520', '4' ],
@ -24,7 +24,7 @@ var hardwareInfo = {
'9125-F2A' : [ 'P6-575', '42' ],
'9119-FHA' : [ 'P6-595', '42' ],
// P7
//P7
'8202-E4B' : [ 'P7-720', '4' ],
'8205-E6B' : [ 'P7-740', '4' ],
'8231-E2B' : [ 'P7-710/730', '2' ],
@ -33,5 +33,5 @@ var hardwareInfo = {
'9117-MMB' : [ 'P7-770', '4' ],
'9119-FHB' : [ 'P7-795', '42' ],
'9179-MHB' : [ 'P7-780', '42' ],
'9125-F2C' : [ 'P7-IH', '2'] //fsp
'9125-F2C' : [ 'P7-IH', '2'] //fsp
};

View File

@ -77,7 +77,6 @@ function initGraphicalData(dataTypeIndex, attrNullNode){
* extract all nodes userful data into a hash, which is used for creating graphical
*
* @param data: the response from xcat command "nodels all nodetype.nodetype ppc.parent ..."
*
* @return nodes list for next time query
*/
function extractGraphicalData(data){
@ -90,7 +89,7 @@ function extractGraphicalData(data){
graphicalNodeList[nodeName] = new Object();
}
switch(data.msg.substr(5, 1)){
switch (data.msg.substr(5, 1)){
case '0':
case '1':{
if (!nodes[i][1]){
@ -135,7 +134,7 @@ function createPhysicalLayout(nodeList){
}
//it is getting data,so we had to wait now.
if(gettingDataFlag){
if (gettingDataFlag){
return;
}
@ -145,7 +144,7 @@ function createPhysicalLayout(nodeList){
}
//save the new selected nodes.
if(graphicalNodeList){
if (graphicalNodeList){
for(var i in graphicalNodeList){
flag = true;
break;
@ -179,7 +178,7 @@ function fillList(nodeName){
status = 'unknown';
}
switch(graphicalNodeList[nodeName]['type']){
switch (graphicalNodeList[nodeName]['type']){
case 'frame': {
if (undefined == bpaList[nodeName]){
bpaList[nodeName] = new Array();
@ -275,8 +274,7 @@ function createGraphical(bpa, fsp, area){
//find the single fsp and sort descend by units
var singleFsp = new Array();
for (var fspName in fsp){
if (usedFsp[fspName])
{
if (usedFsp[fspName]){
continue;
}
@ -408,7 +406,6 @@ function createGraphical(bpa, fsp, area){
*
* @param
* @return
*
**/
function updateSelectNodeDiv(){
var temp = 0;
@ -432,11 +429,10 @@ function updateSelectNodeDiv(){
*
* @param getNodesFunction
* the function that can find selected nodes name
* @return
* action menu object
* @return action menu object
*/
function createActionMenu(){
// Create action bar
//create action bar
var actionBar = $('<div class="actionBar"></div>');
/**
@ -444,11 +440,11 @@ function createActionMenu(){
* power, clone, delete, unlock, and advanced
*/
var powerLnk = $('<a>Power</a>');
//Power on
//power on
var powerOnLnk = $('<a>Power on</a>');
powerOnLnk.bind('click', function(event) {
var tgtNodes = getSelectNodes();
$.ajax( {
$.ajax({
url : 'lib/cmd.php',
dataType : 'json',
data : {
@ -460,11 +456,11 @@ function createActionMenu(){
});
});
//Power off
//power off
var powerOffLnk = $('<a>Power off</a>');
powerOffLnk.bind('click', function(event) {
var tgtNodes = getSelectNodes();
$.ajax( {
$.ajax({
url : 'lib/cmd.php',
dataType : 'json',
data : {
@ -476,14 +472,14 @@ function createActionMenu(){
});
});
//Clone
//clone
var cloneLnk = $('<a>Clone</a>');
cloneLnk.bind('click', function(event) {
/*
for (var name in selectNode) {
var mgt = graphicalNodeList[name]['mgt'];
// Create an instance of the plugin
//create an instance of the plugin
var plugin;
switch(mgt) {
case "blade":
@ -511,7 +507,7 @@ function createActionMenu(){
*/
});
//Delete
//delete
var deleteLnk = $('<a>Delete</a>');
deleteLnk.bind('click', function(event) {
var tgtNodes = getSelectNodes();
@ -520,7 +516,7 @@ function createActionMenu(){
}
});
//Unlock
//unlock
var unlockLnk = $('<a>Unlock</a>');
unlockLnk.bind('click', function(event) {
var tgtNodes = getSelectNodes();
@ -529,7 +525,7 @@ function createActionMenu(){
}
});
//Run script
//run script
var scriptLnk = $('<a>Run script</a>');
scriptLnk.bind('click', function(event) {
var tgtNodes = getSelectNodes();
@ -538,7 +534,7 @@ function createActionMenu(){
}
});
//Update node
//update node
var updateLnk = $('<a>Update</a>');
updateLnk.bind('click', function(event) {
var tgtNodes = getSelectNodes();
@ -547,7 +543,7 @@ function createActionMenu(){
}
});
//Set boot state
//set boot state
var setBootStateLnk = $('<a>Set boot state</a>');
setBootStateLnk.bind('click', function(event) {
var tgtNodes = getSelectNodes();
@ -556,7 +552,7 @@ function createActionMenu(){
}
});
//Boot to network
//boot to network
var boot2NetworkLnk = $('<a>Boot to network</a>');
boot2NetworkLnk.bind('click', function(event) {
var tgtNodes = getSelectNodes();
@ -565,7 +561,7 @@ function createActionMenu(){
}
});
//Remote console
//remote console
var rcons = $('<a>Open console</a>');
rcons.bind('click', function(event){
var tgtNodes = getSelectNodes();
@ -574,7 +570,7 @@ function createActionMenu(){
}
});
//Edit properties
//edit properties
var editProps = $('<a>Edit properties</a>');
editProps.bind('click', function(event){
for (var node in selectNode) {
@ -584,17 +580,17 @@ function createActionMenu(){
var advancedLnk = $('<a>Advanced</a>');
// Power actions
//power actions
var powerActions = [ powerOnLnk, powerOffLnk ];
var powerActionMenu = createMenu(powerActions);
// Advanced actions
//advanced actions
var advancedActions;
advancedActions = [ boot2NetworkLnk, scriptLnk, setBootStateLnk, updateLnk, rcons, editProps ];
var advancedActionMenu = createMenu(advancedActions);
/**
* Create an action menu
* create an action menu
*/
var actionsDIV = $('<div></div>');
var actions = [ [ powerLnk, powerActionMenu ], cloneLnk, deleteLnk, unlockLnk, [ advancedLnk, advancedActionMenu ] ];
@ -612,8 +608,7 @@ function createActionMenu(){
* @param bpaName : fsp's key
* fsp : all fsp and there related lpars
* fspinfo : all fsps' hardwareinfo
* @return
*
* @return
*/
function createFspDiv(fspName, mtm, fsp){
//create fsp title
@ -658,8 +653,7 @@ function createFspDiv(fspName, mtm, fsp){
* @param bpaName : fsp's key
* fsp : all fsp and there related lpars
* fspinfo : all fsps' hardwareinfo
* @return
*
* @return
*/
function createFspTip(fspName, mtm, fsp){
var tip = $('<div class="tooltip"></div>');
@ -694,9 +688,7 @@ function createFspTip(fspName, mtm, fsp){
* map the lpar's status into a color
*
* @param status : lpar's status in nodelist table
* @return
* corresponding color name
* @return corresponding color name
*/
function statusMap(status){
var color = 'gainsboro';
@ -728,9 +720,7 @@ function statusMap(status){
* select all lpars checkbox in the dialog
*
* @param
* @return
*
* @return
*/
function selectAllLpars(checkbox){
var temp = checkbox.attr('checked');
@ -741,9 +731,7 @@ function selectAllLpars(checkbox){
* export all lpars' name from selectNode
*
* @param
* @return lpars' string
*
* @return lpars' string
*/
function getSelectNodes() {
var ret = '';
@ -759,7 +747,6 @@ function getSelectNodes() {
* list and update the tooltip table
*
* @param
* @return
*/
function changeNode(lparName, status){
@ -783,7 +770,6 @@ function changeNode(lparName, status){
* The P7-IH's cecs are insert from down to up, so we had to coculate the blank height.
*
* @param
* @return the height for the cec
*/
function coculateBlank(mtm){

View File

@ -426,329 +426,324 @@ function setImageDefAttrs(data) {
}
/**
*Load create image page
*
*@param Nothing
* Create a new image for provision
*@return Nothing
* Load create image page
*
* @param Nothing
* @return Nothing
*/
function loadCreateImage(){
// get nodes tab
var tab=getProvisionTab();
function loadCreateImage() {
// Get nodes tab
var tab = getProvisionTab();
var tabId = 'createImageTab';
//Generate new tab ID
if($('#' + tabId).size()){
// Generate new tab ID
if ($('#' + tabId).size()) {
tab.select(tabId);
return ;
return;
}
var showStr = '';
var imageOsvers = $.cookie("osvers").split(",");
var imageArch = $.cookie("osarchs").split(",");
// Create set properties form
// Create set properties form
var setPropsForm = $('<div class="form" ></div>');
//show the infomation
var infoBar= createInfoBar('Input the image info ,you want to generate. Click generate.');
// Show the infomation
var infoBar = createInfoBar('Specify the parameters for the image you want to generate, then click Create Image.');
setPropsForm.append(infoBar);
//os version selector
// OS version selector
showStr += '<p><label>OS Version:</label><select id="osvers" onchange="hpcShow()">';
for(var i = 0 ;i<imageOsvers.length;i++){
showStr+='<option value="'+imageOsvers[i]+'">'+imageOsvers[i]+'</option>';
for ( var i = 0; i < imageOsvers.length; i++) {
showStr += '<option value="' + imageOsvers[i] + '">' + imageOsvers[i] + '</option>';
}
showStr+='</select></p>';
showStr += '</select></p>';
//os arch selector
// OS arch selector
showStr += '<p><label>OS Architecture:</label><select id="osarch" onchange="hpcShow()">';
for(var i =0;i<imageArch.length;i++){
showStr+='<option value="'+imageArch[i]+'">'+imageArch[i]+'</option>';
for ( var i = 0; i < imageArch.length; i++) {
showStr += '<option value="' + imageArch[i] + '">' + imageArch[i] + '</option>';
}
showStr+='</select></p>';
showStr += '</select></p>';
//net boot interface input
// Netboot interface input
showStr += '<p><label>Net Boot Interface:</label><input type="text" id="netbootif"></p>';
//profile selector
showStr += '<p><label>Profile:</label><select id="profile" onchange="hpcShow()">' +
'<option value="compute">compute</option>' +
'<option value="service">service</option></select></p>';
//boot method selector
showStr += '<p><label>Boot Method:</label><select id="bootmethod">' +
'<option value="stateless">stateless</option>' +
'<option value="statelite">statelite</option></select></p>';
// Profile selector
showStr += '<p><label>Profile:</label><select id="profile" onchange="hpcShow()">' + '<option value="compute">compute</option>' + '<option value="service">service</option></select></p>';
// Boot method selector
showStr += '<p><label>Boot Method:</label><select id="bootmethod">' + '<option value="stateless">stateless</option>' + '<option value="statelite">statelite</option></select></p>';
setPropsForm.append(showStr);
createHpcSelect(setPropsForm);
//add and show the tab
// Add and show the tab
tab.add(tabId, 'Create Image', setPropsForm, true);
tab.select(tabId);
//check the selected osver and osarch for hcp stack select, if they are validated,
//then show the hpc stack select area.
// Check the selected osver and osarch for hcp stack select
// If they are valid, show the hpc stack select area.
hpcShow();
$.ajax({
$.ajax( {
url : 'lib/systemcmd.php',
dataType : 'json',
data : {
cmd : 'lsb_release -d;uname -p'
},
success : function(data){
success : function(data) {
var tempArray = data.rsp.split("\n");
var mnOs = tempArray[0];
var mnArch = tempArray[1];
var mnArch = tempArray[1];
tempArray = mnOs.split(" ");
// get the the version of mn
if(mnOs.indexOf("Red Hat")!= -1 ){
mnOs="rhels" + tempArray[6];
}
// Get the the version of MN
if (mnOs.indexOf("Red Hat") != -1) {
mnOs = "rhels" + tempArray[6];
}
$('#createImageTab option[value=' + mnOs + ']').attr('selected', 'selected');
$('#createImageTab option[value=' + mnArch + ']').attr('selected', 'selected');
// The button used to create images is created here.
var createImageBtn=createButton("CreateImage");
createImageBtn.bind('click',function(event){
// The button used to create images is created here
var createImageBtn = createButton("Create Image");
createImageBtn.bind('click', function(event) {
createImage();
});
$('#createImageTab').append(createImageBtn);
// check the option ,Decide to show the hpcsoft or not
// Check the option and decide to show the hpcsoft or not
hpcShow();
}
});
}
function createHpcSelect(container){
/**
* Create HPC select
*
* @param container
* The container to hold the HPC select
* @return HPC select appended to the container
*/
function createHpcSelect(container) {
var hpcFieldset = $('<fieldset id="hpcsoft"></fieldset>');
hpcFieldset.append('<legend>HPC Software Stack</legend>');
var str = 'Before selecting the software, you should have the following already completed for your xCAT cluster:<br/><br/>' +
'1. If you are using xCAT hierarchy, your service nodes are installed and running.<br/>' +
'2. Your compute nodes are defined to xCAT, and you have verified your hardware control capabilities, ' +
'gathered MAC addresses, and done all the other necessary preparations for a diskless install.<br/>' +
'3. You should have a diskless image created with the base OS installed and verified on at least one test node.<br/>' +
'4. You should install the softwares on the management node, and copy all correponding packages into the location ' +
'"/install/custom/otherpkgs/" based on ' +
'<a href="http://sourceforge.net/apps/mediawiki/xcat/index.php?title=IBM_HPC_Stack_in_an_xCAT_Cluster" target="_blank">these documentations</a>.<br/>';
var str = 'Before selecting the software, you should have the following already completed for your xCAT cluster:<br/><br/>'
+ '1. If you are using xCAT hierarchy, your service nodes are installed and running.<br/>'
+ '2. Your compute nodes are defined to xCAT, and you have verified your hardware control capabilities, '
+ 'gathered MAC addresses, and done all the other necessary preparations for a diskless install.<br/>'
+ '3. You should have a diskless image created with the base OS installed and verified on at least one test node.<br/>'
+ '4. You should install the softwares on the management node, and copy all correponding packages into the location ' + '"/install/custom/otherpkgs/" based on '
+ '<a href="http://sourceforge.net/apps/mediawiki/xcat/index.php?title=IBM_HPC_Stack_in_an_xCAT_Cluster" target="_blank">these documentations</a>.<br/>';
hpcFieldset.append(createInfoBar(str));
// advanced software when select the compute profile
str = '<ul><li id="gpfsli"><input type="checkbox" onclick="softwareCheck(this)" name="gpfs">GPFS</li>' +
'<li id="rsctli"><input type="checkbox" onclick="softwareCheck(this)" name="rsct">RSCT</li>' +
'<li id="peli"><input type="checkbox" onclick="softwareCheck(this)" name="pe">PE</li>' +
'<li id="esslli"><input type="checkbox" onclick="esslCheck(this)" name="essl">ESSl&PESSL</li>' +
'</ul>';
hpcFieldset.append(str);
// Advanced software when select the compute profile
str = '<ul><li id="gpfsli"><input type="checkbox" onclick="softwareCheck(this)" name="gpfs">GPFS</li>'
+ '<li id="rsctli"><input type="checkbox" onclick="softwareCheck(this)" name="rsct">RSCT</li>' + '<li id="peli"><input type="checkbox" onclick="softwareCheck(this)" name="pe">PE</li>'
+ '<li id="esslli"><input type="checkbox" onclick="esslCheck(this)" name="essl">ESSl&PESSL</li>' + '</ul>';
hpcFieldset.append(str);
container.append(hpcFieldset);
}
var softwareList = {
"rsct" : [ "rsct.core.utils", "rsct.core", "src" ],
"pe" : [ "IBMJava2-142-ppc64-JRE", "ibm_lapi_ip_rh6p", "ibm_lapi_us_rh6p", "IBM_pe_license",
"ibm_pe_rh6p", "ppe_pdb_ppc64_rh600", "sci_ppc_32bit_rh600", "sci_ppc_64bit_rh600",
"vac.cmp", "vac.lib", "vac.lic", "vacpp.cmp", "vacpp.help.pdf", "vacpp.lib",
"vacpp.man", "vacpp.rte", "vacpp.rte.lnk", "vacpp.samples", "xlf.cmp", "xlf.help.pdf",
"xlf.lib", "xlf.lic", "xlf.man", "xlf.msg.rte", "xlf.rte", "xlf.rte.lnk",
"xlf.samples", "xlmass.lib", "xlsmp.lib", "xlsmp.msg.rte", "xlsmp.rte" ],
"gpfs" : [ "gpfs.base", "gpfs.gpl", "gpfs.gplbin", "gpfs.msg.en_US" ],
"essl" : [ "essl.3232.rte", "essl.3264.rte", "essl.6464.rte", "essl.common", "essl.license",
"essl.man", "essl.msg", "essl.rte", "ibm-java2", "pessl.common", "pessl.license",
"pessl.man", "pessl.msg", "pessl.rte.ppe" ],
"loadl" : [ "IBMJava2", "LoadL-full-license-RH6", "LoadL-resmgr-full-RH6",
"LoadL-scheduler-full-RH6" ],
"base" : [ "createrepo" ]
"rsct" : [ "rsct.core.utils", "rsct.core", "src" ],
"pe" : [ "IBMJava2-142-ppc64-JRE", "ibm_lapi_ip_rh6p", "ibm_lapi_us_rh6p", "IBM_pe_license", "ibm_pe_rh6p", "ppe_pdb_ppc64_rh600", "sci_ppc_32bit_rh600", "sci_ppc_64bit_rh600", "vac.cmp",
"vac.lib", "vac.lic", "vacpp.cmp", "vacpp.help.pdf", "vacpp.lib", "vacpp.man", "vacpp.rte", "vacpp.rte.lnk", "vacpp.samples", "xlf.cmp", "xlf.help.pdf", "xlf.lib", "xlf.lic", "xlf.man",
"xlf.msg.rte", "xlf.rte", "xlf.rte.lnk", "xlf.samples", "xlmass.lib", "xlsmp.lib", "xlsmp.msg.rte", "xlsmp.rte" ],
"gpfs" : [ "gpfs.base", "gpfs.gpl", "gpfs.gplbin", "gpfs.msg.en_US" ],
"essl" : [ "essl.3232.rte", "essl.3264.rte", "essl.6464.rte", "essl.common", "essl.license", "essl.man", "essl.msg", "essl.rte", "ibm-java2", "pessl.common", "pessl.license", "pessl.man",
"pessl.msg", "pessl.rte.ppe" ],
"loadl" : [ "IBMJava2", "LoadL-full-license-RH6", "LoadL-resmgr-full-RH6", "LoadL-scheduler-full-RH6" ],
"base" : [ "createrepo" ]
};
/**
* esslCheck check the dependance of essl and start the softwareCheck for essl
*
* @param softwareObject :
* the checkbox object of essl
* Check the dependance of essl and start the software check for essl
*
* @param softwareObject
* The checkbox object of essl
* @return nothing
*/
function esslCheck(softwareObject) {
var softwareName = softwareObject.name;
if (false == $('#createImageTab input[name=pe]').attr('checked')) {
var errorStr = '<div style="margin:0px" class="ui-state-error">You must select the pe fi rst.</div>';
$('#createImageTab #esslli').append(errorStr);
$(':checkbox[name=essl]').attr("checked", false);
return;
}
else {
softwareCheck(softwareObject);
}
var softwareName = softwareObject.name;
if (false == $('#createImageTab input[name=pe]').attr('checked')) {
var warnBar = createWarnBar('You must select the pe first.');
$('#createImageTab #esslli').append(warnBar);
$(':checkbox[name=essl]').attr("checked", false);
return;
} else {
softwareCheck(softwareObject);
}
}
/**
* softwarCheck check the preparation for hpc software
*
* @param softwareObject : the checkbox object of the hpc software
*
* @return true: the checkbox checked
* false: the error message on the page
*/
* Check the parameters for HPC software
*
* @param softwareObject
* The checkbox object of the hpc software
* @return True: The checkbox is checked
* False: Error message shown on page
*/
function softwareCheck(softwareObject) {
var softwareName = softwareObject.name;
$('#createImageTab #' + softwareName + 'li .ui-state-error').remove();
$('#createImageTab #' + softwareName + 'li').append(createLoader());
var cmdString = genRpmCmd(softwareName);
$.ajax( {
url : 'lib/systemcmd.php',
dataType : 'json',
data : {
cmd : cmdString,
msg : softwareName
},
success : function(data) {
if (rpmCheck(data.rsp, data.msg)) {
genLsCmd(data.msg);
$.ajax( {
url : 'lib/systemcmd.php',
dataType : 'json',
data : {
cmd : genLsCmd(data.msg),
msg : data.msg
},
success : rpmCopyCheck
});
}
}
});
}
function rpmCopyCheck(data){
// remove the loading image.
var errorStr = '';
var softwareName = data.msg;
// check the return information
var reg = /.+:(.+): No such.*/;
var resultArray = data.rsp.split("\n");
for ( var i in resultArray) {
var temp = reg.exec(resultArray[i]);
if (temp) {
// find out the path and rpm name
var pos = temp[1].lastIndexOf('/');
var path = temp[1].substring(0, pos);
var rpmName = temp[1].substring(pos + 1).replace('*', '');
errorStr += 'Copy ' + rpmName + ' to ' + path + '<br/>';
}
}
$('#createImageTab #' + softwareName + 'li').find('img').remove();
// no error, show the check image
if ('' == errorStr) {
var infoPart = '<div style="display:inline-block;margin:0px"><span class="ui-icon ui-icon-circle-check"></span></div>';
$('#createImageTab #' + softwareName + 'li').append(infoPart);
}
else {
// show the error message
errorStr = '<div style="margin:0px" class="ui-state-error">'
+ 'To install the rsct on your compute node. You should:<br/>'
+ errorStr + '</div>';
$('#createImageTab #' + softwareName + 'li').append(errorStr);
$(':checkbox[name=' + softwareName + ']').attr("checked", false);
}
}
/**
* genRpmCmd generate the rpm command for the rpmcheck
*
* @param softwareName: the name of the software
*
* @return the rpm command :"rpm -q ***"
*/
function genRpmCmd(softwareName){
var cmdString;
var packageLength;
cmdString = "rpm -q ";
for(var i in softwareList[softwareName]){
cmdString += softwareList[softwareName][i]+" ";
}
for(var i in softwareList["base"]){
cmdString += softwareList["base"][i]+" ";
}
return cmdString;
}
/**
* genLsCmd check whether the rpms for the hpc software are copied to the special location
*
* @param softwareName: the name of the software
*
* @return true: OK
* false: add the error message to the page
*/
function genLsCmd(softwareName){
var osvers = $("#createImageTab #osvers").val();
var osarch = $("#createImageTab #osarch").val();
var path = '/install/post/otherpkgs/' + osvers + '/' + osarch + '/' + softwareName;
var checkCmd = 'ls ';
for ( var i in softwareList[softwareName]) {
checkCmd += path + '/' + softwareList[softwareName][i] + '*.rpm ';
}
checkCmd += '2>&1';
return checkCmd;
}
/**
* When the rpm check info return, check if all rpms are installed.
*
* @param checkInfo: "rpm -q ***"'s return
* name: software name
*
* @return true: the rpms are all installed
* false: some of the rpms are not installed, detail add into the page.
*/
function rpmCheck(checkInfo, name){
var errorStr = '';
var checkArray = checkInfo.split("\n");
for ( var i in checkArray) {
if (-1 != checkArray[i].indexOf("not install")) {
errorStr += checkArray[i] + "<br/>";
}
}
if ('' == errorStr) {
return true;
}
errorStr = errorStr.substr(0, errorStr.length - 1);
$(':checkbox[name=' + name + ']').attr("checked", false);
// add the error
var errorPart = '<div style="margin:0px" class="ui-state-error">'
+ errorStr + '</div>';
$('#createImageTab #' + name + 'li').find('img').remove();
$('#createImageTab #' + name + 'li').append(errorPart);
return;
var softwareName = softwareObject.name;
$('#createImageTab #' + softwareName + 'li .ui-state-error').remove();
$('#createImageTab #' + softwareName + 'li').append(createLoader());
var cmdString = genRpmCmd(softwareName);
$.ajax( {
url : 'lib/systemcmd.php',
dataType : 'json',
data : {
cmd : cmdString,
msg : softwareName
},
success : function(data) {
if (rpmCheck(data.rsp, data.msg)) {
genLsCmd(data.msg);
$.ajax( {
url : 'lib/systemcmd.php',
dataType : 'json',
data : {
cmd : genLsCmd(data.msg),
msg : data.msg
},
success : rpmCopyCheck
});
}
}
});
}
/**
* check the Option , Decide to show the hpcsoft or not
*
*
* @param
*
* @return Nothing
* Check whether the RPMs are copied to the special location
*
* @param data
* Data returned from HTTP request
* @return Nothing
*/
function rpmCopyCheck(data) {
// Remove the loading image
var errorStr = '';
var softwareName = data.msg;
// Check the return information
var reg = /.+:(.+): No such.*/;
var resultArray = data.rsp.split("\n");
for ( var i in resultArray) {
var temp = reg.exec(resultArray[i]);
if (temp) {
// Find out the path and RPM name
var pos = temp[1].lastIndexOf('/');
var path = temp[1].substring(0, pos);
var rpmName = temp[1].substring(pos + 1).replace('*', '');
errorStr += 'copy ' + rpmName + ' to ' + path + '<br/>';
}
}
$('#createImageTab #' + softwareName + 'li').find('img').remove();
// No error, show the check image
if ('' == errorStr) {
var infoPart = '<div style="display:inline-block;margin:0px"><span class="ui-icon ui-icon-circle-check"></span></div>';
$('#createImageTab #' + softwareName + 'li').append(infoPart);
} else {
// Show the error message
errorStr = 'To install the rsct on your compute node. You should:<br/>' + errorStr + '</div>';
var warnBar = createWarnBar(errorStr);
$('#createImageTab #' + softwareName + 'li').append(warnBar);
$(':checkbox[name=' + softwareName + ']').attr("checked", false);
}
}
/**
* Generate the RPM command for rpmcheck
*
* @param softwareName
* The name of the software
* @return The RPM command, e.g. 'rpm -q ***'
*/
function genRpmCmd(softwareName) {
var cmdString;
var packageLength;
cmdString = "rpm -q ";
for (var i in softwareList[softwareName]) {
cmdString += softwareList[softwareName][i] + " ";
}
for (var i in softwareList["base"]) {
cmdString += softwareList["base"][i] + " ";
}
return cmdString;
}
/**
* Check whether the rpms for the hpc software are copied to the special
* location
*
* @param softwareName
* The name of the software
* @return True: OK
* False: Add the error message to the page
*/
function genLsCmd(softwareName) {
var osvers = $("#createImageTab #osvers").val();
var osarch = $("#createImageTab #osarch").val();
var path = '/install/post/otherpkgs/' + osvers + '/' + osarch + '/' + softwareName;
var checkCmd = 'ls ';
for (var i in softwareList[softwareName]) {
checkCmd += path + '/' + softwareList[softwareName][i] + '*.rpm ';
}
checkCmd += '2>&1';
return checkCmd;
}
/**
* When the RPM check info return, check if all RPMs are installed.
*
* @param checkInfo
* "rpm -q ***"'s return name: software name
* @return True: The RPMs are all installed
* False: Some of the rpms are not installed
*/
function rpmCheck(checkInfo, name) {
var errorStr = '';
var checkArray = checkInfo.split("\n");
for ( var i in checkArray) {
if (-1 != checkArray[i].indexOf("not install")) {
errorStr += checkArray[i] + "<br/>";
}
}
if ('' == errorStr) {
return true;
}
errorStr = errorStr.substr(0, errorStr.length - 1);
$(':checkbox[name=' + name + ']').attr("checked", false);
// Add the error
var warnBar = createWarnBar(errorSstr);
$('#createImageTab #' + name + 'li').find('img').remove();
$('#createImageTab #' + name + 'li').append(warnBar);
return;
}
/**
* Check the option and decide whether to show the hpcsoft or not
*
* @param Nothing
* @return Nothing
*/
function hpcShow() {
// The current ui only support rhels 6
// if you want support all delete the subcheck
if ($('#createImageTab #osvers').attr('value') != "rhels6"
|| $('#createImageTab #osarch').attr('value') != "ppc64"
|| $('#createImageTab #profile').attr('value') != "compute") {
$('#createImageTab #hpcsoft').hide();
}
else {
$('#createImageTab #hpcsoft').show();
}
// The current UI only supports RHELS 6
// If you want to support all, delete the subcheck
if ($('#createImageTab #osvers').attr('value') != "rhels6" || $('#createImageTab #osarch').attr('value') != "ppc64" || $('#createImageTab #profile').attr('value') != "compute") {
$('#createImageTab #hpcsoft').hide();
} else {
$('#createImageTab #hpcsoft').show();
}
}
/**
@ -1197,40 +1192,39 @@ function loadCopyCdPage() {
*
* @return Nothing
*/
function createImage(){
function createImage() {
var osvers = $("#createImageTab #osvers").val();
var osarch = $("#createImageTab #osarch").val();
var profile = $("#createImageTab #profile").val();
var bootInterface = $("#createImageTab #netbootif").val();
var bootMethod = $("#createImageTab #bootmethod").val();
$('#createImageTab .ui-state-error').remove();
// If there no input for the bootInterface
if (!bootInterface){
$("#createImageTab").prepend('<div class="ui-state-error ui-corner-all">' +
'<p>Input the netboot interface please.</p></div>');
if (!bootInterface) {
var warnBar = createWarnBar('Please specify the net boot interface');
$("#createImageTab").prepend(warnBar);
return;
}
var createImageArgs = "createimage;" + osvers + ";" + osarch + ";" + profile + ";" + bootInterface + ";" +
bootMethod + ";";
$("#createImageTab :checkbox:checked").each(function (){
createImageArgs+=$(this).attr("name")+",";
});
createImageArgs=createImageArgs.substring(0,(createImageArgs.length-1));
$.ajax({
url : 'lib/cmd.php',
dataType : 'json',
data : {
cmd : 'webrun',
tgt : '',
args : createImageArgs,
msg : ''
},
success : function(data){
var createImageArgs = "createimage;" + osvers + ";" + osarch + ";" + profile + ";" + bootInterface + ";" + bootMethod + ";";
$("#createImageTab :checkbox:checked").each(function() {
createImageArgs += $(this).attr("name") + ",";
});
createImageArgs = createImageArgs.substring(0, (createImageArgs.length - 1));
$.ajax({
url : 'lib/cmd.php',
dataType : 'json',
data : {
cmd : 'webrun',
tgt : '',
args : createImageArgs,
msg : ''
},
success : function(data) {
}
});
}
}

View File

@ -175,8 +175,7 @@ rconsTerm = function(nodeName, height, width){
if (firstFlag){
requireString = queryStable + keyPressList + '&f=1';
firstFlag = false;
}
else{
} else{
requireString = queryStable + keyPressList;
}
@ -201,8 +200,7 @@ rconsTerm = function(nodeName, height, width){
if (data.term){
termArea.empty().append(data.term);
maxDelay = 200;
}
else{
} else{
maxDelay = 2000;
}

View File

@ -296,15 +296,6 @@ DataTable.prototype.add = function(rowCont) {
this.dataTable.find('tbody').append(tableRow);
};
/**
* Remove a row from the datatable
*
* @return Nothing
*/
NodesTable.prototype.remove = function(id) {
// To be continued
};
/**
* Create status bar
*
@ -332,7 +323,7 @@ function createInfoBar(msg) {
});
var msg = $('<p>' + msg + '</p>').css({
'display': 'inline-block',
'width': '95%'
'width': '90%'
});
infoBar.append(icon);
@ -349,7 +340,16 @@ function createInfoBar(msg) {
*/
function createWarnBar(msg) {
var warnBar = $('<div class="ui-state-error ui-corner-all"></div>');
var msg = $('<p><span class="ui-icon ui-icon-alert"></span>' + msg + '</p>');
var icon = $('<span class="ui-icon ui-icon-alert"></span>').css({
'display': 'inline-block',
'margin': '10px 5px'
});
var msg = $('<p>' + msg + '</p>').css({
'display': 'inline-block',
'width': '90%'
});
warnBar.append(icon);
warnBar.append(msg);
return warnBar;
}
@ -374,7 +374,7 @@ function createLoader(loaderId) {
* @return Nothing
*/
function createButton(name) {
var button = $('<button aria-disabled="false" role="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" id="button"><span class="ui-button-text">' + name + '</span></button>');
var button = $('<button>' + name + '</button>').button();
return button;
}
@ -443,7 +443,6 @@ function initPage() {
// Custom plugins
includeJs("js/custom/blade.js");
//includeJs("js/custom/hmc.js");
includeJs("js/custom/ipmi.js");
includeJs("js/custom/zvm.js");
includeJs("js/custom/customUtils.js");

View File

@ -14,7 +14,7 @@ $(document).ready(function() {
},
open : function(type, dialog) {
if (document.location.protocol == "http:") {
$("#logstatus").html("You are using an unencrypted session !");
$("#logstatus").html("You are using an unencrypted session!");
$("#logstatus").css("color", "#ff0000");
}
if ($("#username").val() == "") {
@ -53,7 +53,7 @@ function onlogin(data, txtStatus) {
// Clear password field regardless of what happens
$("#password").val("");
if (data.authenticated == "yes") {
$("#logstatus").text("Logged in successfully");
$("#logstatus").text("Login successful");
$("#logdialog").dialog("close");
// Remembered what page they were trying to go to