From 800ef2c62882130d6e9ae43f9a6d5b4a32040b62 Mon Sep 17 00:00:00 2001 From: garnier-quentin Date: Thu, 23 Jul 2015 13:55:21 +0200 Subject: [PATCH] + Some fix in kayako indent and code --- apps/kayako/sql/mode/listdepartment.pm | 9 +- apps/kayako/sql/mode/listpriority.pm | 9 +- apps/kayako/sql/mode/liststaff.pm | 9 +- apps/kayako/sql/mode/liststatus.pm | 9 +- apps/kayako/sql/mode/ticketcount.pm | 136 ++++++++++++------------- apps/kayako/sql/plugin.pm | 105 ------------------- 6 files changed, 73 insertions(+), 204 deletions(-) delete mode 100644 apps/kayako/sql/plugin.pm diff --git a/apps/kayako/sql/mode/listdepartment.pm b/apps/kayako/sql/mode/listdepartment.pm index 4b11ee5b1..b50c01cfe 100644 --- a/apps/kayako/sql/mode/listdepartment.pm +++ b/apps/kayako/sql/mode/listdepartment.pm @@ -45,16 +45,11 @@ sub run { $self->{sql}->connect(); - if (!($self->{sql}->is_version_minimum(version => '5'))) { - $self->{output}->add_option_msg(short_msg => "MySQL version '" . $self->{sql}->{version} . "' is not supported (need version >= '5.x')."); - $self->{output}->option_exit(); - } - $self->{sql}->query(query => "SELECT departmentid, title FROM swdepartments"); while ((my $row = $self->{sql}->fetchrow_hashref())) { - $self->{output}->output_add(long_msg => "'" . $row->{title} . "' [id = " . $row->{departmentid} . "]"); + $self->{output}->output_add(long_msg => "'" . $row->{title} . "' [id = " . $row->{departmentid} . "]"); } - + $self->{output}->output_add(severity => 'OK', short_msg => 'List departments:'); $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); diff --git a/apps/kayako/sql/mode/listpriority.pm b/apps/kayako/sql/mode/listpriority.pm index 5fbea641c..533d6763b 100644 --- a/apps/kayako/sql/mode/listpriority.pm +++ b/apps/kayako/sql/mode/listpriority.pm @@ -45,16 +45,11 @@ sub run { $self->{sql}->connect(); - if (!($self->{sql}->is_version_minimum(version => '5'))) { - $self->{output}->add_option_msg(short_msg => "MySQL version '" . $self->{sql}->{version} . "' is not supported (need version >= '5.x')."); - $self->{output}->option_exit(); - } - $self->{sql}->query(query => "SELECT priorityid, title FROM swticketpriorities"); while ((my $row = $self->{sql}->fetchrow_hashref())) { - $self->{output}->output_add(long_msg => "'" . $row->{title} . "' [id = " . $row->{priorityid} . "]"); + $self->{output}->output_add(long_msg => "'" . $row->{title} . "' [id = " . $row->{priorityid} . "]"); } - + $self->{output}->output_add(severity => 'OK', short_msg => 'List priorities:'); $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); diff --git a/apps/kayako/sql/mode/liststaff.pm b/apps/kayako/sql/mode/liststaff.pm index 796583442..90d7aa34e 100644 --- a/apps/kayako/sql/mode/liststaff.pm +++ b/apps/kayako/sql/mode/liststaff.pm @@ -45,16 +45,11 @@ sub run { $self->{sql}->connect(); - if (!($self->{sql}->is_version_minimum(version => '5'))) { - $self->{output}->add_option_msg(short_msg => "MySQL version '" . $self->{sql}->{version} . "' is not supported (need version >= '5.x')."); - $self->{output}->option_exit(); - } - $self->{sql}->query(query => "SELECT staffid, username FROM swstaff"); while ((my $row = $self->{sql}->fetchrow_hashref())) { - $self->{output}->output_add(long_msg => "'" . $row->{username} . "' [id = " . $row->{staffid} . "]"); + $self->{output}->output_add(long_msg => "'" . $row->{username} . "' [id = " . $row->{staffid} . "]"); } - + $self->{output}->output_add(severity => 'OK', short_msg => 'List staff:'); $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); diff --git a/apps/kayako/sql/mode/liststatus.pm b/apps/kayako/sql/mode/liststatus.pm index 92741312d..f30adab93 100644 --- a/apps/kayako/sql/mode/liststatus.pm +++ b/apps/kayako/sql/mode/liststatus.pm @@ -45,16 +45,11 @@ sub run { $self->{sql}->connect(); - if (!($self->{sql}->is_version_minimum(version => '5'))) { - $self->{output}->add_option_msg(short_msg => "MySQL version '" . $self->{sql}->{version} . "' is not supported (need version >= '5.x')."); - $self->{output}->option_exit(); - } - $self->{sql}->query(query => "SELECT ticketstatusid, title FROM swticketstatus"); while ((my $row = $self->{sql}->fetchrow_hashref())) { - $self->{output}->output_add(long_msg => "'" . $row->{title} . "' [id = " . $row->{ticketstatusid} . "]"); + $self->{output}->output_add(long_msg => "'" . $row->{title} . "' [id = " . $row->{ticketstatusid} . "]"); } - + $self->{output}->output_add(severity => 'OK', short_msg => 'List status:'); $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); diff --git a/apps/kayako/sql/mode/ticketcount.pm b/apps/kayako/sql/mode/ticketcount.pm index 9ce6bcc88..567e1fdfd 100644 --- a/apps/kayako/sql/mode/ticketcount.pm +++ b/apps/kayako/sql/mode/ticketcount.pm @@ -30,7 +30,6 @@ use Time::Local; my $ticket_total = 0; my %tickets; my $label; -my %handlers = (ALRM => {} ); my $start = ""; my $end = ""; my $priority_filter; @@ -44,15 +43,15 @@ sub new { $self->{version} = '1.0'; $options{options}->add_options(arguments => { - "reload-cache-time:s" => { name => 'reload_cache_time', default => 180 }, - "department-id:s" => { name => 'department_id' }, - "staff-id:s" => { name => 'staff_id' }, - "status-id:s" => { name => 'status_id' }, - "priority-id:s" => { name => 'priority_id' }, - "warning:s" => { name => 'warning' }, - "critical:s" => { name => 'critical' }, - "start-date:s" => { name => 'start_date' }, - "end-date:s" => { name => 'end_date' }, + "reload-cache-time:s" => { name => 'reload_cache_time', default => 180 }, + "department-id:s" => { name => 'department_id' }, + "staff-id:s" => { name => 'staff_id' }, + "status-id:s" => { name => 'status_id' }, + "priority-id:s" => { name => 'priority_id' }, + "warning:s" => { name => 'warning' }, + "critical:s" => { name => 'critical' }, + "start-date:s" => { name => 'start_date' }, + "end-date:s" => { name => 'end_date' }, }); $self->{statefile_cache} = centreon::plugins::statefile->new(%options); @@ -63,36 +62,36 @@ sub check_options { my ($self, %options) = @_; $self->SUPER::init(%options); - if (defined($self->{option_results}->{'start_date'})) { - if ($self->{option_results}->{'start_date'} !~ m/^\d{1,2}-\d{1,2}-\d{4}$/){ - $self->{output}->add_option_msg(short_msg => "Please specify a valid date (DD-MM-YYYY)."); - $self->{output}->option_exit(); - } else { - my ($mday,$mon,$year) = split(/-/, $self->{option_results}->{'start_date'}); - $start = $self->{option_results}->{'start_date'}; - $self->{option_results}->{'start_date'} = timelocal(0,0,0,$mday,$mon-1,$year); - } - } - if (defined($self->{option_results}->{'end_date'})) { - if ($self->{option_results}->{'end_date'} !~ m/^\d{1,2}-\d{1,2}-\d{4}$/){ + if (defined($self->{option_results}->{start_date})) { + if ($self->{option_results}->{start_date} !~ m/^\d{1,2}-\d{1,2}-\d{4}$/){ + $self->{output}->add_option_msg(short_msg => "Please specify a valid date (DD-MM-YYYY)."); + $self->{output}->option_exit(); + } else { + my ($mday,$mon,$year) = split(/-/, $self->{option_results}->{'start_date'}); + $start = $self->{option_results}->{start_date}; + $self->{option_results}->{start_date} = timelocal(0,0,0,$mday,$mon-1,$year); + } + } + if (defined($self->{option_results}->{end_date})) { + if ($self->{option_results}->{end_date} !~ m/^\d{1,2}-\d{1,2}-\d{4}$/){ $self->{output}->add_option_msg(short_msg => "Please specify a valid date (DD-MM-YYYY)."); $self->{output}->option_exit(); } else { - my ($mday,$mon,$year) = split(/-/, $self->{option_results}->{'end_date'}); - $end = $self->{option_results}->{'end_date'}; - $self->{option_results}->{'end_date'} = timelocal(59,59,23,$mday,$mon-1,$year); + my ($mday,$mon,$year) = split(/-/, $self->{option_results}->{end_date}); + $end = $self->{option_results}->{end_date}; + $self->{option_results}->{end_date} = timelocal(59,59,23,$mday,$mon-1,$year); } } if (($self->{perfdata}->threshold_validate(label => 'warning', value => $self->{option_results}->{warning})) == 0) { - $self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{option_results}->{warning} . "'."); - $self->{output}->option_exit(); + $self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{option_results}->{warning} . "'."); + $self->{output}->option_exit(); } if (($self->{perfdata}->threshold_validate(label => 'critical', value => $self->{option_results}->{critical})) == 0) { - $self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{option_results}->{critical} . "'."); - $self->{output}->option_exit(); + $self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{option_results}->{critical} . "'."); + $self->{output}->option_exit(); } - if (defined($self->{option_results}->{'priority_id'})) { - @priority_filters = split(/,/, $self->{option_results}->{'priority_id'}); + if (defined($self->{option_results}->{priority_id})) { + @priority_filters = split(/,/, $self->{option_results}->{priority_id}); } $self->{statefile_cache}->check_options(%options); @@ -132,22 +131,16 @@ sub run { $self->{sql} = $options{sql}; $self->{sql}->connect(); - - if (!($self->{sql}->is_version_minimum(version => '5'))) { - $self->{output}->add_option_msg(short_msg => "MySQL version '" . $self->{sql}->{version} . "' is not supported (need version >= '5.x')."); - $self->{output}->option_exit(); - } my $has_cache_file = $self->{statefile_cache}->read(statefile => 'cache_sql_' . $self->{sql}->get_unique_id4save() . '_kayako'); my $timestamp_cache = $self->{statefile_cache}->get(name => 'last_timestamp'); if ($has_cache_file == 0 || !defined($timestamp_cache) || ((time() - $timestamp_cache) > (($self->{option_results}->{reload_cache_time}) * 60))) { - $self->reload_cache(); - $self->{statefile_cache}->read(); + $self->reload_cache(); + $self->{statefile_cache}->read(); } my $query = "SELECT priorityid FROM swtickets WHERE ticketid IS NOT NULL"; - if (defined($self->{option_results}->{'department_id'})) { $query .= " AND departmentid IN (" . $self->{option_results}->{'department_id'} . ")"; } @@ -170,59 +163,60 @@ sub run { $self->{sql}->query(query => $query); while ((my $row = $self->{sql}->fetchrow_hashref())) { - if (defined($self->{option_results}->{'priority_id'})){ + if (defined($self->{option_results}->{priority_id})) { foreach $priority_filter (@priority_filters) { - if ($priority_filter == $row->{priorityid}){ + if ($priority_filter == $row->{priorityid}) { $tickets{$priority_filter}++; $ticket_total++; } } } else { $ticket_total++; - } + } } - -########### -# Manage Output -########### - my $exit = $self->{perfdata}->threshold_check(value => $ticket_total, threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]); - my $staff = ""; - my $ticket_status = ""; - my $period = ""; - - if (defined($self->{option_results}->{'staff_id'}) && ($self->{option_results}->{'staff_id'} =~ m/^\d*$/)) { + + ########### + # Manage Output + ########### + my $exit = $self->{perfdata}->threshold_check(value => $ticket_total, threshold => [ { label => 'critical', exit_litteral => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]); + my $staff = ""; + my $ticket_status = ""; + my $period = ""; + + if (defined($self->{option_results}->{staff_id}) && ($self->{option_results}->{staff_id} =~ m/^\d*$/)) { $staff = " for staff '" . $self->{statefile_cache}->get(name => 'staff_'.$self->{option_results}->{'staff_id'}) ."'"; } - if (defined($self->{option_results}->{'status_id'}) && ($self->{option_results}->{'status_id'} =~ m/^\d*$/)) { + if (defined($self->{option_results}->{status_id}) && ($self->{option_results}->{status_id} =~ m/^\d*$/)) { $ticket_status = " in status '" . $self->{statefile_cache}->get(name => 'status_'.$self->{option_results}->{'status_id'}) ."'"; } - if (defined($self->{option_results}->{'start_date'}) || defined($self->{option_results}->{'end_date'})){ + if (defined($self->{option_results}->{start_date}) || defined($self->{option_results}->{end_date})){ $period = " -"; } - if (defined($self->{option_results}->{'start_date'})){ - $start = " Start: " . $start; + if (defined($self->{option_results}->{start_date})){ + $start = " Start: " . $start; } - if (defined($self->{option_results}->{'end_date'})){ - $end = " End: " . $end; - } + if (defined($self->{option_results}->{end_date})){ + $end = " End: " . $end; + } - if (defined($self->{option_results}->{'priority_id'})){ - foreach $priority_filter (@priority_filters) { - $label = $self->{statefile_cache}->get(name => 'priority_'.$priority_filter); - $self->{output}->perfdata_add(label => $label, value => $tickets{$priority_filter}, - min => 0, max => $ticket_total); - } - } - $self->{output}->perfdata_add(label => 'Total', value => $ticket_total, - warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning'), - critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical')); + if (defined($self->{option_results}->{priority_id})) { + foreach $priority_filter (@priority_filters) { + $label = $self->{statefile_cache}->get(name => 'priority_' . $priority_filter); + $self->{output}->perfdata_add(label => $label, value => $tickets{$priority_filter}, + min => 0, max => $ticket_total); + } + } + $self->{output}->perfdata_add(label => 'Total', value => $ticket_total, + warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning'), + critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical'), + min => 0); - $self->{output}->output_add(severity => $exit, - short_msg => sprintf("%s tickets%s%s%s%s%s", $ticket_total, $staff, $ticket_status, $period, $start, $end)); + $self->{output}->output_add(severity => $exit, + short_msg => sprintf("%s tickets%s%s%s%s%s", $ticket_total, $staff, $ticket_status, $period, $start, $end)); $self->{output}->display(); $self->{output}->exit(); diff --git a/apps/kayako/sql/plugin.pm b/apps/kayako/sql/plugin.pm deleted file mode 100644 index 425c70a0b..000000000 --- a/apps/kayako/sql/plugin.pm +++ /dev/null @@ -1,105 +0,0 @@ -# -# Copyright 2015 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 apps::kayako::sql::plugin; - -use strict; -use warnings; -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 - - $self->{version} = '0.1'; - %{$self->{modes}} = ( - 'list-department' => 'apps::kayako::sql::mode::listdepartment', - 'list-priority' => 'apps::kayako::sql::mode::listpriority', - 'list-staff' => 'apps::kayako::sql::mode::liststaff', - 'list-status' => 'apps::kayako::sql::mode::liststatus', - 'ticket-count' => 'apps::kayako::sql::mode::ticketcount', - ); - $self->{sql_modes}{psqlcmd} = 'database::postgres::psqlcmd'; - return $self; -} - -sub init { - my ($self, %options) = @_; - - $self->{options}->add_options( - arguments => { - 'host:s@' => { name => 'db_host' }, - 'port:s@' => { name => 'db_port' }, - 'database:s@' => { name => 'db_name' }, - } - ); - $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]; - } - if (!defined($options_result->{db_name}[$i]) || $options_result->{db_name}[$i] eq '') { - $self->{output}->add_option_msg(short_msg => "Need to specify '--database' option."); - $self->{output}->option_exit(); - }else{ - $self->{sqldefault}->{dbi}[$i]->{data_source} .= ';database=' . $options_result->{db_name}[$i]; - $self->{sqldefault}->{psqlcmd}[$i]->{dbname} = $options_result->{db_name}[$i]; - } - } - } - - $self->SUPER::init(%options); -} - -1; - -__END__ - -=head1 PLUGIN DESCRIPTION - -Check Kayako with MySQL Server. - -=item B<--host> - -Hostname to query. - -=item B<--port> - -Database Server Port. - -=item B<--database> - -Database Name. - -=back - -=cut