Add filter regexp for 'datastoreshost' command

git-svn-id: http://svn.merethis.net/centreon-esxd/trunk@73 a5eaa968-4c79-4d68-970d-af6011b5b055
This commit is contained in:
Quentin Garnier 2013-09-11 13:59:05 +00:00
parent 7edf8e502f
commit 38307dfcca
2 changed files with 23 additions and 16 deletions

View File

@ -29,7 +29,7 @@ my %OPTION = (
on => undef, on => undef,
units => undef, units => undef,
free => undef, free => undef,
filter => undef filter => undef,
); );
Getopt::Long::Configure('bundling'); Getopt::Long::Configure('bundling');
@ -50,6 +50,7 @@ GetOptions(
"units=s" => \$OPTION{units}, "units=s" => \$OPTION{units},
"light-perfdata" => \$OPTION{'light-perfdata'}, "light-perfdata" => \$OPTION{'light-perfdata'},
"datastore=s" => \$OPTION{datastore}, "datastore=s" => \$OPTION{datastore},
"nic=s" => \$OPTION{nic}, "nic=s" => \$OPTION{nic},
"older=i" => \$OPTION{older}, "older=i" => \$OPTION{older},
@ -144,7 +145,8 @@ sub print_usage () {
print " -e (--esx-host) Esx Host to check (required)\n"; print " -e (--esx-host) Esx Host to check (required)\n";
print " -w (--warning) Warning Threshold in ms (latency) (default none)\n"; print " -w (--warning) Warning Threshold in ms (latency) (default none)\n";
print " -c (--critical) Critical Threshold in ms (latency) (default none)\n"; print " -c (--critical) Critical Threshold in ms (latency) (default none)\n";
print " --filter-datastores Datastores to verify (separated by coma)\n"; print " --datastore Datastores to check (can use a regexp with --filter)\n";
print " --filter Use regexp for --datastore option (can check multiples datastores at once)\n";
print "\n"; print "\n";
print "'countvmhost':\n"; print "'countvmhost':\n";
print " -e (--esx-host) Esx Host to check (required)\n"; print " -e (--esx-host) Esx Host to check (required)\n";
@ -398,15 +400,20 @@ sub datastoreshost_check_arg {
if (!defined($OPTION{critical})) { if (!defined($OPTION{critical})) {
$OPTION{critical} = ''; $OPTION{critical} = '';
} }
if (!defined($OPTION{'filter-datastores'})) { if (!defined($OPTION{datastore})) {
$OPTION{'filter-datastores'} = ''; $OPTION{datastore} = '';
}
if (defined($OPTION{filter})) {
$OPTION{filter} = 1;
} else {
$OPTION{filter} = 0;
} }
return 0; return 0;
} }
sub datastoreshost_get_str { sub datastoreshost_get_str {
return join($separatorin, return join($separatorin,
('datastoreshost', $OPTION{vsphere}, $OPTION{'esx-host'}, $OPTION{warning}, $OPTION{critical} , $OPTION{'filter-datastores'})); ('datastoreshost', $OPTION{vsphere}, $OPTION{'esx-host'}, $OPTION{warning}, $OPTION{critical} , $OPTION{datastore}, $OPTION{filter}));
} }
sub memhost_check_arg { sub memhost_check_arg {

View File

@ -50,19 +50,15 @@ sub initArgs {
$self->{lhost} = $_[0]; $self->{lhost} = $_[0];
$self->{warn} = (defined($_[1]) ? $_[1] : ''); $self->{warn} = (defined($_[1]) ? $_[1] : '');
$self->{crit} = (defined($_[2]) ? $_[2] : ''); $self->{crit} = (defined($_[2]) ? $_[2] : '');
$self->{filter_ds} = (defined($_[3]) ? $_[3] : ''); $self->{ds} = (defined($_[3]) ? $_[3] : '');
$self->{filter} = (defined($_[4]) && $_[4] == 1) ? 1 : 0;
} }
sub run { sub run {
my $self = shift; my $self = shift;
my %valid_ds = ();
my $filter_ok = 0; my $filter_ok = 0;
if ($self->{filter_ds} ne '') {
foreach (split /,/, $self->{filter_ds}) {
$valid_ds{$_} = 1;
}
}
if (!($self->{obj_esxd}->{perfcounter_speriod} > 0)) { if (!($self->{obj_esxd}->{perfcounter_speriod} > 0)) {
my $status = centreon::esxd::common::errors_mask(0, 'UNKNOWN'); my $status = centreon::esxd::common::errors_mask(0, 'UNKNOWN');
$self->{obj_esxd}->print_response(centreon::esxd::common::get_status($status) . "|Can't retrieve perf counters.\n"); $self->{obj_esxd}->print_response(centreon::esxd::common::get_status($status) . "|Can't retrieve perf counters.\n");
@ -111,8 +107,12 @@ sub run {
my $output_critical_append = ''; my $output_critical_append = '';
my $perfdata = ''; my $perfdata = '';
foreach (keys %uuid_list) { foreach (keys %uuid_list) {
if ($self->{filter_ds} ne '' and !defined($valid_ds{$uuid_list{$_}})) { if ($self->{ds} ne '') {
next; if ($self->{filter} == 0 && $uuid_list{$_} !~ /^\Q$self->{ds}\E$/) {
next;
} elsif ($self->{filter} == 1 && $uuid_list{$_} !~ /$self->{ds}/) {
next;
}
} }
if (defined($values->{$self->{obj_esxd}->{perfcounter_cache}->{'datastore.totalReadLatency.average'}->{'key'} . ":" . $_}) and if (defined($values->{$self->{obj_esxd}->{perfcounter_cache}->{'datastore.totalReadLatency.average'}->{'key'} . ":" . $_}) and
defined($values->{$self->{obj_esxd}->{perfcounter_cache}->{'datastore.totalWriteLatency.average'}->{'key'} . ":" . $_})) { defined($values->{$self->{obj_esxd}->{perfcounter_cache}->{'datastore.totalWriteLatency.average'}->{'key'} . ":" . $_})) {
@ -142,9 +142,9 @@ sub run {
} }
} }
if ($self->{filter_ds} ne '' and $filter_ok == 0) { if ($self->{ds} ne '' and $filter_ok == 0) {
$status = centreon::esxd::common::errors_mask(0, 'UNKNOWN'); $status = centreon::esxd::common::errors_mask(0, 'UNKNOWN');
$self->{obj_esxd}->print_response(centreon::esxd::common::get_status($status). "|Datastore names in filter are unknown.\n"); $self->{obj_esxd}->print_response(centreon::esxd::common::get_status($status). "|Can't get a datastore with the filter '$self->{ds}'.\n");
return ; return ;
} }
if ($output_critical ne "") { if ($output_critical ne "") {