diff --git a/src/centreon/common/aruba/snmp/mode/license.pm b/src/centreon/common/aruba/snmp/mode/license.pm index 5376db5e7..8152e8186 100644 --- a/src/centreon/common/aruba/snmp/mode/license.pm +++ b/src/centreon/common/aruba/snmp/mode/license.pm @@ -24,16 +24,25 @@ use base qw(centreon::plugins::templates::counter); use strict; use warnings; -use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); use Time::Local; sub custom_status_output { my ($self, %options) = @_; - my $msg = sprintf("Status is '%s', Expires in '%s' [%s]", - $self->{result_values}->{flag}, - $self->{result_values}->{expires_human}, - $self->{result_values}->{expires_date}); + my $msg = "status is '" . $self->{result_values}->{flag} . "'"; + if ($self->{result_values}->{expires_date} =~ /never/i) { + $msg .= ', never expires'; + } elsif ($self->{result_values}->{expires_date} =~ /expired/i) { + $msg .= ', expired'; + } else { + $msg .= sprintf( + "expires in %s [%s]", + $self->{result_values}->{expires_human}, + $self->{result_values}->{expires_date} + ); + } + return $msg; } @@ -45,36 +54,21 @@ sub custom_status_calc { $self->{result_values}->{service} = $options{new_datas}->{$self->{instance} . '_sysExtLicenseService'}; $self->{result_values}->{expires} = $options{new_datas}->{$self->{instance} . '_sysExtLicenseExpires'}; $self->{result_values}->{expires_date} = $options{new_datas}->{$self->{instance} . '_sysExtLicenseExpires'}; - $self->{result_values}->{expires_human} = 'Never'; - - if ($self->{result_values}->{expires} !~ /Never/) { + + $self->{result_values}->{expires_human} = 'never'; + if ($self->{result_values}->{expires_date} =~ /Expired/) { + $self->{result_values}->{expires_human} = 'expired'; + $self->{result_values}->{expires} = 0; + } + + if ($self->{result_values}->{expires_date} !~ /Never|Expired/) { my ($year, $mon, $mday, $hour, $min, $sec) = split(/[\s\-:]+/, $self->{result_values}->{expires}); $self->{result_values}->{expires} = timelocal($sec, $min, $hour, $mday, $mon - 1, $year) - time(); $self->{result_values}->{expires_human} = centreon::plugins::misc::change_seconds(value => $self->{result_values}->{expires}); $self->{result_values}->{expires_human} = $self->{result_values}->{expires} = 0 if ($self->{result_values}->{expires} < 0); } - return 0; -} -sub set_counters { - my ($self, %options) = @_; - - $self->{maps_counters_type} = [ - { name => 'license', type => 1, cb_prefix_output => 'prefix_output', - message_multiple => 'All licenses status are ok' }, - ]; - - $self->{maps_counters}->{license} = [ - { label => 'status', threshold => 0, set => { - key_values => [ { name => 'sysExtLicenseKey' }, { name => 'sysExtLicenseFlags' }, - { name => 'sysExtLicenseService' }, { name => 'sysExtLicenseExpires' } ], - closure_custom_calc => $self->can('custom_status_calc'), - closure_custom_output => $self->can('custom_status_output'), - closure_custom_perfdata => sub { return 0; }, - closure_custom_threshold_check => \&catalog_status_threshold, - } - }, - ]; + return 0; } sub prefix_output { @@ -83,27 +77,39 @@ sub prefix_output { return "License '" . $options{instance_value}->{sysExtLicenseService} . "' "; } +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'license', type => 1, cb_prefix_output => 'prefix_output', message_multiple => 'All licenses status are ok' } + ]; + + $self->{maps_counters}->{license} = [ + { label => 'status', type => 2, critical_default => '%{flag} !~ /enabled/i || (%{expires} ne "Never" && %{expires} < 86400)', set => { + key_values => [ + { name => 'sysExtLicenseKey' }, { name => 'sysExtLicenseFlags' }, + { name => 'sysExtLicenseService' }, { name => 'sysExtLicenseExpires' } + ], + closure_custom_calc => $self->can('custom_status_calc'), + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + } + ]; +} + sub new { my ($class, %options) = @_; my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); bless $self, $class; - + $options{options}->add_options(arguments => { - "warning-status:s" => { name => 'warning_status' }, - "critical-status:s" => { name => 'critical_status', - default => '%{flag} !~ /enabled/i || (%{expires} ne "Never" && %{expires} < 86400)' }, }); return $self; } -sub check_options { - my ($self, %options) = @_; - $self->SUPER::check_options(%options); - - $self->change_macros(macros => ['warning_status', 'critical_status']); -} - my %map_flags = ( 'E' => 'enabled', 'A' => 'auto-generated', 'R' => 'reboot-required' ); @@ -115,7 +121,7 @@ my $mapping = { sysExtLicenseInstalled => { oid => '.1.3.6.1.4.1.14823.2.2.1.2.1.20.1.3' }, sysExtLicenseExpires => { oid => '.1.3.6.1.4.1.14823.2.2.1.2.1.20.1.4' }, sysExtLicenseFlags => { oid => '.1.3.6.1.4.1.14823.2.2.1.2.1.20.1.5', map => \%map_flags }, - sysExtLicenseService => { oid => '.1.3.6.1.4.1.14823.2.2.1.2.1.20.1.6' }, + sysExtLicenseService => { oid => '.1.3.6.1.4.1.14823.2.2.1.2.1.20.1.6' } }; sub manage_selection { @@ -133,7 +139,6 @@ sub manage_selection { } $self->{license} = {}; - foreach my $oid (keys %{$snmp_result}) { next if ($oid !~ /^$mapping->{sysExtLicenseKey}->{oid}\.(.*)/); my $instance = $1; @@ -146,7 +151,7 @@ sub manage_selection { $self->{license}->{$result->{sysExtLicenseService}} = { %{$result} }; } - + if (scalar(keys %{$self->{license}}) <= 0) { $self->{output}->add_option_msg(short_msg => "No license found."); $self->{output}->option_exit();