enhance code after review

This commit is contained in:
Sims24 2017-02-15 12:14:10 +01:00
parent 98a114006f
commit 031a9bae39
1 changed files with 30 additions and 5 deletions

View File

@ -129,6 +129,7 @@ sub new {
$options{options}->add_options(arguments =>
{
"config-file:s" => { name => 'config_file' },
"json-data:s" => { name => 'json_data' },
});
return $self;
}
@ -138,16 +139,30 @@ sub check_options {
$self->SUPER::check_options(%options);
$instance_mode = $self;
if (!defined($self->{option_results}->{config_file}) || $self->{option_results}->{config_file} eq '') {
$self->{output}->add_option_msg(short_msg => "Please define --config-file option");
if (!defined($self->{option_results}->{config_file}) && !defined($self->{option_results}->{json_data}) {
$self->{output}->add_option_msg(short_msg => "Please define --config-file or --json-data option");
$self->{output}->option_exit();
}
if (! -f $self->{option_results}->{config_file}) {
$self->{output}->add_option_msg(short_msg => "Can't find plugin configuration file (--config-file should be a full path to an existing file)");
if (-f $self->{option_results}->{config_file} && $self->{option_results}->{config_file} eq '') {
$config_data = $self->parse_json_config(config => $self->{option_results}->{config_file});
} elsif (defined($self->{option_results}->{json_data}) && $self->{option_results}->{json_data} eq '') {
$config_data = $self->parse_json_config(config => $self->{option_results}->{json_data};
} else {
$self->{output}->add_option_msg(short_msg => "Can't find plugin configuration file / Cannot read from --json-data option");
$self->{output}->option_exit();
}
if (!exists($config_data->{selection}) && !exists($config_data->{filters})) {
$self->{output}->add_option_msg(short_msg => "Config_error: there is neither filters nor selection section in your JSON configuration !");
$self->{output}->option_exit();
}
if (!exists($config_data->{formatting})) {
$self->{output}->add_option_msg(short_msg => "Config_error: formatting section is mandatory in yout JSON condiguration !");
$self->{output}->option_exit();
}
$config_data = $self->parse_json_config(config => $self->{option_results}->{config_file});
}
sub parse_json_config {
@ -278,6 +293,12 @@ sub manage_selection {
max => $self->{metrics}->{$metric}{max} } if ($self->{metrics}->{$metric}->{display} == 1);
}
if (scalar(keys %{$self->{metric}}) <= 0 && scalar(keys %{$self->{vmetrics}}) <= 0) {
$self->{output}->add_option_msg(short_msg => "No metrics returned - are your selection/filters correct ?");
$self->{output}->option_exit();
}
}
1;
@ -296,6 +317,10 @@ e.g: aggregate multiple metrics (min,max,avg,sum) or custom operation
Specify the full path to a json config file
=item B<--json-data>
Specify the full path to a json config file
=item B<--filter-counters>
Filter some counter (can be 'unique' or 'global')