array('foreign_key'=>'NODE_NAME','far_key'=>'FILESPACE_NAME'), ); protected $_formats = array( 'REG_TIME'=>array('ORMTSM::date'=>array('d-M-Y')), 'PWSET_TIME'=>array('ORMTSM::date'=>array('d-M-Y')), 'LASTACC_TIME'=>array('ORMTSM::date'=>array('d-M-Y')), 'LASTSESS_SENT'=>array('number_format'=>array(0)), 'LASTSESS_RECVD'=>array('number_format'=>array(0)), 'LASTSESS_DURATION'=>array('number_format'=>array(2)), 'LASTSESS_IDLEWAIT'=>array('number_format'=>array(2)), 'LASTSESS_COMMWAIT'=>array('number_format'=>array(2)), 'LASTSESS_MEDIAWAIT'=>array('number_format'=>array(2)), ); protected $_sorting = array( 'NODE_NAME'=>'ASC', ); // Pools used by a node. private $pools = array(); public function tsmclientversion() { return sprintf('%s.%s.%s.%s',$this->CLIENT_VERSION,$this->CLIENT_RELEASE,$this->CLIENT_LEVEL,$this->CLIENT_SUBLEVEL); } // @todo This needs to return the global configuration. public function passexp() { if ($this->PASSEXP) return 'TBA'; else return _('No Set'); } public function lasttransferpercent() { return 100-($this->LASTSESS_IDLEWAIT+$this->LASTSESS_COMMWAIT+$this->LASTSESS_MEDIAWAIT); } public function lasttransfertime() { return $this->LASTSESS_DURATION*($this->lasttransferpercent()/100); } public function lastsendperformance() { if ($this->lasttransfertime()) return $this->LASTSESS_SENT/$this->lasttransfertime()/1024/1024; else return _('N/A'); } public function lastreceiveperformance() { if ($this->lasttransfertime()) return $this->LASTSESS_RECVD/$this->lasttransfertime()/1024/1024; else return _('N/A'); } public function lastsendaggperformance() { return $this->LASTSESS_SENT/$this->LASTSESS_DURATION/1024/1024; } public function lastreceiveaggperformance() { return $this->LASTSESS_RECVD/$this->LASTSESS_DURATION/1024/1024; } // @todo This should return the system setting (cloptset), if the node setting is not configured. public function txngroupmax() { return $this->display('TXNGROUPMAX'); } // Work out all the storage pools used by a node. // $dtype is BACKUP or ARCHIVE public function storagepools($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; } } return $this->pools[$dtype]; } // Return the storage pools used for a backup type // $dtype is BACKUP or ARCHIVE public function getStoragePools($dtype,$ptype) { if (! isset($this->pools[$dtype])) $this->_getpools($dtype); return isset($this->pools[$dtype][$ptype]) ? $this->pools[$dtype][$ptype] : array(); } /** * Get all the nodes by OS */ public function byos() { $a = $this->select('count(*) AS node_name,platform_name') ->group_by('platform_name') ->order_by('platform_name'); return $a->find_all(); } } ?>