This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
phptsmadmin/application/classes/Controller/Node.php
2012-12-12 22:11:42 +11:00

160 lines
4.0 KiB
PHP

<?php defined('SYSPATH') or die('No direct access allowed.');
/**
* This class provides information on TSM Nodes.
*
* @package PTA
* @subpackage Nodes
* @category Controllers
* @author Deon George
* @copyright (c) 2010 phpTSMadmin Development Team
* @license http://phptsmadmin.sf.net/license.html
*/
class Controller_Node extends Controller_TemplateDefault_View {
protected $index_title = 'TSM Nodes';
protected $detail_title = 'Information on Node';
protected $orm = 'NODE';
/**
* Gather the BA Client Session data for graphing
*/
public function action_ajaxjson_basessions() {
$id = $this->request->param('id');
$c = (isset($_REQUEST['c'])) ? $_REQUEST['c'] : null;
$s = (isset($_REQUEST['s'])) ? $_REQUEST['s'] : null;
$t = (isset($_REQUEST['t'])) ? $_REQUEST['t'] : null;
$no = ORM::factory('NODE',$id);
if (! $id OR ! $no->loaded() OR ! $t OR ! $c)
return '';
$google = GoogleChart::factory($c)
->logy(TRUE)
->title(sprintf('%s Activity',$t).($s ? sprintf(' for Schedule %s',$s) : ' outside of TSM schedules'));
foreach ($no->act_bybtype($t) as $aso) {
if ($aso->SCHEDULE_NAME != $s)
continue;
$result = array();
foreach ($aso->actlog() as $alo)
$result = array_merge($result,$alo->msgtrim());
if (! $result)
continue;
$yr = $yl = array();
// Process our YR columns
foreach (array(
'OBJECT_TOTAL',
'OBJECT_BACKUP',
'OBJECT_DELETED',
'OBJECT_UDPATE',
'OBJECT_FAILED',
'OBJECT_REBOUND',
'OBJECT_EXPIRED',
'OJBECT_DEDUPED',
) as $c)
if (isset($result[$c]) AND $result[$c])
$yr[$c] = $result[$c];
// Process our YL columns
foreach (array(
'BYTES_INSPECT',
'BYTES_PROCESS',
'BYTES_TRANSFER',
'BYTES_DEDUPE_BEFORE',
'BYTES_DEDUPE_AFTER',
) as $c)
if (isset($result[$c]) AND $result[$c])
$yl[$c] = $result[$c];
// Process our YR columns
$google->pdata($aso->display('START_TIME'),array('yr'=>$yr,'yl'=>$yl));
}
$this->auto_render = FALSE;
$this->response->headers('Content-Type','application/json');
$this->response->body($google->json());
}
/**
* Gather the TSM Server Schedule Activity for Graphing
*/
public function action_ajaxjson_schedules() {
$id = $this->request->param('id');
$c = (isset($_REQUEST['c'])) ? $_REQUEST['c'] : null;
$s = (isset($_REQUEST['s'])) ? $_REQUEST['s'] : null;
$t = (isset($_REQUEST['t'])) ? $_REQUEST['t'] : null;
$no = ORM::factory('NODE',$id);
if (! $id OR ! $no->loaded() OR ! $t OR ! $c)
return '';
$google = GoogleChart::factory($c)
->logy(TRUE)
->title(sprintf('%s Activity',$t).($s ? sprintf(' for Schedule %s',$s) : ' outside of TSM schedules'));
foreach ($no->act_bybtype($t) as $aso) {
if ($aso->SCHEDULE_NAME != $s)
continue;
$google->pdata($aso->display('START_TIME'),array(
'yr'=>array(
'BYTES'=>$aso->BYTES,
),
'yl'=>array(
'AFFECTED'=>$aso->AFFECTED,
'EXAMINED'=>$aso->EXAMINED,
'FAILED'=>$aso->FAILED,
),
));
}
$this->auto_render = FALSE;
$this->response->headers('Content-Type','application/json');
$this->response->body($google->json());
}
/**
* Return details of a specific node SESSION in the ACTIVITY LOG
* @param $id NODE,SESSION_ID,SESSION_START_DATE
*/
public function action_session() {
$id = $this->request->param('id');
if (substr_count($id,',') != 2) {
SystemMessage::add(array(
'title'=>_('Invalid ID'),
'body'=>sprintf(_('The session ID %s is invalid'),$id),
'type'=>'error',
));
return;
}
list($nid,$sid,$start) = explode(',',$id,3);
$no = ORM::factory('NODE',$nid);
if (! $no->loaded()) {
SystemMessage::add(array(
'title'=>_('Invalid Node'),
'body'=>sprintf(_('The Node ID %s is invalid'),$nid),
'type'=>'error',
));
return;
}
Block::add(array(
'title'=>sprintf(_('Session %s Detail for Node %s'),$sid,$no->display('NODE_NAME')),
'body'=>View::factory(sprintf('%s/clientsession',strtolower($this->request->controller())))->set('o',$no->actlog_session($sid,$start)),
));
}
}
?>