enhance ilo cases
This commit is contained in:
parent
695cbabec5
commit
4e02edb548
|
@ -229,6 +229,28 @@ sub change_shitty_xml {
|
|||
$options{response} =~ s/<Backplane firmware version="(.*?)", enclosure addr="(.*?)"/<BACKPLANE FIRMWARE_VERSION="$1" ENCLOSURE_ADDR="$2"/mg;
|
||||
$options{response} =~ s/<Drive Bay: "(.*?)"; status: "(.*?)"; uid led: "(.*?)">/<DRIVE_BAY NUM="$1" STATUS="$2" UID_LED="$3" \/>/mg;
|
||||
|
||||
#Other shitty xml:
|
||||
# <BACKPLANE>
|
||||
# <ENCLOSURE_ADDR VALUE="224"/>
|
||||
# <DRIVE_BAY VALUE = "1"/>
|
||||
# <PRODUCT_ID VALUE = "EG0300FCVBF"/>
|
||||
# <STATUS VALUE = "Ok"/>
|
||||
# <UID_LED VALUE = "Off"/>
|
||||
# <DRIVE_BAY VALUE = "2"/>
|
||||
# <PRODUCT_ID VALUE = "EH0146FARUB"/>
|
||||
# <STATUS VALUE = "Ok"/>
|
||||
# <UID_LED VALUE = "Off"/>
|
||||
# <DRIVE_BAY VALUE = "3"/>
|
||||
# <PRODUCT_ID VALUE = "EH0146FBQDC"/>
|
||||
# <STATUS VALUE = "Ok"/>
|
||||
# <UID_LED VALUE = "Off"/>
|
||||
# <DRIVE_BAY VALUE = "4"/>
|
||||
# <PRODUCT_ID VALUE = "N/A"/>
|
||||
# <STATUS VALUE = "Not Installed"/>
|
||||
# <UID_LED VALUE = "Off"/>
|
||||
# </BACKPLANE>
|
||||
$options{response} =~ s/<DRIVE_BAY\s+VALUE\s*=\s*"(.*?)".*?<STATUS\s+VALUE\s*=\s*"(.*?)".*?<UID_LED\s+VALUE\s*=\s*"(.*?)".*?\/>/<DRIVE_BAY NUM="$1" STATUS="$2" UID_LED="$3" \/>/msg;
|
||||
|
||||
return $options{response};
|
||||
}
|
||||
|
||||
|
@ -250,7 +272,7 @@ sub get_ilo_response {
|
|||
$xml_result = XMLin($response,
|
||||
ForceArray => ['FAN', 'TEMP', 'MODULE', 'SUPPLY', 'PROCESSOR', 'NIC',
|
||||
'SMART_STORAGE_BATTERY', 'CONTROLLER', 'DRIVE_ENCLOSURE',
|
||||
'LOGICAL_DRIVE', 'PHYSICAL_DRIVE', 'DRIVE_BAY']);
|
||||
'LOGICAL_DRIVE', 'PHYSICAL_DRIVE', 'DRIVE_BAY', 'BACKPLANE']);
|
||||
};
|
||||
if ($@) {
|
||||
$self->{output}->add_option_msg(short_msg => "Cannot decode xml response: $@");
|
||||
|
@ -264,6 +286,7 @@ sub get_ilo_data {
|
|||
my ($self, %options) = @_;
|
||||
|
||||
$self->{content} = '';
|
||||
|
||||
if (!defined($self->{option_results}->{force_ilo3})) {
|
||||
$self->find_ilo_version();
|
||||
} else {
|
||||
|
|
|
@ -76,7 +76,7 @@ sub check_ilo4 {
|
|||
sub check_ilo2 {
|
||||
my ($self) = @_;
|
||||
|
||||
return if (!defined($self->{xml_result}->{GET_EMBEDDED_HEALTH_DATA}->{DRIVES}->{DRIVE_BAY}));
|
||||
return if (!defined($self->{xml_result}->{GET_EMBEDDED_HEALTH_DATA}->{DRIVES}->{DRIVE_BAY}));
|
||||
# In ILO2:
|
||||
# <DRIVES>
|
||||
# <BACKPLANE FIRMWARE_VERSION="1.16" ENCLOSURE_ADDR="224"/>
|
||||
|
@ -103,6 +103,52 @@ sub check_ilo2 {
|
|||
}
|
||||
}
|
||||
|
||||
sub check_ilo3 {
|
||||
my ($self) = @_;
|
||||
|
||||
return if (!defined($self->{xml_result}->{GET_EMBEDDED_HEALTH_DATA}->{DRIVES}->{BACKPLANE}));
|
||||
# In ILO3:
|
||||
# <DRIVES>
|
||||
# <BACKPLANE>
|
||||
# <FIRMWARE_VERSION VALUE="1.14"/>
|
||||
# <ENCLOSURE_ADDR VALUE="224"/>
|
||||
# <DRIVE_BAY NUM="1" STATUS="Ok" UID_LED="Off" />
|
||||
# <DRIVE_BAY NUM="2" STATUS="Ok" UID_LED="Off" />
|
||||
# <DRIVE_BAY NUM="3" STATUS="Ok" UID_LED="Off" />
|
||||
# <DRIVE_BAY NUM="4" STATUS="Not Installed" UID_LED="Off" />
|
||||
# </BACKPLANE>
|
||||
# <BACKPLANE>
|
||||
# <FIRMWARE_VERSION VALUE="1.14"/>
|
||||
# <ENCLOSURE_ADDR VALUE="226"/>
|
||||
# <DRIVE_BAY NUM="5" STATUS="Ok" UID_LED="Off" />
|
||||
# <DRIVE_BAY NUM="6" STATUS="Ok" UID_LED="Off" />
|
||||
# <DRIVE_BAY NUM="7" STATUS="Ok" UID_LED="Off" />
|
||||
# <DRIVE_BAY NUM="8" STATUS="Not Installed" UID_LED="Off" />
|
||||
# </BACKPLANE>
|
||||
foreach my $backplane (@{$self->{xml_result}->{GET_EMBEDDED_HEALTH_DATA}->{DRIVES}->{BACKPLANE}}) {
|
||||
next if (!defined($backplane->{DRIVE_BAY}));
|
||||
|
||||
foreach my $result (@{$backplane->{DRIVE_BAY}}) {
|
||||
my $instance = $result->{NUM};
|
||||
|
||||
next if ($self->check_filter(section => 'pdrive', instance => $instance));
|
||||
next if ($result->{STATUS} =~ /not installed|n\/a|not present|not applicable/i &&
|
||||
$self->absent_problem(section => 'pdrive', instance => $instance));
|
||||
|
||||
$self->{components}->{pdrive}->{total}++;
|
||||
|
||||
$self->{output}->output_add(long_msg => sprintf("physical drive '%s' status is '%s' [instance = %s]",
|
||||
$result->{NUM}, $result->{STATUS}, $instance));
|
||||
|
||||
my $exit = $self->get_severity(label => 'default', section => 'pdrive', value => $result->{STATUS});
|
||||
if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) {
|
||||
$self->{output}->output_add(severity => $exit,
|
||||
short_msg => sprintf("Physical drive '%s' status is '%s'", $result->{NUM}, $result->{STATUS}));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub check {
|
||||
my ($self) = @_;
|
||||
|
||||
|
@ -111,7 +157,8 @@ sub check {
|
|||
return if ($self->check_filter(section => 'pdrive'));
|
||||
|
||||
check_ilo4($self);
|
||||
check_ilo3($self);
|
||||
check_ilo2($self);
|
||||
}
|
||||
|
||||
1;
|
||||
1;
|
||||
|
|
Loading…
Reference in New Issue