diff --git a/centreon-plugins/network/cisco/cces/restapi/custom/api.pm b/centreon-plugins/network/cisco/cces/restapi/custom/api.pm index d115a12ad..0e6dd9de2 100644 --- a/centreon-plugins/network/cisco/cces/restapi/custom/api.pm +++ b/centreon-plugins/network/cisco/cces/restapi/custom/api.pm @@ -193,19 +193,6 @@ sub authenticate { sub request_api { my ($self, %options) = @_; - my $plop = do { - local $/ = undef; - if (!open my $fh, "<", '/tmp/plop4.txt') { - $self->{output}->add_option_msg(short_msg => "Could not open file"); - $self->{output}->option_exit(); - } - <$fh>; - }; - eval { - $plop = XMLin($plop, ForceArray => $options{ForceArray}, KeyAttr => []); - }; - return $plop; - $self->settings(); if (!defined($self->{session_cookie})) { $self->authenticate(statefile => $self->{cache}); diff --git a/centreon-plugins/network/cisco/cces/restapi/mode/peripherals.pm b/centreon-plugins/network/cisco/cces/restapi/mode/peripherals.pm new file mode 100644 index 000000000..b3f1771f7 --- /dev/null +++ b/centreon-plugins/network/cisco/cces/restapi/mode/peripherals.pm @@ -0,0 +1,126 @@ +# +# Copyright 2020 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 network::cisco::cces::restapi::mode::peripherals; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0 }, + ]; + + $self->{maps_counters}->{global} = [ + { label => 'peripherals-connected', nlabel => 'system.peripherals.connected.count', set => { + key_values => [ { name => 'connected' } ], + output_template => 'peripherals connected: %d', + perfdatas => [ + { value => 'connected_absolute', template => '%d', min => 0 }, + ], + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $self->{version} = '1.0'; + $options{options}->add_options(arguments => { + 'filter-since:s' => { name => 'filter_since', default => 86400 }, + }); + + centreon::plugins::misc::mymodule_load( + output => $self->{output}, + module => 'Date::Parse', + error_msg => "Cannot load module 'Date::Parse'." + ); + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + my $result = $options{custom}->request_api( + method => 'POST', + url_path => '/putxml', + query_form_post => '', + ForceArray => ['Device'] + ); + + $self->{global} = { connected => 0 }; + + return if (!defined($result->{PeripheralsListResult}->{Device})); + + foreach (@{$result->{PeripheralsListResult}->{Device}}) { + if (defined($self->{option_results}->{filter_since}) && $self->{option_results}->{filter_since} =~ /\d+/) { + my $last_seen = Date::Parse::str2time($_->{LastSeen}); + if (!defined($last_seen)) { + $self->{manager}->{output}->output_add( + severity => 'UNKNOWN', + short_msg => "can't parse date '" . $_->{LastSeen} . "'" + ); + next; + } + next if ($last_seen < time() - $self->{option_results}->{filter_since}); + } + + $self->{output}->output_add( + long_msg => sprintf( + 'peripheral [name: %s] [Last Seen: %s] [NetworkAddress: %s] [SerialNumber: %s]', + $_->{Name}, + $_->{LastSeen}, + $_->{NetworkAddress}, + $_->{SerialNumber} + ) + ); + $self->{global}->{connected}++; + } +} + +1; + +__END__ + +=head1 MODE + +Check peripherals device connected. + +=over 8 + +=item B<--filter-since> + +Filter by since X seconds (Default: 86400). + +=item B<--warning-*> B<--critical-*> + +Thresholds. +Can be: 'peripherals-connected'. + +=back + +=cut diff --git a/centreon-plugins/network/cisco/cces/restapi/mode/sessions.pm b/centreon-plugins/network/cisco/cces/restapi/mode/sessions.pm index bb7428bc7..36029d901 100644 --- a/centreon-plugins/network/cisco/cces/restapi/mode/sessions.pm +++ b/centreon-plugins/network/cisco/cces/restapi/mode/sessions.pm @@ -25,12 +25,6 @@ use base qw(centreon::plugins::templates::counter); use strict; use warnings; -sub prefix_global_output { - my ($self, %options) = @_; - - return $options{instance_value}->{label} . ' '; -} - sub set_counters { my ($self, %options) = @_; diff --git a/centreon-plugins/network/cisco/cces/restapi/plugin.pm b/centreon-plugins/network/cisco/cces/restapi/plugin.pm index 2bc3b446a..23827c612 100644 --- a/centreon-plugins/network/cisco/cces/restapi/plugin.pm +++ b/centreon-plugins/network/cisco/cces/restapi/plugin.pm @@ -36,7 +36,8 @@ sub new { 'calls-summary' => 'network::cisco::cces::restapi::mode::callssummary', 'calls-rt' => 'network::cisco::cces::restapi::mode::callsrt', 'diagnostics' => 'network::cisco::cces::restapi::mode::diagnostics', - 'sessions' => 'network::cisco::cces::restapi::mode::sessions', + 'peripherals' => 'network::cisco::cces::restapi::mode::peripherals', + 'sessions' => 'network::cisco::cces::restapi::mode::sessions' ); $self->{custom_modes}{api} = 'network::cisco::cces::restapi::custom::api';