Cleaned up code.

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@8190 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
phamt 2010-11-17 18:53:40 +00:00
parent a765de7482
commit 86c033ce2c
14 changed files with 561 additions and 597 deletions

View File

@ -1,4 +1,4 @@
/***************** Dialogs *****************/
/*--------------- Dialogs ---------------*/
.ui-dialog input {
border: solid 1px #BDBDBD;
font: 12px verdana, arial, helvetica, sans-serif;
@ -12,7 +12,7 @@
font: 12px verdana, arial, helvetica, sans-serif;
}
/***************** Tooltip *****************/
/*--------------- Tooltip ---------------*/
.tooltip {
background-color: #000;
border: 1px solid #fff;
@ -31,7 +31,7 @@
margin: 0px;
}
/****************** Header ******************/
/*--------------- Header ---------------*/
#header {
height: 40px;
width: 1000px;
@ -107,7 +107,7 @@
display: block;
}
/****************** Content section ******************/
/*--------------- Body and content ---------------*/
body {
background-color: #1C1C1C;
font: 12px verdana, arial, helvetica, sans-serif;
@ -124,7 +124,7 @@ body {
overflow: auto;
}
/****************** Groups section ******************/
/*--------------- Groups ---------------*/
#groups {
width: 150px;
vertical-align: top;
@ -158,14 +158,14 @@ body {
color: #FF0000;
}
/****************** Nodes section ******************/
/*--------------- Nodes section ---------------*/
#nodes {
width: 700px;
margin: 20px;
display: inline-table;
}
/****************** Info/warning bar ******************/
/*--------------- Info/warning bar ---------------*/
span.ui-icon-info {
float: left;
margin-right: 0.3em;
@ -193,7 +193,7 @@ span.ui-icon-info {
50% 50% repeat-x;
}
/****************** Tabs ******************/
/*--------------- jQuery tabs ---------------*/
.tab {
font: 12px verdana, arial, helvetica, sans-serif;
border-style: none;
@ -214,7 +214,7 @@ span.ui-icon-info {
cursor: pointer;
}
/****************** Inventory and user entry ******************/
/*--------------- Inventory and user entry ---------------*/
.tab table {
border-width: 1px;
border-spacing: 0px;
@ -292,7 +292,7 @@ legend {
height: 300px;
}
/****************** Action bar ******************/
/*--------------- Actions bar ---------------*/
.actionBar {
display: inline-table;
}
@ -317,7 +317,7 @@ legend {
margin: 0;
}
/****************** Status bar ******************/
/*--------------- Status bar ---------------*/
.statusBar {
border: solid 1px #F5D0A9;
-moz-border-radius: .5em;
@ -333,7 +333,7 @@ legend {
word-wrap: break-word;
}
/****************** Info bar ******************/
/*--------------- Info bar ---------------*/
.infoBar {
border: solid 1px #D8D8D8;
padding: 0px 10px;
@ -351,7 +351,7 @@ legend {
word-wrap: break-word;
}
/****************** Datatable ******************/
/*--------------- jQuery datatable ---------------*/
.dataTables_wrapper {
overflow: auto;
width: 700px;
@ -461,7 +461,7 @@ legend {
color: #FF0000;
}
/****************** Editable column ******************/
/*--------------- Editable column ---------------*/
.tab .datatable textarea {
font: 12px verdana, arial, helvetica, sans-serif;
border: solid 1px #BDBDBD;
@ -483,7 +483,7 @@ legend {
background-color: #E6E6E6;
}
/****************** Context menu ******************/
/*--------------- jQuery context menu ---------------*/
.context-menu-theme-vista {
background: #FAFAFA url(../images/context-menu-bg.gif) repeat-y left top
;
@ -530,7 +530,7 @@ legend {
color: #A7A7A7;
}
/****************** Forms ******************/
/*--------------- Forms ---------------*/
.form label {
color: #424242;
line-height: 1.5;
@ -597,7 +597,7 @@ table a:hover {
border: solid 1px #d4d4d4;
}
/****************** Provision disk table ******************/
/*--------------- Provision disk table ---------------*/
.provision table {
border-width: 1px;
border-spacing: 0px;
@ -614,7 +614,7 @@ table a:hover {
width: 60px;
}
/****************** Provision and clone table ******************/
/*--------------- Provision and clone table ---------------*/
.special table {
border-width: 1px;
border-spacing: 0px;
@ -630,7 +630,7 @@ table a:hover {
padding: 3px;
}
/****************** Provision and monitor forms ******************/
/*--------------- Provision and monitor forms ---------------*/
.provision div,.monitor div {
margin: 10px 0;
display: block;
@ -658,7 +658,7 @@ table a:hover {
margin: 0px 0px 15px 0px;
}
/****************** Physical layout section ******************/
/*--------------- Physical layout section ---------------*/
.frameDiv {
width: 179px;
height: 500px;

View File

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -15,36 +15,4 @@ if (!isAuthenticated()) {
} else {
loadContent();
}
/**
* Test lib/cmd.php
*/
function testCmdPhp() {
$xml = docmd('rinv', 'gpok6', array('all'));
$rsp = array();
foreach ($xml->children() as $child) {
foreach ($child->children() as $data) {
if($data->name) {
$node = $data->name;
if($data->data->contents){
$cont = $data->data->contents;
}
else{
$cont = $data->data;
}
$cont = str_replace(":|:", "\n", $cont);
array_push($rsp, "$node: $cont");
} else if(strlen("$data") > 2) {
$data = str_replace(":|:", "\n", $data);
array_push($rsp, "$data");
}
}
}
$rtn = array("rsp" => $rsp, "msg" => '');
echo json_encode($rtn);
}
?>

View File

@ -1,296 +1,323 @@
/**
* Load update page
*
*
* @return Nothing
*/
function loadUpdatePage() {
var repositoryDiv = $('<div id="repository"></div>');
var rpmDiv = $('<div id="rpm"></div>');
var statusDiv = createStatusBar("update");
statusDiv.hide();
$('#updateTab').append(statusDiv);
function loadUpdatePage() {
var repositoryDiv = $('<div id="repository"></div>');
var rpmDiv = $('<div id="rpm"></div>');
var statusDiv = createStatusBar("update");
statusDiv.hide();
$('#updateTab').append(statusDiv);
$('#updateTab').append('<br>');
$('#updateTab').append(repositoryDiv);
$('#updateTab').append(rpmDiv);
var infoBar = createInfoBar('Select the RPM and repository, then press Update');
repositoryDiv.append(infoBar);
repositoryDiv.append("<fieldset><legend>Repository</legend></fieldset>");
$('#updateTab').append(repositoryDiv);
$('#updateTab').append(rpmDiv);
$.ajax({
url : 'lib/systemcmd.php',
dataType : 'json',
data : {
cmd : 'ostype'
},
var infoBar = createInfoBar('Select the RPM and repository, then press Update');
repositoryDiv.append(infoBar);
success : showRepository
});
repositoryDiv.append("<fieldset><legend>Repository</legend></fieldset>");
rpmDiv.append("<fieldset></fieldset>");
$.ajax( {
url : 'lib/systemcmd.php',
dataType : 'json',
data : {
cmd : 'ostype'
},
$.ajax({
url: 'lib/systemcmd.php',
dataType : 'json',
data : {
cmd : 'rpm -q xCAT-client perl-xCAT xCAT-server xCAT xCAT-rmc xCAT-UI'
},
success : showRepository
});
success : showRpmInfo
});
rpmDiv.append("<fieldset></fieldset>");
$.ajax( {
url : 'lib/systemcmd.php',
dataType : 'json',
data : {
cmd : 'rpm -q xCAT-client perl-xCAT xCAT-server xCAT xCAT-rmc xCAT-UI'
},
success : showRpmInfo
});
}
/**
* Show the RPM Repository, it can use user's last choice and input
*
*
* @param data
* Data returned from HTTP request
* @return Nothing
*/
function showRepository(data) {
var DevelRepository = "";
var StableRepository = "";
var Show = "";
var DevelRepository = "";
var StableRepository = "";
var Show = "";
// 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/";
} else {
DevelRepository = "http://xcat.sourceforge.net/yum/devel/xcat-core/";
StableRepository = "http://xcat.sourceforge.net/yum/xcat-core/";
}
// 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/";
} else {
DevelRepository = "http://xcat.sourceforge.net/yum/devel/xcat-core/";
StableRepository = "http://xcat.sourceforge.net/yum/xcat-core/";
}
var repoList = $('<ol></ol>');
//display the Devel Repository, remember user's last selection
Show = Show + "<li><input type='radio' ";
if (1 == $.cookie('xcatrepository')) {
Show = Show + "checked='true'";
}
var repoList = $('<ol></ol>');
Show = Show + "name='reporadio' value='" + DevelRepository + "'>";
Show = Show + DevelRepository + "(<strong>Devel</strong>)</li>";
// display the Devel Repository, remember user's last selection
Show = Show + "<li><input type='radio' ";
if (1 == $.cookie('xcatrepository')) {
Show = Show + "checked='true'";
}
repoList.append(Show);
Show = Show + "name='reporadio' value='" + DevelRepository + "'>";
Show = Show + DevelRepository + "(<strong>Devel</strong>)</li>";
//display the Stable Repository, remember user's last selection
Show = "<li><input type='radio' ";
if (2 == $.cookie('xcatrepository')) {
Show = Show + "checked='true'";
}
repoList.append(Show);
Show = Show + "name='reporadio' value='" + StableRepository + "'>";
Show = Show + StableRepository + "(<strong>Stable</strong>)</li>";
// display the Stable Repository, remember user's last selection
Show = "<li><input type='radio' ";
if (2 == $.cookie('xcatrepository')) {
Show = Show + "checked='true'";
}
repoList.append(Show);
Show = Show + "name='reporadio' value='" + StableRepository + "'>";
Show = Show + StableRepository + "(<strong>Stable</strong>)</li>";
//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>";
} else {
Show = "<li><input type='radio' name='reporadio' value=''>Other: ";
Show += "<input style='width: 500px' id='repositoryaddr' value=''</li>";
}
repoList.append(Show);
repoList.append(Show);
$('#repository fieldset').append(repoList);
// 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>";
} else {
Show = "<li><input type='radio' name='reporadio' value=''>Other: ";
Show += "<input style='width: 500px' id='repositoryaddr' value=''</li>";
}
repoList.append(Show);
$('#repository fieldset').append(repoList);
}
/**
* Show all xCAT RPMs
*
* @param data
* Data returned from HTTP request
* @return Nothing
*/
function showRpmInfo(data) {
var Rpms = null;
var Show = "";
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("Get Rpm Info Error!");
return;
}
var Rpms = null;
var Show = "";
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("Get Rpm Info Error!");
return;
}
Rpms = data.rsp.split(/\n/);
// no rpm installed, return
if (1 > Rpms.length) {
$('#rpm fieldset').append("No Rpm installed!");
return;
}
Rpms = data.rsp.split(/\n/);
// no rpm installed, return
if (1 > Rpms.length) {
$('#rpm fieldset').append("No Rpm installed!");
return;
}
// clear the old data
$('#rpm fieldset').children().remove();
$('#rpm fieldset').append("<legend>xCAT Rpm Info</legend>");
Show = "<table id=rpmtable >";
Show += "<thead><tr>";
Show += "<th><input type='checkbox' id='selectall' value='' onclick='updateSelectAll()'></th>";
Show += "<th><b>Package Name</b></th><th><b>Version</b></th>";
Show += "</tr></thead>";
// clear the old data
$('#rpm fieldset').children().remove();
$('#rpm fieldset').append("<legend>xCAT Rpm Info</legend>");
for (temp = 0; temp < Rpms.length; temp++) {
// empty line continue
if ("" == Rpms[temp]) {
continue;
}
Show = "<table id=rpmtable >";
Show += "<thead><tr>";
Show += "<th><input type='checkbox' id='selectall' value='' onclick='updateSelectAll()'></th>";
Show += "<th><b>Package Name</b></th><th><b>Version</b></th>";
Show += "</tr></thead>";
// the rpm is not installed, continue
if (-1 != Rpms[temp].indexOf("not")) {
continue;
}
for (temp = 0; temp < Rpms.length; temp++) {
// empty line continue
if ("" == Rpms[temp]) {
continue;
}
// 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 += "</tr>";
}
Show += "</table>";
Show += "<br\>";
$('#rpm fieldset').append(Show);
// the rpm is not installed, continue
if (-1 != Rpms[temp].indexOf("not")) {
continue;
}
// add the update button
var updateButton = createButton('Update');
$('#rpm fieldset').append(updateButton);
updateButton.bind('click', function(){
updateRpm();
});
// 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 += "</tr>";
}
Show += "</table>";
Show += "<br\>";
$('#rpm fieldset').append(Show);
// add the update button
var updateButton = createButton('Update');
$('#rpm fieldset').append(updateButton);
updateButton.bind('click', function() {
updateRpm();
});
}
/**
* Select all checkboxes
*
* @return Nothing
*/
function updateSelectAll() {
var check_status = $('#selectall').attr('checked');
$('input:checkbox').attr('checked', check_status);
var check_status = $('#selectall').attr('checked');
$('input:checkbox').attr('checked', check_status);
}
/**
* Update selected xCAT RPMs
*
* @return Nothing
*/
function updateRpm() {
// Remove any warning messages
$('#updateTab').find('.ui-state-error').remove();
var rpmPath = $('input[type=radio]:checked').val();
var rpmPathType = "0";
var rpms = "";
var temp = "";
if (undefined == rpmPath) {
rpmPath = "";
}
var rpmPath = $('input[type=radio]:checked').val();
var rpmPathType = "0";
var rpms = "";
var temp = "";
// 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();
rpmPathType = rpmPath;
} else {
if(-1 == rpmPath.toLowerCase().indexOf("devel")) {
rpmPathType = "2";
} else {
rpmPathType = "1";;
}
}
if (undefined == rpmPath) {
rpmPath = "";
}
$("input[type=checkbox]:checked").each(function(){
temp = $(this).val();
if("" == temp) {
//continue;
return true;
}
var pattern = new RegExp("^" + temp + ",|," + temp + ",");;
if (pattern.test(rpms)) {
return true;
}
rpms = rpms + temp + ",";
});
// 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();
rpmPathType = rpmPath;
} else {
if (-1 == rpmPath.toLowerCase().indexOf("devel")) {
rpmPathType = "2";
} else {
rpmPathType = "1";
;
}
}
if (0 < rpms.length) {
rpms = rpms.slice(0, -1);
}
// Check RPM and repository
var errMsg = '';
if (!rpms) {
errMsg = "Please select the rpm!<br>";
}
$("input[type=checkbox]:checked").each(function() {
temp = $(this).val();
if ("" == temp) {
return true;
}
if (!rpmPath) {
errMsg += "Please select or input the repository!";
}
if (!rpms || !rpmPath) {
// Show warning message
var warn = createWarnBar(errMsg);
warn.prependTo($('#updateTab'));
return;
}
var pattern = new RegExp("^" + temp + ",|," + temp + ",");
// remember users' choice and input
$.cookie('xcatrepository', rpmPathType, { path: '/xcat', expires: 10 });
if (pattern.test(rpms)) {
return true;
}
rpms = rpms + temp + ",";
});
$('#update').show();
$('#update').empty();
$('#update').append("<p>Updating <b>" + rpms + "</b> from <b>" + rpmPath + "</b></p>");
$('#update').append("<img id='loadingpic' src='images/loader.gif'>");
$('#rpm button').attr('disabled', 'true');
if (0 < rpms.length) {
rpms = rpms.slice(0, -1);
}
// send the update command to server
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
data : {
cmd : 'webrun',
tgt : '',
args : 'update;' + rpms + ";" + rpmPath,
msg : ''
},
// Check RPM and repository
var errMsg = '';
if (!rpms) {
errMsg = "Please select the rpm!<br>";
}
success : ShowUpdateResult
});
if (!rpmPath) {
errMsg += "Please select or input the repository!";
}
if (!rpms || !rpmPath) {
// Show warning message
var warn = createWarnBar(errMsg);
warn.prependTo($('#updateTab'));
return;
}
// remember users' choice and input
$.cookie('xcatrepository', rpmPathType, {
path : '/xcat',
expires : 10
});
$('#update').show();
$('#update').empty();
$('#update').append("<p>Updating <b>" + rpms + "</b> from <b>" + rpmPath + "</b></p>");
$('#update').append("<img id='loadingpic' src='images/loader.gif'>");
$('#rpm button').attr('disabled', 'true');
// send the update command to server
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
data : {
cmd : 'webrun',
tgt : '',
args : 'update;' + rpms + ";" + rpmPath,
msg : ''
},
success : ShowUpdateResult
});
}
/**
* Show the results of the RPM update
*
* @param data
* Data returned from HTTP request
* @return Nothing
*/
function ShowUpdateResult(data) {
var temp = 0;
var temp = 0;
$('#loadingpic').remove();
var resArray = data.rsp[0].split(/\n/);
if (0 < resArray.length) {
// Show last lines
if (('' == resArray[resArray.length - 1]) && (resArray.length > 1)){
$('#update').append(resArray[resArray.length - 2]);
}
else {
$('#update').append(resArray[resArray.length - 1]);
}
// Create link to show details
$('#update').append('<br><a>Show details</a>');
$('#update a').bind('click', function(){
// Toggle details and change text
$('#resDetail').toggle();
if ($('#update a').text() == 'Show details') {
$('#update a').text('Hide details');
} else {
$('#update a').text('Show details');
}
});
var resDetail = $('<div id="resDetail"></div>');
resDetail.hide();
$('#update').append(resDetail);
for (temp = 0; temp < resArray.length; temp++) {
resDetail.append(resArray[temp] + "<br>");
}
}
//update the rpm info
$.ajax({
url: 'lib/systemcmd.php',
dataType : 'json',
data : {
cmd : 'rpm -q xCAT-client perl-xCAT xCAT-server xCAT xCAT-rmc xCAT-UI'
},
success : showRpmInfo
});
$('#rpm button').attr('disabled', '');
var resArray = data.rsp[0].split(/\n/);
if (0 < resArray.length) {
// Show last lines
if (('' == resArray[resArray.length - 1]) && (resArray.length > 1)) {
$('#update').append(resArray[resArray.length - 2]);
} else {
$('#update').append(resArray[resArray.length - 1]);
}
// Create link to show details
$('#update').append('<br><a>Show details</a>');
$('#update a').bind('click', function() {
// Toggle details and change text
$('#resDetail').toggle();
if ($('#update a').text() == 'Show details') {
$('#update a').text('Hide details');
} else {
$('#update a').text('Show details');
}
});
var resDetail = $('<div id="resDetail"></div>');
resDetail.hide();
$('#update').append(resDetail);
for (temp = 0; temp < resArray.length; temp++) {
resDetail.append(resArray[temp] + "<br>");
}
}
// update the rpm info
$.ajax( {
url : 'lib/systemcmd.php',
dataType : 'json',
data : {
cmd : 'rpm -q xCAT-client perl-xCAT xCAT-server xCAT xCAT-rmc xCAT-UI'
},
success : showRpmInfo
});
$('#rpm button').attr('disabled', '');
}

View File

@ -43,7 +43,7 @@ zvmPlugin.prototype.loadClonePage = function(node) {
// Get hardware control point
var nodeRow = $('#' + node).parent().parent();
var dTable = getNodesDataTable();
var dTable = $('#nodesDataTable').dataTable();
var rowPos = dTable.fnGetPosition(nodeRow.get(0));
var aData = dTable.fnGetData(rowPos);
var hcp = aData[hcpCol];

View File

@ -6,7 +6,7 @@
function loadGangliaMon() {
// Get Ganglia tab
var gangliaTab = $('#gangliamon');
// Check whether Ganglia RPMs are installed on the xCAT MN
$.ajax( {
url : 'lib/systemcmd.php',
@ -17,7 +17,7 @@ function loadGangliaMon() {
success : checkGangliaRPMs
});
// Create groups and nodes DIV
var groups = $('<div id="groups"></div>');
var nodes = $('<div id="nodes"></div>');
@ -54,7 +54,7 @@ function loadGangliaMon() {
*/
function checkGangliaRPMs(data) {
var gangliaTab = $('#gangliamon');
// Get the list of Ganglia RPMs installed
var status = data.rsp.split(/\n/);
var gangliaRPMs = [ "rrdtool", "ganglia-gmetad", "ganglia-gmond", "ganglia-web" ];
@ -66,11 +66,11 @@ function checkGangliaRPMs(data) {
missingRPMs = true;
}
}
// Append Ganglia PDF
if (missingRPMs) {
warningMsg += ". Refer to <a href='http://xcat.svn.sourceforge.net/viewvc/xcat/xcat-core/trunk/xCAT-client/share/doc/xCAT2-Monitoring.pdf'>xCAT2-Monitoring.pdf</a> for more information.";
var warningBar = createWarnBar(warningMsg);
warningBar.css('margin-bottom', '10px');
warningBar.prependTo(gangliaTab);
@ -96,37 +96,37 @@ function checkGangliaRPMs(data) {
success : function(data) {
if (data.rsp[0].indexOf("not-monitored") > -1) {
// Create link to start Ganglia
var startLnk = $('<a href="#">Click here</a>');
startLnk.css( {
'color' : 'blue',
'text-decoration' : 'none'
});
startLnk.click(function() {
// Turn on Ganglia for all nodes
monitorNode('', 'on');
});
var startLnk = $('<a href="#">Click here</a>');
startLnk.css( {
'color' : 'blue',
'text-decoration' : 'none'
});
startLnk.click(function() {
// Turn on Ganglia for all nodes
monitorNode('', 'on');
});
// Create warning bar
var warningBar = $('<div class="ui-state-error ui-corner-all"></div>');
var msg = $('<p></p>');
msg.append('<span class="ui-icon ui-icon-alert"></span>');
msg.append('Please start Ganglia Monitoring on xCAT. ');
msg.append(startLnk);
msg.append(' to start Ganglia Monitoring.');
warningBar.append(msg);
warningBar.css('margin-bottom', '10px');
// If there are any warning messages, append this warning after it
var curWarnings = $('#gangliamon').find('.ui-state-error');
var gangliaTab = $('#gangliamon');
if (curWarnings.length) {
curWarnings.after(warningBar);
} else {
warningBar.prependTo(gangliaTab);
}
}
// Create warning bar
var warningBar = $('<div class="ui-state-error ui-corner-all"></div>');
var msg = $('<p></p>');
msg.append('<span class="ui-icon ui-icon-alert"></span>');
msg.append('Please start Ganglia Monitoring on xCAT. ');
msg.append(startLnk);
msg.append(' to start Ganglia Monitoring.');
warningBar.append(msg);
warningBar.css('margin-bottom', '10px');
// If there are any warning messages, append this warning after it
var curWarnings = $('#gangliamon').find('.ui-state-error');
var gangliaTab = $('#gangliamon');
if (curWarnings.length) {
curWarnings.after(warningBar);
} else {
warningBar.prependTo(gangliaTab);
}
});
}
}
});
}
return;
}
@ -141,7 +141,7 @@ function checkGangliaRPMs(data) {
function loadGroups4Ganglia(data) {
// Remove loader
$('#groups').find('img').remove();
var groups = data.rsp;
setGroupsCookies(data);
@ -163,21 +163,24 @@ function loadGroups4Ganglia(data) {
// Turn groups list into a tree
$('#groups').append(ul);
$('#groups').jstree( {
core : { "initially_open" : [ "root" ] },
core : {
"initially_open" : [ "root" ]
},
themes : {
"theme" : "default",
"dots" : false, // No dots
"icons" : false // No icons
"dots" : false, // No dots
"icons" : false // No icons
}
});
// Load nodes onclick
$('#groups').bind('select_node.jstree', function(event, data) {
var thisGroup = jQuery.trim(data.rslt.obj.text());
if (thisGroup) {
// Clear nodes division
$('#groups')
.bind('select_node.jstree', function(event, data) {
var thisGroup = jQuery.trim(data.rslt.obj.text());
if (thisGroup) {
// Clear nodes division
$('#nodes').children().remove();
// Create link to Ganglia
var gangliaLnk = $('<a href="#">click here</a>');
gangliaLnk.css( {
@ -193,7 +196,8 @@ function loadGroups4Ganglia(data) {
var info = $('<div class="ui-state-highlight ui-corner-all"></div>');
var msg = $('<p></p>');
msg.append('<span class="ui-icon ui-icon-info"></span>');
msg.append('Review the nodes that are monitored by Ganglia. You can turn on Ganglia monitoring on a node by selecting it and clicking on Monitor. If you are satisfied with the nodes you want to monitor, ');
msg
.append('Review the nodes that are monitored by Ganglia. You can turn on Ganglia monitoring on a node by selecting it and clicking on Monitor. If you are satisfied with the nodes you want to monitor, ');
msg.append(gangliaLnk);
msg.append(' to open Ganglia page.');
info.append(msg);
@ -209,7 +213,7 @@ function loadGroups4Ganglia(data) {
tab.init();
$('#nodes').append(tab.object());
tab.add('nodesTab', 'Nodes', loader, false);
// Get nodes within selected group
$.ajax( {
url : 'lib/cmd.php',
@ -223,25 +227,25 @@ function loadGroups4Ganglia(data) {
success : loadNodes4Ganglia
});
// Get subgroups within selected group
// only when this is the parent group and not a subgroup
if (data.rslt.obj.attr('id').indexOf('Subgroup') < 0) {
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
data : {
cmd : 'extnoderange',
tgt : thisGroup,
args : 'subgroups',
msg : thisGroup
},
success : loadSubgroups
});
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
data : {
cmd : 'extnoderange',
tgt : thisGroup,
args : 'subgroups',
msg : thisGroup
},
success : loadSubgroups
});
}
} // End of if (thisGroup)
});
} );
}
/**
@ -342,9 +346,7 @@ function loadNodes4Ganglia(data) {
*/
var powerLnk = $('<a>Power</a>');
/*
* Power on
*/
// Power on
var powerOnLnk = $('<a>Power on</a>');
powerOnLnk.bind('click', function(event) {
var tgtNodes = getNodesChecked('nodesDataTable');
@ -353,9 +355,7 @@ function loadNodes4Ganglia(data) {
}
});
/*
* Power off
*/
// Power off
var powerOffLnk = $('<a>Power off</a>');
powerOffLnk.bind('click', function(event) {
var tgtNodes = getNodesChecked('nodesDataTable');
@ -378,10 +378,8 @@ function loadNodes4Ganglia(data) {
}
});
/*
* Turn monitoring on
*/
// Turn monitoring on
var monitorOnLnk = $('<a>Monitor on</a>');
monitorOnLnk.bind('click', function(event) {
var tgtNodes = getNodesChecked('nodesDataTable');
@ -390,9 +388,7 @@ function loadNodes4Ganglia(data) {
}
});
/*
* Turn monitoring off
*/
// Turn monitoring off
var monitorOffLnk = $('<a>Monitor off</a>');
monitorOffLnk.bind('click', function(event) {
var tgtNodes = getNodesChecked('nodesDataTable');
@ -400,7 +396,7 @@ function loadNodes4Ganglia(data) {
monitorNode(tgtNodes, 'off');
}
});
// Power actions
var monitorActions = [ monitorOnLnk, monitorOffLnk ];
var monitorActionMenu = createMenu(monitorActions);
@ -480,7 +476,7 @@ function loadNodes4Ganglia(data) {
success : loadPingStatus
});
// Get the status of Ganglia
$.ajax( {
url : 'lib/cmd.php',
@ -505,7 +501,7 @@ function loadNodes4Ganglia(data) {
*/
function loadGangliaStatus(data) {
// Get datatable
var dTable = getNodesDataTable();
var dTable = $('#nodesDataTable').dataTable();
var ganglia = data.rsp;
var rowNum, node, status, args;
@ -520,7 +516,7 @@ function loadGangliaStatus(data) {
// Update the power status column
dTable.fnUpdate(status, rowNum, 4);
}
// Hide Ganglia loader
var gangliaCol = $('#nodesDataTable thead tr th').eq(4);
gangliaCol.find('img').hide();
@ -537,7 +533,7 @@ function refreshGangliaStatus(group) {
// Show ganglia loader
var gangliaCol = $('#nodesDataTable thead tr th').eq(4);
gangliaCol.find('img').show();
// Get the status of Ganglia
$.ajax( {
url : 'lib/cmd.php',
@ -564,7 +560,7 @@ function refreshGangliaStatus(group) {
*/
function monitorNode(node, monitor) {
var args;
if (monitor == 'on') {
// Append loader to warning bar
var gangliaLoader = createLoader('');
@ -572,13 +568,13 @@ function monitorNode(node, monitor) {
if (warningBar.length) {
warningBar.append(gangliaLoader);
}
if (node) {
args = 'gangliastart;' + node;
} else {
args = 'gangliastart';
}
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
@ -600,7 +596,7 @@ function monitorNode(node, monitor) {
} else {
args = 'gangliastop';
}
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',

View File

@ -1,36 +1,36 @@
var hardwareInfo = {
'7037-A50' : ['P5-185', '5' ],
'9115-505' : ['P5-505', '1' ],
'9110-510' : ['P5-510', '2' ],
'9110-51A' : ['P5-510', '2' ],
'9111-520' : ['P5-520', '4' ],
'913A-52A' : ['P5-52A', '4' ],
'9113-550' : ['P5-550', '4' ],
'9133-55A' : ['P5-55A', '4' ],
'9116-561' : ['P5-560Q', '4' ],
'9117-570' : ['P5-570', '4' ],
'9118-575' : ['P5-575', '42'],
'9119-590' : ['P5-590', '42'],
'9119-595' : ['P5-595', '42'],
'7037-A50' : [ 'P5-185', '5' ],
'9115-505' : [ 'P5-505', '1' ],
'9110-510' : [ 'P5-510', '2' ],
'9110-51A' : [ 'P5-510', '2' ],
'9111-520' : [ 'P5-520', '4' ],
'913A-52A' : [ 'P5-52A', '4' ],
'9113-550' : [ 'P5-550', '4' ],
'9133-55A' : [ 'P5-55A', '4' ],
'9116-561' : [ 'P5-560Q', '4' ],
'9117-570' : [ 'P5-570', '4' ],
'9118-575' : [ 'P5-575', '42' ],
'9119-590' : [ 'P5-590', '42' ],
'9119-595' : [ 'P5-595', '42' ],
//P6
'8203-E4A' : ['P6-520', '4' ],
'9407-M15' : ['P6-520', '4' ],
'9408-M25' : ['P6-520', '4' ],
'8204-E8A' : ['P6-550', '4' ],
'9409-M50' : ['P6-550', '4' ],
'8234-EMA' : ['P6-560', '4' ],
'9117-MMA' : ['P6-570', '4' ],
'9125-F2A' : ['P6-575', '42'],
'9119-FHA' : ['P6-595', '42'],
// P6
'8203-E4A' : [ 'P6-520', '4' ],
'9407-M15' : [ 'P6-520', '4' ],
'9408-M25' : [ 'P6-520', '4' ],
'8204-E8A' : [ 'P6-550', '4' ],
'9409-M50' : [ 'P6-550', '4' ],
'8234-EMA' : [ 'P6-560', '4' ],
'9117-MMA' : [ 'P6-570', '4' ],
'9125-F2A' : [ 'P6-575', '42' ],
'9119-FHA' : [ 'P6-595', '42' ],
//P7
'8202-E4B' : ['P7-720', '4' ],
'8205-E6B' : ['P7-740', '4' ],
'8231-E2B' : ['P7-710/730', '2' ],
'8233-E8B' : ['P7-750', '4' ],
'8236-E8C' : ['P7-755', '4' ],
'9117-MMB' : ['P7-770', '4' ],
'9119-FHB' : ['P7-795', '42'],
'9179-MHB' : ['P7-780', '42']
// P7
'8202-E4B' : [ 'P7-720', '4' ],
'8205-E6B' : [ 'P7-740', '4' ],
'8231-E2B' : [ 'P7-710/730', '2' ],
'8233-E8B' : [ 'P7-750', '4' ],
'8236-E8C' : [ 'P7-755', '4' ],
'9117-MMB' : [ 'P7-770', '4' ],
'9119-FHB' : [ 'P7-795', '42' ],
'9179-MHB' : [ 'P7-780', '42' ]
};

View File

@ -2,7 +2,6 @@
* Global variables
*/
var nodesTabs; // Node tabs
var nodesDataTable; // Datatable containing all nodes within a group
var origAttrs = new Object(); // Original node attributes
/**
@ -26,27 +25,6 @@ function getNodesTab() {
return nodesTabs;
}
/**
* Get the nodes datatable
*
* @param Nothing
* @return Data table object
*/
function getNodesDataTable() {
return nodesDataTable;
}
/**
* Set the nodes datatable
*
* @param table
* Data table object
* @return Nothing
*/
function setNodesDataTable(table) {
nodesDataTable = table;
}
/**
* Load nodes page
*
@ -189,6 +167,7 @@ function loadGroups(data) {
});
}
// Get physical layout
$.ajax({
url : 'lib/cmd.php',
dataType : 'json',
@ -267,7 +246,7 @@ function loadGroups(data) {
addNodeLink.tooltip({
position: "center right", // Place tooltip on the right edge
offset: [-2, 10], // A little tweaking of the position
effect: "fade", // Use the built-in fadeIn/fadeOut effect
effect: "fade", // Use the built-in fadeIn/fadeOut effect
opacity: 0.7 // Custom opacity setting
});
@ -317,7 +296,7 @@ function loadNodes(data) {
// Node attributes
var headers = new Object();
// Clear cookie containing list of nodes where
// Clear cookie containing list of nodes where
// their attributes need to be updated
$.cookie('Nodes2Update', '');
// Clear hash table containing node attributes
@ -414,7 +393,8 @@ function loadNodes(data) {
position: "center right", // Place tooltip on the right edge
offset: [-2, 10], // A little tweaking of the position
relative: true,
effect: "fade", // Use the built-in fadeIn/fadeOut effect
effect: "fade", // Use the built-in fadeIn/fadeOut
// effect
opacity: 0.8 // Custom opacity setting
});
@ -626,7 +606,6 @@ function loadNodes(data) {
var myDataTable = $('#nodesDataTable').dataTable({
'iDisplayLength': 50
});
setNodesDataTable(myDataTable);
// Do not sort ping, power, and comment column
var pingCol = $('#nodesDataTable thead tr th').eq(2);
@ -662,7 +641,7 @@ function loadNodes(data) {
var colPos = this.cellIndex;
// Get row index
var dTable = getNodesDataTable();
var dTable = $('#nodesDataTable').dataTable();
var rowPos = dTable.fnGetPosition(this.parentNode);
// Update datatable
@ -679,7 +658,8 @@ 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
@ -765,7 +745,7 @@ function loadNodes(data) {
*/
function loadPowerStatus(data) {
// Get datatable
var dTable = getNodesDataTable();
var dTable = $('#nodesDataTable').dataTable();
var power = data.rsp;
var rowNum, node, status, args;
@ -823,7 +803,7 @@ function refreshPowerStatus(group) {
*/
function loadPingStatus(data) {
// Get data table
var dTable = getNodesDataTable();
var dTable = $('#nodesDataTable').dataTable();
var ping = data.rsp;
var rowPos, node, status;
@ -990,7 +970,7 @@ function loadUnlockPage(tgtNodes) {
unlockForm.find('div input[title]').tooltip({
position: "center right", // Place tooltip on the right edge
offset: [-2, 10], // A little tweaking of the position
effect: "fade", // Use the built-in fadeIn/fadeOut effect
effect: "fade", // Use the built-in fadeIn/fadeOut effect
opacity: 0.7 // Custom opacity setting
});
@ -1094,7 +1074,7 @@ function loadScriptPage(tgtNodes) {
scriptForm.find('div input[title]').tooltip({
position: "center right", // Place tooltip on the right edge
offset: [-2, 10], // A little tweaking of the position
effect: "fade", // Use the built-in fadeIn/fadeOut effect
effect: "fade", // Use the built-in fadeIn/fadeOut effect
opacity: 0.7 // Custom opacity setting
});
@ -1311,7 +1291,7 @@ function updateStatusBar(data) {
$('#' + statBarId).append(prg);
} else if (cmd == 'rmvm') {
// Get data table
var dTable = getNodesDataTable();
var dTable = $('#nodesDataTable').dataTable();
var failed = false;
// Hide loader
@ -1404,7 +1384,7 @@ function formComplete(tabId) {
*/
function updatePowerStatus(data) {
// Get datatable
var dTable = getNodesDataTable();
var dTable = $('#nodesDataTable').dataTable();
// Get all nodes within the datatable
var rows = dTable.fnGetNodes();
@ -1489,7 +1469,7 @@ function runScript(inst) {
* @param node
* The node
* @param attrName
* The attribute
* The attribute
* @return The attribute of the node
*/
function getNodeAttr(node, attrName) {
@ -1508,7 +1488,7 @@ function getNodeAttr(node, attrName) {
}
}
// If the column containing the attribute is found
// If the column containing the attribute is found
if (attrCol) {
// Get the attribute column index
var attrIndex = attrCol.index();
@ -1624,7 +1604,7 @@ function getNodeRow(tgtNode, rows) {
* Get nodes that are checked in a given datatable
*
* @param datatableId
* The datatable ID
* The datatable ID
* @return Nodes that were checked
*/
function getNodesChecked(datatableId) {
@ -1652,7 +1632,7 @@ function getNodesChecked(datatableId) {
* Get the column index for a given column name
*
* @param colName
* The column name to search
* The column name to search
* @return The index containing the column name
*/
function getColNum(colName){
@ -1671,12 +1651,12 @@ function getColNum(colName){
* Get the row index for a given node name
*
* @param nodeName
* Node name
* Node name
* @return The row index containing the node name
*/
function getRowNum(nodeName){
// Get datatable
var dTable = getNodesDataTable();
var dTable = $('#nodesDataTable').dataTable();
// Get all data from datatable
var data = dTable.fnGetData();
@ -1798,7 +1778,8 @@ function updateNodeAttrs(group) {
begin = out[i].indexOf('(') + 1;
end = out[i].indexOf(')');
// Split the attribute, e.g. Table:nodetype - Key:node - Column:arch
// Split the attribute, e.g. Table:nodetype - Key:node -
// Column:arch
tmp = out[i].substring(begin, end).split('-');
key = jQuery.trim(tmp[2].replace('Column:', ''));
value = jQuery.trim(tmp[0].replace('Table:', ''));
@ -1807,7 +1788,7 @@ function updateNodeAttrs(group) {
}
// Get the nodes datatable
var dTable = getNodesDataTable();
var dTable = $('#nodesDataTable').dataTable();
// Get all nodes within the datatable
var rows = dTable.fnGetNodes();
@ -1872,7 +1853,7 @@ function updateNodeAttrs(group) {
} // End of if
} // End of for
// Clear cookie containing list of nodes where
// Clear cookie containing list of nodes where
// their attributes need to be updated
$.cookie('Nodes2Update', '');
} // End of function
@ -1890,7 +1871,7 @@ function restoreNodeAttrs() {
var nodes = nodesList.split(';');
// Get the nodes datatable
var dTable = getNodesDataTable();
var dTable = $('#nodesDataTable').dataTable();
// Get table headers
var headers = $('#nodesDataTable thead tr th');
// Get all nodes within the datatable
@ -1923,7 +1904,7 @@ function restoreNodeAttrs() {
} // End of if
} // End of for
// Clear cookie containing list of nodes where
// Clear cookie containing list of nodes where
// their attributes need to be updated
$.cookie('Nodes2Update', '');
}

View File

@ -1,10 +1,9 @@
var bpaList;
var fspList;
var lparList;
var nodeList;
var selectNode = new Object();
/**
* extract all nodes userful data into a hash, which is used for creating graphical
*

View File

@ -37,7 +37,7 @@ function loadProvisionPage() {
}
// Create info bar
var infoBar = createInfoBar('Provision a node');
var infoBar = createInfoBar('Provision or re-provision a node on a selected platform');
$('#content').append(infoBar);
// Create provision form
@ -51,7 +51,7 @@ function loadProvisionPage() {
$('#content').append(tab.object());
// Create radio buttons for platforms
var hwList =$('<ol>Select a platform to provision on:</ol>');
var hwList = $('<ol>Select a platform to provision on:</ol>');
var ipmi = $('<li><input type="radio" name="hw" value="ipmi" checked/>ipmi</li>');
var blade = $('<li><input type="radio" name="hw" value="blade"/>blade</li>');
var hmc = $('<li><input type="radio" name="hw" value="hmc"/>hmc</li>');
@ -74,7 +74,7 @@ function loadProvisionPage() {
okBtn.bind('click', function(event) {
// Get hardware that was selected
var hw = $(this).parent().find('input[name="hw"]:checked').val();
// Generate new tab ID
var instance = 0;
var newTabId = hw + 'ProvisionTab' + instance;
@ -88,27 +88,27 @@ function loadProvisionPage() {
// Create an instance of the plugin
var plugin;
switch(hw) {
case "blade":
plugin = new bladePlugin();
break;
case "fsp":
plugin = new fspPlugin();
break;
case "hmc":
plugin = new hmcPlugin();
break;
case "ipmi":
plugin = new ipmiPlugin();
break;
case "ivm":
plugin = new ivmPlugin();
break;
case "zvm":
plugin = new zvmPlugin();
break;
switch (hw) {
case "blade":
plugin = new bladePlugin();
break;
case "fsp":
plugin = new fspPlugin();
break;
case "hmc":
plugin = new hmcPlugin();
break;
case "ipmi":
plugin = new ipmiPlugin();
break;
case "ivm":
plugin = new ivmPlugin();
break;
case "zvm":
plugin = new zvmPlugin();
break;
}
// Select tab
tab.select(newTabId);
plugin.loadProvisionPage(newTabId);

View File

@ -1,71 +1,70 @@
<?php
require_once "functions.php";
require_once "jsonwrapper.php";
$query = '';
$output = '';
$temp = '';
$pythonProcess = '';
if (!isAuthenticated()){
echo ("Please log in firsr.");
require_once "functions.php";
require_once "jsonwrapper.php";
$query = '';
$output = '';
$temp = '';
$pythonProcess = '';
if (!isAuthenticated()){
echo ("Please log in firsr.");
}
$query = 's=' . $_POST['s'] . '&w=' . $_POST['w'] . '&h=' . $_POST['h'];
if (isset($_POST['q'])){
$query .= '&q=1';
}
else{
$query .= '&q=0';
}
if (isset($_POST['f'])){
$pythonProcess = exec('ps -aef | grep -v grep | grep ajaxterm.py');
if ('' == $pythonProcess){
exec('nohup ' . dirname(__FILE__) . '/ajaxterm/ajaxterm.py >/dev/null 2>&1 &');
}
$query = 's=' . $_POST['s'] . '&w=' . $_POST['w'] . '&h=' . $_POST['h'];
if (isset($_POST['q'])){
$query .= '&q=1';
}
else{
$query .= '&q=0';
}
if (isset($_POST['f'])){
$pythonProcess = exec('ps -aef | grep -v grep | grep ajaxterm.py');
if ('' == $pythonProcess){
exec('nohup ' . dirname(__FILE__) . '/ajaxterm/ajaxterm.py >/dev/null 2>&1 &');
}
sleep(1);
$temp = $query . '&k=' . urlencode($_SESSION["username"] . "\r");
$output = rconsSynchronise($temp);
if (0 < substr_count($output, 'error')){
echo json_encode(array('err'=>$output));
exit;
}
sleep(1);
$temp = $query . '&k=' . urlencode(getpassword() . "\r");
$output = rconsSynchronise($temp);
if (0 < substr_count($output, 'error')){
echo json_encode(array('err'=>$output));
exit;
}
sleep(1);
$temp = $query . '&c=1&k=' . urlencode('rcons ' . $_POST['s'] . "\r");
}
else{
$temp = $query . '&c=1&k=' . urlencode($_POST['k']);
}
$output = rconsSynchronise($temp);
sleep(1);
$temp = $query . '&k=' . urlencode($_SESSION["username"] . "\r");
$output = rconsSynchronise($temp);
if (0 < substr_count($output, 'error')){
echo (array('err'=>$output));
echo json_encode(array('err'=>$output));
exit;
}
sleep(1);
$temp = $query . '&k=' . urlencode(getpassword() . "\r");
$output = rconsSynchronise($temp);
if (0 < substr_count($output, 'error')){
echo json_encode(array('err'=>$output));
exit;
}
sleep(1);
$temp = $query . '&c=1&k=' . urlencode('rcons ' . $_POST['s'] . "\r");
}
else{
$temp = $query . '&c=1&k=' . urlencode($_POST['k']);
}
$output = rconsSynchronise($temp);
if (0 < substr_count($output, 'error')){
echo (array('err'=>$output));
}
else{
$xml = simplexml_load_string($output);
if ('pre' == $xml->getName()){
$output = $xml->asXML();
$output = preg_replace('/'. chr(160) . '/', '&nbsp;', $output);
echo json_encode(array('term'=>$output));
}
else{
$xml = simplexml_load_string($output);
if ('pre' == $xml->getName()){
$output = $xml->asXML();
$output = preg_replace('/'. chr(160) . '/', '&nbsp;', $output);
echo json_encode(array('term'=>$output));
}
else{
echo json_encode(array('nc'=>'nc'));
}
echo json_encode(array('nc'=>'nc'));
}
}
function rconsSynchronise($parameter){
$flag = false;
@ -73,29 +72,29 @@ function rconsSynchronise($parameter){
$out = "";
$fp = fsockopen("127.0.0.1", 8022, $errno, $errstr, 30);
if (!$fp) {
return "<error>$errstr($errno)</error>";
return "<error>$errstr($errno)</error>";
}
$out = "GET /u?$parameter HTTP/1.1\r\nHost: 127.0.0.1:8022\r\nConnection: Close\r\n\r\n";
fwrite($fp, $out);
while(!feof($fp)){
$line = fgets($fp,1024);
if (0 == strlen($line)){
continue;
}
if('<' == substr($line, 0, 1)){
$flag = true;
$return .= $line;
break;
}
}
if ($flag){
while(!feof($fp)){
$return .= fgets($fp, 1024);
}
}
$line = fgets($fp,1024);
if (0 == strlen($line)){
continue;
}
if('<' == substr($line, 0, 1)){
$flag = true;
$return .= $line;
break;
}
}
if ($flag){
while(!feof($fp)){
$return .= fgets($fp, 1024);
}
}
return ($return);
return ($return);
}
?>

View File

@ -17,17 +17,17 @@ if (!isAuthenticated()){
}
if (isset($_GET["cmd"])) {
// HTTP GET requests
$cmd = $_GET["cmd"];
$ret = "";
// HTTP GET requests
$cmd = $_GET["cmd"];
$ret = "";
if ("ostype" == $cmd) {
$ret = strtolower(PHP_OS);
}
else {
$ret = shell_exec($cmd);
}
if ("ostype" == $cmd) {
$ret = strtolower(PHP_OS);
}
else {
$ret = shell_exec($cmd);
}
echo json_encode(array("rsp"=>$ret));
echo json_encode(array("rsp"=>$ret));
}
?>

View File

@ -11,7 +11,7 @@ function loadPage(){
'<html>
<head>
<title>xCAT Console</title>
<link rel="shortcut icon" href="favicon.ico">
<link rel="shortcut icon" href="images/favicon.ico">
<link href="css/jquery.autocomplete.css" rel=stylesheet type="text/css">
<link href="css/jquery-ui-1.8.custom.css" rel=stylesheet type="text/css">
<link href="css/jquery.dataTables.css" rel=stylesheet type="text/css">

View File

@ -21,11 +21,10 @@ Requires: python >= 2.3
%ifos linux
# httpd is provided by apache2 on SLES and httpd on RHEL
Requires: httpd
# we also require php4-session on SLES, but this does not exist on RHEL, so do not know how to do the Require
%endif
%description
Provides a browser-based interface for xCAT (extreme Cluster Administration Tool).
Provides a browser-based interface for xCAT (Extreme Cloud Administration Toolkit).
%prep
%setup -q -n xCAT-UI
@ -47,100 +46,96 @@ set -x
%{prefix}/ui
%pre
# the %pre part is used to inspect whether the php-related rpm packages are installed into linux or not
# if they're not installed, the installation of "xCAT-UI" will be failed.
#---------- Pre-install ----------
# Inspect whether PHP related RPM packages are installed
%ifos linux
if [ -e "/etc/redhat-release" ]; then
rpm -q php >/dev/null
if [ $? != 0 ]; then
echo ""
echo "Error! php has not been installed yet;please run 'yum install php' before installing xCAT-UI";
echo "Error! php has not been installed. Please run 'yum install php' before installing xCAT-UI.";
exit -1;
fi
else #SUSE
else # SuSE
rpm -q apache2-mod_php5 php5 >/dev/null
if [ $? != 0 ]; then
echo ""
echo "Error! apache2-mod_php5 and php5 have not been installed yet; please run 'zypper install apache2-mod_php5 php5'before installing xCAT-UI"
echo "Error! apache2-mod_php5 and php5 have not been installed. Please run 'zypper install apache2-mod_php5 php5' before installing xCAT-UI."
exit -1;
fi
fi
%else #on AIX
%else # AIX
if [ -e "/usr/IBM/HTTPServer/conf/httpd.conf" ]; then
echo "Installing xCAT-UI on AIX..."
else
echo ""
echo "Error!"
echo "The IBM HTTP Server is not installed or not installed into the default directory(/usr/IBM/HTTPServer/)"
echo "Error! IBM HTTP Server is not installed or not installed in the default directory (/usr/IBM/HTTPServer/)."
exit -1;
fi
%endif
%post
# Post-install script---------------------------------------------------
#---------- Post-install ----------
# Get apache name
%ifos linux
# Set variables for apache because the names vary on redhat and suse
if [ -e "/etc/redhat-release" ]; then
apachedaemon='httpd'
apacheuser='apache'
else # SuSE
apachedaemon='apache2'
apacheuser='wwwrun'
fi
if [ "$1" = 1 ] # initial install
if [ "$1" = 1 ] # Install
then
# Update the apache config
# Update apache conf
/bin/rm -f /etc/$apachedaemon/conf.d/xcat-ui.conf
/bin/ln -s %{prefix}/ui/etc/apache2/conf.d/xcat-ui.conf /etc/$apachedaemon/conf.d/xcat-ui.conf
/etc/init.d/$apachedaemon reload
# automatically put the encrypted passwd into the xcat passwd db
# Automatically put encrypted password into the xCAT passwd database
%{prefix}/sbin/chtab key=xcat,username=root passwd.password=`grep root /etc/shadow|cut -d : -f 2`
echo "To use xCAT-UI, point your browser to http://"`hostname -f`"/xcat"
fi
if [ "$1" = 1 ] || [ "$1" = 2 ] # initial install, or upgrade and this is the newer rpm
if [ "$1" = 1 ] || [ "$1" = 2 ] # Install or upgrade
then
# Uncomment this if we change xcat-ui.conf again
#/etc/init.d/$apachedaemon reload
# /etc/init.d/$apachedaemon reload
true
fi
%else #on AIX, it's different
%else # AIX
ihs_config_dir='/usr/IBM/HTTPServer/conf'
if [ "$1" = 1 ] #initial install
then
# check if IBM HTTP Server is installed into the default directory or not
# Check if IBM HTTP Server is installed in the default directory
# Update the apache config
echo "Updating ibm http server configuration for xCAT..."
echo "Updating IBM HTTP server configuration for xCAT..."
bin/rm -f /usr/IBM/HTTPServer/conf/xcat-ui.conf
cp /usr/IBM/HTTPServer/conf/httpd.conf /usr/IBM/HTTPServer/conf/httpd.conf.xcat.ui.bak
cat /opt/xcat/ui/etc/apache2/conf.d/xcat-ui.conf >> /usr/IBM/HTTPServer/conf/httpd.conf
/usr/IBM/HTTPServer/bin/apachectl restart
# put the encrypted password in /etc/security/passwd to the xcat passwd db
# Put the encrypted password in /etc/security/passwd into the xcat passwd database
CONT=`cat /etc/security/passwd`
%{prefix}/sbin/chtab key=xcat,username=root passwd.password=`echo $CONT |cut -d ' ' -f 4`
fi
if [ "$1" = 1 ] || [ "$1" = 2 ] # initial install, or upgrade and this is the newer rpm
if [ "$1" = 1 ] || [ "$1" = 2 ] # Install or upgrade
then
# Uncomment this if we change xcat-ui.conf again
#/etc/init.d/$apachedaemon reload
# /etc/init.d/$apachedaemon reload
true
fi
%endif
%preun
# Pre-uninstall script -------------------------------------------------
#---------- Pre-uninstall ----------
%ifos linux
if [ "$1" = 0 ] # final rpm being removed
if [ "$1" = 0 ] # RPM being removed
then
if [ -e "/etc/redhat-release" ]; then
apachedaemon='httpd'
@ -155,7 +150,7 @@ then
/bin/rm -f /etc/$apachedaemon/conf.d/xcat-ui.conf
/etc/init.d/$apachedaemon reload
fi
%else #for AIX
%else # AIX
# Remove links made during the post install script
echo "Undoing IBM HTTP Server configuration for xCAT..."
if [ -e "/usr/IBM/HTTPServer/conf/httpd.conf.xcat.ui.bak" ];then
@ -163,5 +158,4 @@ if [ -e "/usr/IBM/HTTPServer/conf/httpd.conf.xcat.ui.bak" ];then
rm -rf /usr/IBM/HTTPServer/conf/httpd.conf.xcat.ui.bak
fi
/usr/IBM/HTTPServer/bin/apachectl restart
%endif
%endif