The code for "define events/performance" and "monitor setup" is here.

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@3990 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
mxi1 2009-08-13 06:45:39 +00:00
parent 5e309212cf
commit ace55166f4
13 changed files with 677 additions and 65 deletions

View File

@ -315,12 +315,106 @@ padding:10px 2px;
margin: 0;
padding: 0;
font-size: 8pt;
paddint-right: 0;
padding-right: 0;
}
#ositree {
float: left;
width: auto;
min-height: 255px;
border-right: 1px dotted #555;
}
min-width: 130px;
/*display: none;*/
}
#tips {
margin-right: 10px;
margin-left: 10px;
padding: 10px;
width: 900px;
text-align: left;
display: block;
border-bottom: 1px dotted #555;
/*display: none;*/
}
#monlist_table {
margin-right: 30px;
margin-left: 30px;
width: 850px;
padding: 10px;
float: left;
display: block;
}
#condresp {
width: 770px;
margin: 10px;
padding: 10px;
float: left;
display: block;
border-bottom: 1px dotted #555;
}
#assocaition {
margin: 10px;
padding: 10px;
float:left;
display: block;
width: 720px;
}
#avail_cond {
width: 275px;
margin: 5px;
padding: 10px;
float: left;
background-color: #ffee33;
}
#avail_cond tbody {
height: 640px;
overflow-y: scroll;
overflow-x: hide;
}
#condition .ui-selecting {background: #FECA40;}
#condition .ui-selected { background: #F39814; color: white; }
#condition {list-style-type: none; margin: 0; padding: 0;}
#avail_resp {
width: 425px;
margin: 5px;
padding: 10px;
float: left;
background-color: #eeffee;
}
#avail_resp tbody {
height: 640px;
overflow-y: scroll;
overflow-x: hide;
}
#monsetting_tips {
width: 888px;
margin: 5px;
padding: 5px;
float: left;
}
#rmcSrcList {
width: 420px;
margin: 5px;
padding: 5px;
float: left;
background-color:silver;
}
#rmcScrAttr {
width: 420px;
margin: 5px;
padding: 5px;
float: left;
background-color:silver;
}

View File

@ -369,8 +369,10 @@ function node_stat_control(plugin)
}
function goto_next()
//TODO: change the function name! it's too silly now!
{
var str = location.href;
//TODO:one bug is here.
var plugin=str.slice(str.indexOf("name")+5);//get the argument from "?name=xxxxx"
if(plugin == "rmcmon") {
loadMainPage("monitor/rmc_event_define.php");
@ -381,5 +383,52 @@ function goto_next()
}
}
function mkCondResp()
{
//get the name of the selected condition
//then, get the response in "checked" status
//then, run the command "mkcondresp"
var cond_val = $('input[@name=conditions][@checked]').val();
if(cond_val) {
//get the response in "checked" status
var resps_obj = $('input[@name=responses][@checked]');
if(resps_obj) {
$.each(resps_obj,function(i,n) {
//i is the index
//n is the content
//TODO:add one new php file to handle "mkcondresp" command
$.get("monitor/makecondresp.php", {cond: cond_val, resp: n.value}, function(data) {
$("#devstatus").html(data);
});
});
$("#association").load("monitor/updateCondRespTable.php");
}
}
}
function showRMCAttrib()
{
var class_val = $('input[@name=classGrp][@checked]').val();
if(class_val) {
$.get("monitor/rmc_resource_attr.php", {name: class_val}, function(data) {
$("#rmcScrAttr").html(data);
});
}
}
function monsetupAction(plugin, action_val)
{
//plugin = the name of plugin
//action = "start" or "stop" or "restart"
$.get("monitor/setup.php", {name: plugin, action: action_val}, function(data) {
$.get("monitor/updateMonList.php", {}, function(data) {
$("#monlist").html(data);
});
});
}
// load progress bar
myBar.loaded('xcat.js');

View File

@ -40,6 +40,18 @@ function displayMapper_mon($mapper)
echo "<td ><a class='description' href='#'>$name</a></td>";
echo "<td >$stat</td>";
if(isset($nodemonstatus)) { echo "<td >Enabled</td>";}else {echo "<td >Disabled</td>";}
echo "<td>";
$name_str = "\"$name\"";
if($stat == "monitored") {
$act_str = "\"stop\"";
insertButtons(array('label'=>'Stop', 'id'=>'stop', 'onclick'=>"monsetupAction($name_str, $act_str)"));
$act_str = "\"restart\"";
insertButtons(array('label'=>'Restart', 'id'=>'restart', 'onclick'=>"monsetupAction($name_str, $act_str)"));
}else {
$act_str = "\"start\"";
insertButtons(array('label' => 'Start', 'id'=>'start', 'onclick' => "monsetupAction($name_str, $act_str)"));
}
echo "</td>";
echo " </tr>";
$ooe++;
$line++;
@ -58,7 +70,7 @@ function displayTips($tips)
//}
echo '<div id="tips"><p><b>Tips:</b></p>';
foreach ($tips as $tip) {
echo "<li>$tip</li>";
echo "<p>$tip</p>";
echo "\n";
}
echo '</div>';
@ -84,6 +96,7 @@ function displayMonTable()
<td>Plug-in Name</td>
<td>Status</td>
<td>Node Status Monitoring</td>
<td>Action</td>
</tr>
</thead>
TOS1;
@ -142,7 +155,7 @@ TOS2;
function displayStatus()
{
//tell the user that the current interface is not done yet...
echo "<div><p>This interface is still under development -use accordingly.</p></div>";
echo "<div id='devstatus'><p>This interface is still under development -use accordingly.</p></div>";
}
function displayOSITree()
@ -172,50 +185,216 @@ echo <<<TOS5
<td>State</td>
</tr>
</thead>
<tbody>
TOS5;
//$xml = docmd("webrun", "", array("lscondresp"));
//if(getXmlErrors($xml,$errors)) {
//echo "<p class=Error>",implode(' ', $errors), "</p>";
//exit;
//}
$xml = docmd("webrun", "", array("lscondresp"));
if(getXmlErrors($xml,$errors)) {
echo "<p class=Error>",implode(' ', $errors), "</p>";
exit;
}
//get all the condition&response associations for RMC
echo <<<TOS6
<tbody>
<tr class="ListLine0">
<td>NodeReachability_H</td>
<td>UpdatexCATNodeStatus</td>
<td>hv8plus01.ppd.pok.ibm.com</td>
<td>Not active</td>
</tr>
<tr class="ListLine1">
<td>NodeReachability</td>
<td>UpdatexCATNodeStatus</td>
<td>hv8plus01.ppd.pok.ibm.com</td>
<td>Not active</td>
</tr>
</tbody>
</table>
</div>
TOS6;
foreach ($xml->children() as $response) foreach($response->children() as $data) {
//get the data from xcatd
$association = explode("=", $data);
$ooe = 0;
$line = 0;
foreach($association as $elem) {
$ooe = $ooe%2;
//the format should be
//"NodeReachability"\t"EmailRootOffShift"\t"hv8plus01.ppd.pok.ibm.com"\t"Active"
$record = explode("\"", $elem);
$cond = $record[1];
$resp = $record[3];
$node = $record[5];
$state = $record[7];
echo "<tr class='ListLine$ooe' id='row$line'>";
echo "<td>$cond</td>";
echo "<td>$resp</td>";
echo "<td>$node</td>";
echo "<td>$state</td>";
echo "</tr>";
$ooe++;
$line++;
}
}
echo "</tbody></table></div>";
return 0;
}
function displayCond($noderange)
function displayCond()
{
//the user selects one node/noderange from the #ositree div
echo '<div id="avail_cond">';
echo '<b>Available Conditions</b>';
echo '</div>';
echo <<<COND
<div id="avail_cond">
<b>Available Conditions</b>
<table id="tabTable" class="tabTable" cellspacing="1">
<thead>
<tr class="colHeaders">
<td></td>
<td>Conditions</td>
</tr>
</thead>
<tbody>
COND;
$xml = docmd("webrun", '', array("lscondition"));
foreach($xml->children() as $response) foreach($response->children() as $data) {
//get the data from xcatd
$conditions = explode("=", $data);
}
$ooe = 0;
$line = 0;
foreach($conditions as $elem) {
$ooe = $ooe%2;
echo "<tr class='ListLine$ooe' id='row$line'>";
echo "<td><input type=\"radio\" name=\"conditions\" value=\"$elem\" /></td>";
echo "<td>$elem</td>";
echo "</tr>";
$ooe++;
$line++;
}
echo "</tbody></table></div>";
return 0;
}
function displayResp()
{
echo '<div id="avail_resp">';
echo '<b>Available Response</b>';
echo '</div>';
echo <<<RESP
<div id="avail_resp">
<b>Available Response</b>
<table id="tabTable" class="tabTable" cellspacing="1">
<thead>
<tr class="colHeaders">
<td></td>
<td>Response</td>
</tr>
</thead>
<tbody>
RESP;
$xml=docmd("webrun", '', array("lsresponse"));
$ooe=0;
$line=0;
foreach($xml->children() as $response) foreach($response->children() as $data) {
$responses = explode("=", $data);
}
foreach($responses as $elem) {
$ooe = $ooe%2;
echo "<tr class='ListLine$ooe' id='row$line'>";
echo "<td><input type='checkbox' name='responses' value='$elem' /></td>";
echo "<td>$elem</td>";
echo "</tr>";
$ooe++;
$line++;
}
echo '</tbody></table></div>';
return 0;
}
function displayCondResp()
{
echo '<div id="condresp">';
displayAssociation();
displayCond();
displayResp();
insertButtons(array('label'=>'Add', id=>'addAssociation', 'onclick'=>'mkCondResp()'));
insertButtons(array('label'=>'Cancel', id=>'cancel_op', 'onclick'=>''));
echo '</div>';
displayStatus();
}
function displayMonsetting()
//TODO: copied from the function displayTable() from display.php, need update
{
echo "<div class='mContent'>";
echo "<h1>$tab</h1>\n";
insertButtons(array('label' => 'Save','id' => 'saveit'),
array('label' => 'Cancel', 'id' => 'reset')
);
$xml = docmd('tabdump', '', array("monsetting"));
$headers = getTabHeaders($xml);
if(!is_array($headers)){ die("<p>Can't find header line in $tab</p>"); }
echo "<table id='tabTable' class='tabTable' cellspacing='1'>\n";
#echo "<table class='tablesorter' cellspacing='1'>\n";
echo "<thead>";
echo "<tr class='colHeaders'><td></td>\n"; # extra cell for the red x
#echo "<tr><td></td>\n"; # extra cell for the red x
foreach($headers as $colHead) {echo "<td>$colHead</td>"; }
echo "</tr>\n"; # close header row
echo "</thead><tbody>";
$tableWidth = count($headers);
$ooe = 0;
$item = 0;
$line = 0;
$editable = array();
foreach($xml->children() as $response) foreach($response->children() as $arr){
$arr = (string) $arr;
if(ereg("^#", $arr)){
$editable[$line++][$item] = $arr;
continue;
}
$cl = "ListLine$ooe";
$values = splitTableFields($arr);
# X row
echo "<tr class=$cl id=row$line><td class=Xcell><a class=Xlink title='Delete row'><img class=Ximg src=img/red-x2-light.gif></a></td>";
foreach($values as $v){
echo "<td class=editme id='$line-$item'>$v</td>";
$editable[$line][$item++] = $v;
}
echo "</tr>\n";
$line++;
$item = 0;
$ooe = 1 - $ooe;
}
echo "</tbody></table>\n";
$_SESSION["editable-$tab"] = & $editable; # save the array so we can access it in the next call of this file or change.php
echo "<p>";
insertButtons(array('label' => 'Add Row', 'id' => 'newrow'));
echo "</p>\n";
}
function displayRMCRsrc()
{
echo <<<TOS0
<b>Available RMC Resources</b>
<table id="tabTable" class="tabTable" cellspacing="1">
<thead>
<tr class="colHeaders">
<td></td>
<td>Class Name</td>
</tr>
</thead>
<tbody>
TOS0;
$xml = docmd("webrun", "", array("lsrsrc"));
if(getXmlErrors($xml,$errors)) {
echo "<p class=Error>",implode(' ', $errors), "</p>";
exit;
}
foreach($xml->children() as $response) foreach($response->children() as $data) {
//get all the class name
$classes = explode("=", $data);
}
$ooe = 0;
$line = 0;
foreach($classes as $class) {
$ooe = $ooe%2;
echo "<tr class='ListLine$ooe' id='row$line'>";
echo "<td><input type='radio' name='classGrp' value='$class' onclick='showRMCAttrib()' /> </td>";
echo "<td>$class</td>";
echo "</tr>";
$ooe++;
$line++;
}
echo "</tbody></table>";
return 0;
}
function displayRMCAttr()
{
echo "<p>Select the RMC Resource, you will see all its available attributes here.</p>";
}
?>

View File

@ -0,0 +1,24 @@
<?php
/*
* makecondresp.php
* run the command "mkcondresp" and return the value
*/
if(!isset($TOPDIR)) { $TOPDIR="/opt/xcat/ui";}
require_once "$TOPDIR/lib/security.php";
require_once "$TOPDIR/lib/functions.php";
require_once "$TOPDIR/lib/display.php";
require_once "$TOPDIR/lib/monitor_display.php";
$cond = $_REQUEST["cond"];
$resp = $_REQUEST["resp"];
$xml=docmd("webrun", '', array("mkcondresp $cond $resp"));
if(getXmlErrors($xml, $errors)) {
echo "<p class=Error>",implode(' ', $errors), "</p>";
exit;
}
echo "<p>$resp</p>";
?>

View File

@ -13,7 +13,14 @@ require_once "$TOPDIR/lib/monitor_display.php";
$name = $_REQUEST['name'];
echo $name;
return 0;
//echo $name;
displayMapper_mon(array('home'=>'main.php', 'monitor'=>'monitor/monlist.php'));
displayTips(array(""));
displayStatus();
insertButtons(array('label' => 'Next', 'id'=> 'next', 'onclick'=>''));
?>

View File

@ -12,23 +12,29 @@ require_once "$TOPDIR/lib/display.php";
require_once "$TOPDIR/js/jsonwrapper.php";
//get all the groups
$xml=docmd("lsdef","",array("-t", "group"));
//$xml=docmd("lsdef","",array("-t", "group"));
//if(getXmlErrors($xml,$errors)) {
// echo "<p class=Error>",implode(' ', $errors), "</p>";
// exit;
//}
//$groups = array();
//$jdata = array();
//foreach($xml->children() as $response) foreach($response->children() as $data) {
//all the groups are stored into $groups
// array_push($groups, $data);
//}
$xml = docmd("lsdef","",array("-t", "node", "-w", "nodetype=~osi"));
if(getXmlErrors($xml,$errors)) {
echo "<p class=Error>",implode(' ', $errors), "</p>";
echo "<p class=Error>", implode(' ', $errors), "</p>";
exit;
}
$groups = array();
$jdata = array();
foreach($xml->children() as $response) foreach($response->children() as $data) {
//all the groups are stored into $groups
//TODO
array_push($groups, $data);
}
//foreach($groups as $group) {
//$xml = docmd("lsdef","",array("-t", "node", "-w", "nodetype=~osi"))
//}
//print_r($groups);
$host = system("hostname|cut -f 1 -d \".\"");
//print_r($groups);
//TODO:
//rebuild the jsTree
//echo json_encode($jdata);
echo <<<TOS3
[

View File

@ -12,9 +12,6 @@ require_once "$TOPDIR/lib/display.php";
require_once "$TOPDIR/lib/monitor_display.php";
?>
<?php
displayMapper_mon(array('home'=>'main.php', 'monitor'=>'monitor/monlist.php'));
displayTips(array(
@ -24,18 +21,9 @@ displayTips(array(
"then, click \"Save\" to create condition/response associations."
));
displayOSITree();
?>
<div id="condresp">
<?php
displayAssociation();
displayCond("hv8plus06");
displayResp();
?>
</div>
displayCondResp();
<?php
insertButtons(array('label'=>'Next', id=>'next', 'onclick'=>''));
insertButtons(array('label'=>'Next', id=>'next', 'onclick'=>'loadMainPage("monitor/rmc_resource_define.php")'));
?>

View File

@ -0,0 +1,53 @@
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
if(!isset($TOPDIR)) { $TOPDIR="/opt/xcat/ui";}
require_once "$TOPDIR/lib/security.php";
require_once "$TOPDIR/lib/functions.php";
require_once "$TOPDIR/lib/display.php";
require_once "$TOPDIR/lib/monitor_display.php";
$class = $_REQUEST['name'];
if(!isset($class)) {
exit;
}
$xml = docmd("webrun", "", array("lsrsrcdef-api -r $class | cut -d':' -f1"));
if(getXmlErrors($xml,$errors)) {
echo "<p class=Error>",implode(' ', $errors), "</p>";
exit;
}
foreach($xml->children() as $response) foreach($response->children() as $data) {
$attrs = explode("=", $data);
}
$ooe = 0;
$line = 0;
echo<<<EOS0
<b>Available Attributes for $class</b>
<table id="tabTable" class="tabTable" cellspacing="1">
<thead>
<tr class="colHeaders">
<td>Class Name</td>
</tr>
</thead>
<tbody>
EOS0;
foreach($attrs as $attr) {
$ooe = $ooe%2;
echo "<tr class='ListLine$ooe' id='row$line'>";
echo "<td>$attr</td>";
echo "</tr>";
$ooe++;
$line++;
}
echo "</tbody></table>";
?>

View File

@ -0,0 +1,32 @@
<?php
/*
* define the performance monitoring using RMC
*/
if(!isset($TOPDIR)) { $TOPDIR="/opt/xcat/ui";}
require_once "$TOPDIR/lib/security.php";
require_once "$TOPDIR/lib/functions.php";
require_once "$TOPDIR/lib/display.php";
require_once "$TOPDIR/lib/monitor_display.php";
displayMapper_mon(array('home'=>'main.php', 'monitor'=>'monitor/monlist.php'));
displayTips(array("All the available RMC resources are listed here;",
"Edit this table to define the RMC performance monitoring;",
"Select the RMC resource, you can get all the available attributes."));
displayMonsetting();
?>
<div id="monsetting_tips">
<div id="rmcSrcList"><?php displayRMCRsrc(); ?></div>
<div id="rmcScrAttr"><?php displayRMCAttr(); ?></div>
</div>
<div><?php displayStatus(); ?></div>
<?php
insertButtons(array('label'=>'Next', 'id'=>'next', 'onclick'=>'loadMainPage("monitor/monlist.php");'));
?>

73
xCAT-UI/monitor/setup.php Normal file
View File

@ -0,0 +1,73 @@
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
if(!isset($TOPDIR)) { $TOPDIR="/opt/xcat/ui";}
require_once "$TOPDIR/lib/security.php";
require_once "$TOPDIR/lib/functions.php";
require_once "$TOPDIR/lib/display.php";
require_once "$TOPDIR/lib/monitor_display.php";
$name = $_REQUEST['name'];
$action = $_REQUEST['action'];
//read the "monitoring" table to see whether node status monitoring is enable or not
$xml = docmd("webrun", "", array("gettab name=$name monitoring.nodestatmon"));
if(getXmlErrors($xml, $errors)) {
echo "<p class=Error>",implode(' ', $errors), "</p>";
exit;
}
foreach($xml->children() as $response) foreach($response->children() as $data)
{
$nodemonstat = $data;
}
switch($action) {
case "stop":
monstop($name, $nmstat);
break;
case "restart":
monrestart($name, $nmstat);
break;
case "start":
monstart($name, $nmstat);
break;
default:
break;
}
function monstop($plugin, $nmstat)
{
$xml = docmd("monstop", "", array("$plugin","-r"));
return 0;
}
function monrestart($plugin, $nmstat)
{
$xml = docmd("monstop", "", array("$plugin", "-r"));
if(getXmlErrors($xml, $errors)) {
echo "<p class=Error>",implode(' ', $errors), "</p>";
exit;
}
$xml = docmd("moncfg", "", array("$plugin", "-r"));
if(getXmlErrors($xml, $errors)) {
echo "<p class=Error>",implode(' ', $errors), "</p>";
exit;
}
$xml = docmd("monstart", "", array("$plugin", "-r"));
return 0;
}
function monstart($plugin, $nmstat)
{
//before starting the $plugin,
//we have to make sure that the plugin is added in the "monitoring" table
$xml = docmd("monstart", "", array("$plugin", "-r"));
return 0;
}
?>

View File

@ -42,5 +42,5 @@ display_stat_mon_table(array("$name"=>
displayStatus();
insertButtons(array('label'=>'Next', id=>'next', 'onclick'=>'goto_next()'));
insertButtons(array('label'=>'Next', id=>'next', 'onclick'=>'loadMainPage("monitor/monlist.php")'));
?>

View File

@ -0,0 +1,59 @@
<?php
/*
* update the condition&response association
*/
if(!isset($TOPDIR)) { $TOPDIR="/opt/xcat/ui";}
require_once "$TOPDIR/lib/functions.php";
require_once "$TOPDIR/lib/security.php";
require_once "$TOPDIR/lib/display.php";
require_once "$TOPDIR/js/jsonwrapper.php";
echo <<<TOS5
<b>Available Condition/Response Associations</b>
<table id="tabTable" class="tabTable" cellspacing="1">
<thead>
<tr class="colHeaders">
<td>Condition</td>
<td>Response</td>
<td>Node</td>
<td>State</td>
</tr>
</thead>
<tbody>
TOS5;
$xml = docmd("webrun", "", array("lscondresp"));
if(getXmlErrors($xml,$errors)) {
echo "<p class=Error>",implode(' ', $errors), "</p>";
exit;
}
//get all the condition&response associations for RMC
foreach ($xml->children() as $response) foreach($response->children() as $data) {
//get the data from xcatd
$association = explode("=", $data);
$ooe = 0;
$line = 0;
foreach($association as $elem) {
$ooe = $ooe%2;
//the format should be
//"NodeReachability"\t"EmailRootOffShift"\t"hv8plus01.ppd.pok.ibm.com"\t"Active"
$record = explode("\"", $elem);
$cond = $record[1];
$resp = $record[3];
$node = $record[5];
$state = $record[7];
echo "<tr class='ListLine$ooe' id='row$line'>";
echo "<td>$cond</td>";
echo "<td>$resp</td>";
echo "<td>$node</td>";
echo "<td>$state</td>";
echo "</tr>";
$ooe++;
$line++;
}
}
echo "</tbody></table>";
?>

View File

@ -0,0 +1,48 @@
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
if(!isset($TOPDIR)) { $TOPDIR="/opt/xcat/ui";}
require_once "$TOPDIR/lib/security.php";
require_once "$TOPDIR/lib/functions.php";
require_once "$TOPDIR/lib/display.php";
require_once "$TOPDIR/lib/monitor_display.php";
$xml = docmd("monls"," ", array('-a'));
if(getXmlErrors($xml,$errors)) {
echo "<p class=Error>",implode(' ', $errors), "</p>";
exit;
}
#then, parse the xml data
$ooe = 0;
$line = 0;
foreach($xml->children() as $response) foreach($response->children() as $data) {
list($name, $stat, $nodemonstatus) = preg_split("/\s+/", $data);
$ooe = $ooe%2;
echo "<tr class='ListLine$ooe' id='row$line'>";
echo "<td><input type='radio' name='plugins' value='$name' /></td>";
echo "<td ><a class='description' href='#'>$name</a></td>";
echo "<td >$stat</td>";
if(isset($nodemonstatus)) { echo "<td >Enabled</td>";}else {echo "<td >Disabled</td>";}
echo "<td>";
$name_str = "\"$name\"";
if($stat == "monitored") {
$act_str = "\"stop\"";
insertButtons(array('label'=>'Stop', 'id'=>'stop', 'onclick'=>"monsetupAction($name_str, $act_str)"));
$act_str = "\"restart\"";
insertButtons(array('label'=>'Restart', 'id'=>'restart', 'onclick'=>"monsetupAction($name_str, $act_str)"));
}else {
$act_str = "\"start\"";
insertButtons(array('label' => 'Start', 'id'=>'start', 'onclick' => "monsetupAction($name_str, $act_str)"));
}
echo "</td>";
echo " </tr>";
$ooe++;
$line++;
//echo "<tr><td><input type='checkbox' />$name</td><td>$stat</td><td><a onclick='LoadMainPage("main.php")'>$name</a></td></tr>";
}
?>