diff --git a/application/classes/controller/node.php b/application/classes/controller/node.php
index f428084..c688ef8 100644
--- a/application/classes/controller/node.php
+++ b/application/classes/controller/node.php
@@ -73,6 +73,22 @@ $(document).ready(function () {$("#node_name").change(function () {
'body'=>$output,
));
+ $output = View::factory('nodes/detail_volumes')
+ ->set('node',$no);
+
+ Block::add(array(
+ 'title'=>_('Sequential Volume Usage Information'),
+ 'body'=>$output,
+ ));
+
+ $output = View::factory('nodes/detail_schedule')
+ ->set('node',$no);
+
+ Block::add(array(
+ 'title'=>_('Schedule Information'),
+ 'body'=>$output,
+ ));
+
$this->template->content = Block::factory();
}
}
diff --git a/application/classes/model/association.php b/application/classes/model/association.php
new file mode 100644
index 0000000..5f3e688
--- /dev/null
+++ b/application/classes/model/association.php
@@ -0,0 +1,24 @@
+'ASC',
+ 'NODE_NAME'=>'ASC',
+ );
+
+ protected $_has_one = array(
+ 'SCHEDULE_CLIENT'=>array('foreign_key'=>'SCHEDULE_NAME','far_key'=>'SCHEDULE_NAME'),
+ );
+}
+?>
diff --git a/application/classes/model/auth/userdefault.php b/application/classes/model/auth/userdefault.php
index 5759a92..e59b14c 100644
--- a/application/classes/model/auth/userdefault.php
+++ b/application/classes/model/auth/userdefault.php
@@ -13,82 +13,5 @@ class Model_Auth_UserDefault extends Model_Auth_User {
protected $_disable_wild_select = TRUE;
protected $_disable_join_table_name = TRUE;
protected $_disable_limit = TRUE;
-
- // Validation rules
- protected $_rules = array(
- 'admin_name' => array(
- 'not_empty' => NULL,
- 'min_length' => array(4),
- 'max_length' => array(8),
- ),
- 'password' => array(
- 'not_empty' => NULL,
- 'min_length' => array(5),
- 'max_length' => array(16),
- ),
- 'password_confirm' => array(
- 'matches_ifset' => array('password'),
- ),
- );
-
- // Columns to ignore
- protected $_ignored_columns = array('password_confirm');
-
- // Field labels
- protected $_labels = array(
- 'admin_name' => 'username',
- 'email' => 'email address',
- 'password' => 'password',
- 'password_confirm' => 'password confirmation',
- );
-
- /**
- * Validates login information from an array, and optionally redirects
- * after a successful login.
- *
- * @param array values to check
- * @param string URI or URL to redirect to
- * @return boolean
- */
- public function login(array & $array, $redirect = FALSE) {
- $fieldname = 'admin_name'; // @todo This should be defined in a config or database driver file
- $array = Validate::factory($array)
- ->label('username', $this->_labels[$fieldname])
- ->label('password', $this->_labels['password'])
- ->filter(TRUE, 'trim')
- ->filter('username','strtoupper')
- ->rules('username', $this->_rules[$fieldname])
- ->rules('password', $this->_rules['password']);
-
- // Get the remember login option
- $remember = isset($array['remember']);
-
- // Login starts out invalid
- $status = FALSE;
-
- if ($array->check())
- {
- // Attempt to load the user
- $this->where($fieldname, '=', $array['username'])->find();
-
- if ($this->loaded() AND Auth::instance()->login($this, $array['password'], $remember))
- {
- if (is_string($redirect))
- {
- // Redirect after a successful login
- Request::instance()->redirect($redirect);
- }
-
- // Login is successful
- $status = TRUE;
- }
- else
- {
- $array->error('admin_name', 'invalid');
- }
- }
-
- return $status;
- }
}
?>
diff --git a/application/classes/model/clientopt.php b/application/classes/model/clientopt.php
new file mode 100644
index 0000000..3d47c5b
--- /dev/null
+++ b/application/classes/model/clientopt.php
@@ -0,0 +1,21 @@
+'ASC',
+ 'OPTION_NAME'=>'ASC',
+ 'SEQNUMBER'=>'ASC',
+ );
+}
+?>
diff --git a/application/classes/model/copygroup/ar.php b/application/classes/model/copygroup/ar.php
new file mode 100644
index 0000000..bb0d987
--- /dev/null
+++ b/application/classes/model/copygroup/ar.php
@@ -0,0 +1,21 @@
+'ASC',
+ 'SET_NAME'=>'ASC',
+ 'CLASS_NAME'=>'ASC',
+ );
+}
+?>
diff --git a/application/classes/model/copygroup/bu.php b/application/classes/model/copygroup/bu.php
new file mode 100644
index 0000000..8fb6177
--- /dev/null
+++ b/application/classes/model/copygroup/bu.php
@@ -0,0 +1,21 @@
+'ASC',
+ 'SET_NAME'=>'ASC',
+ 'CLASS_NAME'=>'ASC',
+ );
+}
+?>
diff --git a/application/classes/model/devclasses.php b/application/classes/model/devclasses.php
new file mode 100644
index 0000000..3164c32
--- /dev/null
+++ b/application/classes/model/devclasses.php
@@ -0,0 +1,21 @@
+'ASC',
+ 'DEVCLASS_NAME'=>'ASC',
+ );
+}
+?>
diff --git a/application/classes/model/event.php b/application/classes/model/event.php
new file mode 100644
index 0000000..3e8a9df
--- /dev/null
+++ b/application/classes/model/event.php
@@ -0,0 +1,32 @@
+'ASC',
+ 'NODE_NAME'=>'ASC',
+ );
+
+ protected $_display_filters = array(
+ 'SCHEDULED_START'=>array(
+ array('ORMTSM::date',array(':value','d-M H:i')),
+ ),
+ 'ACTUAL_START'=>array(
+ array('ORMTSM::date',array(':value','d-M H:i')),
+ ),
+ 'COMPLETED'=>array(
+ array('ORMTSM::date',array(':value','d-M H:i')),
+ ),
+ );
+}
+?>
diff --git a/application/classes/model/filespace.php b/application/classes/model/filespace.php
index 7ee2c5d..c2ba9dc 100644
--- a/application/classes/model/filespace.php
+++ b/application/classes/model/filespace.php
@@ -11,18 +11,21 @@
*/
class Model_FILESPACE extends ORMTSM {
protected $_table_name = 'FILESPACES';
- protected $_primary_key = 'FILESPACE_NAME';
+ protected $_primary_key = 'FILESPACE_NAME'; // We need a primary key to detect that the object is loaded.
+ protected $_sorting = array(
+ 'NODE_NAME'=>'ASC',
+ 'FILESPACE_NAME'=>'ASC',
+ );
+
protected $_has_many = array(
'VOLUMEUSAGE'=>array('foreign_key'=>array('NODE_NAME','FILESPACE_NAME'),'far_key'=>'FILESPACE_NAME'),
'OCCUPANCY'=>array('foreign_key'=>array('NODE_NAME','FILESPACE_NAME'),'far_key'=>'FILESPACE_NAME'),
);
- protected $_formats = array(
- 'BACKUP_END'=>array('ORMTSM::date'=>array('d-M-Y')),
- );
-
- protected $_sorting = array(
- 'NODE_NAME'=>'ASC',
+ protected $_display_filters = array(
+ 'BACKUP_END'=>array(
+ array('ORMTSM::date',array(':value','d-M-Y')),
+ ),
);
public function utilsation() {
@@ -37,20 +40,20 @@ class Model_FILESPACE extends ORMTSM {
->where('TYPE','=',$dtype)
->group_by('STGPOOL_NAME')
->order_by('STGPOOL_NAME')
- ->find_all() as $vo) {
+ ->find_all() as $oo) {
- array_push($pool,$vo->STGPOOL_NAME);
+ array_push($pool,$oo->STGPOOL);
}
return $pool;
}
- public function pool_logical_util($pool) {
- return $this->OCCUPANCY->where('STGPOOL_NAME','=',$pool)->find()->LOGICAL_MB;
+ public function pool_logical_util($pool,$btype) {
+ return $this->OCCUPANCY->where('STGPOOL_NAME','=',$pool)->where('TYPE','=',$btype)->find()->LOGICAL_MB;
}
- public function pool_numvols($pool) {
- return $this->VOLUMEUSAGE->where('STGPOOL_NAME','=',$pool)->find_all()->count();
+ public function pool_numvols($pool,$ctype) {
+ return $this->VOLUMEUSAGE->where('STGPOOL_NAME','=',$pool)->where('COPY_TYPE','=',$ctype)->find_all()->count();
}
}
?>
diff --git a/application/classes/model/mgmtclass.php b/application/classes/model/mgmtclass.php
new file mode 100644
index 0000000..e9d917d
--- /dev/null
+++ b/application/classes/model/mgmtclass.php
@@ -0,0 +1,26 @@
+'DESC',
+ 'DOMAIN_NAME'=>'ASC',
+ 'CLASS_NAME'=>'ASC',
+ );
+
+ protected $_has_one = array(
+ 'COPYGROUP_BU'=>array('foreign_key'=>array('DOMAIN_NAME','SET_NAME','CLASS_NAME')),
+ 'COPYGROUP_AR'=>array('foreign_key'=>array('DOMAIN_NAME','SET_NAME','CLASS_NAME')),
+ );
+}
+?>
diff --git a/application/classes/model/node.php b/application/classes/model/node.php
index a968440..d7f3dfc 100644
--- a/application/classes/model/node.php
+++ b/application/classes/model/node.php
@@ -12,44 +12,50 @@
class Model_NODE extends ORMTSM {
protected $_table_name = 'NODES';
protected $_primary_key = 'NODE_NAME';
- protected $_has_many = array(
- 'FILESPACE'=>array('foreign_key'=>'NODE_NAME','far_key'=>'FILESPACE_NAME'),
- );
-
- protected $_display_filters = array(
- 'REG_TIME'=>array(
- array('ORMTSM::date',array(':value','d-M-Y')),
- ),
- 'PWSET_TIME'=>array(
- array('ORMTSM::date',array(':value','d-M-Y')),
- ),
- 'LASTACC_TIME'=>array(
- array('ORMTSM::date',array(':value','d-M-Y')),
- ),
- 'LASTSESS_SENT'=>array(
- array('number_format',array(':value',0)),
- ),
- 'LASTSESS_RECVD'=>array(
- array('number_format',array(':value',0)),
- ),
- 'LASTSESS_DURATION'=>array(
- array('number_format',array(':value',2)),
- ),
- 'LASTSESS_IDLEWAIT'=>array(
- array('number_format',array(':value',2)),
- ),
- 'LASTSESS_COMMWAIT'=>array(
- array('number_format',array(':value',2)),
- ),
- 'LASTSESS_MEDIAWAIT'=>array(
- array('number_format',array(':value',2)),
- ),
- );
-
protected $_sorting = array(
'NODE_NAME'=>'ASC',
);
+ protected $_has_many = array(
+ 'FILESPACE'=>array('foreign_key'=>'NODE_NAME','far_key'=>'NODE_NAME'),
+ 'VOLUMEUSAGE'=>array('foreign_key'=>'NODE_NAME','far_key'=>'NODE_NAME'),
+ 'ASSOCIATION'=>array('foreign_key'=>'NODE_NAME','far_key'=>'NODE_NAME'),
+ 'MGMTCLASS'=>array('foreign_key'=>'DOMAIN_NAME','far_key'=>'DOMAIN_NAME'),
+ 'CLIENTOPT'=>array('foreign_key'=>'OPTIONSET_NAME','far_key'=>'OPTION_SET'),
+ 'SUMMARY'=>array('foreign_key'=>'ENTITY','far_key'=>'NODE_NAME'),
+ 'EVENT'=>array('foreign_key'=>'NODE_NAME','far_key'=>'NODE_NAME'),
+ );
+
+ protected $_display_filters = array(
+ 'REG_TIME'=>array(
+ array('ORMTSM::date',array(':value','d-M-Y')),
+ ),
+ 'PWSET_TIME'=>array(
+ array('ORMTSM::date',array(':value','d-M-Y')),
+ ),
+ 'LASTACC_TIME'=>array(
+ array('ORMTSM::date',array(':value','d-M-Y')),
+ ),
+ 'LASTSESS_SENT'=>array(
+ array('number_format',array(':value',0)),
+ ),
+ 'LASTSESS_RECVD'=>array(
+ array('number_format',array(':value',0)),
+ ),
+ 'LASTSESS_DURATION'=>array(
+ array('number_format',array(':value',2)),
+ ),
+ 'LASTSESS_IDLEWAIT'=>array(
+ array('number_format',array(':value',2)),
+ ),
+ 'LASTSESS_COMMWAIT'=>array(
+ array('number_format',array(':value',2)),
+ ),
+ 'LASTSESS_MEDIAWAIT'=>array(
+ array('number_format',array(':value',2)),
+ ),
+ );
+
// Pools used by a node.
private $pools = array();
@@ -106,39 +112,72 @@ class Model_NODE extends ORMTSM {
// @todo This should return the system setting (cloptset), if the node setting is not configured.
public function txngroupmax() {
- return $this->display('TXNGROUPMAX');
+ return $this->TXNGROUPMAX;
}
// Work out all the storage pools used by a node.
// $dtype is BACKUP or ARCHIVE
- public function storagepools($dtype) {
+ public function getStoragePools($dtype) {
return isset($this->pools[$dtype]) ? $this->pools[$dtype] : $this->_getpools($dtype);
}
private function _getpools($dtype) {
$this->pools[$dtype] = array();
- foreach ($this->FILESPACE->find_all() as $fso) {
- foreach ($fso->storagepools($dtype) as $pool_name) {
- $po = ORM::Factory('stgpool',$pool_name);
-
- if (! isset($this->pools[$dtype][$po->POOLTYPE]) OR ! in_array($pool_name,$this->pools[$dtype][$po->POOLTYPE]))
- $this->pools[$dtype][$po->POOLTYPE][] = $pool_name;
- }
- }
+ foreach ($this->FILESPACE->find_all() as $fso)
+ foreach ($fso->storagepools($dtype) as $po)
+ if (! isset($this->pools[$dtype][$po->POOLTYPE]) OR ! in_array($po->STGPOOL_NAME,$this->pools[$dtype][$po->POOLTYPE]))
+ $this->pools[$dtype][$po->POOLTYPE][] = $po;
return $this->pools[$dtype];
}
// Return the storage pools used for a backup type
// $dtype is BACKUP or ARCHIVE
- public function getStoragePools($dtype,$ptype) {
+ // $ptype is pool type (PRIMARY,ACTIVE,COPY)
+ public function getStoragePoolsType($dtype,$ptype) {
if (! isset($this->pools[$dtype]))
$this->_getpools($dtype);
return isset($this->pools[$dtype][$ptype]) ? $this->pools[$dtype][$ptype] : array();
}
+ // @todo This routine should be cached.
+ public function getStorageTypeFiles($type) {
+ $count = 0;
+
+ foreach ($this->FILESPACE->find_all() as $fo)
+ foreach ($fo->OCCUPANCY->find_all() as $oa)
+ if ($oa->STGPOOL->POOLTYPE == $type)
+ $count += $oa->NUM_FILES;
+
+ return $count;
+ }
+
+ // @todo This routine should be cached.
+ public function getStorageTypeData($type) {
+ $count = 0;
+
+ foreach ($this->FILESPACE->find_all() as $fo)
+ foreach ($fo->OCCUPANCY->find_all() as $oa)
+ if ($oa->STGPOOL->POOLTYPE == $type)
+ $count += $oa->LOGICAL_MB;
+
+ return $count;
+ }
+
+ // Return the volumes that this node uses
+ // $dtype is BACKUP or ARCHIVE
+ // @todo Cache this data
+ public function volumes($dtype) {
+ $volumes = array();
+
+ foreach ($this->VOLUMEUSAGE->where('COPY_TYPE','=',$dtype)->order_by('STGPOOL_NAME,FILESPACE_NAME')->find_all() as $vol)
+ $volumes[$vol->STGPOOL_NAME][] = $vol->VOLUME;
+
+ return $volumes;
+ }
+
/**
* Get all the nodes by OS
*/
diff --git a/application/classes/model/occupancy.php b/application/classes/model/occupancy.php
index a86a3a3..a69b027 100644
--- a/application/classes/model/occupancy.php
+++ b/application/classes/model/occupancy.php
@@ -11,17 +11,15 @@
*/
class Model_OCCUPANCY extends ORMTSM {
protected $_table_name = 'OCCUPANCY';
- protected $_primary_key = 'FILESPACE_NAME';
- protected $_has_many = array(
- );
-
- protected $_formats = array(
- );
-
+ protected $_primary_key = 'NODE_NAME'; // We need a primary key to detect that the object is loaded.
protected $_sorting = array(
'NODE_NAME'=>'ASC',
'FILESPACE_NAME'=>'ASC',
'STGPOOL_NAME'=>'ASC',
);
+
+ protected $_has_one = array(
+ 'STGPOOL'=>array('foreign_key'=>'STGPOOL_NAME','far_key'=>'STGPOOL_NAME'),
+ );
}
?>
diff --git a/application/classes/model/schedule/client.php b/application/classes/model/schedule/client.php
new file mode 100644
index 0000000..6d3067f
--- /dev/null
+++ b/application/classes/model/schedule/client.php
@@ -0,0 +1,25 @@
+'ASC',
+ );
+
+ protected $_display_filters = array(
+ 'STARTTIME'=>array(
+ array('ORMTSM::date',array(':value','h:m')),
+ ),
+ );
+}
+?>
diff --git a/application/classes/model/stgpool.php b/application/classes/model/stgpool.php
index 9707843..ff02beb 100644
--- a/application/classes/model/stgpool.php
+++ b/application/classes/model/stgpool.php
@@ -12,14 +12,12 @@
class Model_STGPOOL extends ORMTSM {
protected $_table_name = 'STGPOOLS';
protected $_primary_key = 'STGPOOL_NAME';
- protected $_has_many = array(
- );
-
- protected $_formats = array(
- );
-
protected $_sorting = array(
'STGPOOL_NAME'=>'ASC',
);
+
+ protected $_has_one = array(
+ 'DEVCLASSES'=>array('foreign_key'=>'DEVCLASS_NAME','far_key'=>'DEVCLASS'),
+ );
}
?>
diff --git a/application/classes/model/summary.php b/application/classes/model/summary.php
new file mode 100644
index 0000000..e6da01a
--- /dev/null
+++ b/application/classes/model/summary.php
@@ -0,0 +1,30 @@
+'ASC',
+ 'ENTITY'=>'ASC',
+ 'ACTIVITY'=>'ASC',
+ );
+
+ protected $_display_filters = array(
+ 'START_TIME'=>array(
+ array('ORMTSM::date',array(':value','d-M H:i')),
+ ),
+ 'END_TIME'=>array(
+ array('ORMTSM::date',array(':value','d-M H:i')),
+ ),
+ );
+}
+?>
diff --git a/application/classes/model/volume.php b/application/classes/model/volume.php
new file mode 100644
index 0000000..71a688b
--- /dev/null
+++ b/application/classes/model/volume.php
@@ -0,0 +1,39 @@
+'ASC',
+ 'STGPOOL_NAME'=>'ASC',
+ );
+
+ protected $_has_many = array(
+ 'VOLUMEUSAGE'=>array('foreign_key'=>'VOLUME_NAME','far_key'=>'VOLUME_NAME'),
+ );
+
+ protected $_display_filters = array(
+ 'LAST_READ_DATE'=>array(
+ array('ORMTSM::date',array(':value','d-M-Y')),
+ ),
+ 'LAST_WRITE_DATE'=>array(
+ array('ORMTSM::date',array(':value','d-M-Y')),
+ ),
+ );
+
+ // Show the number of nodes on a volume
+ // $dtype is BACKUP or ARCHIVE
+ public function getNodesOnVol($dtype) {
+ return $this->VOLUMEUSAGE->where('COPY_TYPE','=',$dtype)->find_all()->count();
+ }
+}
+?>
diff --git a/application/classes/model/volumeusage.php b/application/classes/model/volumeusage.php
index f2784e3..039e80e 100644
--- a/application/classes/model/volumeusage.php
+++ b/application/classes/model/volumeusage.php
@@ -11,17 +11,15 @@
*/
class Model_VOLUMEUSAGE extends ORMTSM {
protected $_table_name = 'VOLUMEUSAGE';
- protected $_primary_key = 'FILESPACE_NAME';
- protected $_has_many = array(
- );
-
- protected $_formats = array(
- );
-
+ protected $_primary_key = 'NODE_NAME'; // We need a primary key to detect that the object is loaded.
protected $_sorting = array(
'NODE_NAME'=>'ASC',
- 'FILESPACE_NAME'=>'ASC',
- 'VOLUME_NAME'=>'ASC',
+# 'FILESPACE_NAME'=>'ASC', // @todo Disabled, as we were getting some SQL errors, when the query returned no records
+# 'VOLUME_NAME'=>'ASC',
+ );
+
+ protected $_has_one = array(
+ 'VOLUME'=>array('foreign_key'=>'VOLUME_NAME','far_key'=>'VOLUME_NAME'),
);
}
?>
diff --git a/application/classes/orm.php b/application/classes/orm.php
index e2f7005..0af7843 100644
--- a/application/classes/orm.php
+++ b/application/classes/orm.php
@@ -63,7 +63,7 @@ class ORM extends Kohana_ORM {
if (isset($this->_object_formated[$column]))
return $this->_object_formated[$column];
else
- return $value;
+ return $value ? $value : ' ';
}
}
?>
diff --git a/application/classes/ormtsm.php b/application/classes/ormtsm.php
index d6b7c59..b54b513 100644
--- a/application/classes/ormtsm.php
+++ b/application/classes/ormtsm.php
@@ -29,7 +29,7 @@ class ORMTSM extends ORM {
}
public static function date($date,$format) {
- return date($format,strtotime($date));
+ return $date ? date($format,strtotime($date)) : '';
}
}
?>
diff --git a/application/media/css/default.css b/application/media/css/default.css
index 1f76b7c..0da1520 100644
--- a/application/media/css/default.css
+++ b/application/media/css/default.css
@@ -4,6 +4,7 @@ table.box-left { border: 1px solid #AAAACC; margin-right: auto; }
table.box-center { border: 1px solid #AAAACC; margin-left: auto; margin-right: auto; }
table.box-full { border: 1px solid #AAAACC; margin-right: auto; width: 100%; }
tr.head { font-weight: bold; }
+tr.subhead { background-color: #BBBBDD; }
td.head { font-weight: bold; }
td.bold { font-weight: bold; }
td.bold-right { font-weight: bold; text-align: right; }
diff --git a/application/views/nodes/detail.php b/application/views/nodes/detail.php
index d07f5ed..e7eba86 100644
--- a/application/views/nodes/detail.php
+++ b/application/views/nodes/detail.php
@@ -45,7 +45,7 @@
-
+
Last Session Performance Information |
@@ -135,7 +135,88 @@
- [PERFORMANCE PIE-GRAPH?]
+
+ |
+
+
+
+
+
+ Policy Settings |
+
+
+ |
+
+
+ Backup Settings |
+
+
+ MGMT Class |
+ HSM Pool |
+ 1st Backup Pool |
+ Ver Exist |
+ Ver Del |
+ Frequency |
+
+ MGMTCLASS->where('SET_NAME','=','ACTIVE')->find_all() as $mco) { ?>
+
+ display('CLASS_NAME'); ?>DEFAULTMC=='Yes' ? ' *' : ''; ?> |
+ display('MIGDESTINATION'); ?> |
+ COPYGROUP_BU->display('DESTINATION'); ?> |
+ COPYGROUP_BU->display('VEREXISTS'),$mco->COPYGROUP_BU->display('RETEXTRA')); ?> |
+ COPYGROUP_BU->display('VERDELETED'),$mco->COPYGROUP_BU->display('RETONLY')); ?> |
+ COPYGROUP_BU->display('FREQUENCY'); ?> |
+
+
+
+ |
+
+
+ Archive Settings |
+
+
+ MGMT Class |
+ Destination |
+ Retain |
+
+ MGMTCLASS->where('SET_NAME','=','ACTIVE')->find_all() as $mco) { ?>
+
+ display('CLASS_NAME'); ?>DEFAULTMC=='Yes' ? ' *' : ''; ?> |
+ COPYGROUP_AR->display('DESTINATION'); ?> |
+ COPYGROUP_AR->display('RETVER'); ?> |
+
+
+
+ |
+
+
+
+ Server Side Client Options |
+
+
+ |
+
+
+ Client Option |
+ Seq # |
+ Setting |
+ Forced |
+
+ OPTION_SET) { ?>
+ CLIENTOPT->find_all() as $coo) { ?>
+
+ display('OPTION_NAME'); ?> |
+ display('SEQNUMBER'); ?> |
+ display('OPTION_VALUE'); ?> |
+ display('FORCE'); ?> |
+
+
+
+
+ This node is not configured for any server side Client Options |
+
+
+
|
diff --git a/application/views/nodes/detail_filesystem.php b/application/views/nodes/detail_filesystem.php
index b862e22..d3378ce 100644
--- a/application/views/nodes/detail_filesystem.php
+++ b/application/views/nodes/detail_filesystem.php
@@ -5,7 +5,7 @@
|
Backup Information |
- storagepools('Bkup')) { ?>
+ getStoragePools('Bkup')) { ?>
|
@@ -14,7 +14,7 @@
Last Date |
Utilisation |
getStoragePools('Bkup',$type)))
+ if (count($pools = $node->getStoragePoolsType('Bkup',$type)))
foreach ($pools as $pool_name) { ?>
|
@@ -25,9 +25,9 @@
display('BACKUP_END'); ?> |
utilsation(),2); ?> |
getStoragePools('Bkup',$type)))
+ if (count($pools = $node->getStoragePoolsType('Bkup',$type)))
foreach ($pools as $pool_name) { ?>
- pool_logical_util($pool_name),2); ?> (pool_numvols($pool_name); ?>) |
+ pool_logical_util($pool_name,'Bkup'),2); ?> (pool_numvols($pool_name,'BACKUP'); ?>) |
@@ -36,8 +36,27 @@
-
-
+ |
+
+
+ Storage Summary |
+
+
+ |
+
+
+ Storage Type |
+ Files |
+ MB |
+
+
+
+ |
+ getStorageTypeFiles($type); ?> |
+ getStorageTypeData($type); ?> |
+
+
+
|
@@ -46,14 +65,14 @@
Archive Information |
- storagepools('Arch')) { ?>
+ getStoragePools('Arch')) { ?>
|
File Space |
getStoragePools('Arch',$type)))
+ if (count($pools = $node->getStoragePoolsType('Arch',$type)))
foreach ($pools as $pool_name) { ?>
|
@@ -62,9 +81,9 @@
display('FILESPACE_NAME'); ?> |
getStoragePools('Arch',$type)))
+ if (count($pools = $node->getStoragePoolsType('Arch',$type)))
foreach ($pools as $pool_name) { ?>
- pool_logical_util($pool_name),2); ?> (pool_numvols($pool_name); ?>) |
+ pool_logical_util($pool_name,'Arch'),2); ?> (pool_numvols($pool_name,'ARCHIVE'); ?>) |
diff --git a/application/views/nodes/detail_schedule.php b/application/views/nodes/detail_schedule.php
new file mode 100644
index 0000000..33bcb43
--- /dev/null
+++ b/application/views/nodes/detail_schedule.php
@@ -0,0 +1,92 @@
+
+
+
+
+
+ TSM Node Schedules |
+
+ ASSOCIATION->find_all()) { ?>
+
+ |
+
+
+ Schedule |
+ Start Time |
+ Duration |
+ Repeat |
+ Valid Day |
+ Priority |
+
+ ASSOCIATION->find_all() as $ao) { ?>
+
+ display('SCHEDULE_NAME'); ?> |
+ SCHEDULE_CLIENT->display('STARTTIME'); ?> |
+ SCHEDULE_CLIENT->DURATION,$ao->SCHEDULE_CLIENT->DURUNITS); ?> |
+ SCHEDULE_CLIENT->PERIOD,$ao->SCHEDULE_CLIENT->PERUNITS); ?> |
+ SCHEDULE_CLIENT->display('DAYOFWEEK'); ?> |
+ SCHEDULE_CLIENT->display('PRIORITY'); ?> |
+
+
+
+ There are no TSM schedules define for this Node. |
+
+
+ |
+
+
+
+ Summary Activity |
+
+
+ |
+
+
+ Start |
+ End |
+ Activity |
+ Schedule |
+ MB |
+
+ SUMMARY->find_all() as $so) { ?>
+
+ display('START_TIME'); ?> |
+ display('END_TIME'); ?> |
+ display('ACTIVITY'); ?> |
+ display('SCHEDULE_NAME'); ?> |
+ display('BYTES')/1024/1024,2)); ?> |
+
+
+
+ |
+
+
+
+
+
+ Schedule Activity |
+
+
+ |
+
+
+ Sched Start |
+ Act Start |
+ Schedule Name |
+ Status |
+ Completed |
+ Result |
+
+ EVENT->find_all() as $eo) { ?>
+
+ display('SCHEDULED_START'); ?> |
+ ACTUAL_START ? $eo->display('ACTUAL_START') : ' '; ?> |
+ display('SCHEDULE_NAME'); ?> |
+ display('STATUS'); ?> |
+ COMPLETED ? $eo->display('COMPLETED') : ' '; ?> |
+ RESULT,$eo->display('REASON')); ?> |
+
+
+
+ |
+
+
diff --git a/application/views/nodes/detail_volumes.php b/application/views/nodes/detail_volumes.php
new file mode 100644
index 0000000..ddff308
--- /dev/null
+++ b/application/views/nodes/detail_volumes.php
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+ |
+
+ volumes($dtype)) { ?>
+
+ |
+
+
+ Volume |
+ Last Read Date |
+ Last Write Date |
+ Access |
+ Status |
+ Errors R/W |
+ Utilisation |
+ Reclaim |
+ Nodes on Vol |
+
+ volumes($dtype) as $stgpool => $vols) {
+ $spo = ORM::factory('STGPOOL',$stgpool); ?>
+ STGPOOL_NAME,$spo->RECLAIM,$spo->NUMSCRATCHUSED,$spo->MAXSCRATCH,$spo->DEVCLASSES->DEVTYPE); ?> |
+
+
+ VOLUME_NAME; ?> |
+ display('LAST_READ_DATE'); ?> |
+ display('LAST_WRITE_DATE'); ?> |
+ display('ACCESS'); ?> |
+ display('STATUS'); ?> |
+ READ_ERRORS,$vol->WRITE_ERRORS); ?> |
+ display('EST_CAPACITY_MB'); ?> |
+ display('PCT_RECLAIM'); ?> |
+ getNodesOnVol($dtype); ?> |
+
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+ } ?>
+