~ubuntu-branches/ubuntu/trusty/nagios-plugins-contrib/trusty-proposed

« back to all changes in this revision

Viewing changes to check_hpasm/check_hpasm-4.5.2/plugins-scripts/HP/BladeSystem/Component/ServerBladeSubsystem.pm

  • Committer: Package Import Robot
  • Author(s): Bernd Zeimetz
  • Date: 2013-05-21 22:11:50 UTC
  • mfrom: (5.1.1 experimental)
  • Revision ID: package-import@ubuntu.com-20130521221150-k5bda5v5euvt7wg9
Tags: 6.20130521
* [e68c82e1] check_raid: do not run hpacucli if cciss_vol_status is available.
* [4a1c57e8] Also support tw-cli as additional name for the 3ware binary.
  Thanks to Dennis Hoppe
* [eb5e1c7c] Add /run/ to the check_libs ignore file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
package HP::BladeSystem::Component::ServerBladeSubsystem;
2
 
our @ISA = qw(HP::BladeSystem::Component);
3
 
 
4
 
use strict;
5
 
use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
6
 
 
7
 
sub new {
8
 
  my $class = shift;
9
 
  my %params = @_;
10
 
  my $self = {
11
 
    runtime => $params{runtime},
12
 
    rawdata => $params{rawdata},
13
 
    method => $params{method},
14
 
    server_blades => [],
15
 
    blacklisted => 0,
16
 
    info => undef,
17
 
    extendedinfo => undef,
18
 
  };
19
 
  bless $self, $class;
20
 
  $self->init();
21
 
  return $self;
22
 
}
23
 
 
24
 
sub init {
25
 
  my $self = shift;
26
 
  my $oids = {
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 => {
48
 
          1 => 'other',
49
 
          2 => 'absent',
50
 
          3 => 'present',
51
 
      },
52
 
      cpqRackServerBladeStatusValue => {
53
 
          1 => 'other',
54
 
          2 => 'ok',
55
 
          3 => 'degraded',
56
 
          4 => 'failed',
57
 
      },
58
 
      cpqRackServerBladePoweredValue => {
59
 
          0 => 'aechz',
60
 
          1 => 'other',
61
 
          2 => 'on',
62
 
          3 => 'off',
63
 
          4 => 'powerStagedOff',
64
 
          5 => 'reboot',
65
 
      },
66
 
      cpqRackServerBladePOSTStatusValue => {
67
 
          1 => 'other',
68
 
          2 => 'started',
69
 
          3 => 'completed',
70
 
          4 => 'failed',
71
 
      },
72
 
  };
73
 
 
74
 
 
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(%{$_}));
80
 
  }
81
 
}
82
 
 
83
 
sub check {
84
 
  my $self = shift;
85
 
  foreach (@{$self->{server_blades}}) {
86
 
    $_->check() if $_->{cpqRackServerBladePresent} eq 'present' ||
87
 
        $self->{runtime}->{options}->{verbose} >= 3; # absent blades nur bei -vvv
88
 
  }
89
 
}
90
 
 
91
 
sub dump {
92
 
  my $self = shift;
93
 
  foreach (@{$self->{server_blades}}) {
94
 
    $_->dump() if $_->{cpqRackServerBladePresent} eq 'present' ||
95
 
        $self->{runtime}->{options}->{verbose} >= 3; # absent blades nur bei -vvv
96
 
  }
97
 
}
98
 
 
99
 
 
100
 
package HP::BladeSystem::Component::ServerBladeSubsystem::ServerBlade;
101
 
our @ISA = qw(HP::BladeSystem::Component::ServerBladeSubsystem);
102
 
 
103
 
use strict;
104
 
use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
105
 
 
106
 
sub new {
107
 
  my $class = shift;
108
 
  my %params = @_;
109
 
  my $self = {
110
 
    runtime => $params{runtime},
111
 
    rawdata => $params{rawdata},
112
 
    method => $params{method},
113
 
    blacklisted => 0,
114
 
    info => undef,
115
 
    extendedinfo => undef,
116
 
  };
117
 
  map { $self->{$_} = $params{$_} } grep /cpqRackServerBlade/, keys %params;
118
 
  $self->{cpqRackServerBladeDiagnosticString} ||= '';
119
 
  $self->{name} = $self->{cpqRackServerBladeRack}.
120
 
      ':'.$self->{cpqRackServerBladeChassis}.
121
 
      ':'.$self->{cpqRackServerBladeIndex};
122
 
  bless $self, $class;
123
 
  $self->init();
124
 
  return $self;
125
 
}
126
 
 
127
 
sub check {
128
 
  my $self = shift;
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});
143
 
    } 
144
 
  }
145
 
146
 
  
147
 
sub dump {
148
 
  my $self = shift;
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->{$_};
152
 
  }
153
 
  printf "\n";
154
 
}
155
 
 
156
 
 
157
 
1;