1
package HP::BladeSystem::Component::ServerBladeSubsystem;
2
our @ISA = qw(HP::BladeSystem::Component);
5
use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
11
runtime => $params{runtime},
12
rawdata => $params{rawdata},
13
method => $params{method},
17
extendedinfo => undef,
27
cpqRackServerBladeEntry => '1.3.6.1.4.1.232.22.2.4.1.1.1',
28
cpqRackServerBladeRack => '1.3.6.1.4.1.232.22.2.4.1.1.1.1',
29
cpqRackServerBladeChassis => '1.3.6.1.4.1.232.22.2.4.1.1.1.2',
30
cpqRackServerBladeIndex => '1.3.6.1.4.1.232.22.2.4.1.1.1.3',
31
cpqRackServerBladeName => '1.3.6.1.4.1.232.22.2.4.1.1.1.4',
32
cpqRackServerBladeEnclosureName => '1.3.6.1.4.1.232.22.2.4.1.1.1.5',
33
cpqRackServerBladePartNumber => '1.3.6.1.4.1.232.22.2.4.1.1.1.6',
34
cpqRackServerBladeSparePartNumber => '1.3.6.1.4.1.232.22.2.4.1.1.1.7',
35
cpqRackServerBladePosition => '1.3.6.1.4.1.232.22.2.4.1.1.1.8',
36
cpqRackServerBladeHeight => '1.3.6.1.4.1.232.22.2.4.1.1.1.9',
37
cpqRackServerBladeWidth => '1.3.6.1.4.1.232.22.2.4.1.1.1.10',
38
cpqRackServerBladeDepth => '1.3.6.1.4.1.232.22.2.4.1.1.1.11',
39
cpqRackServerBladePresent => '1.3.6.1.4.1.232.22.2.4.1.1.1.12',
40
cpqRackServerBladeHasFuses => '1.3.6.1.4.1.232.22.2.4.1.1.1.13',
41
cpqRackServerBladeEnclosureSerialNum => '1.3.6.1.4.1.232.22.2.4.1.1.1.14',
42
cpqRackServerBladeSlotsUsed => '1.3.6.1.4.1.232.22.2.4.1.1.1.15',
43
cpqRackServerBladeStatus => '1.3.6.1.4.1.232.22.2.4.1.1.1.21',
44
cpqRackServerBladeDiagnosticString => '1.3.6.1.4.1.232.22.2.4.1.1.1.24',
45
cpqRackServerBladePowered => '1.3.6.1.4.1.232.22.2.4.1.1.1.25',
46
cpqRackServerBladePOSTStatus => '1.3.6.1.4.1.232.22.2.4.1.1.1.35',
47
cpqRackServerBladePresentValue => {
52
cpqRackServerBladeStatusValue => {
58
cpqRackServerBladePoweredValue => {
63
4 => 'powerStagedOff',
66
cpqRackServerBladePOSTStatusValue => {
75
# INDEX { cpqRackServerBladeRack, cpqRackServerBladeChassis, cpqRackServerBladeIndex }
76
# dreckada dreck, dreckada
77
foreach ($self->get_entries($oids, 'cpqRackServerBladeEntry')) {
78
push(@{$self->{server_blades}},
79
HP::BladeSystem::Component::ServerBladeSubsystem::ServerBlade->new(%{$_}));
85
foreach (@{$self->{server_blades}}) {
86
$_->check() if $_->{cpqRackServerBladePresent} eq 'present' ||
87
$self->{runtime}->{options}->{verbose} >= 3; # absent blades nur bei -vvv
93
foreach (@{$self->{server_blades}}) {
94
$_->dump() if $_->{cpqRackServerBladePresent} eq 'present' ||
95
$self->{runtime}->{options}->{verbose} >= 3; # absent blades nur bei -vvv
100
package HP::BladeSystem::Component::ServerBladeSubsystem::ServerBlade;
101
our @ISA = qw(HP::BladeSystem::Component::ServerBladeSubsystem);
104
use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
110
runtime => $params{runtime},
111
rawdata => $params{rawdata},
112
method => $params{method},
115
extendedinfo => undef,
117
map { $self->{$_} = $params{$_} } grep /cpqRackServerBlade/, keys %params;
118
$self->{cpqRackServerBladeDiagnosticString} ||= '';
119
$self->{name} = $self->{cpqRackServerBladeRack}.
120
':'.$self->{cpqRackServerBladeChassis}.
121
':'.$self->{cpqRackServerBladeIndex};
129
$self->blacklist('sb', $self->{name});
130
my $info = sprintf 'server blade %s \'%s\' is %s, status is %s, powered is %s',
131
$self->{name}, $self->{cpqRackServerBladeName}, $self->{cpqRackServerBladePresent},
132
$self->{cpqRackServerBladeStatus}, $self->{cpqRackServerBladePowered};
133
$self->add_info($info);
134
if ($self->{cpqRackServerBladePowered} eq 'on') {
135
if ($self->{cpqRackServerBladeCondition} eq 'degraded') {
136
$self->add_message(WARNING, sprintf 'server blade %s diag is \'%s\', post status is %s',
137
$self->{cpqRackServerBladeName}, $self->{cpqRackServerBladeDiagnosticString},
138
$self->{cpqRackServerBladePOSTStatus});
139
} elsif ($self->{cpqRackServerBladeCondition} eq 'failed') {
140
$self->add_message(CRITICAL, sprintf 'server blade %s diag is \'%s\', post status is %s',
141
$self->{cpqRackServerBladeName}, $self->{cpqRackServerBladeDiagnosticString},
142
$self->{cpqRackServerBladePOSTStatus});
149
printf "[SERVER_BLADE_%s]\n", $self->{cpqRackServerBladeName};
150
foreach (qw(cpqRackServerBladeRack cpqRackServerBladeChassis cpqRackServerBladeIndex cpqRackServerBladeName cpqRackServerBladeEnclosureName cpqRackServerBladePartNumber cpqRackServerBladeSparePartNumber cpqRackServerBladePosition cpqRackServerBladeHeight cpqRackServerBladeWidth cpqRackServerBladeDepth cpqRackServerBladePresent cpqRackServerBladeHasFuses cpqRackServerBladeEnclosureSerialNum cpqRackServerBladeSlotsUsed cpqRackServerBladeStatus cpqRackServerBladeDiagnosticString cpqRackServerBladePowered cpqRackServerBladePOSTStatus)) {
151
printf "%s: %s\n", $_, $self->{$_};