diff --git a/apps/ericsson/enm/api/mode/listnodes.pm b/apps/ericsson/enm/api/mode/listnodes.pm new file mode 100644 index 000000000..75c52704f --- /dev/null +++ b/apps/ericsson/enm/api/mode/listnodes.pm @@ -0,0 +1,98 @@ +# +# Copyright 2021 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::ericsson::enm::api::mode::listnodes; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => {}); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $nodes = $options{custom}->call_nodeSyncState(); + my $results = []; + foreach my $node (@$nodes) { + push @$results, { node_id => $node->{NodeId} }; + } + + return $results; +} + +sub run { + my ($self, %options) = @_; + + my $results = $self->manage_selection(%options); + foreach (@$results) { + $self->{output}->output_add(long_msg => sprintf('[node_id: %s]', $_->{node_id})); + } + $self->{output}->output_add( + severity => 'OK', + short_msg => 'List nodes:' + ); + + $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); + $self->{output}->exit(); +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => ['node_id']); +} + +sub disco_show { + my ($self, %options) = @_; + + my $results = $self->manage_selection(%options); + foreach (@$results) { + $self->{output}->add_disco_entry(%$_); + } +} + +1; + +__END__ + +=head1 MODE + +List nodes. + +=over 8 + +=back + +=cut diff --git a/apps/ericsson/enm/api/mode/listnodescelltdd.pm b/apps/ericsson/enm/api/mode/listnodescelltdd.pm index 8966353ea..e49a5f3f2 100644 --- a/apps/ericsson/enm/api/mode/listnodescelltdd.pm +++ b/apps/ericsson/enm/api/mode/listnodescelltdd.pm @@ -31,7 +31,8 @@ sub new { bless $self, $class; $options{options}->add_options(arguments => { - 'add-extra-attrs' => { name => 'add_extra_attrs' } + 'add-extra-attrs' => { name => 'add_extra_attrs' }, + 'filter-node-id:s' => { name => 'filter_node_id' } }); return $self; @@ -48,6 +49,9 @@ sub manage_selection { my $cells = $options{custom}->call_EUtranCellTDD(); my $results = []; foreach my $cell (@$cells) { + next if (defined($self->{option_results}->{filter_node_id}) && $self->{option_results}->{filter_node_id} ne '' && + $cell->{NodeId} !~ /$self->{option_results}->{filter_node_id}/); + my $attr = { node_id => $cell->{NodeId}, cell_tdd_id => $cell->{EUtranCellTDDId} }; if (defined($self->{option_results}->{add_extra_attrs})) { $attr->{label} = defined($cell->{userLabel}) && $cell->{userLabel} ne 'null' ? $cell->{userLabel} : ''; @@ -117,6 +121,10 @@ List nodes cells tdd. =over 8 +=item B<--filter-node-id> + +Filter tdd cells by node id (can be a regexp). + =item B<--add-extra-attrs> Display label/administrative_state/availability_status/operational_state. diff --git a/apps/ericsson/enm/api/mode/listnodesfru.pm b/apps/ericsson/enm/api/mode/listnodesfru.pm index 78f7d12db..3eb5bad9c 100644 --- a/apps/ericsson/enm/api/mode/listnodesfru.pm +++ b/apps/ericsson/enm/api/mode/listnodesfru.pm @@ -31,7 +31,8 @@ sub new { bless $self, $class; $options{options}->add_options(arguments => { - 'add-extra-attrs' => { name => 'add_extra_attrs' } + 'add-extra-attrs' => { name => 'add_extra_attrs' }, + 'filter-node-id:s' => { name => 'filter_node_id' } }); return $self; @@ -48,6 +49,9 @@ sub manage_selection { my $frus = $options{custom}->call_fruState(); my $results = []; foreach my $fru (@$frus) { + next if (defined($self->{option_results}->{filter_node_id}) && $self->{option_results}->{filter_node_id} ne '' && + $fru->{NodeId} !~ /$self->{option_results}->{filter_node_id}/); + my $attr = { node_id => $fru->{NodeId}, fru_id => $fru->{FieldReplaceableUnitId} }; if (defined($self->{option_results}->{add_extra_attrs})) { $attr->{label} = defined($fru->{userLabel}) && $fru->{userLabel} ne 'null' ? $fru->{userLabel} : ''; @@ -117,6 +121,10 @@ List nodes field replaceable units. =over 8 +=item B<--filter-node-id> + +Filter field replaceable units by node id (can be a regexp). + =item B<--add-extra-attrs> Display label/administrative_state/availability_status/operational_state. diff --git a/apps/ericsson/enm/api/mode/nodes.pm b/apps/ericsson/enm/api/mode/nodes.pm index aa08532aa..3030a339d 100644 --- a/apps/ericsson/enm/api/mode/nodes.pm +++ b/apps/ericsson/enm/api/mode/nodes.pm @@ -252,11 +252,11 @@ Filter nodes by id (can be a regexp). =item B<--filter-fru-id> -Filter tdd cells by id (can be a regexp). +Filter field replaceable units by id (can be a regexp). =item B<--filter-cell-tdd-id> -Filter field replaceable units by id (can be a regexp). +Filter tdd cells by id (can be a regexp). =item B<--unknown-node-sync-status> diff --git a/apps/ericsson/enm/api/plugin.pm b/apps/ericsson/enm/api/plugin.pm index 4ffb91f7a..2cfec3323 100644 --- a/apps/ericsson/enm/api/plugin.pm +++ b/apps/ericsson/enm/api/plugin.pm @@ -33,6 +33,7 @@ sub new { $self->{modes} = { 'cache' => 'apps::ericsson::enm::api::mode::cache', 'discovery' => 'apps::ericsson::enm::api::mode::discovery', + 'list-nodes' => 'apps::ericsson::enm::api::mode::listnodes', 'list-nodes-celltdd' => 'apps::ericsson::enm::api::mode::listnodescelltdd', 'list-nodes-fru' => 'apps::ericsson::enm::api::mode::listnodesfru', 'nodes' => 'apps::ericsson::enm::api::mode::nodes'