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

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

Copyt trusty code

File size: 3.3 KB
Line 
1package Ocsinventory::Agent::Backend::OS::Linux::Storages::HP;
2
3use Ocsinventory::Agent::Backend::OS::Linux::Storages;
4# Tested on 2.6.* kernels
5#
6# Cards tested :
7#
8# Smart Array E200
9#
10# HP Array Configuration Utility CLI 7.85-18.0
11
12use strict;
13
14sub check {
15
16    my $ret;
17# Do we have hpacucli ?
18    if (can_run("hpacucli")) {
19        foreach (`hpacucli ctrl all show 2> /dev/null`) {
20            if (/.*Slot\s(\d*).*/) {
21                $ret = 1;
22                last;
23            }
24        }
25    }
26    return $ret;
27
28}
29
30sub run {
31
32
33    my $params = shift;
34    my $common = $params->{common};
35    my $logger = $params->{logger};
36
37    my ($pd, $serialnumber, $model, $capacity, $firmware, $description, $media, $manufacturer);
38
39    foreach (`hpacucli ctrl all show 2> /dev/null`) {
40
41# Example output :
42#   
43# Smart Array E200 in Slot 2    (sn: PA6C90K9SUH1ZA)
44
45        if (/.*Slot\s(\d*).*/) {
46
47            my $slot = $1;
48
49            foreach (`hpacucli ctrl slot=$slot pd all show 2> /dev/null`) {
50
51# Example output :
52                #
53# Smart Array E200 in Slot 2
54                #
55#   array A
56                #
57#      physicaldrive 2I:1:1 (port 2I:box 1:bay 1, SATA, 74.3 GB, OK)
58#      physicaldrive 2I:1:2 (port 2I:box 1:bay 2, SATA, 74.3 GB, OK)
59
60                if (/.*physicaldrive\s(\S*)/) {
61                    my $pd = $1;
62                    foreach (`hpacucli ctrl slot=$slot pd $pd show 2> /dev/null`) {
63
64# Example output :
65
66# Smart Array E200 in Slot 2
67                        #
68#   array A
69                        #
70#      physicaldrive 1:1
71#         Port: 2I
72#         Box: 1
73#         Bay: 1
74#         Status: OK
75#         Drive Type: Data Drive
76#         Interface Type: SATA
77#         Size: 74.3 GB
78#         Firmware Revision: 21.07QR4
79#         Serial Number:      WD-WMANS1732855
80#         Model: ATA     WDC WD740ADFD-00
81#         SATA NCQ Capable: False
82#         PHY Count: 1       
83
84                        $model = $1 if /.*Model:\s(.*)/;
85                        $description = $1 if /.*Interface Type:\s(.*)/;
86                        $media = $1 if /.*Drive Type:\s(.*)/;
87                        $capacity = 1000*$1 if /.*Size:\s(.*)/;
88                        $serialnumber = $1 if /.*Serial Number:\s(.*)/;
89                        $firmware = $1 if /.*Firmware Revision:\s(.*)/;
90                    }
91                    $serialnumber =~ s/^\s+//;
92                    $model =~ s/^ATA\s+//; # ex: ATA     WDC WD740ADFD-00
93                    $model =~ s/\s+/ /;
94                    $manufacturer = Ocsinventory::Agent::Backend::OS::Linux::Storages::getManufacturer($model);
95                    if ($media eq 'Data Drive') {
96                        $media = 'disk';
97                    }
98
99                    $logger->debug("HP: N/A, $manufacturer, $model, $description, $media, $capacity, $serialnumber, $firmware");
100
101                    $common->addStorages({
102                            NAME => $model,
103                            MANUFACTURER => $manufacturer,
104                            MODEL => $model,
105                            DESCRIPTION => $description,
106                            TYPE => $media,
107                            DISKSIZE => $capacity,
108                            SERIALNUMBER => $serialnumber,
109                            FIRMWARE => $firmware
110                        }); 
111                }
112            }
113        }
114    }
115}
116
1171;
Note: See TracBrowser for help on using the repository browser.