'ASC', ); protected $_has_one = array( 'DEVCLASSES'=>array('foreign_key'=>'DEVCLASS_NAME','far_key'=>'DEVCLASS'), ); protected $_has_many = array( 'COPYGROUP_AR'=>array('foreign_key'=>'DESTINATION','far_key'=>'STGPOOL_NAME'), 'COPYGROUP_BU'=>array('foreign_key'=>'DESTINATION','far_key'=>'STGPOOL_NAME'), 'MGMTCLASS'=>array('foreign_key'=>'MIGDESTINATION','far_key'=>'STGPOOL_NAME'), 'VOLUME'=>array('foreign_key'=>'STGPOOL_NAME','far_key'=>'STGPOOL_NAME'), 'OCC'=>array('foreign_key'=>'STGPOOL_NAME','far_key'=>'STGPOOL_NAME'), ); /** * Get all the OCCUPANCY for this STORAGE POOL */ private function _occupancy() { $result = array(); // In the interest of performance, we load all the records and get PHP to process it. // Our ORM caching we reduce the hit on TSM. foreach (ORM::factory('OCC')->find_all() as $o) if ($o->STGPOOL_NAME == $this->STGPOOL_NAME) array_push($result,$o); return $result; } /** * Get all the NODES for this STORAGE POOL */ public function nodes() { $k = sprintf('%s-%s',__METHOD__,$this->STGPOOL_NAME); $c = Kohana::$config->load('config')->cache; if (is_null($result = Cache::instance($c)->get($k))) { $result = array(); // @todo This might want to return the NODE object. foreach ($this->_occupancy() as $oo) if (! in_array($oo->NODE_NAME,$result)) array_push($result,$oo->NODE_NAME); // @todo Cache time should be configurble Cache::instance($c)->set($k,$result,300); } return $result; } // Return a list of volumes // @param $inout IN|OUT of the library // @param $status volume status FULL|FILLING|PENDING|EMPTY public function libvolstype($inout,$status) { $inout = strtolower($inout); $status = strtoupper($status); $result = array(); if (! isset($result[$inout])) foreach ($this->VOLUME->find_all() as $vo) { $state = $vo->MEDIA->inlib() ? 'in' : 'out'; $result[$state][$vo->STATUS][] = $vo; } return isset($result[$inout][$status]) ? $result[$inout][$status] : array(); } } ?>