sensu-plugin 0.1.4 → 0.1.5

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.
@@ -1,16 +1,11 @@
1
1
  require 'net/http'
2
2
  require 'json'
3
+ require 'sensu-plugin/utils'
3
4
 
4
5
  module Sensu
5
6
 
6
- NET_HTTP_REQ_CLASS = {
7
- 'GET' => Net::HTTP::Get,
8
- 'POST' => Net::HTTP::Post,
9
- 'DELETE' => Net::HTTP::Delete,
10
- 'PUT' => Net::HTTP::Put
11
- }
12
-
13
7
  class Handler
8
+ include Sensu::Plugin::Utils
14
9
 
15
10
  # Implementing classes should override this.
16
11
 
@@ -39,34 +34,6 @@ module Sensu
39
34
  end
40
35
  end
41
36
 
42
- def config_files
43
- if ENV['SENSU_CONFIG_FILES']
44
- ENV['SENSU_CONFIG_FILES'].split(':')
45
- else
46
- ['/etc/sensu/config.json'] + Dir['/etc/sensu/conf.d/*.json']
47
- end
48
- end
49
-
50
- def load_config(filename)
51
- JSON.parse(File.open(filename, 'r').read) rescue Hash.new
52
- end
53
-
54
- def settings
55
- @settings ||= config_files.map {|f| load_config(f) }.reduce {|a, b| a.deep_merge(b) }
56
- end
57
-
58
- def read_event(file)
59
- begin
60
- @event = ::JSON.parse(file.read)
61
- @event['occurrences'] ||= 1
62
- @event['check'] ||= Hash.new
63
- @event['client'] ||= Hash.new
64
- rescue => error
65
- puts 'error reading event: ' + error.message
66
- exit 0
67
- end
68
- end
69
-
70
37
  at_exit do
71
38
  handler = @@autorun.new
72
39
  handler.read_event(STDIN)
@@ -83,7 +50,7 @@ module Sensu
83
50
 
84
51
  def api_request(method, path, &blk)
85
52
  http = Net::HTTP.new(settings['api']['host'], settings['api']['port'])
86
- req = NET_HTTP_REQ_CLASS[method.to_s.upcase].new(path)
53
+ req = net_http_req_class(method).new(path)
87
54
  if settings['api']['user'] && settings['api']['password']
88
55
  req.basic_auth(settings['api']['user'], settings['api']['password'])
89
56
  end
@@ -159,20 +126,3 @@ module Sensu
159
126
  end
160
127
 
161
128
  end
162
-
163
- # Monkey Patching.
164
-
165
- class Array
166
- def deep_merge(other_array, &merger)
167
- concat(other_array).uniq
168
- end
169
- end
170
-
171
- class Hash
172
- def deep_merge(other_hash, &merger)
173
- merger ||= proc do |key, old_value, new_value|
174
- old_value.deep_merge(new_value, &merger) rescue new_value
175
- end
176
- merge(other_hash, &merger)
177
- end
178
- end
@@ -1,6 +1,6 @@
1
1
  module Sensu
2
2
  module Plugin
3
- VERSION = "0.1.4"
3
+ VERSION = "0.1.5"
4
4
  EXIT_CODES = {
5
5
  'OK' => 0,
6
6
  'WARNING' => 1,
@@ -0,0 +1,64 @@
1
+ module Sensu
2
+ module Plugin
3
+ module Utils
4
+
5
+ def config_files
6
+ if ENV['SENSU_CONFIG_FILES']
7
+ ENV['SENSU_CONFIG_FILES'].split(':')
8
+ else
9
+ ['/etc/sensu/config.json'] + Dir['/etc/sensu/conf.d/**/*.json']
10
+ end
11
+ end
12
+
13
+ def load_config(filename)
14
+ JSON.parse(File.open(filename, 'r').read) rescue Hash.new
15
+ end
16
+
17
+ def settings
18
+ @settings ||= config_files.map {|f| load_config(f) }.reduce {|a, b| a.deep_merge(b) }
19
+ end
20
+
21
+ def read_event(file)
22
+ begin
23
+ @event = ::JSON.parse(file.read)
24
+ @event['occurrences'] ||= 1
25
+ @event['check'] ||= Hash.new
26
+ @event['client'] ||= Hash.new
27
+ rescue => e
28
+ puts 'error reading event: ' + e.message
29
+ exit 0
30
+ end
31
+ end
32
+
33
+ def net_http_req_class(method)
34
+ case method.to_s.upcase
35
+ when 'GET'
36
+ Net::HTTP::Get
37
+ when 'POST'
38
+ Net::HTTP::Post
39
+ when 'DELETE'
40
+ Net::HTTP::Delete
41
+ when 'PUT'
42
+ Net::HTTP::Put
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+
49
+ # Monkey Patching.
50
+
51
+ class Array
52
+ def deep_merge(other_array, &merger)
53
+ concat(other_array).uniq
54
+ end
55
+ end
56
+
57
+ class Hash
58
+ def deep_merge(other_hash, &merger)
59
+ merger ||= proc do |key, old_value, new_value|
60
+ old_value.deep_merge(new_value, &merger) rescue new_value
61
+ end
62
+ merge(other_hash, &merger)
63
+ end
64
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugin
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 4
10
- version: 0.1.4
9
+ - 5
10
+ version: 0.1.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Decklin Foster
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2012-07-09 00:00:00 -07:00
19
+ date: 2012-11-14 00:00:00 -08:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -61,14 +61,15 @@ extra_rdoc_files: []
61
61
 
62
62
  files:
63
63
  - lib/sensu-handler.rb
64
+ - lib/sensu-plugin.rb
64
65
  - lib/sensu-plugin/check/cli.rb
65
66
  - lib/sensu-plugin/cli.rb
66
67
  - lib/sensu-plugin/metric/cli.rb
67
- - lib/sensu-plugin.rb
68
+ - lib/sensu-plugin/utils.rb
68
69
  - test/external_check_test.rb
69
70
  - test/external_handler_test.rb
70
- - test/external_metric_test.rb
71
71
  - test/handle_filter_test.rb
72
+ - test/external_metric_test.rb
72
73
  - test/helper.rb
73
74
  has_rdoc: true
74
75
  homepage: https://github.com/sonian/sensu-plugin
@@ -107,6 +108,6 @@ summary: Sensu Plugins
107
108
  test_files:
108
109
  - test/external_check_test.rb
109
110
  - test/external_handler_test.rb
110
- - test/external_metric_test.rb
111
111
  - test/handle_filter_test.rb
112
+ - test/external_metric_test.rb
112
113
  - test/helper.rb