add options --output-ignore-perfdata and --output-ignore-label

This commit is contained in:
garnier-quentin 2020-06-17 10:07:39 +02:00
parent b182c38aed
commit 34652b3857
1 changed files with 32 additions and 13 deletions

View File

@ -28,6 +28,7 @@ sub new {
my ($class, %options) = @_; my ($class, %options) = @_;
my $self = {}; my $self = {};
bless $self, $class; bless $self, $class;
if (!defined($options{options})) { if (!defined($options{options})) {
print "Class Output: Need to specify 'options' argument to load.\n"; print "Class Output: Need to specify 'options' argument to load.\n";
exit 3; exit 3;
@ -48,11 +49,13 @@ sub new {
'opt-exit:s' => { name => 'opt_exit', default => 'unknown' }, 'opt-exit:s' => { name => 'opt_exit', default => 'unknown' },
'output-xml' => { name => 'output_xml' }, 'output-xml' => { name => 'output_xml' },
'output-json' => { name => 'output_json' }, 'output-json' => { name => 'output_json' },
'output-ignore-perfdata' => { name => 'output_ignore_perfdata' },
'output-ignore-label' => { name => 'output_ignore_label' },
'output-openmetrics' => { name => 'output_openmetrics' }, 'output-openmetrics' => { name => 'output_openmetrics' },
'output-file:s' => { name => 'output_file' }, 'output-file:s' => { name => 'output_file' },
'disco-format' => { name => 'disco_format' }, 'disco-format' => { name => 'disco_format' },
'disco-show' => { name => 'disco_show' }, 'disco-show' => { name => 'disco_show' },
'float-precision:s' => { name => 'float_precision', default => 8 }, 'float-precision:s' => { name => 'float_precision', default => 8 }
}); });
%{$self->{option_results}} = (); %{$self->{option_results}} = ();
@ -491,8 +494,8 @@ sub output_txt {
sub display { sub display {
my ($self, %options) = @_; my ($self, %options) = @_;
my $nolabel = defined($options{nolabel}) ? 1 : 0; my $nolabel = (defined($options{nolabel}) || defined($self->{option_results}->{output_ignore_label})) ? 1 : 0;
my $force_ignore_perfdata = (defined($options{force_ignore_perfdata}) && $options{force_ignore_perfdata} == 1) ? 1 : 0; my $force_ignore_perfdata = ((defined($options{force_ignore_perfdata}) && $options{force_ignore_perfdata} == 1) || $self->{option_results}->{output_ignore_perfdata}) ? 1 : 0;
my $force_long_output = (defined($options{force_long_output}) && $options{force_long_output} == 1) ? 1 : 0; my $force_long_output = (defined($options{force_long_output}) && $options{force_long_output} == 1) ? 1 : 0;
$force_long_output = 1 if (defined($self->{option_results}->{debug})); $force_long_output = 1 if (defined($self->{option_results}->{debug}));
@ -504,8 +507,10 @@ sub display {
if (defined($self->{option_results}->{output_file})) { if (defined($self->{option_results}->{output_file})) {
if (!open (STDOUT, '>', $self->{option_results}->{output_file})) { if (!open (STDOUT, '>', $self->{option_results}->{output_file})) {
$self->output_add(severity => 'UNKNOWN', $self->output_add(
short_msg => "cannot open file '" . $self->{option_results}->{output_file} . "': $!"); severity => 'UNKNOWN',
short_msg => "cannot open file '" . $self->{option_results}->{output_file} . "': $!"
);
} }
} }
if (defined($self->{option_results}->{output_xml})) { if (defined($self->{option_results}->{output_xml})) {
@ -545,7 +550,7 @@ sub die_exit {
# $options{exit_litteral} = string litteral exit # $options{exit_litteral} = string litteral exit
# $options{nolabel} = interger label display # $options{nolabel} = interger label display
my $exit_litteral = defined($options{exit_litteral}) ? $options{exit_litteral} : $self->{option_results}->{opt_exit}; my $exit_litteral = defined($options{exit_litteral}) ? $options{exit_litteral} : $self->{option_results}->{opt_exit};
my $nolabel = defined($options{nolabel}) ? 1 : 0; my $nolabel = (defined($options{nolabel}) || defined($self->{option_results}->{output_ignore_label})) ? 1 : 0;
# ignore long output in the following case # ignore long output in the following case
$self->{option_results}->{verbose} = undef; $self->{option_results}->{verbose} = undef;
@ -572,7 +577,7 @@ sub option_exit {
# $options{exit_litteral} = string litteral exit # $options{exit_litteral} = string litteral exit
# $options{nolabel} = interger label display # $options{nolabel} = interger label display
my $exit_litteral = defined($options{exit_litteral}) ? $options{exit_litteral} : $self->{option_results}->{opt_exit}; my $exit_litteral = defined($options{exit_litteral}) ? $options{exit_litteral} : $self->{option_results}->{opt_exit};
my $nolabel = defined($options{nolabel}) ? 1 : 0; my $nolabel = (defined($options{nolabel}) || defined($self->{option_results}->{output_ignore_label})) ? 1 : 0;
if (defined($self->{option_results}->{output_xml})) { if (defined($self->{option_results}->{output_xml})) {
$self->create_xml_document(); $self->create_xml_document();
@ -678,8 +683,10 @@ sub is_litteral_status {
sub create_json_document { sub create_json_document {
my ($self) = @_; my ($self) = @_;
if (centreon::plugins::misc::mymodule_load(no_quit => 1, module => 'JSON', if (centreon::plugins::misc::mymodule_load(
error_msg => "Cannot load module 'JSON'.")) { no_quit => 1, module => 'JSON',
error_msg => "Cannot load module 'JSON'.")
) {
print "Cannot load module 'JSON'\n"; print "Cannot load module 'JSON'\n";
$self->exit(exit_litteral => 'unknown'); $self->exit(exit_litteral => 'unknown');
} }
@ -690,8 +697,10 @@ sub create_json_document {
sub create_xml_document { sub create_xml_document {
my ($self) = @_; my ($self) = @_;
if (centreon::plugins::misc::mymodule_load(no_quit => 1, module => 'XML::LibXML', if (centreon::plugins::misc::mymodule_load(
error_msg => "Cannot load module 'XML::LibXML'.")) { no_quit => 1, module => 'XML::LibXML',
error_msg => "Cannot load module 'XML::LibXML'.")
) {
print "Cannot load module 'XML::LibXML'\n"; print "Cannot load module 'XML::LibXML'\n";
$self->exit(exit_litteral => 'unknown'); $self->exit(exit_litteral => 'unknown');
} }
@ -790,8 +799,10 @@ sub to_utf8 {
if ($self->{encode_utf8_import} == 0) { if ($self->{encode_utf8_import} == 0) {
# Some Perl version dont have the following module (like Perl 5.6.x) # Some Perl version dont have the following module (like Perl 5.6.x)
if (centreon::plugins::misc::mymodule_load(no_quit => 1, module => 'Encode', if (centreon::plugins::misc::mymodule_load(
error_msg => "Cannot load module 'Encode'.")) { no_quit => 1, module => 'Encode',
error_msg => "Cannot load module 'Encode'.")
) {
print "Cannot load module 'Encode'\n"; print "Cannot load module 'Encode'\n";
$self->exit(exit_litteral => 'unknown'); $self->exit(exit_litteral => 'unknown');
} }
@ -1367,6 +1378,14 @@ Optional exit code for an execution error (i.e. wrong option provided,
SSH connection refused, timeout, etc) SSH connection refused, timeout, etc)
(Default: unknown). (Default: unknown).
=item B<--output-ignore-perfdata>
Remove perfdata from output.
=item B<--output-ignore-label>
Remove label status from output.
=item B<--output-xml> =item B<--output-xml>
Display output in XML format. Display output in XML format.