Optimize nic info from 'listnichost' command

git-svn-id: http://svn.merethis.net/centreon-esxd/trunk@76 a5eaa968-4c79-4d68-970d-af6011b5b055
This commit is contained in:
Quentin Garnier 2013-09-11 15:55:36 +00:00
parent 5a24f16343
commit a349a883d8
3 changed files with 29 additions and 7 deletions

View File

@ -130,6 +130,7 @@ sub print_usage () {
print " --nic Physical nic name to check (required)\n"; print " --nic Physical nic name to check (required)\n";
print " -w (--warning) Warning Threshold in percent (default 80)\n"; print " -w (--warning) Warning Threshold in percent (default 80)\n";
print " -c (--critical) Critical Threshold in percent (default 90)\n"; print " -c (--critical) Critical Threshold in percent (default 90)\n";
print " --filter Use regexp for --nic option (can check multiple nics at once)\n";
print "\n"; print "\n";
print "'memhost':\n"; print "'memhost':\n";
print " -e (--esx-host) Esx Host to check (required)\n"; print " -e (--esx-host) Esx Host to check (required)\n";
@ -473,12 +474,17 @@ sub nethost_check_arg {
if (!defined($OPTION{critical})) { if (!defined($OPTION{critical})) {
$OPTION{critical} = 90; $OPTION{critical} = 90;
} }
if (defined($OPTION{filter})) {
$OPTION{filter} = 1;
} else {
$OPTION{filter} = 0;
}
return 0; return 0;
} }
sub nethost_get_str { sub nethost_get_str {
return join($separatorin, return join($separatorin,
('nethost', $OPTION{vsphere}, $OPTION{'esx-host'}, $OPTION{nic}, $OPTION{warning}, $OPTION{critical})); ('nethost', $OPTION{vsphere}, $OPTION{'esx-host'}, $OPTION{nic}, $OPTION{filter}, $OPTION{warning}, $OPTION{critical}));
} }
sub countvmhost_check_arg { sub countvmhost_check_arg {

View File

@ -39,30 +39,45 @@ sub initArgs {
sub run { sub run {
my $self = shift; my $self = shift;
my %nic_in_vswitch = ();
my %filters = ('name' => $self->{lhost}); my %filters = ('name' => $self->{lhost});
my @properties = ('config.network.pnic'); my @properties = ('config.network.pnic', 'config.network.vswitch');
my $result = centreon::esxd::common::get_entities_host($self->{obj_esxd}, 'HostSystem', \%filters, \@properties); my $result = centreon::esxd::common::get_entities_host($self->{obj_esxd}, 'HostSystem', \%filters, \@properties);
if (!defined($result)) { if (!defined($result)) {
return ; return ;
} }
# Get Name from vswitch
foreach (@{$$result[0]->{'config.network.vswitch'}}) {
foreach my $keynic (@{$_->pnic}) {
$nic_in_vswitch{$keynic} = 1;
}
}
my $status = 0; # OK my $status = 0; # OK
my $output_up = 'Nic Up List: '; my $output_up = 'Nic Up List: ';
my $output_down = 'Nic Down List: '; my $output_down = 'Nic Down List: ';
my $output_down_no_vswitch = 'Nic Down List (not in vswitch): ';
my $output_up_append = ""; my $output_up_append = "";
my $output_down_append = ""; my $output_down_append = "";
my $output_down_no_vswitch_append = "";
foreach (@{$$result[0]->{'config.network.pnic'}}) { foreach (@{$$result[0]->{'config.network.pnic'}}) {
if (defined($_->linkSpeed)) { if (defined($_->linkSpeed)) {
$output_up .= $output_up_append . "'" . $_->device . "'"; $output_up .= $output_up_append . "'" . $_->device . "'";
$output_up_append = ', '; $output_up_append = ', ';
} else { } else {
if (defined($nic_in_vswitch{$_->key})) {
$output_down .= $output_down_append . "'" . $_->device . "'"; $output_down .= $output_down_append . "'" . $_->device . "'";
$output_down_append = ', '; $output_down_append = ', ';
} else {
$output_down_no_vswitch .= $output_down_no_vswitch_append . "'" . $_->device . "'";
$output_down_no_vswitch_append = ', ';
}
} }
} }
$self->{obj_esxd}->print_response(centreon::esxd::common::get_status($status) . "|$output_up. $output_down.\n"); $self->{obj_esxd}->print_response(centreon::esxd::common::get_status($status) . "|$output_up. $output_down. $output_down_no_vswitch.\n");
} }
1; 1;

View File

@ -52,8 +52,9 @@ sub initArgs {
my $self = shift; my $self = shift;
$self->{lhost} = $_[0]; $self->{lhost} = $_[0];
$self->{pnic} = $_[1]; $self->{pnic} = $_[1];
$self->{warn} = (defined($_[2]) ? $_[2] : 80); $self->{filter} = (defined($_[2]) && $_[2] == 1) ? 1 : 0;
$self->{crit} = (defined($_[3]) ? $_[3] : 90); $self->{warn} = (defined($_[3]) ? $_[3] : 80);
$self->{crit} = (defined($_[4]) ? $_[4] : 90);
} }
sub run { sub run {