diff --git a/hardware/server/sun/mgmtcards/lib/telnet.pm b/hardware/server/sun/mgmt_cards/lib/telnet.pm similarity index 98% rename from hardware/server/sun/mgmtcards/lib/telnet.pm rename to hardware/server/sun/mgmt_cards/lib/telnet.pm index 14d367ece..ccd2105f2 100644 --- a/hardware/server/sun/mgmtcards/lib/telnet.pm +++ b/hardware/server/sun/mgmt_cards/lib/telnet.pm @@ -33,7 +33,7 @@ # #################################################################################### -package hardware::server::sun::mgmtcards::lib::telnet; +package hardware::server::sun::mgmt_cards::lib::telnet; use strict; use warnings; diff --git a/hardware/server/sun/mgmtcards/mode/environmentsf2xx.pm b/hardware/server/sun/mgmt_cards/mode/environmentsf2xx.pm similarity index 99% rename from hardware/server/sun/mgmtcards/mode/environmentsf2xx.pm rename to hardware/server/sun/mgmt_cards/mode/environmentsf2xx.pm index f0824042e..d17ed692b 100644 --- a/hardware/server/sun/mgmtcards/mode/environmentsf2xx.pm +++ b/hardware/server/sun/mgmt_cards/mode/environmentsf2xx.pm @@ -33,7 +33,7 @@ # #################################################################################### -package hardware::server::sun::mgmtcards::mode::environmentsf2xx; +package hardware::server::sun::mgmt_cards::mode::environmentsf2xx; use base qw(centreon::plugins::mode); diff --git a/hardware/server/sun/mgmtcards/mode/environmentv4xx.pm b/hardware/server/sun/mgmt_cards/mode/environmentv4xx.pm similarity index 99% rename from hardware/server/sun/mgmtcards/mode/environmentv4xx.pm rename to hardware/server/sun/mgmt_cards/mode/environmentv4xx.pm index 71fcf9e9c..97c7b6a83 100644 --- a/hardware/server/sun/mgmtcards/mode/environmentv4xx.pm +++ b/hardware/server/sun/mgmt_cards/mode/environmentv4xx.pm @@ -33,7 +33,7 @@ # #################################################################################### -package hardware::server::sun::mgmtcards::mode::environmentv4xx; +package hardware::server::sun::mgmt_cards::mode::environmentv4xx; use base qw(centreon::plugins::mode); diff --git a/hardware/server/sun/mgmtcards/mode/environmentv8xx.pm b/hardware/server/sun/mgmt_cards/mode/environmentv8xx.pm similarity index 99% rename from hardware/server/sun/mgmtcards/mode/environmentv8xx.pm rename to hardware/server/sun/mgmt_cards/mode/environmentv8xx.pm index e17a2456f..fefdf6ad5 100644 --- a/hardware/server/sun/mgmtcards/mode/environmentv8xx.pm +++ b/hardware/server/sun/mgmt_cards/mode/environmentv8xx.pm @@ -33,7 +33,7 @@ # #################################################################################### -package hardware::server::sun::mgmtcards::mode::environmentv8xx; +package hardware::server::sun::mgmt_cards::mode::environmentv8xx; use base qw(centreon::plugins::mode); diff --git a/hardware/server/sun/mgmtcards/mode/showboards.pm b/hardware/server/sun/mgmt_cards/mode/showboards.pm similarity index 99% rename from hardware/server/sun/mgmtcards/mode/showboards.pm rename to hardware/server/sun/mgmt_cards/mode/showboards.pm index 3e77408d0..72a8ab9e1 100644 --- a/hardware/server/sun/mgmtcards/mode/showboards.pm +++ b/hardware/server/sun/mgmt_cards/mode/showboards.pm @@ -33,7 +33,7 @@ # #################################################################################### -package hardware::server::sun::mgmtcards::mode::showboards; +package hardware::server::sun::mgmt_cards::mode::showboards; use base qw(centreon::plugins::mode); diff --git a/hardware/server/sun/mgmtcards/mode/showenvironment.pm b/hardware/server/sun/mgmt_cards/mode/showenvironment.pm similarity index 99% rename from hardware/server/sun/mgmtcards/mode/showenvironment.pm rename to hardware/server/sun/mgmt_cards/mode/showenvironment.pm index 02151c76b..c4a0fa9d9 100644 --- a/hardware/server/sun/mgmtcards/mode/showenvironment.pm +++ b/hardware/server/sun/mgmt_cards/mode/showenvironment.pm @@ -33,7 +33,7 @@ # #################################################################################### -package hardware::server::sun::mgmtcards::mode::showenvironment; +package hardware::server::sun::mgmt_cards::mode::showenvironment; use base qw(centreon::plugins::mode); diff --git a/hardware/server/sun/mgmtcards/mode/showfaults.pm b/hardware/server/sun/mgmt_cards/mode/showfaults.pm similarity index 98% rename from hardware/server/sun/mgmtcards/mode/showfaults.pm rename to hardware/server/sun/mgmt_cards/mode/showfaults.pm index 32fe8a33c..2ef8c7faa 100644 --- a/hardware/server/sun/mgmtcards/mode/showfaults.pm +++ b/hardware/server/sun/mgmt_cards/mode/showfaults.pm @@ -33,7 +33,7 @@ # #################################################################################### -package hardware::server::sun::mgmtcards::mode::showfaults; +package hardware::server::sun::mgmt_cards::mode::showfaults; use base qw(centreon::plugins::mode); diff --git a/hardware/server/sun/mgmtcards/mode/showfaulty.pm b/hardware/server/sun/mgmt_cards/mode/showfaulty.pm similarity index 99% rename from hardware/server/sun/mgmtcards/mode/showfaulty.pm rename to hardware/server/sun/mgmt_cards/mode/showfaulty.pm index 915754122..5a62f0e8f 100644 --- a/hardware/server/sun/mgmtcards/mode/showfaulty.pm +++ b/hardware/server/sun/mgmt_cards/mode/showfaulty.pm @@ -33,7 +33,7 @@ # #################################################################################### -package hardware::server::sun::mgmtcards::mode::showfaulty; +package hardware::server::sun::mgmt_cards::mode::showfaulty; use base qw(centreon::plugins::mode); diff --git a/hardware/server/sun/mgmtcards/plugin.pm b/hardware/server/sun/mgmt_cards/plugin.pm similarity index 83% rename from hardware/server/sun/mgmtcards/plugin.pm rename to hardware/server/sun/mgmt_cards/plugin.pm index 87cc61887..9c68aca21 100644 --- a/hardware/server/sun/mgmtcards/plugin.pm +++ b/hardware/server/sun/mgmt_cards/plugin.pm @@ -33,7 +33,7 @@ # #################################################################################### -package hardware::server::sun::mgmtcards::plugin; +package hardware::server::sun::mgmt_cards::plugin; use strict; use warnings; @@ -47,13 +47,13 @@ sub new { $self->{version} = '0.1'; %{$self->{modes}} = ( - 'show-faulty' => 'hardware::server::sun::mgmtcards::mode::showfaulty', - 'showfaults' => 'hardware::server::sun::mgmtcards::mode::showfaults', - 'showboards' => 'hardware::server::sun::mgmtcards::mode::showboards', - 'showenvironment' => 'hardware::server::sun::mgmtcards::mode::showenvironment', - 'environment-v8xx' => 'hardware::server::sun::mgmtcards::mode::environmentv8xx', - 'environment-v4xx' => 'hardware::server::sun::mgmtcards::mode::environmentv4xx', - 'environment-sf2xx' => 'hardware::server::sun::mgmtcards::mode::environmentsf2xx', + 'show-faulty' => 'hardware::server::sun::mgmt_cards::mode::showfaulty', + 'showfaults' => 'hardware::server::sun::mgmt_cards::mode::showfaults', + 'showboards' => 'hardware::server::sun::mgmt_cards::mode::showboards', + 'showenvironment' => 'hardware::server::sun::mgmt_cards::mode::showenvironment', + 'environment-v8xx' => 'hardware::server::sun::mgmt_cards::mode::environmentv8xx', + 'environment-v4xx' => 'hardware::server::sun::mgmt_cards::mode::environmentv4xx', + 'environment-sf2xx' => 'hardware::server::sun::mgmt_cards::mode::environmentsf2xx', ); return $self; diff --git a/snmp_standard/mode/inodes.pm b/snmp_standard/mode/inodes.pm index dfbb3b081..a48741dd6 100644 --- a/snmp_standard/mode/inodes.pm +++ b/snmp_standard/mode/inodes.pm @@ -228,7 +228,7 @@ __END__ =head1 MODE Check Inodes space usage on partitions. -Need to enable "includeAllDisk 10%" on snmpd.conf. +Need to enable "includeAllDisks 10%" on snmpd.conf. =over 8 diff --git a/storage/emc/clariion/TODO b/storage/emc/clariion/TODO new file mode 100644 index 000000000..50716351f --- /dev/null +++ b/storage/emc/clariion/TODO @@ -0,0 +1,910 @@ +=============== +Mode Lun +=============== + +Command to test. All: getlun -uid -state -rg -type -drivetype -capacity -prb -bind + +LOGICAL UNIT NUMBER 3 +UID: 60:06:01:60:F8:C0:1E:00:A2:DC:41:39:8C:0F:E1:11 +State: Bound +RAIDGroup ID: 0 +RAID Type: RAID5 +Drive Type: SATAII +LUN Capacity(Megabytes): 1659491 +LUN Capacity(Blocks): 3398637568 +Prct Rebuilt: 100 +Prct Bound: 100 + +LOGICAL UNIT NUMBER 1 +UID: 60:06:01:60:F8:C0:1E:00:0E:A7:F5:5F:66:10:E1:11 +State: Bound +RAIDGroup ID: 101 +RAID Type: Hot Spare +Drive Type: SATAII +LUN Capacity(Megabytes): 704364 +LUN Capacity(Blocks): 1442538624 +Prct Rebuilt: N/A +Prct Bound: 100 + + +For one lun: getlun 1 -uid -state -rg -type -drivetype -capacity -prb -bind + +UID: 60:06:01:60:F8:C0:1E:00:0E:A7:F5:5F:66:10:E1:11 +State: Bound +RAIDGroup ID: 101 +RAID Type: Hot Spare +Drive Type: SATAII +LUN Capacity(Megabytes): 704364 +LUN Capacity(Blocks): 1442538624 +Prct Rebuilt: N/A +Prct Bound: 100 + +====================== +Mode pour l'etat du SP +====================== + +La commande: getcrus +SPE3 Enclosure SPE +SP A State: Present +SP B State: Present +Enclosure SPE Power A0 State: Present +Enclosure SPE Power A1 State: Present +Enclosure SPE Power B0 State: Present +Enclosure SPE Power B1 State: Present +Enclosure SPE SPS A State: Present +Enclosure SPE SPS B State: Present +Enclosure SPE SPS A Cabling State: Valid +Enclosure SPE SPS B Cabling State: Valid + +DAE3P Bus 0 Enclosure 0 +Bus 0 Enclosure 0 Fan A State: Present +Bus 0 Enclosure 0 Fan B State: Present +Bus 0 Enclosure 0 Power A State: Present +Bus 0 Enclosure 0 Power B State: Present +Bus 0 Enclosure 0 LCC A State: Present +Bus 0 Enclosure 0 LCC B State: Present +Bus 0 Enclosure 0 LCC A Revision: 7.85 +Bus 0 Enclosure 0 LCC B Revision: 7.85 +Bus 0 Enclosure 0 LCC A Serial #: FCNBD073833259 +Bus 0 Enclosure 0 LCC B Serial #: FCNBD073621646 + +DAE3P Bus 1 Enclosure 0 +Bus 1 Enclosure 0 Fan A State: Present +Bus 1 Enclosure 0 Fan B State: Present +Bus 1 Enclosure 0 Power A State: Present +Bus 1 Enclosure 0 Power B State: Present +Bus 1 Enclosure 0 LCC A State: Present +Bus 1 Enclosure 0 LCC B State: Present +Bus 1 Enclosure 0 LCC A Revision: 7.85 +Bus 1 Enclosure 0 LCC B Revision: 7.85 +Bus 1 Enclosure 0 LCC A Serial #: JAHSL074355703 +Bus 1 Enclosure 0 LCC B Serial #: JAHSL074355754 + +DAE3P Bus 0 Enclosure 1 +Bus 0 Enclosure 1 Fan A State: Present +Bus 0 Enclosure 1 Fan B State: Present +Bus 0 Enclosure 1 Power A State: Present +Bus 0 Enclosure 1 Power B State: Present +Bus 0 Enclosure 1 LCC A State: Present +Bus 0 Enclosure 1 LCC B State: Present +Bus 0 Enclosure 1 LCC A Revision: 7.85 +Bus 0 Enclosure 1 LCC B Revision: 7.85 +Bus 0 Enclosure 1 LCC A Serial #: JAHDL084257760 +Bus 0 Enclosure 1 LCC B Serial #: JAHDL084156218 + +DAE3P Bus 1 Enclosure 1 +Bus 1 Enclosure 1 Fan A State: Present +Bus 1 Enclosure 1 Fan B State: Present +Bus 1 Enclosure 1 Power A State: Present +Bus 1 Enclosure 1 Power B State: Present +Bus 1 Enclosure 1 LCC A State: Present +Bus 1 Enclosure 1 LCC B State: Present +Bus 1 Enclosure 1 LCC A Revision: 7.85 +Bus 1 Enclosure 1 LCC B Revision: 7.85 +Bus 1 Enclosure 1 LCC A Serial #: FCNBD073619725 +Bus 1 Enclosure 1 LCC B Serial #: FCNBD073619505 + +DAE3P Bus 1 Enclosure 2 +Bus 1 Enclosure 2 Fan A State: Present +Bus 1 Enclosure 2 Fan B State: Present +Bus 1 Enclosure 2 Power A State: Present +Bus 1 Enclosure 2 Power B State: Present +Bus 1 Enclosure 2 LCC A State: Present +Bus 1 Enclosure 2 LCC B State: Present +Bus 1 Enclosure 2 LCC A Revision: 7.85 +Bus 1 Enclosure 2 LCC B Revision: 7.85 +Bus 1 Enclosure 2 LCC A Serial #: JAHSL074767593 +Bus 1 Enclosure 2 LCC B Serial #: JAHSL074666885 + +DAE3P Bus 1 Enclosure 3 +Bus 1 Enclosure 3 Fan A State: Present +Bus 1 Enclosure 3 Fan B State: Present +Bus 1 Enclosure 3 Power A State: Present +Bus 1 Enclosure 3 Power B State: Present +Bus 1 Enclosure 3 LCC A State: Present +Bus 1 Enclosure 3 LCC B State: Present +Bus 1 Enclosure 3 LCC A Revision: 7.85 +Bus 1 Enclosure 3 LCC B Revision: 7.85 +Bus 1 Enclosure 3 LCC A Serial #: JAHSL074767433 +Bus 1 Enclosure 3 LCC B Serial #: JAHSL074666624 + +DAE3P Bus 1 Enclosure 4 +Bus 1 Enclosure 4 Fan A State: Present +Bus 1 Enclosure 4 Fan B State: Present +Bus 1 Enclosure 4 Power A State: Present +Bus 1 Enclosure 4 Power B State: Present +Bus 1 Enclosure 4 LCC A State: Present +Bus 1 Enclosure 4 LCC B State: Present +Bus 1 Enclosure 4 LCC A Revision: 7.85 +Bus 1 Enclosure 4 LCC B Revision: 7.85 +Bus 1 Enclosure 4 LCC A Serial #: JAHSL074767321 +Bus 1 Enclosure 4 LCC B Serial #: JAHSL074767360 + +DAE3P Bus 1 Enclosure 5 +Bus 1 Enclosure 5 Fan A State: Present +Bus 1 Enclosure 5 Fan B State: Present +Bus 1 Enclosure 5 Power A State: Present +Bus 1 Enclosure 5 Power B State: Present +Bus 1 Enclosure 5 LCC A State: Present +Bus 1 Enclosure 5 LCC B State: Present +Bus 1 Enclosure 5 LCC A Revision: 7.85 +Bus 1 Enclosure 5 LCC B Revision: 7.85 +Bus 1 Enclosure 5 LCC A Serial #: JAHSL074664396 +Bus 1 Enclosure 5 LCC B Serial #: JAHSL074768042 + +DAE3P Bus 1 Enclosure 6 +Bus 1 Enclosure 6 Fan A State: Present +Bus 1 Enclosure 6 Fan B State: Present +Bus 1 Enclosure 6 Power A State: Present +Bus 1 Enclosure 6 Power B State: Present +Bus 1 Enclosure 6 LCC A State: Present +Bus 1 Enclosure 6 LCC B State: Present +Bus 1 Enclosure 6 LCC A Revision: 7.85 +Bus 1 Enclosure 6 LCC B Revision: 7.85 +Bus 1 Enclosure 6 LCC A Serial #: JAHSL074666153 +Bus 1 Enclosure 6 LCC B Serial #: JAHSL074767483 + +DAE3P Bus 1 Enclosure 7 +Bus 1 Enclosure 7 Fan A State: Present +Bus 1 Enclosure 7 Fan B State: Present +Bus 1 Enclosure 7 Power A State: Present +Bus 1 Enclosure 7 Power B State: Present +Bus 1 Enclosure 7 LCC A State: Present +Bus 1 Enclosure 7 LCC B State: Present +Bus 1 Enclosure 7 LCC A Revision: 7.85 +Bus 1 Enclosure 7 LCC B Revision: 7.85 +Bus 1 Enclosure 7 LCC A Serial #: JAHDL084155976 +Bus 1 Enclosure 7 LCC B Serial #: JAHDL084153292 + + +====================== +Mode pour le controller global +====================== + +La commande: getcontrol -cbt -busy -write -read -idle +Controller busy ticks: 500867 +Controller idle ticks: 8204812 +Prct Busy: 5.75 +Total Writes: 401613 +Total Reads: 6653775 +Prct Idle: 94.2 + +====================== +Mode pour le cache +====================== + +La commande: getcache -pdp -state -mirror + +Prct Dirty Cache Pages = 0 +SP Read Cache State Enabled +SP Write Cache State Enabled +Write Cache Mirrored: YES + +====================== +Mode pour les disques +====================== + +La commande pour tous: getdisk -state -bytrd -bytwrt -hw -hr + +Bus 1 Enclosure 7 Disk 13 +State: Enabled +Kbytes Read: 311959566 +Kbytes Written: 0 +Hard Write Errors: 0 +Hard Read Errors: 0 + +Bus 1 Enclosure 7 Disk 14 +State: Hot Spare Ready +Kbytes Read: 1957049160 +Kbytes Written: 0 +Hard Write Errors: 0 +Hard Read Errors: 0 + + +La commande pour un seul: getdisk 1_7_14 -state -bytrd -bytwrt -hw -hr + +Bus 1 Enclosure 7 Disk 14 +State: Hot Spare Ready +Kbytes Read: 1957105480 +Kbytes Written: 0 +Hard Write Errors: 0 +Hard Read Errors: 0 + + +====================== +Mode pour les raid group +====================== + +La commande globale: getrg -type -tcap -ucap -prcntdf -prcntex -state + +RaidGroup ID: 40 +RaidGroup Type: r5 +Raw Capacity (Blocks): 5770154824 +Logical Capacity (Blocks): 4327616118 +Free Capacity (Blocks,non-contiguous): 246 +Percent defragmented: 100 +Percent expanded: 100 +RaidGroup State: Explicit_Remove + Valid_luns + +RaidGroup ID: 103 +RaidGroup Type: hot_spare +Raw Capacity (Blocks): 1442538706 +Logical Capacity (Blocks): 1442538706 +Free Capacity (Blocks,non-contiguous): 82 +Percent defragmented: 100 +Percent expanded: 100 +RaidGroup State: Valid_luns + + +Pour un seul: getrg 109 -type -tcap -ucap -prcntdf -prcntex -state + +RaidGroup ID: 109 +RaidGroup Type: hot_spare +Raw Capacity (Blocks): 1442538706 +Logical Capacity (Blocks): 0 +Free Capacity (Blocks,non-contiguous): 1442538706 +Percent defragmented: 100 +Percent expanded: 100 +RaidGroup State: Valid_luns + +====================== +Mode pour les ports +====================== + +The output of the command (on ne peut pas filter par element): getall -hba +Server IP Address: 192.168.7.156 +Agent Rev: 6.26.0 (2.19) + + +HBA Information +--------------- + + +Total number of initiators: 16 + +SP Name: SP A +SP Port ID: 4 +Registered Initiators: 5 +Logged-In Initiators: 2 +Not Logged-In Initiators: 3 + +SP Name: SP A +SP Port ID: 5 +Registered Initiators: 2 +Logged-In Initiators: 1 +Not Logged-In Initiators: 1 + +SP Name: SP B +SP Port ID: 4 +Registered Initiators: 6 +Logged-In Initiators: 4 +Not Logged-In Initiators: 2 + +SP Name: SP B +SP Port ID: 5 +Registered Initiators: 3 +Logged-In Initiators: 1 +Not Logged-In Initiators: 2 + +SP Name: SP A +SP Port ID: 2 +Registered Initiators: 0 +Logged-In Initiators: 0 +Not Logged-In Initiators: 0 + +SP Name: SP A +SP Port ID: 3 +Registered Initiators: 0 +Logged-In Initiators: 0 +Not Logged-In Initiators: 0 + +SP Name: SP A +SP Port ID: 0 +Registered Initiators: 0 +Logged-In Initiators: 0 +Not Logged-In Initiators: 0 + +SP Name: SP A +SP Port ID: 1 +Registered Initiators: 0 +Logged-In Initiators: 0 +Not Logged-In Initiators: 0 + +SP Name: SP B +SP Port ID: 2 +Registered Initiators: 0 +Logged-In Initiators: 0 +Not Logged-In Initiators: 0 + +SP Name: SP B +SP Port ID: 3 +Registered Initiators: 0 +Logged-In Initiators: 0 +Not Logged-In Initiators: 0 + +SP Name: SP B +SP Port ID: 0 +Registered Initiators: 0 +Logged-In Initiators: 0 +Not Logged-In Initiators: 0 + +SP Name: SP B +SP Port ID: 1 +Registered Initiators: 0 +Logged-In Initiators: 0 +Not Logged-In Initiators: 0 + + +Information about each HBA: + +HBA UID: 20:00:00:1B:32:89:97:AD:21:00:00:1B:32:89:97:AD +Server Name: SERVER-v3108.INTERACT.AD +Server IP Address: UNKNOWN +HBA Model Description: @oem27.inf,%ql2300.devicedesc%;QLogic Fibre Channel Adapter +HBA Vendor Description: @oem27.inf,%qlogic%;QLogic +HBA Device Driver Name: ql2300 +Information about each port of this HBA: + + SP Name: SP B + SP Port ID: 4 + HBA Devicename: PwrP:SCSI3:0:1:0 + Trusted: NO + Logged In: YES + Source ID: 69376 + Defined: YES + Initiator Type: 3 + StorageGroup Name: Soft + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + + SP Name: SP A + SP Port ID: 4 + HBA Devicename: PwrP:SCSI3:0:0:0 + Trusted: NO + Logged In: YES + Source ID: 69376 + Defined: YES + Initiator Type: 3 + StorageGroup Name: Soft + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + + +Information about each HBA: + +HBA UID: 20:00:00:00:C9:40:60:37:10:00:00:00:C9:40:60:37 +Server Name: AUGUSTE +Server IP Address: 192.168.7.150 +HBA Model Description: Emulex LightPulse HBA - Multi-protocol Port Driver +HBA Vendor Description: Emulex +HBA Device Driver Name: elxsli2 +Information about each port of this HBA: + + SP Name: SP B + SP Port ID: 4 + HBA Devicename: \\.\SCSI5:0:14:0 + Trusted: NO + Logged In: YES + Source ID: 69632 + Defined: YES + Initiator Type: 3 + StorageGroup Name: auguste + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + + +Information about each HBA: + +HBA UID: 20:01:00:1B:32:27:4B:FD:21:01:00:1B:32:27:4B:FD +Server Name: CESAR +Server IP Address: 192.168.7.155 +HBA Model Description: @oem36.inf,%ql2300.devicedesc%;QLogic Fibre Channel Adapter +HBA Vendor Description: @oem36.inf,%qlogic%;QLogic +HBA Device Driver Name: ql2300 +Information about each port of this HBA: + + SP Name: SP B + SP Port ID: 5 + HBA Devicename: PwrP:SCSI5:0:0:0 + Trusted: NO + Logged In: YES + Source ID: 91136 + Defined: YES + Initiator Type: 3 + StorageGroup Name: Eftp + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + + SP Name: SP A + SP Port ID: 4 + HBA Devicename: PwrP:SCSI4:0:1:0 + Trusted: NO + Logged In: NO + Defined: YES + Initiator Type: 3 + StorageGroup Name: Eftp + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + + SP Name: SP B + SP Port ID: 4 + HBA Devicename: \\.\SCSI5:0:1:0 + Trusted: NO + Logged In: NO + Defined: YES + Initiator Type: 3 + StorageGroup Name: Eftp + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + +Information about each HBA: + +HBA UID: 20:00:00:1B:32:07:4B:FD:21:00:00:1B:32:07:4B:FD +Server Name: CESAR +Server IP Address: 192.168.7.155 +HBA Model Description: @oem36.inf,%ql2300.devicedesc%;QLogic Fibre Channel Adapter +HBA Vendor Description: @oem36.inf,%qlogic%;QLogic +HBA Device Driver Name: ql2300 +Information about each port of this HBA: + + SP Name: SP B + SP Port ID: 5 + HBA Devicename: \\.\SCSI3:0:4:0 + Trusted: NO + Logged In: NO + Defined: YES + Initiator Type: 3 + StorageGroup Name: Eftp + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + + SP Name: SP A + SP Port ID: 4 + HBA Devicename: \\.\SCSI4:0:6:0 + Trusted: NO + Logged In: YES + Source ID: 98048 + Defined: YES + Initiator Type: 3 + StorageGroup Name: None + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + +Information about each HBA: + +HBA UID: 20:01:00:1B:32:28:6F:03:21:01:00:1B:32:28:6F:03 +Server Name: CESAR +Server IP Address: 192.168.7.155 +HBA Model Description: @oem36.inf,%ql2300.devicedesc%;QLogic Fibre Channel Adapter +HBA Vendor Description: @oem36.inf,%qlogic%;QLogic +HBA Device Driver Name: ql2300 +Information about each port of this HBA: + + SP Name: SP B + SP Port ID: 4 + HBA Devicename: PwrP:SCSI6:0:1:0 + Trusted: NO + Logged In: NO + Defined: YES + Initiator Type: 3 + StorageGroup Name: Eftp + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + + SP Name: SP A + SP Port ID: 5 + HBA Devicename: PwrP:SCSI7:0:0:0 + Trusted: NO + Logged In: YES + Source ID: 70912 + Defined: YES + Initiator Type: 3 + StorageGroup Name: Eftp + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + + SP Name: SP A + SP Port ID: 4 + HBA Devicename: \\.\SCSI7:0:1:0 + Trusted: NO + Logged In: NO + Defined: YES + Initiator Type: 3 + StorageGroup Name: Eftp + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + +Information about each HBA: + +HBA UID: 20:00:00:1B:32:08:6F:03:21:00:00:1B:32:08:6F:03 +Server Name: CESAR +Server IP Address: 192.168.7.155 +HBA Model Description: @oem36.inf,%ql2300.devicedesc%;QLogic Fibre Channel Adapter +HBA Vendor Description: @oem36.inf,%qlogic%;QLogic +HBA Device Driver Name: ql2300 +Information about each port of this HBA: + + SP Name: SP B + SP Port ID: 4 + HBA Devicename: \\.\SCSI6:0:1:0 + Trusted: NO + Logged In: YES + Source ID: 65536 + Defined: YES + Initiator Type: 3 + StorageGroup Name: None + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + + +Information about each HBA: + +HBA UID: 20:00:00:1B:32:1A:84:CF:21:00:00:1B:32:1A:84:CF +Server Name: oberon +Server IP Address: 192.168.249.5 +HBA Model Description: +HBA Vendor Description: +HBA Device Driver Name: +Information about each port of this HBA: + + SP Name: SP B + SP Port ID: 4 + HBA Devicename: mpio0:c5t60060160F8C01E00282387A46D10E111d0s2 + Trusted: NO + Logged In: YES + Source ID: 68608 + Defined: YES + Initiator Type: 3 + StorageGroup Name: Cedric_Sun + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + + SP Name: SP A + SP Port ID: 4 + HBA Devicename: c6t5006016041E06B78d0s7 + Trusted: NO + Logged In: NO + Defined: YES + Initiator Type: 3 + StorageGroup Name: None + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + + SP Name: SP B + SP Port ID: 5 + HBA Devicename: c6t5006016941E06B78d0s3 + Trusted: NO + Logged In: NO + Defined: YES + Initiator Type: 3 + StorageGroup Name: None + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + + SP Name: SP A + SP Port ID: 5 + HBA Devicename: c6t5006016141E06B78d0s2 + Trusted: NO + Logged In: NO + Defined: YES + Initiator Type: 3 + StorageGroup Name: None + ArrayCommPath: 1 + Failover mode: 1 + Unit serial number: Array + +Information about each SPPORT: + +SP Name: SP A +SP Port ID: 4 +SP UID: 50:06:01:60:C1:E0:6B:78:50:06:01:60:41:E0:6B:78 +Link Status: Up +Port Status: Online +Switch Present: YES +Switch UID: 10:00:00:60:69:E4:22:4C:20:0E:00:60:69:E4:22:4C +SP Source ID: 69120 +ALPA Value: 0 +Speed Value : 2Gbps +Auto Negotiable : NO +Available Speeds: +1Gbps +2Gbps +4Gbps +Auto +Requested Value: Auto +MAC Address: Not Applicable +SFP State: Online +Reads: 0 +Writes: 0 +Blocks Read: 0 +Blocks Written: 0 +Queue Full/Busy: 0 + +SP Name: SP A +SP Port ID: 5 +SP UID: 50:06:01:60:C1:E0:6B:78:50:06:01:61:41:E0:6B:78 +Link Status: Up +Port Status: Online +Switch Present: YES +Switch UID: 10:00:00:60:69:E4:22:4C:20:65:00:60:69:E4:22:4C +SP Source ID: 91392 +ALPA Value: 0 +Speed Value : 2Gbps +Auto Negotiable : NO +Available Speeds: +1Gbps +2Gbps +4Gbps +Auto +Requested Value: Auto +MAC Address: Not Applicable +SFP State: Online +Reads: 6653814 +Writes: 401613 +Blocks Read: 2498922225 +Blocks Written: 325292333 +Queue Full/Busy: 0 + +SP Name: SP B +SP Port ID: 4 +SP UID: 50:06:01:60:C1:E0:6B:78:50:06:01:68:41:E0:6B:78 +Link Status: Up +Port Status: Online +Switch Present: YES +Switch UID: 10:00:00:60:69:E4:22:4C:20:0D:00:60:69:E4:22:4C +SP Source ID: 68864 +ALPA Value: 0 +Speed Value : 2Gbps +Auto Negotiable : NO +Available Speeds: +1Gbps +2Gbps +4Gbps +Auto +Requested Value: Auto +MAC Address: Not Applicable +SFP State: Online +Reads: 41886606 +Writes: 42365482 +Blocks Read: 3601845798 +Blocks Written: 1546828148 +Queue Full/Busy: 3 + +SP Name: SP B +SP Port ID: 5 +SP UID: 50:06:01:60:C1:E0:6B:78:50:06:01:69:41:E0:6B:78 +Link Status: Up +Port Status: Online +Switch Present: YES +Switch UID: 10:00:00:60:69:E4:22:4C:20:16:00:60:69:E4:22:4C +SP Source ID: 71168 +ALPA Value: 0 +Speed Value : 2Gbps +Auto Negotiable : NO +Available Speeds: +1Gbps +2Gbps +4Gbps +Auto +Requested Value: Auto +MAC Address: Not Applicable +SFP State: Online +Reads: 744257 +Writes: 325827 +Blocks Read: 1303741732 +Blocks Written: 324948212 +Queue Full/Busy: 0 + +SP Name: SP A +SP Port ID: 2 +SP UID: iqn.1992-04.com.emc:cx.ck200074800997.a2 +Link Status: Down +Port Status: Online +Switch Present: Not Applicable +Speed Value : N/A +Auto Negotiable : YES +Available Speeds: +1Gbps +10Mbps +100Mbps +Auto +Requested Value: Auto +MAC Address: 00:00:00:00:00:00 +SFP State: None +Reads: 0 +Writes: 0 +Blocks Read: 0 +Blocks Written: 0 +Queue Full/Busy: 0 + +SP Name: SP A +SP Port ID: 3 +SP UID: iqn.1992-04.com.emc:cx.ck200074800997.a3 +Link Status: Down +Port Status: Online +Switch Present: Not Applicable +Speed Value : N/A +Auto Negotiable : YES +Available Speeds: +1Gbps +10Mbps +100Mbps +Auto +Requested Value: Auto +MAC Address: 00:00:00:00:00:00 +SFP State: None +Reads: 0 +Writes: 0 +Blocks Read: 0 +Blocks Written: 0 +Queue Full/Busy: 0 + +SP Name: SP A +SP Port ID: 0 +SP UID: iqn.1992-04.com.emc:cx.ck200074800997.a0 +Link Status: Down +Port Status: Online +Switch Present: Not Applicable +Speed Value : N/A +Auto Negotiable : YES +Available Speeds: +1Gbps +10Mbps +100Mbps +Auto +Requested Value: Auto +MAC Address: 00:00:00:00:00:00 +SFP State: None +Reads: 0 +Writes: 0 +Blocks Read: 0 +Blocks Written: 0 +Queue Full/Busy: 0 + +SP Name: SP A +SP Port ID: 1 +SP UID: iqn.1992-04.com.emc:cx.ck200074800997.a1 +Link Status: Down +Port Status: Online +Switch Present: Not Applicable +Speed Value : N/A +Auto Negotiable : YES +Available Speeds: +1Gbps +10Mbps +100Mbps +Auto +Requested Value: Auto +MAC Address: 00:00:00:00:00:00 +SFP State: None +Reads: 0 +Writes: 0 +Blocks Read: 0 +Blocks Written: 0 +Queue Full/Busy: 0 + +SP Name: SP B +SP Port ID: 2 +SP UID: iqn.1992-04.com.emc:cx.ck200074800997.b2 +Link Status: Down +Port Status: Online +Switch Present: Not Applicable +Speed Value : N/A +Auto Negotiable : YES +Available Speeds: +1Gbps +10Mbps +100Mbps +Auto +Requested Value: Auto +MAC Address: 00:00:00:00:00:00 +SFP State: None +Reads: 0 +Writes: 0 +Blocks Read: 0 +Blocks Written: 0 +Queue Full/Busy: 0 + +SP Name: SP B +SP Port ID: 3 +SP UID: iqn.1992-04.com.emc:cx.ck200074800997.b3 +Link Status: Down +Port Status: Online +Switch Present: Not Applicable +Speed Value : N/A +Auto Negotiable : YES +Available Speeds: +1Gbps +10Mbps +100Mbps +Auto +Requested Value: Auto +MAC Address: 00:00:00:00:00:00 +SFP State: None +Reads: 0 +Writes: 0 +Blocks Read: 0 +Blocks Written: 0 +Queue Full/Busy: 0 + +SP Name: SP B +SP Port ID: 0 +SP UID: iqn.1992-04.com.emc:cx.ck200074800997.b0 +Link Status: Down +Port Status: Online +Switch Present: Not Applicable +Speed Value : N/A +Auto Negotiable : YES +Available Speeds: +1Gbps +10Mbps +100Mbps +Auto +Requested Value: Auto +MAC Address: 00:00:00:00:00:00 +SFP State: None +Reads: 0 +Writes: 0 +Blocks Read: 0 +Blocks Written: 0 +Queue Full/Busy: 0 + +SP Name: SP B +SP Port ID: 1 +SP UID: iqn.1992-04.com.emc:cx.ck200074800997.b1 +Link Status: Down +Port Status: Online +Switch Present: Not Applicable +Speed Value : N/A +Auto Negotiable : YES +Available Speeds: +1Gbps +10Mbps +100Mbps +Auto +Requested Value: Auto +MAC Address: 00:00:00:00:00:00 +SFP State: None +Reads: 0 +Writes: 0 +Blocks Read: 0 +Blocks Written: 0 +Queue Full/Busy: 0 + + diff --git a/storage/emc/clariion/custom.pm b/storage/emc/clariion/custom.pm new file mode 100644 index 000000000..dfb06b94b --- /dev/null +++ b/storage/emc/clariion/custom.pm @@ -0,0 +1,290 @@ +################################################################################ +# Copyright 2005-2013 MERETHIS +# Centreon is developped by : Julien Mathis and Romain Le Merlus under +# GPL Licence 2.0. +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation ; either version 2 of the License. +# +# This program is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, see . +# +# Linking this program statically or dynamically with other modules is making a +# combined work based on this program. Thus, the terms and conditions of the GNU +# General Public License cover the whole combination. +# +# As a special exception, the copyright holders of this program give MERETHIS +# permission to link this program with independent modules to produce an executable, +# regardless of the license terms of these independent modules, and to copy and +# distribute the resulting executable under terms of MERETHIS choice, provided that +# MERETHIS also meet, for each linked independent module, the terms and conditions +# of the license of that module. An independent module is a module which is not +# derived from this program. If you modify this program, you may extend this +# exception to your version of the program, but you are not obliged to do so. If you +# do not wish to do so, delete this exception statement from your version. +# +# For more information : contact@centreon.com +# Authors : Quentin Garnier +# +#################################################################################### + +package storage::emc::clariion::custom; + +use strict; +use warnings; +use centreon::plugins::misc; + +sub new { + my ($class, %options) = @_; + my $self = {}; + bless $self, $class; + # $options{options} = options object + # $options{output} = output object + # $options{exit_value} = integer + # $options{noptions} = integer + + if (!defined($options{output})) { + print "Class Custom: Need to specify 'output' argument.\n"; + exit 3; + } + if (!defined($options{options})) { + $options{output}->add_option_msg(short_msg => "Class Custom: Need to specify 'options' argument."); + $options{output}->option_exit(); + } + + if (!defined($options{noptions})) { + $options{options}->add_options(arguments => + { + "navicli-command:s" => { name => 'navicli_command', default => 'navicli' }, + "navicli-path:s" => { name => 'navicli_path', default => '/opt/Navisphere/bin' }, + "naviseccli-command:s" => { name => 'naviseccli_command', default => 'naviseccli' }, + "naviseccli-path:s" => { name => 'naviseccli_path', default => '/opt/Navisphere/bin' }, + "sudo:s" => { name => 'sudo', }, + "special-arg:s@" => { name => 'special_arg' }, + "hostname:s@" => { name => 'hostname' }, + "secfilepath:s@" => { name => 'secfilepath' }, + "username:s@" => { name => 'username' }, + "password:s@" => { name => 'password' }, + "scope:s@" => { name => 'scope' }, + "timeout:s@" => { name => 'timeout' }, + }); + } + $options{options}->add_help(package => __PACKAGE__, sections => 'CLARIION OPTIONS', once => 1); + + $self->{output} = $options{output}; + $self->{mode} = $options{mode}; + + # 1 means we use a file to read + $self->{no_navicmd} = 0; + $self->{secure} = 0; + + return $self; +} + +# Method to manage multiples +sub set_options { + my ($self, %options) = @_; + # options{options_result} + + $self->{option_results} = $options{option_results}; +} + +# Method to manage multiples +sub set_defaults { + my ($self, %options) = @_; + # options{default} + + # Manage default value + foreach (keys %{$options{default}}) { + if ($_ eq $self->{mode}) { + for (my $i = 0; $i < scalar(@{$options{default}->{$_}}); $i++) { + foreach my $opt (keys %{$options{default}->{$_}[$i]}) { + if (!defined($self->{option_results}->{$opt}[$i])) { + $self->{option_results}->{$opt}[$i] = $options{default}->{$_}[$i]->{$opt}; + } + } + } + } + } +} + +sub build_command { + my ($self, %options) = @_; + + if ($self->{scope} !~ /^[012]$/) { + $self->{output}->add_option_msg(short_msg => "Wrong scope option '" . $self->{scope} . "'."); + $self->{output}->option_exit(); + } + + $self->{cmd} = $self->{option_results}->{navicli_path} . '/' . $self->{option_results}->{navicli_command}; + + if (defined($self->{username}) || defined($self->{secfilepath})) { + $self->{cmd} = $self->{option_results}->{naviseccli_path} . '/' . $self->{option_results}->{naviseccli_command}; + $self->{secure} = 1; + } + + if (defined($self->{secfilepath})) { + if (!(-x $self->{secfilepath} && -e $self->{secfilepath} . "/SecuredCLISecurityFile.xml" && -e $self->{secfilepath} . "/SecuredCLIXMLEncrypted.key")) { + $self->{output}->add_option_msg(short_msg => 'The secfilepath ' . $self->{secfilepath} . ' does not exist or SecuredCLI files are not created.'); + $self->{output}->option_exit(); + } + } elsif (defined($self->{username})) { + if (!defined($self->{password})) { + $self->{output}->add_option_msg(short_msg => 'Need to specify password option.'); + $self->{output}->option_exit(); + } + } + + if (! -e $self->{cmd}) { + $self->{output}->add_option_msg(short_msg => "Command '" . $self->{cmd} . "' not exist or executable."); + $self->{output}->option_exit(); + } + + if (defined($self->{special_arg}) && $self->{special_arg} ne '') { + $self->{cmd} .= $self->{special_arg}; + $self->{no_navicmd} = 1; + # It's ok if we use a file. + $self->{secure} = 1; + return ; + } + + if (!defined($self->{hostname})) { + $self->{output}->add_option_msg(short_msg => "Need to specify hostname option."); + $self->{output}->option_exit(); + } + + if (defined($self->{secfilepath})) { + $self->{cmd} .= " -Secfilepath '" . $self->{secfilepath} . "'"; + } elsif (defined($self->{username})) { + $self->{cmd} .= " -User '" . $self->{username} . "' -Password '" . $self->{password} . "' -Scope " . $self->{scope}; + } + $self->{cmd} .= ' -t ' . $self->{timeout}; + $self->{cmd} .= ' -h ' . $self->{hostname}; +} + +sub check_options { + my ($self, %options) = @_; + # return 1 = ok still hostname + # return 0 = no hostname left + + $self->{hostname} = (defined($self->{option_results}->{hostname})) ? shift(@{$self->{option_results}->{hostname}}) : undef; + $self->{secfilepath} = (defined($self->{option_results}->{secfilepath})) ? shift(@{$self->{option_results}->{secfilepath}}) : undef; + $self->{username} = (defined($self->{option_results}->{username})) ? shift(@{$self->{option_results}->{username}}) : undef; + $self->{password} = (defined($self->{option_results}->{password})) ? shift(@{$self->{option_results}->{password}}) : undef; + $self->{scope} = (defined($self->{option_results}->{scope})) ? shift(@{$self->{option_results}->{scope}}) : 0; + $self->{timeout} = (defined($self->{option_results}->{timeout})) ? shift(@{$self->{option_results}->{timeout}}) : 30; + $self->{special_arg} = (defined($self->{option_results}->{special_arg})) ? shift(@{$self->{option_results}->{special_arg}}) : undef; + $self->{sudo} = $self->{option_results}->{sudo}; + + $self->build_command(); + + if (!defined($self->{hostname}) || + scalar(@{$self->{option_results}->{hostname}}) == 0) { + return 0; + } + return 1; +} + +############## +# Specific methods +############## +sub execute_command { + my ($self, %options) = @_; + + if ($self->{no_navicmd} == 0) { + $self->{cmd} .= ' ' . $options{cmd}; + } + if (defined($options{secure_only}) && $options{secure_only} == 1 && $self->{secure} != 1) { + $self->{output}->add_option_msg(short_msg => "Mode only works with naviseccli."); + $self->{output}->option_exit(); + } + + # Need to set timeout over command. + $self->{option_results}->{timeout} = $self->{timeout} + 5; + return centreon::plugins::misc::execute(output => $self->{output}, + options => $self->{option_results}, + sudo => $self->{sudo}, + command => $self->{cmd}, + command_path => undef, + command_options => undef + ); +} + +1; + +__END__ + +=head1 NAME + +Clariion + +=head1 SYNOPSIS + +my navisphere manage + +=head1 CLARIION OPTIONS + +=over 8 + +=item B<--navicli-path> + +Specify navicli path (default: 'navicli') + +=item B<--navicli-command> + +Specify navicli command (default: '/opt/Navisphere/bin'). + +=item B<--naviseccli-path> + +Specify naviseccli path (default: 'naviseccli') + +=item B<--naviseccli-command> + +Specify naviseccli command (default: '/opt/Navisphere/bin'). + +=item B<--sudo> + +Use 'sudo' to execute the command. + +=item B<--special-arg> + +Set a special argument for the command. +To be used for set a file. (Need to change command and use 'cat' instead). + +=item B<--hostname> + +Emc Clariion SP Hostname. + +=item B<--secfilepath> + +Set directory with security files (username and password not needed. +Will use 'naviseccli'). + +=item B<--username> + +Username to connect (will use 'naviseccli'). + +=item B<--password> + +Password to connect (will use 'naviseccli'). + +=item B<--scope> + +User scope to connect (will use 'naviseccli'. Default: '0' (global)). + +=item B<--timeout> + +Set timeout for system command (Default: '30'). + +=back + +=head1 DESCRIPTION + +B. + +=cut diff --git a/storage/emc/clariion/mode/faults.pm b/storage/emc/clariion/mode/faults.pm new file mode 100644 index 000000000..a61326200 --- /dev/null +++ b/storage/emc/clariion/mode/faults.pm @@ -0,0 +1,94 @@ +################################################################################ +# Copyright 2005-2013 MERETHIS +# Centreon is developped by : Julien Mathis and Romain Le Merlus under +# GPL Licence 2.0. +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation ; either version 2 of the License. +# +# This program is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, see . +# +# Linking this program statically or dynamically with other modules is making a +# combined work based on this program. Thus, the terms and conditions of the GNU +# General Public License cover the whole combination. +# +# As a special exception, the copyright holders of this program give MERETHIS +# permission to link this program with independent modules to produce an executable, +# regardless of the license terms of these independent modules, and to copy and +# distribute the resulting executable under terms of MERETHIS choice, provided that +# MERETHIS also meet, for each linked independent module, the terms and conditions +# of the license of that module. An independent module is a module which is not +# derived from this program. If you modify this program, you may extend this +# exception to your version of the program, but you are not obliged to do so. If you +# do not wish to do so, delete this exception statement from your version. +# +# For more information : contact@centreon.com +# Authors : Quentin Garnier +# +#################################################################################### + +package storage::emc::clariion::mode::faults; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; +use centreon::plugins::misc; + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $self->{version} = '1.0'; + $options{options}->add_options(arguments => + { + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub run { + my ($self, %options) = @_; + my $clariion = $options{custom}; + + my $response = $clariion->execute_command(cmd => 'faults -list', secure_only => 1); + chomp $response; + + if ($response =~ /The array is operating normally/msg) { + $self->{output}->output_add(severity => 'ok', + short_msg => 'The array is operating normally'); + } else { + $self->{output}->output_add(long_msg => $response); + $self->{output}->output_add(severity => 'critical', + short_msg => 'Problem detected (see detailed output for more details'); + } + + $self->{output}->display(); + $self->{output}->exit(); +} + +1; + +__END__ + +=head1 MODE + +Detect faults on the array. + +=over 8 + +=back + +=cut diff --git a/storage/emc/clariion/mode/listluns.pm b/storage/emc/clariion/mode/listluns.pm new file mode 100644 index 000000000..a1f1574a3 --- /dev/null +++ b/storage/emc/clariion/mode/listluns.pm @@ -0,0 +1,199 @@ +############################################################################### +# Copyright 2005-2013 MERETHIS +# Centreon is developped by : Julien Mathis and Romain Le Merlus under +# GPL Licence 2.0. +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation ; either version 2 of the License. +# +# This program is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, see . +# +# Linking this program statically or dynamically with other modules is making a +# combined work based on this program. Thus, the terms and conditions of the GNU +# General Public License cover the whole combination. +# +# As a special exception, the copyright holders of this program give MERETHIS +# permission to link this program with independent modules to produce an timeelapsedutable, +# regardless of the license terms of these independent modules, and to copy and +# distribute the resulting timeelapsedutable under terms of MERETHIS choice, provided that +# MERETHIS also meet, for each linked independent module, the terms and conditions +# of the license of that module. An independent module is a module which is not +# derived from this program. If you modify this program, you may extend this +# exception to your version of the program, but you are not obliged to do so. If you +# do not wish to do so, delete this exception statement from your version. +# +# For more information : contact@centreon.com +# Author : Florian Asche +# +# Based on De Bodt Lieven plugin +# Based on Apache Mode by Simon BOMM +#################################################################################### + +package storage::emc::clariion::mode::listluns; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $self->{version} = '1.0'; + $options{options}->add_options(arguments => + { + "filter-lunnumber:s" => { name => 'filter_lunnumber', }, + "filter-lunstate:s" => { name => 'filter_lunstate', }, + "filter-drivetype:s" => { name => 'filter_drivetype', }, + "filter-raidtype:s" => { name => 'filter_raidtype', }, + "filter-raidgroupid:s" => { name => 'filter_raidgroupid', }, + }); + + $self->{result} = {}; + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $response = $self->{clariion}->execute_command(cmd => 'getlun -uid -state -rg -type -drivetype -capacity'); + + $| = 1; + while ($response =~ /^(LOGICAL UNIT NUMBER.*?\n\n)/imsg) { + #LOGICAL UNIT NUMBER 4088 + #UID: 60:06:01:60:F8:C0:1E:00:58:68:46:25:C3:14:E1:11 + #State: Bound + #RAIDGroup ID: 14 + #RAID Type: RAID5 + #Drive Type: SATAII + #LUN Capacity(Megabytes): 2817458 + #LUN Capacity(Blocks): 5770154496 + + #LOGICAL UNIT NUMBER 11 + #UID: 60:06:01:60:F8:C0:1E:00:FA:01:AE:2B:27:AF:E3:11 + #State: Bound + #RAIDGroup ID: N/A + #RAID Type: N/A + #Drive Type: N/A + #LUN Capacity(Megabytes): 6339281 + #LUN Capacity(Blocks): 12982847616 + + my $content = $1; + my ($lun_num, $raid_type, $raid_group_id, $drive_type, $state); + $lun_num = $1 if ($content =~ /^LOGICAL UNIT NUMBER\s+(\d+)/im); + $state = $1 if ($content =~ /^State:\s+(.*)$/im); + $raid_type = $1 if ($content =~ /^RAID Type:\s+(.*)$/im); + $raid_group_id = $1 if ($content =~ /^RAIDGroup ID:\s+(.*)$/im); + $drive_type = $1 if ($content =~ /^Drive Type:\s+(.*)$/im); + + next if (defined($self->{option_results}->{filter_lunnumber}) && $self->{option_results}->{filter_lunnumber} ne '' && + $lun_num !~ /$self->{option_results}->{filter_lunnumber}/); + next if (defined($self->{option_results}->{filter_lunstate}) && $self->{option_results}->{filter_lunstate} ne '' && + $state !~ /$self->{option_results}->{filter_lunstate}/); + next if (defined($self->{option_results}->{filter_drivetype}) && $self->{option_results}->{filter_drivetype} ne '' && + $drive_type !~ /$self->{option_results}->{filter_drivetype}/); + next if (defined($self->{option_results}->{filter_raidtype}) && $self->{option_results}->{filter_raidtype} ne '' && + $raid_type !~ /$self->{option_results}->{filter_raidtype}/); + next if (defined($self->{option_results}->{filter_raidgroupid}) && $self->{option_results}->{filter_raidgroupid} ne '' && + $raid_group_id !~ /$self->{option_results}->{filter_raidgroupid}/); + + $self->{result}->{$lun_num} = {state => $state, drive_type => $drive_type, raid_type => $raid_type, raid_groupid => $raid_group_id}; + } +} + +sub run { + my ($self, %options) = @_; + $self->{clariion} = $options{custom}; + + $self->manage_selection(); + + my $lun_display = ''; + my $lun_display_append = ''; + foreach my $num (sort(keys %{$self->{result}})) { + $lun_display .= $lun_display_append . 'number = ' . $num . + ' [' . + 'state = ' . $self->{result}->{$num}->{state} . + ', drive type = ' . $self->{result}->{$num}->{drive_type} . + ', raid type = ' . $self->{result}->{$num}->{raid_type} . + ', raid groupid = ' . $self->{result}->{$num}->{raid_groupid} . + ']'; + $lun_display_append = ', '; + } + + $self->{output}->output_add(severity => 'OK', + short_msg => 'List LUNs: ' . $lun_display); + $self->{output}->display(nolabel => 1); + $self->{output}->exit(); +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => ['number', 'state', 'drive_type', 'raid_type', 'raid_groupid']); +} + +sub disco_show { + my ($self, %options) = @_; + $self->{clariion} = $options{custom}; + + $self->manage_selection(); + foreach my $num (sort(keys %{$self->{result}})) { + $self->{output}->add_disco_entry(number => $num, + state => $self->{result}->{$num}->{state}, + drive_type => $self->{result}->{$num}->{drive_type}, + raid_type => $self->{result}->{$num}->{raid_type}, + raid_groupid => $self->{result}->{$num}->{raid_groupid}, + ); + } +} + +1; + +__END__ + +=head1 MODE + +List Logical Units (LUNs). + +=over 8 + +=item B<--filter-lunnumber> + +Filter Lun Number (regexp can be used). + +=item B<--filter-lunstate> + +Filter Lun State (regexp can be used). +Example: Bound, Faulted, Expanding,... + +=item B<--filter-drivetype> + +Filter Drive types (regexp can be used). +Example: N/A, SATAII, Fibre Channel,... + +=item B<--filter-raidtype> + +Filter Raid types (regexp can be used). +Example: N/A, Hot Spare, RAID5,... + +=item B<--filter-raidtype> + +Filter Raid Group ID (regexp can be used). +Example: N/A or a number. + +=back + +=cut diff --git a/storage/emc/clariion/mode/spinfo.pm b/storage/emc/clariion/mode/spinfo.pm new file mode 100644 index 000000000..3482f40d6 --- /dev/null +++ b/storage/emc/clariion/mode/spinfo.pm @@ -0,0 +1,109 @@ +################################################################################ +# Copyright 2005-2013 MERETHIS +# Centreon is developped by : Julien Mathis and Romain Le Merlus under +# GPL Licence 2.0. +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation ; either version 2 of the License. +# +# This program is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, see . +# +# Linking this program statically or dynamically with other modules is making a +# combined work based on this program. Thus, the terms and conditions of the GNU +# General Public License cover the whole combination. +# +# As a special exception, the copyright holders of this program give MERETHIS +# permission to link this program with independent modules to produce an executable, +# regardless of the license terms of these independent modules, and to copy and +# distribute the resulting executable under terms of MERETHIS choice, provided that +# MERETHIS also meet, for each linked independent module, the terms and conditions +# of the license of that module. An independent module is a module which is not +# derived from this program. If you modify this program, you may extend this +# exception to your version of the program, but you are not obliged to do so. If you +# do not wish to do so, delete this exception statement from your version. +# +# For more information : contact@centreon.com +# Authors : Quentin Garnier +# +#################################################################################### + +package storage::emc::clariion::mode::spinfo; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; +use centreon::plugins::misc; + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $self->{version} = '1.0'; + $options{options}->add_options(arguments => + { + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub run { + my ($self, %options) = @_; + my $clariion = $options{custom}; + + my $response = $clariion->execute_command(cmd => 'getagent -ver -rev -prom -model -type -mem -serial -spid'); + + my $sp_id = 'unknown'; + my $sp_agent_rev = 'unknown'; + my $sp_flare_rev = 'unknown'; + my $sp_prom_rev = 'unknown'; + my $sp_model = 'unknown'; + my $sp_model_type = 'unknown'; + my $sp_memory_total = 'unknown'; + my $sp_serial_number = 'unknown'; + + $sp_id = $1 if ($response =~ /^SP Identifier:\s+(.*)$/im); + $sp_agent_rev = $1 if ($response =~ /^Agent Rev:\s+(.*)$/im); + $sp_flare_rev = $1 if ($response =~ /^Revision:\s+(.*)$/im); + $sp_prom_rev = $1 if ($response =~ /^Prom Rev:\s+(.*)$/im); + $sp_model = $1 if ($response =~ /^Model:\s+(.*)$/im); + $sp_model_type = $1 if ($response =~ /^Model Type:\s+(.*)$/im); + $sp_memory_total = ($1 * 1024 * 1024) if ($response =~ /^SP Memory:\s+(.*)$/im); + $sp_serial_number = $1 if ($response =~ /^Serial No:\s+(.*)$/im); + + my ($memory_value, $memory_unit) = $self->{perfdata}->change_bytes(value => $sp_memory_total); + + $self->{output}->output_add(severity => 'ok', + short_msg => sprintf('[SP ID: %s] [Agent Revision: %s] [FLARE Revision: %s] [PROM Revision: %s] [Model: %s, %s] [Memory: %s %s] [Serial Number: %s]', + $sp_id, $sp_agent_rev, $sp_flare_rev, $sp_prom_rev, + $sp_model, $sp_model_type, $memory_value, $memory_unit, $sp_serial_number)); + + $self->{output}->display(); + $self->{output}->exit(); +} + +1; + +__END__ + +=head1 MODE + +Display informations on the storage processor. + +=over 8 + +=back + +=cut diff --git a/storage/emc/clariion/plugin.pm b/storage/emc/clariion/plugin.pm new file mode 100644 index 000000000..d6f5d7e6d --- /dev/null +++ b/storage/emc/clariion/plugin.pm @@ -0,0 +1,78 @@ +################################################################################ +# Copyright 2005-2013 MERETHIS +# Centreon is developped by : Julien Mathis and Romain Le Merlus under +# GPL Licence 2.0. +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation ; either version 2 of the License. +# +# This program is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, see . +# +# Linking this program statically or dynamically with other modules is making a +# combined work based on this program. Thus, the terms and conditions of the GNU +# General Public License cover the whole combination. +# +# As a special exception, the copyright holders of this program give MERETHIS +# permission to link this program with independent modules to produce an executable, +# regardless of the license terms of these independent modules, and to copy and +# distribute the resulting executable under terms of MERETHIS choice, provided that +# MERETHIS also meet, for each linked independent module, the terms and conditions +# of the license of that module. An independent module is a module which is not +# derived from this program. If you modify this program, you may extend this +# exception to your version of the program, but you are not obliged to do so. If you +# do not wish to do so, delete this exception statement from your version. +# +# For more information : contact@centreon.com +# Authors : Quentin Garnier +# +#################################################################################### + +package storage::emc::clariion::plugin; + +use strict; +use warnings; +use base qw(centreon::plugins::script_custom); + +sub new { + my ($class, %options) = @_; + + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + # $options->{options} = options object + + $self->{version} = '0.1'; + %{$self->{modes}} = ( + 'faults' => 'storage::emc::clariion::mode::faults', + 'list-luns' => 'storage::emc::clariion::mode::listluns', + 'sp-info' => 'storage::emc::clariion::mode::spinfo', + ); + $self->{custom_modes}{clariion} = 'storage::emc::clariion::custom'; + + return $self; +} + +sub init { + my ($self, %options) = @_; + + $self->SUPER::init(%options); +} + +1; + +__END__ + +=head1 PLUGIN DESCRIPTION + +Check EMC Clariion with 'navicli/naviseccli'. + +=over 8 + +=back + +=cut