source: ocsinventory-agent/trunk/fuentes/lib/Ocsinventory/Agent/Backend/OS/Linux/Storages/ServeRaid.pm @ 468

Last change on this file since 468 was 468, checked in by mabarracus, 4 years ago

Copyt trusty code

File size: 2.9 KB
Line 
1package Ocsinventory::Agent::Backend::OS::Linux::Storages::ServeRaid;
2
3use Ocsinventory::Agent::Backend::OS::Linux::Storages;
4
5# Tested on 2.6.* kernels
6#
7# Cards tested :
8#
9# IBM ServeRAID-6M
10# IBM ServeRAID-6i
11
12use strict;
13
14sub check {
15
16        my $ret = 0;
17
18        # Do we have ipssend installed ?
19        if (can_run("ipssend")) {
20                foreach (`ipssend GETVERSION 2>/dev/null`) {
21                        if (/.*ServeRAID Controller Number\s(\d*).*/) {
22                            $ret = $1;
23                            last;
24                        } 
25                }
26        }
27        return $ret;
28}
29
30sub run {
31
32        my $params = shift;
33        my $common = $params->{common};
34        my $logger = $params->{logger};
35        my $slot;
36
37        $logger->debug("ServeRaid: ipssend GETVERSION");
38        foreach (`ipssend GETVERSION 2>/dev/null`) {
39
40# Example Output :
41# Found 1 IBM ServeRAID controller(s).
42#----------------------------------------------------------------------
43#ServeRAID Controller(s) Version Information
44#----------------------------------------------------------------------
45#   Controlling BIOS version       : 7.00.14
46#
47#ServeRAID Controller Number 1
48#   Controller type                : ServeRAID-6M
49#   Controller slot information    : 2
50#   Actual BIOS version            : 7.00.14
51#   Firmware version               : 7.00.14
52#   Device driver version          : 7.10.18
53
54                $slot = $1 if /.*ServeRAID Controller Number\s(\d*).*/;
55
56                if (/.*Controller type.*:\s(.*)/) {
57                        my $name = $1;
58                        my ($serial, $capacity, $scsi, $channel, $state);
59
60                        $logger->debug("ServeRaid: ipssend GETCONFIG $slot PD");
61                        foreach (`ipssend GETCONFIG $slot PD 2>/dev/null`) {
62# Example Output :
63#   Channel #1:
64#      Target on SCSI ID 0
65#         Device is a Hard disk
66#         SCSI ID                  : 0
67#         PFA (Yes/No)             : No
68#         State                    : Online (ONL)
69#         Size (in MB)/(in sectors): 34715/71096368
70#         Device ID                : IBM-ESXSCBR036C3DFQDB2Q6CDKM
71#         FRU part number          : 32P0729
72               
73                                $channel        = $1 if /.*Channel #(.*):/;
74                                $scsi           = $1 if /.*SCSI ID.*:\s(.*)/;
75                                $state          = $1 if /.*State.*\((.*)\)/;           
76                                $capacity       = $1 if /.*Size.*:\s(\d*)\/(\d*)/;
77                                $serial         = $1 if /.*Device ID.*:\s(.*)/;
78                       
79                                if (/.*FRU part number.*:\s(.*)/) {
80                                        my $model = $1;
81                                        my $manufacturer = Ocsinventory::Agent::Backend::OS::Linux::Storages::getManufacturer($serial);
82                                        ## my $fullname = "$name $slot/$channel/$scsi $state";
83
84                                        $logger->debug("ServeRaid: found $model, $manufacturer, $model, SCSI, disk, $capacity, $serial, ");
85
86                                        $common->addStorages({
87                                                NAME            => "$manufacturer $model",
88                                                MANUFACTURER    => $manufacturer,
89                                                MODEL           => $model,
90                                                DESCRIPTION     => "SCSI",
91                                                TYPE            => "disk",
92                                                DISKSIZE        => $capacity,
93                                                SERIALNUMBER    => $serial,
94                                                FIRMWARE        => ""}); 
95                                       
96                                        # don't undef $channel, appear only once for several drive.
97                                        $scsi = $state = $capacity = $serial = undef;
98                                }
99                        }                       
100                }
101        }
102}
103
1041;
105
Note: See TracBrowser for help on using the repository browser.