/
lib
/
raider
/
Raider
/
Info
/
File Upload :
llllll
Current File: //lib/raider/Raider/Info/PercCli2.pm
use strict; use warnings; package Raider::Info::PercCli2; use base qw( Raider::Info::PercCli ); =head1 NAME Raider::Info::PercCli2 - PercCli2 specific instructions for get-info =head1 DESCRIPTION PercCli2 specific methods to gather information required for populating the .info file. =head1 USAGE use Raider::Info::PercCli2; my $info = Raider::Info::PercCli2->new(); =cut sub get_name { return 'PercCli2'; } sub extract_LD_info { my ($self, $jobs, $controller, $array) = @_; my $name = $self->get_name; my $data = $jobs->runPercCliCmdJsonSingleton("/c$controller/v$array show all")->{'Response Data'}{'Virtual Drives'}[0]; my $type = $data->{'VD Info'}{TYPE}; my ($raid_level) = $type =~ /^RAID(\d+)/i; my $block_device = $data->{'VD Properties'}{'OS Drive Name'}; my @phys_disks_in_ld; my $unidentifiable_disks = 0; if ($block_device) { foreach my $disk (@{$data->{PDs} || []}) { my $model = $disk->{Model}; $model =~ tr/ //ds; my $did = $disk->{DID} // $disk->{PID}; unless ($model && $did) { $unidentifiable_disks++; next; } my $serial; eval { $serial = $self->get_phys_disk_serial_firmware($did, $block_device)->{serial}; }; $serial ||= $did; push(@phys_disks_in_ld, "$model\:::$serial"); } } else { $self->logger({cat => 'w', msg => "failed discovering block device of array [$array] on $name controller [$controller]. Some disk information will not be available."}); } my %info = ( num_drives => $data->{PDs} ? scalar @{$data->{PDs}} : 'unknown', raid_level => $raid_level //= 'unknown', block_device => $block_device //= 'unknown', raid_state => $data->{'VD Info'}{State} //= 'unknown', stripe_size => $data->{'VD Properties'}{'Strip Size'} //= 'unknown', size_unparsed => $data->{'VD Info'}{Size} //= 'unknown', size_mb => 'unknown', pds => \@phys_disks_in_ld, unidentifiable_disks => $unidentifiable_disks, ); if ($data->{'VD Properties'}{'Number of Blocks'}) { my $size = $data->{'VD Properties'}{'Block Size'} // 512; $info{size_mb} = $self->convert_to_mb({ unit => 'block', block_size => $size, value => $data->{'VD Properties'}{'Number of Blocks'}, }); } return \%info; } 1;
Copyright ©2k19 -
Hexid
|
Tex7ure