git.lirion.de

Of git, get, and gud

summaryrefslogtreecommitdiffstats
path: root/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/EventSubsystem/CLI.pm
blob: b75a54749113b65c5c36ac8fd490036cac7881a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package HP::Proliant::Component::EventSubsystem::CLI;
our @ISA = qw(HP::Proliant::Component::EventSubsystem);

use strict;
use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
use Time::Local;

sub new {
  my $class = shift;
  my %params = @_;
  my $self = {
    runtime => $params{runtime},
    rawdata => $params{rawdata},
    events => [],
    blacklisted => 0,
    info => undef,
    extendedinfo => undef,
  };
  bless $self, $class;
  $self->init(%params);
  return $self;
}


sub init {
  my $self = shift;
  my %params = @_;
  my %tmpevent = (
    runtime => $params{runtime},
  );
  my $inblock = 0;
  foreach (grep(/^iml/, split(/\n/, $self->{rawdata}))) {
    s/^iml\s*//g;
    if (/^Event:\s+(\d+)\s+[\w]+:\s+(\d+)\/(\d+)\/(\d+)\s+(\d+):(\d+)/) {
      # Event: 31 Added: 09/22/2011 05:11
      #         1         2  3    4  5  6
      $tmpevent{cpqHeEventLogEntryNumber} = $1;
      if ($4 == 0) {
        # Event: 29 Added: 00/00/0000 00:00
        $tmpevent{cpqHeEventLogUpdateTime} = 0;
      } else {
        eval {
          $tmpevent{cpqHeEventLogUpdateTime} = timelocal(0, $6, $5, $3, $2 - 1, $4);
        };
        if ($@) {
          # Event: 10 Added: 27/27/2027 27:27
          $tmpevent{cpqHeEventLogUpdateTime} = 0;
        }
      }
      $inblock = 1;
    } elsif (/^(\w+):\s+(.*?)\s+\-\s+(.*)/) {
      $tmpevent{cpqHeEventLogEntrySeverity} = $1;
      $tmpevent{cpqHeEventLogEntryClass} = $2;
      $tmpevent{cpqHeEventLogErrorDesc} = $3;
      if ($tmpevent{cpqHeEventLogErrorDesc} =~ /.*?:\s+(\d+)/) {
          $tmpevent{cpqHeEventLogEntryCode} = $1;
      } else {
          $tmpevent{cpqHeEventLogEntryCode} = 0;
      }
    } elsif (/^\s*$/) {
      if ($inblock) {
        $inblock = 0;
        push(@{$self->{events}},
            HP::Proliant::Component::EventSubsystem::Event->new(%tmpevent));
        %tmpevent = (
          runtime => $params{runtime},
        );
      }
    }
  }
  if ($inblock) {
    push(@{$self->{events}},
        HP::Proliant::Component::EventSubsystem::Event->new(%tmpevent));
  }
}

1;