File Coverage

blib/lib/FusionInventory/Agent/Task/Inventory/BSD/Storages.pm
Criterion Covered Total %
statement 19 39 48.7
branch 4 16 25.0
condition n/a
subroutine 4 6 66.6
pod 0 2 0.0
total 27 63 42.8


line stmt bran cond sub pod time code
1             package FusionInventory::Agent::Task::Inventory::BSD::Storages;
2              
3 3     3   113305488 use strict;
  3         29  
  3         173  
4 3     3   19 use warnings;
  3         24  
  3         149  
5              
6 3     3   732 use FusionInventory::Agent::Tools;
  3         8  
  3         2293  
7              
8             sub isEnabled {
9 0     0 0 0 my (%params) = @_;
10 0 0       0 return 0 if $params{no_category}->{storage};
11 0         0 return -r '/etc/fstab';
12             }
13              
14             sub doInventory {
15 0     0 0 0 my (%params) = @_;
16              
17 0         0 my $inventory = $params{inventory};
18 0         0 my $logger = $params{logger};
19              
20             # get a list of devices from /etc/fstab
21 0         0 my @devices = _getDevicesFromFstab(logger => $logger);
22              
23             # parse dmesg
24 0         0 my @lines = getAllLines(
25             command => 'dmesg'
26             );
27              
28 0         0 foreach my $device (@devices) {
29              
30 0         0 foreach my $line (@lines) {
31 0 0       0 if ($line =~ /^$device->{DESCRIPTION}.*<(.*)>/) {
32 0         0 $device->{MODEL} = $1;
33             }
34 0 0       0 if ($line =~ /^$device->{DESCRIPTION}.*\s+(\d+)\s*MB/) {
35 0         0 $device->{CAPACITY} = $1;
36             }
37             }
38              
39 0 0       0 if ($device->{MODEL}) {
40 0 0       0 if ($device->{MODEL} =~ s/^(SGI|SONY|WDC|ASUS|LG|TEAC|SAMSUNG|PHILIPS|PIONEER|MAXTOR|PLEXTOR|SEAGATE|IBM|SUN|SGI|DEC|FUJITSU|TOSHIBA|YAMAHA|HITACHI|VERITAS)\s*//i) {
41 0         0 $device->{MANUFACTURER} = $1;
42             }
43              
44             # clean up the model
45 0         0 $device->{MODEL} =~ s/^(\s|,)*//;
46 0         0 $device->{MODEL} =~ s/(\s|,)*$//;
47             }
48              
49             $inventory->addEntry(
50 0         0 section => 'STORAGES',
51             entry => $device
52             );
53             }
54             }
55              
56             sub _getDevicesFromFstab {
57 1     1   14 my (%params) = (
58             file => '/etc/fstab',
59             @_
60             );
61              
62 1         7 my $handle = getFileHandle(%params);
63 1 50       4 return unless $handle;
64              
65 1         2 my (@devices, %seen);
66 1         12 while (my $line = <$handle>) {
67 5 100       22 next unless $line =~ m{^/dev/(\S+)};
68 4 50       15 next if $seen{$1}++;
69 4         22 push @devices, { DESCRIPTION => $1 };
70             }
71 1         8 close $handle;
72              
73 1         7 return @devices;
74             }
75              
76             1;