nagios_reporter 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/nagios_reporter.rb +87 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1eeb1a0f003b94a8bc9f3bde02f958c78aa3c7d8
4
+ data.tar.gz: 1a1bda22d406be35356d545f9d835e16c9811600
5
+ SHA512:
6
+ metadata.gz: dae9863bb5ef09ef5b9f05786e02645c55aea9cac9916e98052cca3c460c6dbae78ca71fe3171824226ff25108450023c3f0f249f6b9bee8a702eff4fda5e06b
7
+ data.tar.gz: cc8f005b5fe7f7eb97adae8439508f548f07f432259abcd420243c0231ef1a5a1cff884ea108d88c5d3405c4d390f469e5a555245d120ccbce0bf6cf1af21ae1
@@ -0,0 +1,87 @@
1
+ class Reporter
2
+ attr_reader :state
3
+
4
+ def initialize
5
+ # 2d array of reports implemented with a hash
6
+ @reports = Hash.new
7
+ @type = :all
8
+ @silent_exit = false
9
+ @state = -1
10
+ end
11
+ def set_type(type=:all)
12
+ if type == :all or type == :worst_only
13
+ @type = type
14
+ else
15
+ unknown!("Invalid reporter type, #{type}, use :all or :worst_only")
16
+ end
17
+ end
18
+ def silence
19
+ @silent_exit = true
20
+ end
21
+ def silence!
22
+ @silent_exit = true
23
+ final_report
24
+ end
25
+ def ok(message)
26
+ report(0,message)
27
+ end
28
+ def ok!(message)
29
+ report!(0,message)
30
+ end
31
+ def warning(message)
32
+ report(1,message)
33
+ end
34
+ def warning!(message)
35
+ report!(1,message)
36
+ end
37
+ def critical(message)
38
+ report(2,message)
39
+ end
40
+ def critical!(message)
41
+ report!(2,message)
42
+ end
43
+ def unknown(message)
44
+ report(3,message)
45
+ end
46
+ def unknown!(message)
47
+ report!(3,message)
48
+ end
49
+ def state_header(state)
50
+ message_header = {0 => "OK: ", 1 => "WARNING: ", 2 => "CRITICAL: ", 3 => "UNKNOWN: "}
51
+ message_header[state]
52
+ end
53
+ def final_report
54
+ message = ""
55
+ if @type == :all
56
+ state_spacer = ""
57
+ @reports.keys.sort.reverse.each do |state|
58
+ message << state_spacer
59
+ message << state_header(state)
60
+ message << @reports[state].join(", ")
61
+ state_spacer = ". "
62
+ end
63
+ else
64
+ message << state_header(state)
65
+ message << @reports[@state].join(", ")
66
+ end
67
+
68
+ @state = 3 if @state == -1
69
+ message = "Check gathered no information" if message == ""
70
+
71
+ exit @state if @silent_exit
72
+ report!(@state,message,true)
73
+ end
74
+ def report!(state,message,no_state_header=false)
75
+ # report with passed state and message immediately then exit
76
+ print state_header(state) unless no_state_header
77
+ puts message
78
+ exit state
79
+ end
80
+ def report(state,message)
81
+ # update global state if new state is higher
82
+ @state = @state > state ? @state : state
83
+ # add to list of reports of given state
84
+ @reports[state] ||= []
85
+ @reports[state].push(message)
86
+ end
87
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nagios_reporter
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Dave Watson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-04-23 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A helper gem for nagios style reporting
14
+ email: dave@brightbox.co.uk
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/nagios_reporter.rb
20
+ homepage: http://rubygems.org/gems/nagios_reporter
21
+ licenses:
22
+ - GPLV3
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.4.5.5
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: nagios_reporter
44
+ test_files: []