diff --git a/apps/centreon/mysql/plugin.pm b/apps/centreon/mysql/plugin.pm index 45cc29151..517a60083 100644 --- a/apps/centreon/mysql/plugin.pm +++ b/apps/centreon/mysql/plugin.pm @@ -37,10 +37,11 @@ package apps::centreon::mysql::plugin; use strict; use warnings; -use base qw(centreon::plugins::script_simple); +use base qw(centreon::plugins::script_sql); sub new { my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); bless $self, $class; # $options->{options} = options object @@ -50,16 +51,60 @@ sub new { 'partitioning' => 'apps::centreon::mysql::mode::partitioning', 'pollerdelay' => 'apps::centreon::mysql::mode::pollerdelay', ); + $self->{sql_modes}{mysqlcmd} = 'database::mysql::mysqlcmd'; return $self; } +sub init { + my ($self, %options) = @_; + + $self->{options}->add_options( + arguments => { + 'host:s@' => { name => 'db_host' }, + 'port:s@' => { name => 'db_port' }, + } + ); + $self->{options}->parse_options(); + my $options_result = $self->{options}->get_options(); + $self->{options}->clean(); + + if (defined($options_result->{db_host})) { + @{$self->{sqldefault}->{dbi}} = (); + @{$self->{sqldefault}->{mysqlcmd}} = (); + for (my $i = 0; $i < scalar(@{$options_result->{db_host}}); $i++) { + $self->{sqldefault}->{dbi}[$i] = { data_source => 'mysql:host=' . $options_result->{db_host}[$i] }; + $self->{sqldefault}->{mysqlcmd}[$i] = { host => $options_result->{db_host}[$i] }; + if (defined($options_result->{db_port}[$i])) { + $self->{sqldefault}->{dbi}[$i]->{data_source} .= ';port=' . $options_result->{db_port}[$i]; + $self->{sqldefault}->{mysqlcmd}[$i]->{port} = $options_result->{db_port}[$i]; + } + } + } + + $self->SUPER::init(%options); +} + 1; __END__ =head1 PLUGIN DESCRIPTION -Specific Centreon Indicators. +Check MySQL Server. + +=over 8 + +You can use following options or options from 'sqlmode' directly. + +=item B<--host> + +Hostname to query. + +=item B<--port> + +Database Server Port. + +=back =cut