(plugin) storage::netapp::ontap::restapi - mode hardware add disk component (#4278)
This commit is contained in:
parent
ec6537f9f5
commit
8c86ef4c0d
|
@ -31,9 +31,12 @@ sub check {
|
|||
$self->{output}->output_add(long_msg => 'checking bays');
|
||||
$self->{components}->{bay} = { name => 'bays', total => 0, skip => 0 };
|
||||
return if ($self->check_filter(section => 'bay'));
|
||||
return if (!defined($self->{json_results}->{records}));
|
||||
|
||||
foreach my $shelf (@{$self->{json_results}->{records}}) {
|
||||
$self->get_shelves();
|
||||
|
||||
return if (!defined($self->{shelves}->{records}));
|
||||
|
||||
foreach my $shelf (@{$self->{shelves}->{records}}) {
|
||||
my $shelf_instance = $shelf->{serial_number};
|
||||
my $shelf_name = $shelf->{name};
|
||||
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
#
|
||||
# Copyright 2023 Centreon (http://www.centreon.com/)
|
||||
#
|
||||
# Centreon is a full-fledged industry-strength solution that meets
|
||||
# the needs in IT infrastructure and application monitoring for
|
||||
# service performance.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
package storage::netapp::ontap::restapi::mode::components::disk;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
sub load {}
|
||||
|
||||
sub check {
|
||||
my ($self) = @_;
|
||||
|
||||
$self->{output}->output_add(long_msg => 'checking disks');
|
||||
$self->{components}->{disk} = { name => 'disks', total => 0, skip => 0 };
|
||||
return if ($self->check_filter(section => 'disk'));
|
||||
|
||||
my $disks = $self->get_disks();
|
||||
|
||||
return if (!defined($disks->{records}));
|
||||
|
||||
foreach my $disk (@{$disks->{records}}) {
|
||||
next if ($self->check_filter(section => 'disk', instance => $disk->{name}));
|
||||
|
||||
$self->{components}->{disk}->{total}++;
|
||||
$self->{output}->output_add(
|
||||
long_msg => sprintf(
|
||||
"disk '%s' state is '%s' [bay: %s, serial: %s, instance: %s]",
|
||||
$disk->{name},
|
||||
$disk->{state},
|
||||
$disk->{bay},
|
||||
$disk->{serial_number},
|
||||
$disk->{name}
|
||||
)
|
||||
);
|
||||
|
||||
my $exit = $self->get_severity(section => 'disk', value => $disk->{state});
|
||||
if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) {
|
||||
$self->{output}->output_add(
|
||||
severity => $exit,
|
||||
short_msg => sprintf(
|
||||
"Disk '%s' state is '%s'",
|
||||
$disk->{name},
|
||||
$disk->{state}
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
|
@ -31,9 +31,12 @@ sub check {
|
|||
$self->{output}->output_add(long_msg => 'checking fru');
|
||||
$self->{components}->{fru} = { name => 'frus', total => 0, skip => 0 };
|
||||
return if ($self->check_filter(section => 'fru'));
|
||||
return if (!defined($self->{json_results}->{records}));
|
||||
|
||||
foreach my $shelf (@{$self->{json_results}->{records}}) {
|
||||
$self->get_shelves();
|
||||
|
||||
return if (!defined($self->{shelves}->{records}));
|
||||
|
||||
foreach my $shelf (@{$self->{shelves}->{records}}) {
|
||||
my $shelf_instance = $shelf->{serial_number};
|
||||
my $shelf_name = $shelf->{name};
|
||||
|
||||
|
|
|
@ -31,9 +31,12 @@ sub check {
|
|||
$self->{output}->output_add(long_msg => 'checking shelfs');
|
||||
$self->{components}->{shelf} = { name => 'shelfs', total => 0, skip => 0 };
|
||||
return if ($self->check_filter(section => 'shelf'));
|
||||
return if (!defined($self->{json_results}->{records}));
|
||||
|
||||
foreach my $shelf (@{$self->{json_results}->{records}}) {
|
||||
$self->get_shelves();
|
||||
|
||||
return if (!defined($self->{shelves}->{records}));
|
||||
|
||||
foreach my $shelf (@{$self->{shelves}->{records}}) {
|
||||
my $shelf_instance = $shelf->{serial_number};
|
||||
my $shelf_name = $shelf->{name};
|
||||
|
||||
|
|
|
@ -28,18 +28,30 @@ use warnings;
|
|||
sub set_system {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
$self->{cb_hook2} = 'execute_custom';
|
||||
$self->{cb_hook2} = 'save_custom';
|
||||
|
||||
$self->{thresholds} = {
|
||||
state => [
|
||||
['ok', 'OK'],
|
||||
['error', 'CRITICAL'],
|
||||
['.*', 'CRITICAL']
|
||||
],
|
||||
disk => [
|
||||
['present', 'OK'],
|
||||
['broken', 'CRITICAL'],
|
||||
['copy', 'OK'],
|
||||
['maintenance', 'OK'],
|
||||
['partner', 'OK'],
|
||||
['reconstructing', 'OK'],
|
||||
['removed', 'OK'],
|
||||
['spare', 'OK'],
|
||||
['unfail', 'OK'],
|
||||
['zeroing', 'OK']
|
||||
]
|
||||
};
|
||||
|
||||
$self->{components_path} = 'storage::netapp::ontap::restapi::mode::components';
|
||||
$self->{components_module} = ['shelf', 'bay', 'fru'];
|
||||
$self->{components_module} = ['bay', 'disk', 'fru', 'shelf'];
|
||||
}
|
||||
|
||||
sub new {
|
||||
|
@ -52,10 +64,24 @@ sub new {
|
|||
return $self;
|
||||
}
|
||||
|
||||
sub execute_custom {
|
||||
sub get_disks {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
$self->{json_results} = $options{custom}->request_api(endpoint => '/api/storage/shelves?fields=*');
|
||||
return $self->{custom}->request_api(endpoint => '/api/storage/disks?fields=*');
|
||||
}
|
||||
|
||||
sub get_shelves {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
return if (defined($self->{shelves}));
|
||||
|
||||
$self->{shelves} = $self->{custom}->request_api(endpoint => '/api/storage/shelves?fields=*');
|
||||
}
|
||||
|
||||
sub save_custom {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
$self->{custom} = $options{custom};
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
Loading…
Reference in New Issue