From 679980cde7456cfba99ff4f2df7ba52e1309ae46 Mon Sep 17 00:00:00 2001 From: garnier-quentin Date: Tue, 12 Mar 2019 09:21:44 +0100 Subject: [PATCH] add mode oracle list-asm-diskgroups --- database/oracle/mode/listasmdiskgroups.pm | 111 ++++++++++++++++++++++ database/oracle/plugin.pm | 9 +- 2 files changed, 116 insertions(+), 4 deletions(-) create mode 100644 database/oracle/mode/listasmdiskgroups.pm diff --git a/database/oracle/mode/listasmdiskgroups.pm b/database/oracle/mode/listasmdiskgroups.pm new file mode 100644 index 000000000..554d0572f --- /dev/null +++ b/database/oracle/mode/listasmdiskgroups.pm @@ -0,0 +1,111 @@ +# +# Copyright 2019 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 database::oracle::mode::listasmdiskgroups; + +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 manage_selection { + my ($self, %options) = @_; + + $self->{sql}->connect(); + $self->{sql}->query(query => q{ +SELECT name, state, type FROM V$ASM_DISKGROUP +}); + $self->{list_dg} = {}; + while ((my $row = $self->{sql}->fetchrow_hashref())) { + $self->{list_dg}->{$row->{name}} = { %$row }; + } +} + +sub run { + my ($self, %options) = @_; + $self->{sql} = $options{sql}; + + $self->manage_selection(); + foreach my $name (sort keys %{$self->{list_dg}}) { + $self->{output}->output_add(long_msg => + '[name = ' . $name . '] ' . + '[state = ' . $self->{list_dg}->{$name}->{state} . '] ' . + '[type = ' . $self->{list_dg}->{$name}->{type} . '] ' + ); + $self->{output}->output_add(long_msg => "'" . $name . "'"); + } + $self->{output}->output_add(severity => 'OK', + short_msg => "List of asm disk groups:"); + + $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); + $self->{output}->exit(); +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => ['name', 'state', 'type']); +} + +sub disco_show { + my ($self, %options) = @_; + $self->{sql} = $options{sql}; + + $self->manage_selection(); + foreach my $name (sort keys %{$self->{list_dg}}) { + $self->{output}->add_disco_entry( + name => $name, + state => $self->{list_dg}->{$name}->{state}, + type => $self->{list_dg}->{$name}->{type} + ); + } +} + +1; + +__END__ + +=head1 MODE + +List asm diskgroup. + +=over 8 + +=back + +=cut diff --git a/database/oracle/plugin.pm b/database/oracle/plugin.pm index f97779416..f7ed02716 100644 --- a/database/oracle/plugin.pm +++ b/database/oracle/plugin.pm @@ -40,19 +40,20 @@ sub new { 'datacache-hitratio' => 'database::oracle::mode::datacachehitratio', 'event-waits-usage' => 'database::oracle::mode::eventwaitsusage', 'invalid-object' => 'database::oracle::mode::invalidobject', + 'list-asm-diskgroups' => 'database::oracle::mode::listasmdiskgroups', 'long-queries' => 'database::oracle::mode::longqueries', 'process-usage' => 'database::oracle::mode::processusage', 'rman-backup-problems' => 'database::oracle::mode::rmanbackupproblems', 'rman-backup-age' => 'database::oracle::mode::rmanbackupage', 'rman-online-backup-age' => 'database::oracle::mode::rmanonlinebackupage', 'rollback-segment-usage' => 'database::oracle::mode::rollbacksegmentusage', - 'tablespace-usage' => 'database::oracle::mode::tablespaceusage', - 'temp-usage' => 'database::oracle::mode::temptablespace', - 'undo-usage' => 'database::oracle::mode::undotablespace', 'session-usage' => 'database::oracle::mode::sessionusage', 'sql' => 'centreon::common::protocols::sql::mode::sql', - 'sql-string' => 'centreon::common::protocols::sql::mode::sqlstring', + 'sql-string' => 'centreon::common::protocols::sql::mode::sqlstring', + 'tablespace-usage' => 'database::oracle::mode::tablespaceusage', + 'temp-usage' => 'database::oracle::mode::temptablespace', 'tnsping' => 'database::oracle::mode::tnsping', + 'undo-usage' => 'database::oracle::mode::undotablespace', ); $self->{sql_modes}{sqlpluscmd} = 'database::oracle::sqlpluscmd';