diff --git a/apps/backup/netbackup/local/mode/jobstatus.pm b/apps/backup/netbackup/local/mode/jobstatus.pm index 02c088550..1a8c86967 100644 --- a/apps/backup/netbackup/local/mode/jobstatus.pm +++ b/apps/backup/netbackup/local/mode/jobstatus.pm @@ -32,11 +32,11 @@ sub custom_status_threshold { my ($self, %options) = @_; my $status = 'ok'; my $message; - + eval { local $SIG{__WARN__} = sub { $message = $_[0]; }; local $SIG{__DIE__} = sub { $message = $_[0]; }; - + # To exclude some OK if (defined($self->{instance_mode}->{option_results}->{ok_status}) && $self->{instance_mode}->{option_results}->{ok_status} ne '' && eval "$self->{instance_mode}->{option_results}->{ok_status}") { @@ -58,14 +58,13 @@ sub custom_status_threshold { sub custom_status_output { my ($self, %options) = @_; - my $msg = 'Status : ' . $self->{result_values}->{status}; - return $msg; + return 'Status : ' . $self->{result_values}->{status}; } sub custom_status_calc { my ($self, %options) = @_; - + $self->{result_values}->{status} = $options{new_datas}->{$self->{instance} . '_status'}; $self->{result_values}->{display} = $options{new_datas}->{$self->{instance} . '_display'}; $self->{result_values}->{type} = $options{new_datas}->{$self->{instance} . '_type'}; @@ -75,20 +74,19 @@ sub custom_status_calc { sub custom_long_output { my ($self, %options) = @_; - my $msg = 'Started Since: ' . centreon::plugins::misc::change_seconds(value => $self->{result_values}->{elapsed}); - - return $msg; + + return 'Started Since: ' . centreon::plugins::misc::change_seconds(value => $self->{result_values}->{elapsed}); } sub custom_long_calc { my ($self, %options) = @_; - + $self->{result_values}->{status} = $options{new_datas}->{$self->{instance} . '_status'}; $self->{result_values}->{display} = $options{new_datas}->{$self->{instance} . '_display'}; $self->{result_values}->{elapsed} = $options{new_datas}->{$self->{instance} . '_elapsed'}; $self->{result_values}->{type} = $options{new_datas}->{$self->{instance} . '_type'}; $self->{result_values}->{state} = $options{new_datas}->{$self->{instance} . '_state'}; - + return -11 if ($self->{result_values}->{state} !~ /queued|active/); return 0; @@ -98,7 +96,7 @@ sub custom_frozen_threshold { my ($self, %options) = @_; my $status = 'ok'; my $message; - + eval { local $SIG{__WARN__} = sub { $message = $_[0]; }; local $SIG{__DIE__} = sub { $message = $_[0]; }; @@ -131,7 +129,7 @@ sub custom_frozen_output { sub custom_frozen_calc { my ($self, %options) = @_; - + $self->{result_values}->{status} = $options{new_datas}->{$self->{instance} . '_status'}; $self->{result_values}->{display} = $options{new_datas}->{$self->{instance} . '_display'}; $self->{result_values}->{elapsed} = $options{new_datas}->{$self->{instance} . '_elapsed'}; @@ -147,7 +145,7 @@ sub custom_frozen_calc { sub set_counters { my ($self, %options) = @_; - + $self->{maps_counters_type} = [ { name => 'global', type => 0 }, { name => 'policy', type => 2, cb_prefix_output => 'prefix_policy_output', cb_long_output => 'policy_long_output', @@ -155,7 +153,7 @@ sub set_counters { group => [ { name => 'job', cb_prefix_output => 'prefix_job_output', skipped_code => { -11 => 1 } } ] } ]; - + $self->{maps_counters}->{global} = [ { label => 'total', set => { key_values => [ { name => 'total' } ], @@ -166,7 +164,7 @@ sub set_counters { } }, ]; - + $self->{maps_counters}->{job} = [ { label => 'status', threshold => 0, set => { key_values => [ { name => 'status' }, { name => 'display' }, { name => 'type' }, { name => 'state' } ], @@ -194,7 +192,7 @@ sub set_counters { closure_custom_perfdata => sub { return 0; }, closure_custom_threshold_check => $self->can('custom_frozen_threshold'), } - }, + } ]; } @@ -202,7 +200,7 @@ sub new { my ($class, %options) = @_; my $self = $class->SUPER::new(package => __PACKAGE__, %options, statefile => 1); bless $self, $class; - + $options{options}->add_options(arguments => { 'hostname:s' => { name => 'hostname' }, 'remote' => { name => 'remote' }, @@ -243,13 +241,13 @@ sub check_options { sub policy_long_output { my ($self, %options) = @_; - + return "Checking policy '" . $options{instance_value}->{display} . "'"; } sub prefix_policy_output { my ($self, %options) = @_; - + return "Policy '" . $options{instance_value}->{display} . "' "; } @@ -287,16 +285,20 @@ sub manage_selection { (defined($self->{option_results}->{filter_start_time}) ? md5_hex($self->{option_results}->{filter_start_time}) : md5_hex('all')) . '_' . (defined($self->{option_results}->{job_end_time}) ? md5_hex($self->{option_results}->{job_end_time}) : md5_hex('all')); - my ($stdout) = centreon::plugins::misc::execute(output => $self->{output}, - options => $self->{option_results}, - sudo => $self->{option_results}->{sudo}, - command => $self->{option_results}->{command}, - command_path => $self->{option_results}->{command_path}, - command_options => $self->{option_results}->{command_options}); - + my ($stdout) = centreon::plugins::misc::execute( + output => $self->{output}, + options => $self->{option_results}, + sudo => $self->{option_results}->{sudo}, + command => $self->{option_results}->{command}, + command_path => $self->{option_results}->{command_path}, + command_options => $self->{option_results}->{command_options} + ); + if (defined($self->{option_results}->{exec_only})) { - $self->{output}->output_add(severity => 'OK', - short_msg => $stdout); + $self->{output}->output_add( + severity => 'OK', + short_msg => $stdout + ); $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); $self->{output}->exit(); } @@ -308,9 +310,11 @@ sub manage_selection { my @values = split /,/, $line; my ($job_id, $job_type, $job_state, $job_status, $job_pname, $job_schedule, $job_start_time, $job_end_time, $job_kb, $job_parentid) = ($values[0], $values[1], $values[2], $values[3], $values[4], $values[5], $values[8], $values[10], $values[14], $values[33]); - + $job_pname = defined($job_pname) && $job_pname ne '' ? $job_pname : 'unknown'; $job_status = defined($job_status) && $job_status =~ /[0-9]/ ? $job_status : -1; + # when the job is running, end_time = 000000 + $job_end_time = undef if (defined($job_end_time) && int($job_end_time) == 0); if (defined($self->{option_results}->{filter_policy_name}) && $self->{option_results}->{filter_policy_name} ne '' && $job_pname !~ /$self->{option_results}->{filter_policy_name}/) { $self->{output}->output_add(long_msg => "skipping job '" . $job_pname . "/" . $job_id . "': no matching filter.", debug => 1); @@ -331,7 +335,7 @@ sub manage_selection { $self->{output}->output_add(long_msg => "skipping job '" . $job_pname . "/" . $job_id . "': start time too old.", debug => 1); next; } - + $self->{policy}->{$job_pname} = { job => {}, display => $job_pname } if (!defined($self->{policy}->{$job_pname})); my $elapsed_time = $current_time - $job_start_time; $self->{policy}->{$job_pname}->{job}->{$job_id} = {