'; printf('',get_request('cmd','REQUEST')); printf('',$app['server']->getIndex()); echo ''; echo ''; if (isset($_REQUEST['devclass']) && trim($_REQUEST['devclass'])) foreach ($devclasses->getDevClasses() as $devc => $devclass) { if ($_REQUEST['devclass'] != $devclass->getName()) continue; echo ''; printf(_(''),$devc); printf('', $devclass->access, $devclass->type); if (trim($devclass->library)) { printf('', $devclass->library); printf('', count($drives->getDrives($devclass->library))); } if (trim($devclass->dir)) printf('', $devclass->dir,$devclass->capacity); echo '
Device Class%s 
Type'. classValue(_('%s %s media is used for this device class.'),'value'). ' 
Library'. classValue(_('%s library is used to store this media.'),'value'). ' 
 '. classValue(_('%s drives defined in this library.'),'value'). ' 
Local Directory'. classValue(_('%s directory will contain %s volumes for this device class.'),'value'). ' 
'; echo '
'; printf(_('Storage Pools using device class %s.').'
',$devc); $stgcount = 0; foreach ($stgps->getStoragePools() as $stgp => $stgpool) { # Ignore storage pools not of this device class. if ($stgpool->devclass != $devc) continue; echo ''; # Title echo "\n\n"; printf('', $stgpool->getName(),$stgpool->type,$stgpool->access); # Utlisation and Migration details echo "\n\n"; switch ($stgpool->type) { case 'PRIMARY' : switch ($devclass->access) { case 'Sequential' : printf('', $stgpool->utilisation,$stgpool->migratable); break; case 'Random' : printf('', $stgpool->utilisation,$stgpool->migratable); break; default : printf('', $stgpool->utilisation); break; default : printf('', $stgpool->maxsize/1024/1024); if ($stgpool->reclaim) printf('', $stgpool->reclaim,($stgpool->reclaimstgp ? $stgpool->reclaimstgp : $stgp)); if ($stgpool->reclaimrunning) printf(''); if ($stgpool->reuse) printf('', $stgpool->reuse); # Migration details if ($stgpool->nextstgp) printf('', $stgpool->nextstgp,$stgpool->migr['hi'],$stgpool->migr['low']); if ($stgpool->migr['running']) printf('', $stgpool->migr['mb'],$stgpool->migr['sec']); # Collocation Information if ($stgpool->collocate) printf('', $stgpool->collocate); # Disk Caching. if ($stgpool->cache) printf('', $stgpool->cache); $stgcount++; echo ''; # Volume information. echo "\n\n"; switch ($devclass->type) { case 'DISK' : if ($volumes->getStoragePoolVolumes($stgpool->getName())) foreach ($volumes->getStoragePoolVolumes($stgpool->getName()) as $volume) { printf('', $volume->getName(),$volume->utilisation, $volume->status['volume'], $volume->access); } break; default : # Scratch Media $temp = ''; if (count($volumes->getStoragePoolScratchVolumes($stgpool->getName()))) $temp .= sprintf('', count($volumes->getStoragePoolScratchVolumes($stgpool->getName())),$stgpool->maxscratch); if (count($volumes->getStoragePoolDefinedVolumes($stgpool->getName()))) $temp .= sprintf('', count($volumes->getStoragePoolDefinedVolumes($stgpool->getName()))); if ($temp) { printf('', _('Media SCRATCH Status')); echo $temp; echo ''; $temp = ''; } # Media Access foreach (array('FULL','FILLING','PENDING','EMPTY') as $status) { if (count($volumes->getStoragePoolVolumesStatus($stgpool->getName(),$status))) $temp .= sprintf('', count($volumes->getStoragePoolVolumesStatus($stgpool->getName(),$status)),$status); } if ($temp) { printf('', _('Media FILLING Status')); echo $temp; echo ''; $temp = ''; } foreach (array('READWRITE','READONLY','UNAVAILABLE','OFFSITE','DESTROYED') as $status) { if (count($volumes->getStoragePoolVolumesAccess($stgpool->getName(),$status))) $temp .= sprintf('', count($volumes->getStoragePoolVolumesAccess($stgpool->getName(),$status)),$status); } if ($temp) { printf('', _('Media ACCESS Status')); echo $temp; echo ''; $temp = ''; } # Utilisation $stat['count'] = 0; $stat['util'] = 0; $stat['reclaim'] = 0; $stat['cap'] = 0; foreach ($volumes->getStoragePoolVolumes($stgpool->getName()) as $volume) { $stat['util'] += $volume->utilisation; $stat['reclaim'] += $volume->reclaim; $stat['cap'] += $volume->estcap; $stat['count']++; } if ($stat['count'] > 0) { printf('', _('Media Stats')); printf('', $stat['util']/$stat['count']); printf('', $stat['reclaim']/$stat['count']); printf('', $stat['cap']/$stat['count']); } break; } echo ''; # Nodes with data in this pool echo "\n\n"; $total = 0; $nodedata = ''; $counter = 0; foreach ($occupancy->getStoragePoolTotals($stgpool->getName()) as $node => $typedetails) { $node = $nodes->getNode($node); foreach ($typedetails as $type => $details) { $nodedata .= sprintf('', ($counter++%2==0?'even':'odd'), $node->getName(),$type, (isset($detail['files']) ? number_format($detail['files']) : ' '), (count($node->getTapeVolumes($stgpool->getName(),$type)) ? count($node->getTapeVolumes($stgpool->getName(),$type)) : ' '), isset($details['physical']) ? number_format($details['physical']) : ' '); $total += $details['physical']; } } if ($nodedata) { echo ''; echo ''; } echo '
%s - %s (%s) 
 '. classValue(_('%s%% storage capacity utilised with %s%% volumes used.'), 'value'). ' 
 '. classValue(_('%s%% storage capacity utilised with %s%% migratable data.'), 'value'). ' 
Unknown access strategy %s.',$devclass->access); } break; case 'COPY' : printf('
 '. classValue(_('%s%% storage capacity utilised.'),'value'). ' 
%s %s.', _('Unknown pooltype'),$stgpool->type); } # Max object size echo "\n\n"; if ($stgpool->maxsize) printf('
 '. classValue(_('%3.2fMB Maximum Object Size.'),'value'). ' 
 '. classValue(_('%s%% wasted space is required before reclaimation. Reclamation will use %s'), 'value'). ' 
 '. _('Reclamation IS currently running.'). ' 
 '. classValue(_('%s days must pass before volumes will be reused.'),'value'). ' 
 '. classValue(_('Migration to %s will occur at %s%% (stopping at %s%%)'),'value'). ' 
 '. classValue(_('Migration IS currently running. %sMB Migrated %ss'),'value'). ' 
 '. classValue(_('%s Collocation.'),'value'). ' 
 '. classValue(_('%s Migration caching.'),'value'). ' 
 
 '. classValue(_('Vol %s (%s%% %s) - %s.'),'value'). ' 
 '. classValue(_('%s scratch media in use (of %s).'),'value'). ' 
 '. classValue(_('%s defined media in use.'),'value'). ' 
%s
 
 '. classValue(_('%s media %s.'),'value'). ' 
%s
 
 '. classValue(_('%s media %s.'),'value'). ' 
%s
 
%s
 '. classValue(_('%3.2f%% average utilisation.'),'value'). ' 
 '. classValue(_('%3.2f%% average wasted space.'),'value'). ' 
 '. classValue(_('%3.0f MB average capacity.'),'value'). ' 
 
%s%s%s %s%s MB
'."\n\n"; echo ''; printf('', _('Nodes with data in this storage pool.')); printf('', _('Node'),_('Type'),_('Volumes'),_('MB')); echo $nodedata; printf('', _('Total'),number_format($total)); echo '
%s
%s%s%s%s
%s%s MB
'."\n\n"; echo '
 
 

'."\n\n"; } if (! $stgcount) printf('%s
',_('There are no storage pools using this DEVCLASS.')); } ?>