<?php defined('SYSPATH') or die('No direct access allowed.'); /** * * @package PTA * @subpackage Domain * @category Models * @author Deon George * @copyright (c) 2010 phpTSMadmin Development Team * @license http://phptsmadmin.sf.net/license.html */ class Model_DOMAIN extends TSM_ORM { protected $_table_name = 'DOMAINS'; protected $_primary_key = 'DOMAIN_NAME'; // We need a primary key to detect that the object is loaded. protected $_sorting = array( 'DOMAIN_NAME'=>'ASC', ); protected $_has_many = array( 'MGMTCLASS'=>array('foreign_key'=>'DOMAIN_NAME','far_key'=>'DOMAIN_NAME'), 'NODE'=>array('foreign_key'=>'DOMAIN_NAME','far_key'=>'DOMAIN_NAME'), 'SCHEDULE_CLIENT'=>array('foreign_key'=>'DOMAIN_NAME','far_key'=>'DOMAIN_NAME') ); protected $_tsm = array( 'db2'=>array( '_has_many'=>array( 'MGMTCLASS'=>array('foreign_key'=>'DOMAIN_NAME','far_key'=>'DOMAIN_NAME'), 'NODE'=>array('foreign_key'=>'DOMAINNAME','far_key'=>'DOMAIN_NAME'), 'SCHEDULE_CLIENT'=>array('foreign_key'=>'DOMAIN_NAME','far_key'=>'DOMAIN_NAME') ), ), ); // Pools used by a domain. private $pools = array(); // Work out all the storage pools used by a domain. // $dtype is BACKUP (Bkup) or ARCHIVE (Arch) 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->NODE->find_all() as $no) foreach ($no->getStoragePools($dtype) as $ptype => $stgpools) foreach ($stgpools as $spo) if (! isset($this->pools[$dtype][$ptype]) OR ! in_array($spo,$this->pools[$dtype][$ptype])) $this->pools[$dtype][$ptype][] = $spo; return $this->pools[$dtype]; } // Return the storage pools used for a domain by backup type // $dtype is BACKUP (Bkup) or ARCHIVE (Arch) // $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(); } // $dtype is BACKUP or ARCHIVE // $ptype is pool type (PRIMARY,ACTIVE,COPY) public function getStorageModeVols($dtype,$ptype,$spo='') { $result = array(); foreach ($this->NODE->find_all() as $no) $result = array_merge($result,$no->getStorageModeVols($dtype,$ptype,$spo)); return $result; } // $dtype is BACKUP (Bkup) or ARCHIVE (Arch) // $ptype is pool type (PRIMARY,ACTIVE,COPY) public function getStorageModeFiles($dtype,$ptype,$spo='') { $count = 0; foreach ($this->NODE->find_all() as $no) $count += $no->getStorageModeFiles($dtype,$ptype,$spo); return $count; } // $dtype is BACKUP or ARCHIVE // $ptype is pool type (PRIMARY,ACTIVE,COPY) public function getStorageModeData($dtype,$ptype,$spo='') { $count = 0; foreach ($this->NODE->find_all() as $no) $count += $no->getStorageModeData($dtype,$ptype,$spo); return $count; } // $dtype is BACKUP or ARCHIVE // $ptype is pool type (PRIMARY,ACTIVE,COPY) public function getStorageModeNodes($dtype,$ptype,$spo='') { $result = array(); foreach ($this->NODE->find_all() as $no) if ($no->getStorageModeData($dtype,$ptype,$spo)) array_push($result,$no); return $result; } } ?>