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

« back to all changes in this revision

Viewing changes to check_hpasm/check_hpasm-4.6.3/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem.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::CommonEnclosureSubsystem;
 
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
    common_enclosures => [],
 
15
    common_enclosure_temp_subsys => undef,
 
16
    common_enclosure_fan_subsys => undef,
 
17
    common_enclosure_fuse_subsys => undef,
 
18
    common_enclosure_manager_subsys => undef,
 
19
    common_enclosure_frus => [],
 
20
    blacklisted => 0,
 
21
    info => undef,
 
22
    extendedinfo => undef,
 
23
  };
 
24
  bless $self, $class;
 
25
  $self->init();
 
26
  return $self;
 
27
}
 
28
 
 
29
sub init {
 
30
  my $self = shift;
 
31
  # jeweils ein block fuer
 
32
  # enclosures, temps, fans, fuses
 
33
  # loop ueber oids und entspr. new
 
34
  my $oids = {
 
35
      cpqRackCommonEnclosureEntry => '1.3.6.1.4.1.232.22.2.3.1.1.1',
 
36
      cpqRackCommonEnclosureRack => '1.3.6.1.4.1.232.22.2.3.1.1.1.1',
 
37
      cpqRackCommonEnclosureIndex => '1.3.6.1.4.1.232.22.2.3.1.1.1.2',
 
38
      cpqRackCommonEnclosureModel => '1.3.6.1.4.1.232.22.2.3.1.1.1.3',
 
39
      cpqRackCommonEnclosureSparePartNumber => '1.3.6.1.4.1.232.22.2.3.1.1.1.6',
 
40
      cpqRackCommonEnclosureSerialNum => '1.3.6.1.4.1.232.22.2.3.1.1.1.7',
 
41
      cpqRackCommonEnclosureFWRev => '1.3.6.1.4.1.232.22.2.3.1.1.1.8',
 
42
      cpqRackCommonEnclosureName => '1.3.6.1.4.1.232.22.2.3.1.1.1.9',
 
43
      cpqRackCommonEnclosureCondition => '1.3.6.1.4.1.232.22.2.3.1.1.1.16',
 
44
      cpqRackCommonEnclosureHasServerBlades => '1.3.6.1.4.1.232.22.2.3.1.1.1.17',
 
45
      cpqRackCommonEnclosureHasPowerBlades => '1.3.6.1.4.1.232.22.2.3.1.1.1.18',
 
46
      cpqRackCommonEnclosureHasNetConnectors => '1.3.6.1.4.1.232.22.2.3.1.1.1.19',
 
47
      cpqRackCommonEnclosureHasTempSensors => '1.3.6.1.4.1.232.22.2.3.1.1.1.20',
 
48
      cpqRackCommonEnclosureHasFans => '1.3.6.1.4.1.232.22.2.3.1.1.1.21',
 
49
      cpqRackCommonEnclosureHasFuses => '1.3.6.1.4.1.232.22.2.3.1.1.1.22',
 
50
      cpqRackCommonEnclosureConditionValue => {
 
51
          1 => 'other',
 
52
          2 => 'ok',
 
53
          3 => 'degraded',
 
54
          4 => 'failed',
 
55
      },
 
56
      cpqRackCommonEnclosureHasServerBladesValue => {
 
57
          1 => 'false',
 
58
          2 => 'true',
 
59
      },
 
60
  };
 
61
  $oids->{cpqRackCommonEnclosureHasPowerBladesValue} =
 
62
    $oids->{cpqRackCommonEnclosureHasServerBladesValue};
 
63
  $oids->{cpqRackCommonEnclosureHasNetConnectorsValue} =
 
64
    $oids->{cpqRackCommonEnclosureHasServerBladesValue};
 
65
  $oids->{cpqRackCommonEnclosureHasTempSensorsValue} =
 
66
    $oids->{cpqRackCommonEnclosureHasServerBladesValue};
 
67
  $oids->{cpqRackCommonEnclosureHasFansValue} =
 
68
    $oids->{cpqRackCommonEnclosureHasServerBladesValue};
 
69
  $oids->{cpqRackCommonEnclosureHasServerBladesValue} =
 
70
    $oids->{cpqRackCommonEnclosureHasServerBladesValue};
 
71
  # INDEX { cpqRackCommonEnclosureRack cpqRackCommonEnclosureIndex }
 
72
  foreach ($self->get_entries($oids, 'cpqRackCommonEnclosureEntry')) {
 
73
    push(@{$self->{common_enclosures}},
 
74
        HP::BladeSystem::Component::CommonEnclosureSubsystem::CommonEnclosure->new(%{$_}));
 
75
  }
 
76
 
 
77
  $self->{common_enclosure_fan_subsys} = HP::BladeSystem::Component::CommonEnclosureSubsystem::FanSubsystem->new(
 
78
      rawdata => $self->{rawdata},
 
79
      method => $self->{method},
 
80
      runtime => $self->{runtime},
 
81
  );
 
82
  $self->{common_enclosure_temp_subsys} = HP::BladeSystem::Component::CommonEnclosureSubsystem::TempSubsystem->new(
 
83
      rawdata => $self->{rawdata},
 
84
      method => $self->{method},
 
85
      runtime => $self->{runtime},
 
86
  );
 
87
  $self->{common_enclosure_fuse_subsys} = HP::BladeSystem::Component::CommonEnclosureSubsystem::FuseSubsystem->new(
 
88
      rawdata => $self->{rawdata},
 
89
      method => $self->{method},
 
90
      runtime => $self->{runtime},
 
91
  );
 
92
  $self->{common_enclosure_manager_subsys} = HP::BladeSystem::Component::CommonEnclosureSubsystem::ManagerSubsystem->new(
 
93
      rawdata => $self->{rawdata},
 
94
      method => $self->{method},
 
95
      runtime => $self->{runtime},
 
96
  );
 
97
}
 
98
 
 
99
sub check {
 
100
  my $self = shift;
 
101
  foreach (@{$self->{common_enclosures}}) {
 
102
    $_->check();
 
103
  }
 
104
  $self->{common_enclosure_fan_subsys}->check();
 
105
  $self->{common_enclosure_temp_subsys}->check();
 
106
  $self->{common_enclosure_fuse_subsys}->check();
 
107
  $self->{common_enclosure_manager_subsys}->check();
 
108
}
 
109
 
 
110
sub dump {
 
111
  my $self = shift;
 
112
  foreach (@{$self->{common_enclosures}}) {
 
113
    $_->dump();
 
114
  }
 
115
  $self->{common_enclosure_fan_subsys}->dump();
 
116
  $self->{common_enclosure_temp_subsys}->dump();
 
117
  $self->{common_enclosure_fuse_subsys}->dump();
 
118
  $self->{common_enclosure_manager_subsys}->dump();
 
119
}
 
120
 
 
121
 
 
122
package HP::BladeSystem::Component::CommonEnclosureSubsystem::CommonEnclosure;
 
123
our @ISA = qw(HP::BladeSystem::Component::CommonEnclosureSubsystem);
 
124
 
 
125
use strict;
 
126
use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
 
127
 
 
128
sub new {
 
129
  my $class = shift; 
 
130
  my %params = @_;
 
131
  my $self = { 
 
132
    runtime => $params{runtime},
 
133
    rawdata => $params{rawdata},
 
134
    blacklisted => 0,
 
135
    info => undef, 
 
136
    extendedinfo => undef,
 
137
  };
 
138
  map { $self->{$_} = $params{$_} } grep /cpqRackCommonEnclosure/, keys %params;
 
139
  $self->{name} = $self->{cpqRackCommonEnclosureRack}.':'.$self->{cpqRackCommonEnclosureIndex};
 
140
  $self->{serfw} = sprintf "Ser: %s, FW: %s", $self->{cpqRackCommonEnclosureSerialNum},
 
141
      $self->{cpqRackCommonEnclosureFWRev};
 
142
  bless $self, $class;
 
143
  return $self;
 
144
}
 
145
 
 
146
 
 
147
sub check {
 
148
  my $self = shift;
 
149
  $self->blacklist('ce', $self->{cpqRackCommonEnclosureName});
 
150
  my $info = sprintf 'common enclosure %s condition is %s (%s)',
 
151
      $self->{cpqRackCommonEnclosureName}, $self->{cpqRackCommonEnclosureCondition}, $self->{serfw};
 
152
  $self->add_info($info);
 
153
  if ($self->{cpqRackCommonEnclosureCondition} eq 'failed') {
 
154
    $info .= sprintf " (SparePartNum %s)", $self->{cpqRackCommonEnclosureSparePartNumber};
 
155
    $self->add_message(CRITICAL, $info);
 
156
  } elsif ($self->{cpqRackCommonEnclosureCondition} eq 'degraded') {
 
157
    $info .= sprintf " (SparePartNum %s)", $self->{cpqRackCommonEnclosureSparePartNumber};
 
158
    $self->add_message(WARNING, $info);
 
159
  } 
 
160
}
 
161
 
 
162
sub dump {
 
163
  my $self = shift;
 
164
    printf "[COMMON_ENCLOSURE_%s]\n", $self->{cpqRackCommonEnclosureName};
 
165
  foreach (qw(cpqRackCommonEnclosureRack cpqRackCommonEnclosureIndex cpqRackCommonEnclosureModel
 
166
      cpqRackCommonEnclosureSerialNum cpqRackCommonEnclosureFWRev cpqRackCommonEnclosureFWRev
 
167
      cpqRackCommonEnclosureName
 
168
      cpqRackCommonEnclosureCondition cpqRackCommonEnclosureHasServerBlades 
 
169
      cpqRackCommonEnclosureHasPowerBlades cpqRackCommonEnclosureHasNetConnectors 
 
170
      cpqRackCommonEnclosureHasTempSensors cpqRackCommonEnclosureHasFans cpqRackCommonEnclosureHasFuses)) {
 
171
    printf "%s: %s\n", $_, $self->{$_};
 
172
  }
 
173
  printf "\n";
 
174
}
 
175
 
 
176
1;