1
package HP::Proliant::Component::NicSubsystem;
2
our @ISA = qw(HP::Proliant::Component);
5
use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
11
runtime => $params{runtime},
12
rawdata => $params{rawdata},
13
method => $params{method},
14
condition => $params{condition},
15
status => $params{status},
20
extendedinfo => undef,
23
if ($self->{method} eq 'snmp') {
24
return HP::Proliant::Component::NicSubsystem::SNMP->new(%params);
25
} elsif ($self->{method} eq 'cli') {
26
return HP::Proliant::Component::NicSubsystem::CLI->new(%params);
36
$self->add_info('checking nic teams');
37
if (scalar (@{$self->{logical_nics}}) == 0) {
38
$self->add_info('no logical nics found');
39
$self->overall_check();
41
foreach (@{$self->{logical_nics}}) {
45
if (scalar (@{$self->{physical_nics}}) == 0) {
46
$self->add_info('no physical nics found. do you connect with slip?');
48
foreach (@{$self->{physical_nics}}) {
54
sub num_logical_nics {
56
return scalar @{$self->{logical_nics}};
59
sub num_physical_nics {
61
return scalar @{$self->{physical_nics}};
66
foreach (@{$self->{logical_nics}}) {
69
foreach (@{$self->{physical_nics}}) {
76
if ($self->{lognicstatus} ne "ok") {
77
$self->add_info(sprintf 'overall logical nic status is %s',
78
$self->{lognicstatus});
83
package HP::Proliant::Component::NicSubsystem::LogicalNic;
84
our @ISA = qw(HP::Proliant::Component::NicSubsystem);
87
use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
93
runtime => $params{runtime},
96
extendedinfo => undef,
98
foreach (qw(cpqNicIfLogMapIndex cpqNicIfLogMapIfNumber cpqNicIfLogMapDescription cpqNicIfLogMapGroupType cpqNicIfLogMapAdapterCount cpqNicIfLogMapAdapterOKCount cpqNicIfLogMapPhysicalAdapters cpqNicIfLogMapSwitchoverMode cpqNicIfLogMapCondition cpqNicIfLogMapStatus cpqNicIfLogMapNumSwitchovers cpqNicIfLogMapHwLocation cpqNicIfLogMapSpeed cpqNicIfLogMapVlanCount cpqNicIfLogMapVlans)) {
99
$self->{$_} = $params{$_};
107
$self->blacklist('lni', $self->{cpqNicIfLogMapIndex});
108
if ($self->{cpqNicIfLogMapAdapterCount} > 0) {
109
if ($self->{cpqNicIfLogMapCondition} eq "other") {
110
# simply ignore this. if there is a physical nic
111
# it is usually unknown/other/scheissegal
112
$self->add_info(sprintf "logical nic %d (%s) is %s",
113
$self->{cpqNicIfLogMapIndex}, $self->{cpqNicIfLogMapDescription},
114
$self->{cpqNicIfLogMapCondition});
115
} elsif ($self->{cpqNicIfLogMapCondition} ne "ok") {
116
$self->add_info(sprintf "logical nic %d (%s) is %s (%s)",
117
$self->{cpqNicIfLogMapIndex}, $self->{cpqNicIfLogMapDescription},
118
$self->{cpqNicIfLogMapCondition}, $self->{cpqNicIfLogMapStatus});
119
$self->add_message(CRITICAL, $self->{info});
121
$self->add_info(sprintf "logical nic %d (%s) is %s",
122
$self->{cpqNicIfLogMapIndex}, $self->{cpqNicIfLogMapDescription},
123
$self->{cpqNicIfLogMapCondition});
126
$self->add_info(sprintf "logical nic %d (%s) has 0 physical nics",
127
$self->{cpqNicIfLogMapIndex}, $self->{cpqNicIfLogMapDescription});
133
printf "[LNIC_%s]\n", $self->{cpqNicIfLogMapIndex};
134
foreach (qw(cpqNicIfLogMapIndex cpqNicIfLogMapIfNumber cpqNicIfLogMapDescription cpqNicIfLogMapAdapterCount cpqNicIfLogMapGroupType cpqNicIfLogMapSwitchoverMode cpqNicIfLogMapCondition cpqNicIfLogMapStatus cpqNicIfLogMapNumSwitchovers cpqNicIfLogMapHwLocation cpqNicIfLogMapSpeed)) {
135
printf "%s: %s\n", $_, $self->{$_};
137
printf "info: %s\n", $self->{info};
142
package HP::Proliant::Component::NicSubsystem::PhysicalNic;
143
our @ISA = qw(HP::Proliant::Component::NicSubsystem);
146
use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
152
runtime => $params{runtime},
155
extendedinfo => undef,
157
foreach (qw(cpqNicIfPhysAdapterIndex cpqNicIfPhysAdapterIfNumber cpqNicIfPhysAdapterRole cpqNicIfPhysAdapterDuplexState cpqNicIfPhysAdapterCondition cpqNicIfPhysAdapterState cpqNicIfPhysAdapterStatus cpqNicIfPhysAdapterBadTransmits cpqNicIfPhysAdapterBadReceives)) {
158
$self->{$_} = $params{$_};
166
$self->blacklist('pni', $self->{cpqNicIfPhysAdapterIndex});
167
if ($self->{cpqNicIfPhysAdapterCondition} eq "other") {
168
# hp doesnt output a clear status. i am optimistic, unknown/other
170
$self->add_info(sprintf "physical nic %d (%s) is %s",
171
$self->{cpqNicIfPhysAdapterIndex}, $self->{cpqNicIfPhysAdapterRole},
172
$self->{cpqNicIfPhysAdapterCondition});
173
} elsif ($self->{cpqNicIfPhysAdapterCondition} ne "ok") {
174
$self->add_info(sprintf "physical nic %d (%s) is %s (%s,%s)",
175
$self->{cpqNicIfPhysAdapterIndex}, $self->{cpqNicIfPhysAdapterRole},
176
$self->{cpqNicIfPhysAdapterCondition},
177
$self->{cpqNicIfPhysAdapterState}, $self->{cpqNicIfPhysAdapterStatus});
178
$self->add_message(CRITICAL, $self->{info});
180
if ($self->{cpqNicIfPhysAdapterDuplexState} ne "full") {
181
$self->add_info(sprintf "physical nic %d (%s) is %s duplex",
182
$self->{cpqNicIfPhysAdapterIndex}, $self->{cpqNicIfPhysAdapterRole},
183
$self->{cpqNicIfPhysAdapterDuplexState});
185
$self->add_info(sprintf "physical nic %d (%s) is %s",
186
$self->{cpqNicIfPhysAdapterIndex}, $self->{cpqNicIfPhysAdapterRole},
187
$self->{cpqNicIfPhysAdapterCondition});
194
printf "[PNIC_%s]\n", $self->{cpqNicIfPhysAdapterIndex};
195
foreach (qw(cpqNicIfPhysAdapterIndex cpqNicIfPhysAdapterIfNumber cpqNicIfPhysAdapterRole cpqNicIfPhysAdapterDuplexState cpqNicIfPhysAdapterCondition cpqNicIfPhysAdapterState cpqNicIfPhysAdapterStatus cpqNicIfPhysAdapterBadTransmits cpqNicIfPhysAdapterBadReceives)) {
196
printf "%s: %s\n", $_, $self->{$_};
198
printf "info: %s\n", $self->{info};