File Coverage

blib/lib/FusionInventory/Agent/Task/Inventory/BSD/Storages/Megaraid.pm
Criterion Covered Total %
statement 29 35 82.8
branch 3 6 50.0
condition n/a
subroutine 5 7 71.4
pod 0 2 0.0
total 37 50 74.0


line stmt bran cond sub pod time code
1             package FusionInventory::Agent::Task::Inventory::BSD::Storages::Megaraid;
2              
3             # Authors: Egor Shornikov , Egor Morozov
4             # License: GPLv2+
5              
6 2     2   121347117 use strict;
  2         2  
  2         67  
7 2     2   11 use warnings;
  2         4  
  2         78  
8              
9 2     2   415 use FusionInventory::Agent::Tools;
  2         4  
  2         244  
10 2     2   464 use FusionInventory::Agent::Task::Inventory::BSD::Storages;
  2         2  
  2         15  
11              
12             sub isEnabled {
13 0     0 0 0 return canRun('mfiutil');
14             }
15              
16             sub _parseMfiutil {
17 1     1   197 my $handle = getFileHandle(@_);
18              
19 1         1 my @storages;
20 1         22 while (my $line = <$handle>) {
21 7 100       26 unless ( $line =~ m/^[^(]*\(\s+(\d+\w+)\)\s+\S+\s+<(\S+)\s+(\S+)\s+\S+\s+serial=(\S+)>\s+(\S+)\s+.*$/ ) { next; }
  1         2  
22 6         12 my ( $size, $vendor, $model, $serial, $type ) = ( $1, $2, $3, $4, $5 );
23              
24 6 50       16 if ( $size =~ /(\d+)G/ ){
    0          
25 6         7 $size = $1 * 1024;
26             } elsif( $size =~ /(\d+)T/ ){
27 0         0 $size = $1 * 1024 * 1024;
28             }
29              
30 6         5 my $storage;
31 6         10 $storage->{NAME} = "$vendor $model";
32 6         7 $storage->{DESCRIPTION} = $type;
33 6         2 $storage->{TYPE} = 'disk';
34 6         7 $storage->{DISKSIZE} = $size;
35 6         6 $storage->{SERIALNUMBER} = $serial;
36              
37 6         17 push @storages, $storage;
38             }
39 1         6 close $handle;
40              
41 1         5 return @storages;
42             }
43              
44             sub doInventory {
45 0     0 0   my (%params) = @_;
46              
47 0           my $inventory = $params{inventory};
48              
49 0           foreach my $storage (_parseMfiutil(
50             logger => $params{logger},
51             command => 'mfiutil show drives')) {
52 0           $inventory->addEntry(section => 'STORAGES', entry => $storage);
53             }
54             }
55              
56             1;