From 22ab1585d9b8b58bcd06a5173a937467de2b68a1 Mon Sep 17 00:00:00 2001 From: Vadim Pisarev Date: Tue, 3 Dec 2019 10:23:32 -0500 Subject: [PATCH] Improved Task::Inventory::Generic::Storages::HP and tests (#758) --- .../Task/Inventory/Generic/Storages/HP.pm | 24 +++++++++++++---- resources/generic/hpacucli/sample3-drives | 7 +++++ resources/generic/hpacucli/sample3-slots | 3 +++ resources/generic/hpacucli/sample3-storage | 26 +++++++++++++++++++ t/tasks/inventory/generic/storages/hp.t | 14 ++++++++-- 5 files changed, 67 insertions(+), 7 deletions(-) create mode 100644 resources/generic/hpacucli/sample3-drives create mode 100644 resources/generic/hpacucli/sample3-slots create mode 100644 resources/generic/hpacucli/sample3-storage diff --git a/lib/FusionInventory/Agent/Task/Inventory/Generic/Storages/HP.pm b/lib/FusionInventory/Agent/Task/Inventory/Generic/Storages/HP.pm index 5fe23b3d5b..349c1ad964 100644 --- a/lib/FusionInventory/Agent/Task/Inventory/Generic/Storages/HP.pm +++ b/lib/FusionInventory/Agent/Task/Inventory/Generic/Storages/HP.pm @@ -17,6 +17,10 @@ use FusionInventory::Agent::Tools; # # HP Array Configuration Utility CLI 7.85-18.0 +# This speeds up hpacucli startup by skipping non-local (iSCSI, Fibre) storages. +# See https://support.hpe.com/hpsc/doc/public/display?docId=emr_na-c03696601 +$ENV{INFOMGR_BYPASS_NONSA} = "1"; + sub _getHpacuacliFromWinRegistry { my $Registry; @@ -120,8 +124,9 @@ sub _getStorage { my %data; while (my $line = <$handle>) { - next unless $line =~ /(\S[^:]+) : \s+ (.+)/x; + next unless $line =~ /^\s*(\S[^:]+):\s+(.+)$/x; $data{$1} = $2; + $data{$1} =~ s/\s+$//; } close $handle; @@ -131,13 +136,22 @@ sub _getStorage { FIRMWARE => $data{'Firmware Revision'} }; + # Possible models: + # HP EG0300FBDBR + # ATA WDC WD740ADFD-00 my $model = $data{'Model'}; - $model =~ s/^ATA\s+//; # ex: ATA WDC WD740ADFD-00 + $model =~ s/^ATA\s+//; $model =~ s/\s+/ /; - $storage->{NAME} = $model; - $storage->{MODEL} = $model; + $storage->{NAME} = $model; + + if ($model =~ /^(\S+)\s+(\S+)$/) { + $storage->{MANUFACTURER} = getCanonicalManufacturer($1); + $storage->{MODEL} = $2; + } else { + $storage->{MANUFACTURER} = getCanonicalManufacturer($model); + $storage->{MODEL} = $model; + } - $storage->{MANUFACTURER} = getCanonicalManufacturer($model); $storage->{DISKSIZE} = getCanonicalSize($data{'Size'}); $storage->{TYPE} = $data{'Drive Type'} eq 'Data Drive' ? diff --git a/resources/generic/hpacucli/sample3-drives b/resources/generic/hpacucli/sample3-drives new file mode 100644 index 0000000000..6c0842b7cc --- /dev/null +++ b/resources/generic/hpacucli/sample3-drives @@ -0,0 +1,7 @@ + +Smart Array P420i in Slot 0 (Embedded) + + array A + + physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK) + diff --git a/resources/generic/hpacucli/sample3-slots b/resources/generic/hpacucli/sample3-slots new file mode 100644 index 0000000000..7a516831e0 --- /dev/null +++ b/resources/generic/hpacucli/sample3-slots @@ -0,0 +1,3 @@ + +Smart Array P420i in Slot 0 (Embedded) (sn: 001438022006330) + diff --git a/resources/generic/hpacucli/sample3-storage b/resources/generic/hpacucli/sample3-storage new file mode 100644 index 0000000000..79b5ef5edc --- /dev/null +++ b/resources/generic/hpacucli/sample3-storage @@ -0,0 +1,26 @@ + +Smart Array P420i in Slot 0 (Embedded) + + array A + + physicaldrive 1I:1:1 + Port: 1I + Box: 1 + Bay: 1 + Status: OK + Drive Type: Data Drive + Interface Type: SAS + Size: 300 GB + Rotational Speed: 10000 + Firmware Revision: HPD7 + Serial Number: PMVXYSZB + Model: HP EG0300FBDBR + Current Temperature (C): 23 + Maximum Temperature (C): 44 + PHY Count: 2 + PHY Transfer Rate: 6.0Gbps, Unknown + Drive Authentication Status: OK + Carrier Application Version: 11 + Carrier Bootloader Version: 6 + + diff --git a/t/tasks/inventory/generic/storages/hp.t b/t/tasks/inventory/generic/storages/hp.t index 531440fbbf..764ad45abe 100755 --- a/t/tasks/inventory/generic/storages/hp.t +++ b/t/tasks/inventory/generic/storages/hp.t @@ -30,18 +30,28 @@ my %storage_tests = ( TYPE => 'disk', DISKSIZE => '74300', DESCRIPTION => 'SATA', - MODEL => 'WDC WD740ADFD-00', + MODEL => 'WD740ADFD-00', MANUFACTURER => 'Western Digital' }, sample2 => { NAME => 'Hitachi HUA72201', - MODEL => 'Hitachi HUA72201', + MODEL => 'HUA72201', FIRMWARE => 'JP4OA3MA', DISKSIZE => '1000000', MANUFACTURER => 'Hitachi', SERIALNUMBER => 'JPW9K0N02UPXHL', DESCRIPTION => 'SATA', TYPE => 'disk' + }, + sample3 => { + NAME => 'HP EG0300FBDBR', + MODEL => 'EG0300FBDBR', + FIRMWARE => 'HPD7', + DISKSIZE => '300000', + MANUFACTURER => 'Hewlett-Packard', + SERIALNUMBER => 'PMVXYSZB', + DESCRIPTION => 'SAS', + TYPE => 'disk' } );