nagi 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/NEWS CHANGED
@@ -1,3 +1,6 @@
1
+ 0.2.3: 2013-02-19
2
+ - Added fallback option
3
+
1
4
  0.2.2: 2012-06-26
2
5
  - Fixed quote escaping in Utility::execute(). Again.
3
6
 
data/README.md CHANGED
@@ -181,6 +181,9 @@ These describe the program, and are usually given first, if necessary.
181
181
  returning. *type* can be either `:severe` or `:all` - `:severe` will
182
182
  return the last, most severe status, and `:all` will use the most severe
183
183
  status but join all the status messages together into one.
184
+ * `fallback` *status*, *message*: a default status to return if the check
185
+ doesn't explicitly return one. *status* can be `:ok`, `:warning`, `:critical`,
186
+ or `:unknown`.
184
187
 
185
188
  ### Command-line arguments
186
189
 
data/lib/nagi/dsl.rb CHANGED
@@ -50,6 +50,16 @@ module Nagi
50
50
  return Nagi::Utility.execute(command)
51
51
  end
52
52
 
53
+ def fallback(status, message)
54
+ @plugin.fallback = case status
55
+ when :ok then Nagi::Status::OK.new(message)
56
+ when :warning then Nagi::Status::Warning.new(message)
57
+ when :critical then Nagi::Status::Critical.new(message)
58
+ when :unknown then Nagi::Status::Unknown.new(message)
59
+ else raise "Unknown fallback status #{status}"
60
+ end
61
+ end
62
+
53
63
  def name(name)
54
64
  @plugin.name = name
55
65
  end
data/lib/nagi/plugin.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Nagi
2
2
  class Plugin
3
- attr_accessor :name, :optionparser, :prefix, :version
3
+ attr_accessor :fallback, :name, :optionparser, :prefix, :version
4
4
 
5
5
  def initialize
6
6
  @optionparser = Nagi::OptionParser.new
@@ -22,8 +22,8 @@ module Nagi
22
22
  rescue StandardError => e
23
23
  status = Nagi::Status::Unknown.new(e.message)
24
24
  end
25
- if not status.is_a?Nagi::Status::Status
26
- status = Nagi::Status::Unknown.new('Check did not provide a status')
25
+ unless status.is_a?Nagi::Status::Status
26
+ status = @fallback || Nagi::Status::Unknown.new('Check did not provide a status')
27
27
  end
28
28
  return status
29
29
  end
data/lib/nagi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Nagi
2
- VERSION = '0.2.2'
2
+ VERSION = '0.2.3'
3
3
  end
@@ -120,6 +120,18 @@ describe Nagi::DSL do
120
120
  end
121
121
  end
122
122
 
123
+ describe '.fallback' do
124
+ it 'sets plugin fallback' do
125
+ @dsl.fallback(:ok, 'Fallback')
126
+ @dsl.plugin.fallback.class.should eq Nagi::Status::OK
127
+ @dsl.plugin.fallback.message.should eq 'Fallback'
128
+ end
129
+
130
+ it 'raises exception on unknown status' do
131
+ lambda{ @dsl.fallback(:invalid, 'Invalid') }.should raise_error
132
+ end
133
+ end
134
+
123
135
  describe '.name' do
124
136
  it 'sets plugin name' do
125
137
  @dsl.name('name')
@@ -5,6 +5,13 @@ describe Nagi::Plugin do
5
5
  @plugin = Nagi::Plugin.new
6
6
  end
7
7
 
8
+ describe '#fallback' do
9
+ it 'sets fallback' do
10
+ @plugin.fallback = 'test'
11
+ @plugin.fallback.should eq 'test'
12
+ end
13
+ end
14
+
8
15
  describe '#optionparser' do
9
16
  it 'contains OptionParser' do
10
17
  @plugin.optionparser.class.should eq Nagi::OptionParser
@@ -70,6 +77,25 @@ describe Nagi::Plugin do
70
77
  @plugin.run([]).class.should eq Nagi::Status::OK
71
78
  end
72
79
 
80
+ it 'returns check status even when fallback is set' do
81
+ @plugin.fallback = Nagi::Status::Unknown.new('Fallback')
82
+ class << @plugin
83
+ def check(options)
84
+ return Nagi::Status::OK.new('ok')
85
+ end
86
+ end
87
+ @plugin.run([]).class.should eq Nagi::Status::OK
88
+ end
89
+
90
+ it 'returns fallback status if set and no other status' do
91
+ @plugin.fallback = Nagi::Status::OK.new('Fallback')
92
+ class << @plugin
93
+ def check(options)
94
+ end
95
+ end
96
+ @plugin.run([]).should eq @plugin.fallback
97
+ end
98
+
73
99
  it 'returns unknown status on check exception' do
74
100
  class << @plugin
75
101
  def check(options)
@@ -79,6 +105,14 @@ describe Nagi::Plugin do
79
105
  @plugin.run([]).class.should eq Nagi::Status::Unknown
80
106
  end
81
107
 
108
+ it 'returns unknown status if no status' do
109
+ class << @plugin
110
+ def check(options)
111
+ end
112
+ end
113
+ @plugin.run([]).class.should eq Nagi::Status::Unknown
114
+ end
115
+
82
116
  it 'doesnt catch errors from optionparser' do
83
117
  lambda { @plugin.run(['--invalid']) }.should raise_error ArgumentError
84
118
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nagi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-26 00:00:00.000000000Z
12
+ date: 2013-02-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70365699752920 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70365699752920
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rspec
27
- requirement: &70365699751780 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,7 +37,12 @@ dependencies:
32
37
  version: '0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70365699751780
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  description: A DSL for writing Nagios plugins
37
47
  email:
38
48
  - erik@bengler.no
@@ -71,15 +81,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
71
81
  - - ! '>='
72
82
  - !ruby/object:Gem::Version
73
83
  version: '0'
84
+ segments:
85
+ - 0
86
+ hash: -1119432202314492190
74
87
  required_rubygems_version: !ruby/object:Gem::Requirement
75
88
  none: false
76
89
  requirements:
77
90
  - - ! '>='
78
91
  - !ruby/object:Gem::Version
79
92
  version: '0'
93
+ segments:
94
+ - 0
95
+ hash: -1119432202314492190
80
96
  requirements: []
81
97
  rubyforge_project:
82
- rubygems_version: 1.8.10
98
+ rubygems_version: 1.8.24
83
99
  signing_key:
84
100
  specification_version: 3
85
101
  summary: A DSL for writing Nagios plugins