Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/apps/backup/veeam/local/mode/jobstatus.pm
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ use base qw(centreon::plugins::templates::counter);

use strict;
use warnings;
use centreon::common::powershell::veeam::functions qw/veeam_to_psexec/;
use centreon::common::powershell::veeam::functions qw/veeam_to_psexec veeam_error_message/;
use centreon::common::powershell::veeam::jobstatus;
use apps::backup::veeam::local::mode::resources::types qw($job_type $job_result);
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold);
Expand Down Expand Up @@ -181,7 +181,8 @@ sub manage_selection {
options => $self->{option_results},
command => $self->{option_results}->{command},
command_path => $self->{option_results}->{command_path},
command_options => $self->{option_results}->{command_options}
command_options => $self->{option_results}->{command_options},
error_message => veeam_error_message($self->{option_results}->{veeam_version})
);
if (defined($self->{option_results}->{ps_exec_only})) {
$self->{output}->output_add(
Expand Down
12 changes: 7 additions & 5 deletions src/apps/backup/veeam/local/mode/licenses.pm
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,11 @@ use base qw(centreon::plugins::templates::counter);

use strict;
use warnings;
use centreon::common::powershell::veeam::functions qw/veeam_to_psexec/;
use centreon::common::powershell::veeam::functions qw/veeam_to_psexec veeam_error_message/;
use centreon::common::powershell::veeam::licenses;
use apps::backup::veeam::local::mode::resources::types qw($license_type $license_status);
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
use centreon::plugins::constants qw/:counters :values/;
use centreon::plugins::misc;
use JSON::XS;
use POSIX;
Expand Down Expand Up @@ -95,8 +96,8 @@ sub set_counters {
my ($self, %options) = @_;

$self->{maps_counters_type} = [
{ name => 'global', type => 0 },
{ name => 'licenses', type => 1, cb_prefix_output => 'prefix_license_output', message_multiple => 'All licenses are ok', skipped_code => { -10 => 1 } }
{ name => 'global', type => COUNTER_TYPE_GLOBAL },
{ name => 'licenses', type => COUNTER_TYPE_INSTANCE, cb_prefix_output => 'prefix_license_output', message_multiple => 'All licenses are ok', skipped_code => { NO_VALUE() => 1 } }
];

$self->{maps_counters}->{global} = [
Expand All @@ -111,7 +112,7 @@ sub set_counters {
];

$self->{maps_counters}->{licenses} = [
{ label => 'status', type => 2, critical_default => '%{status} =~ /expired|invalid/i', set => {
{ label => 'status', type => COUNTER_KIND_TEXT, critical_default => '%{status} =~ /expired|invalid/i', set => {
key_values => [ { name => 'to' }, { name => 'status' }, { name => 'type' } ],
closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; },
Expand Down Expand Up @@ -219,7 +220,8 @@ sub manage_selection {
options => $self->{option_results},
command => $self->{option_results}->{command},
command_path => $self->{option_results}->{command_path},
command_options => $self->{option_results}->{command_options}
command_options => $self->{option_results}->{command_options},
error_message => veeam_error_message($self->{option_results}->{veeam_version})
);
if (defined($self->{option_results}->{ps_exec_only})) {
$self->{output}->output_add(
Expand Down
5 changes: 3 additions & 2 deletions src/apps/backup/veeam/local/mode/listjobs.pm
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ use base qw(centreon::plugins::mode);

use strict;
use warnings;
use centreon::common::powershell::veeam::functions qw/veeam_to_psexec/;
use centreon::common::powershell::veeam::functions qw/veeam_to_psexec veeam_error_message/;
use apps::backup::veeam::local::mode::resources::types qw($job_type);
use centreon::common::powershell::veeam::listjobs;
use centreon::plugins::misc;
Expand Down Expand Up @@ -124,7 +124,8 @@ sub manage_selection {
options => $self->{option_results},
command => $self->{option_results}->{command},
command_path => $self->{option_results}->{command_path},
command_options => $self->{option_results}->{command_options}
command_options => $self->{option_results}->{command_options},
error_message => veeam_error_message($self->{option_results}->{veeam_version})
);
if (defined($self->{option_results}->{ps_exec_only})) {
$self->{output}->output_add(
Expand Down
5 changes: 3 additions & 2 deletions src/apps/backup/veeam/local/mode/listrepositories.pm
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ use base qw(centreon::plugins::mode);

use strict;
use warnings;
use centreon::common::powershell::veeam::functions qw/veeam_to_psexec/;
use centreon::common::powershell::veeam::functions qw/veeam_to_psexec veeam_error_message/;
use apps::backup::veeam::local::mode::resources::types qw($repository_type $repository_status);
use centreon::common::powershell::veeam::repositories;
use centreon::plugins::misc;
Expand Down Expand Up @@ -127,7 +127,8 @@ sub manage_selection {
options => $self->{option_results},
command => $self->{option_results}->{command},
command_path => $self->{option_results}->{command_path},
command_options => $self->{option_results}->{command_options}
command_options => $self->{option_results}->{command_options},
error_message => veeam_error_message($self->{option_results}->{veeam_version})
);
if (defined($self->{option_results}->{ps_exec_only})) {
$self->{output}->output_add(
Expand Down
14 changes: 8 additions & 6 deletions src/apps/backup/veeam/local/mode/repositories.pm
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,11 @@ use base qw(centreon::plugins::templates::counter);

use strict;
use warnings;
use centreon::common::powershell::veeam::functions qw/veeam_to_psexec/;
use centreon::common::powershell::veeam::functions qw/veeam_to_psexec veeam_error_message/;
use centreon::common::powershell::veeam::repositories;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
use apps::backup::veeam::local::mode::resources::types qw($repository_type $repository_status);
use centreon::plugins::constants qw/:counters :values/;
use JSON::XS;

sub custom_status_output {
Expand Down Expand Up @@ -77,19 +78,19 @@ sub set_counters {
my ($self, %options) = @_;

$self->{maps_counters_type} = [
{ name => 'repositories', type => 3, cb_prefix_output => 'prefix_repository_output', cb_long_output => 'repository_long_output',
{ name => 'repositories', type => COUNTER_TYPE_MULTIPLE, cb_prefix_output => 'prefix_repository_output', cb_long_output => 'repository_long_output',
indent_long_output => ' ', message_multiple => 'All repositories are ok',
group => [
{ name => 'status', type => 0, skipped_code => { -10 => 1 } },
{ name => 'space', type => 0, skipped_code => { -10 => 1 } }
{ name => 'status', type => COUNTER_MULTIPLE_INSTANCE, skipped_code => { NO_VALUE() => 1 } },
{ name => 'space', type => COUNTER_MULTIPLE_INSTANCE, skipped_code => { NO_VALUE() => 1 } }
]
}
];

$self->{maps_counters}->{status} = [
{
label => 'status',
type => 2,
type => COUNTER_KIND_TEXT,
critical_default => 'not %{status} =~ /ordinal|maintenance/i',
set => {
key_values => [
Expand Down Expand Up @@ -191,7 +192,8 @@ sub manage_selection {
options => $self->{option_results},
command => $self->{option_results}->{command},
command_path => $self->{option_results}->{command_path},
command_options => $self->{option_results}->{command_options}
command_options => $self->{option_results}->{command_options},
error_message => veeam_error_message($self->{option_results}->{veeam_version})
);
if (defined($self->{option_results}->{ps_exec_only})) {
$self->{output}->output_add(
Expand Down
12 changes: 7 additions & 5 deletions src/apps/backup/veeam/local/mode/tapejobs.pm
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,11 @@ use base qw(centreon::plugins::templates::counter);

use strict;
use warnings;
use centreon::common::powershell::veeam::functions qw/veeam_to_psexec/;
use centreon::common::powershell::veeam::functions qw/veeam_to_psexec veeam_error_message/;
use centreon::common::powershell::veeam::tapejobs;
use apps::backup::veeam::local::mode::resources::types qw($job_tape_type $job_tape_result $job_tape_state);
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
use centreon::plugins::constants qw/:counters :values/;
use centreon::plugins::misc;
use JSON::XS;

Expand All @@ -52,8 +53,8 @@ sub set_counters {
my ($self, %options) = @_;

$self->{maps_counters_type} = [
{ name => 'global', type => 0 },
{ name => 'job', type => 1, cb_prefix_output => 'prefix_job_output', message_multiple => 'All jobs are ok', skipped_code => { -10 => 1 } }
{ name => 'global', type => COUNTER_TYPE_GLOBAL },
{ name => 'job', type => COUNTER_TYPE_INSTANCE, cb_prefix_output => 'prefix_job_output', message_multiple => 'All jobs are ok', skipped_code => { NO_VALUE() => 1 } }
];

$self->{maps_counters}->{global} = [
Expand All @@ -68,7 +69,7 @@ sub set_counters {
];

$self->{maps_counters}->{job} = [
{ label => 'status', type => 2, critical => '%{enabled} == 1 and not %{last_result} =~ /Success|None/i', set => {
{ label => 'status', type => COUNTER_KIND_TEXT, critical => '%{enabled} == 1 and not %{last_result} =~ /Success|None/i', set => {
key_values => [
{ name => 'display' }, { name => 'enabled' },
{ name => 'type' }, { name => 'last_result' },
Expand Down Expand Up @@ -143,7 +144,8 @@ sub manage_selection {
options => $self->{option_results},
command => $self->{option_results}->{command},
command_path => $self->{option_results}->{command_path},
command_options => $self->{option_results}->{command_options}
command_options => $self->{option_results}->{command_options},
error_message => veeam_error_message($self->{option_results}->{veeam_version})
);
if (defined($self->{option_results}->{ps_exec_only})) {
$self->{output}->output_add(
Expand Down
12 changes: 7 additions & 5 deletions src/apps/backup/veeam/local/mode/vsbjobs.pm
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,11 @@ use base qw(centreon::plugins::templates::counter);

use strict;
use warnings;
use centreon::common::powershell::veeam::functions qw/veeam_to_psexec/;
use centreon::common::powershell::veeam::functions qw/veeam_to_psexec veeam_error_message/;
use centreon::common::powershell::veeam::vsbjobs;
use apps::backup::veeam::local::mode::resources::types qw($job_type $job_result);
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
use centreon::plugins::constants qw/:counters :values/;
use centreon::plugins::misc;
use JSON::XS;

Expand Down Expand Up @@ -61,8 +62,8 @@ sub set_counters {
my ($self, %options) = @_;

$self->{maps_counters_type} = [
{ name => 'global', type => 0, cb_prefix_output => 'prefix_global_output', },
{ name => 'jobs', type => 1, cb_prefix_output => 'prefix_job_output', message_multiple => 'All SureBackup jobs are ok', skipped_code => { -10 => 1 } }
{ name => 'global', type => COUNTER_TYPE_GLOBAL, cb_prefix_output => 'prefix_global_output', },
{ name => 'jobs', type => COUNTER_TYPE_INSTANCE, cb_prefix_output => 'prefix_job_output', message_multiple => 'All SureBackup jobs are ok', skipped_code => { NO_VALUE() => 1 } }
];

$self->{maps_counters}->{global} = [
Expand Down Expand Up @@ -101,7 +102,7 @@ sub set_counters {
];

$self->{maps_counters}->{jobs} = [
{ label => 'status', type => 2, critical_default => 'not %{status} =~ /success/i', set => {
{ label => 'status', type => COUNTER_KIND_TEXT, critical_default => 'not %{status} =~ /success/i', set => {
key_values => [
{ name => 'name' }, { name => 'type' },
{ name => 'status' }, { name => 'duration' }
Expand Down Expand Up @@ -175,7 +176,8 @@ sub manage_selection {
options => $self->{option_results},
command => $self->{option_results}->{command},
command_path => $self->{option_results}->{command_path},
command_options => $self->{option_results}->{command_options}
command_options => $self->{option_results}->{command_options},
error_message => veeam_error_message($self->{option_results}->{veeam_version})
);
if (defined($self->{option_results}->{ps_exec_only})) {
$self->{output}->output_add(
Expand Down
11 changes: 10 additions & 1 deletion src/centreon/common/powershell/veeam/functions.pm
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ use strict;
use warnings;

use Exporter qw(import);
our @EXPORT_OK = qw/veeam_to_psversion veeam_to_psexec/;
our @EXPORT_OK = qw/veeam_to_psversion veeam_to_psexec veeam_error_message/;

# Veeam version 13 and later require Powershell 7 (psw.exe, previous versions require Powershell 5
sub veeam_to_psversion {
Expand All @@ -39,6 +39,15 @@ sub veeam_to_psexec {
return $veeam_version >= 13 ? 'pwsh.exe' : 'powershell.exe';
}

sub veeam_error_message {
my ($veeam_version) = @_;

my $msg = "Internal error: execution issue: $^E";
$msg .= ". Please verify that PowerShell 7 (pwsh.exe) is installed and available in the system PATH."
if $veeam_version >= 13;
return $msg;
}

sub powershell_init {
my (%options) = @_;

Expand Down
4 changes: 2 additions & 2 deletions src/centreon/plugins/misc.pm
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ sub windows_execute {
{ stdin => 'NUL',
stdout => \*TO_PARENT,
stderr => $stderr }))) {
$options{output}->add_option_msg(short_msg => "Internal error: execution issue: $^E");
$options{output}->add_option_msg(short_msg => $options{error_message} // "Internal error: execution issue: $^E");
$options{output}->option_exit();
}
close TO_PARENT;
Expand Down Expand Up @@ -271,7 +271,7 @@ sub unix_execute {

if ($exit_code != 0 && (!defined($options{no_errors}) || !defined($options{no_errors}->{$exit_code}))) {
$stdout =~ s/\n/ - /g;
$options{output}->add_option_msg(short_msg => "Command error: $stdout");
$options{output}->add_option_msg(short_msg => $options{error_message} // "Command error: $stdout");
$options{output}->option_exit();
}

Expand Down
Loading