+ fix clariion sp mode

This commit is contained in:
garnier-quentin 2016-08-29 11:04:24 +02:00
parent 2e71b45c25
commit 1e4f43a282
1 changed files with 106 additions and 28 deletions

View File

@ -18,38 +18,116 @@
# limitations under the License.
#
package centreon::common::emc::navisphere::mode::spcomponents::sp;
package centreon::common::emc::navisphere::mode::sp;
use base qw(centreon::plugins::templates::hardware);
use strict;
use warnings;
sub load { };
sub check {
my ($self) = @_;
$self->{output}->output_add(long_msg => "Checking sp");
$self->{components}->{sp} = {name => 'sp', total => 0, skip => 0};
return if ($self->check_filter(section => 'sp'));
sub set_system {
my ($self, %options) = @_;
# SP A State: Present
while ($self->{response} =~ /^SP\s+(\S+)\s+State:\s+(.*)$/mgi) {
my $instance = $1;
my $state = $2;
next if ($self->check_filter(section => 'sp', instance => $instance));
$self->{components}->{sp}->{total}++;
$self->{output}->output_add(long_msg => sprintf("sp '%s' state is %s.",
$instance, $state)
);
my $exit = $self->get_severity(section => 'sp', value => $state);
if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("sp '%s' state is %s",
$instance, $state));
}
}
$self->{regexp_threshold_overload_check_section_option} = '^(fan|lcc|psu|battery|memory|cpu|iomodule|cable)$';
$self->{cb_hook2} = 'navisphere_execute';
$self->{thresholds} = {
battery => [
['^(Not Ready|Testing|Unknown)$', 'WARNING'],
['^(?!(Present|Valid)$)', 'CRITICAL'],
['.*', 'OK'],
],
psu => [
['^(?!(Present|Valid)$)', 'CRITICAL'],
['.*', 'OK'],
],
sp => [
['^(?!(Present|Valid)$)', 'CRITICAL'],
['.*', 'OK'],
],
cable => [
['^(.*Unknown.*)$' => 'WARNING'],
['^(?!(Present|Valid)$)' => 'CRITICAL'],
['.*', 'OK'],
],
cpu => [
['^(?!(Present|Valid)$)' => 'CRITICAL'],
['.*', 'OK'],
],
fan => [
['^(?!(Present|Valid)$)' => 'CRITICAL'],
['.*', 'OK'],
],
io => [
['^(?!(Present|Valid|Empty)$)' => 'CRITICAL'],
['.*', 'OK'],
],
lcc => [
['^(?!(Present|Valid)$)' => 'CRITICAL'],
['.*', 'OK'],
],
dimm => [
['^(?!(Present|Valid)$)' => 'CRITICAL'],
['.*', 'OK'],
],
};
$self->{components_path} = 'centreon::common::emc::navisphere::mode::spcomponents';
$self->{components_module} = ['fan', 'lcc', 'psu', 'battery', 'memory', 'cpu', 'iomodule', 'cable'];
}
1;
sub navisphere_execute {
my ($self, %options) = @_;
$self->{response} = $options{custom}->execute_command(cmd => 'getcrus ' . $self->{option_results}->{getcrus_options});
chomp $self->{response};
}
sub new {
my ($class, %options) = @_;
my $self = $class->SUPER::new(package => __PACKAGE__, %options, no_absent => 1, no_performance => 1);
bless $self, $class;
$self->{version} = '1.0';
$options{options}->add_options(arguments =>
{
"getcrus-options:s" => { name => 'getcrus_options', default => '-all' },
});
return $self;
}
1;
__END__
=head1 MODE
Check status of storage processor.
=over 8
=item B<--getcrus-options>
Set option for 'getcrus' command (Default: '-all').
'-all' option is for some new flare version.
=item B<--component>
Which component to check (Default: '.*').
Can be: 'fan', 'lcc', 'psu', 'battery', 'memory', 'cpu', 'iomodule', 'cable'.
=item B<--filter>
Exclude some parts (comma seperated list) (Example: --filter=lcc --filter=fan)
Can also exclude specific instance: --filter=fan,1.2
=item B<--no-component>
Return an error if no compenents are checked.
If total (with skipped) is 0. (Default: 'critical' returns).
=back
=cut