sensu-plugin 0.3.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a18d4d1ea86bbfe682e0659f26d4da91f130882e
4
+ data.tar.gz: 0aa638b240b441302ac016601320a063c7fca8cb
5
+ SHA512:
6
+ metadata.gz: 1c8b01c99bb54fb66a1560a98e5cdea279763b1c66b1a351e408a9cf642bd1eebe97f1ccddbbc0f3889ef25d13e3aca1e657d3dbbf1f6c769e7dd0c650a91dbd
7
+ data.tar.gz: 35ea2fcd499c24e31f24ae6a734aa9722b03cdb63361246e1162d026d7a892e611584abdc94fd2a454c4363845e13c0e1fcb656cc21da6f1f80f0e32d36aae2a
@@ -43,15 +43,33 @@ module Sensu
43
43
  end
44
44
  end
45
45
 
46
+ def self.disable_autorun
47
+ @@autorun = false
48
+ end
49
+
46
50
  at_exit do
47
- handler = @@autorun.new
48
- handler.read_event(STDIN)
49
- handler.filter
50
- handler.handle
51
+ if @@autorun
52
+ handler = @@autorun.new
53
+ handler.read_event(STDIN)
54
+ handler.filter
55
+ handler.handle
56
+ end
51
57
  end
52
58
 
53
59
  # Helpers and filters.
54
60
 
61
+ def event_summary(trim_at=100)
62
+ summary = @event['check']['notification'] || @event['check']['description']
63
+ if summary.nil?
64
+ source = @event['check']['source'] || @event['client']['name']
65
+ event_context = [source, @event['check']['name']].join('/')
66
+ output = @event['check']['output'].chomp
67
+ output = output.length > trim_at ? output[0..trim_at] + '...' : output
68
+ summary = [event_context, output].join(' : ')
69
+ end
70
+ summary
71
+ end
72
+
55
73
  def bail(msg)
56
74
  puts msg + ': ' + @event['client']['name'] + '/' + @event['check']['name']
57
75
  exit 0
@@ -74,9 +92,19 @@ module Sensu
74
92
  end
75
93
 
76
94
  def filter_repeated
77
- occurrences = @event['check']['occurrences'] || 1
78
- interval = @event['check']['interval'] || 30
79
- refresh = @event['check']['refresh'] || 1800
95
+ defaults = {
96
+ 'occurrences' => 1,
97
+ 'interval' => 30,
98
+ 'refresh' => 1800
99
+ }
100
+
101
+ if settings['sensu_plugin'].is_a?(Hash)
102
+ defaults.merge!(settings['sensu_plugin'])
103
+ end
104
+
105
+ occurrences = @event['check']['occurrences'] || defaults['occurrences']
106
+ interval = @event['check']['interval'] || defaults['interval']
107
+ refresh = @event['check']['refresh'] || defaults['refresh']
80
108
  if @event['occurrences'] < occurrences
81
109
  bail 'not enough occurrences'
82
110
  end
@@ -1,6 +1,6 @@
1
1
  module Sensu
2
2
  module Plugin
3
- VERSION = "0.3.0"
3
+ VERSION = "1.0.0"
4
4
  EXIT_CODES = {
5
5
  'OK' => 0,
6
6
  'WARNING' => 1,
@@ -1,5 +1,4 @@
1
- require 'rubygems'
2
- require 'minitest/autorun'
1
+ require 'test_helper'
3
2
 
4
3
  class TestCheckExternal < MiniTest::Unit::TestCase
5
4
  include SensuPluginTestHelper
@@ -1,5 +1,4 @@
1
- require 'rubygems'
2
- require 'minitest/autorun'
1
+ require 'test_helper'
3
2
  require 'json'
4
3
 
5
4
  class TestHandlerExternal < MiniTest::Unit::TestCase
@@ -1,5 +1,4 @@
1
- require 'rubygems'
2
- require 'minitest/autorun'
1
+ require 'test_helper'
3
2
 
4
3
  class TestMetricExternal < MiniTest::Unit::TestCase
5
4
  include SensuPluginTestHelper
@@ -1,6 +1,4 @@
1
- require 'rubygems'
2
- require 'minitest/autorun'
3
- require 'json'
1
+ require 'test_helper'
4
2
 
5
3
  class TestFilterExternal < MiniTest::Unit::TestCase
6
4
  include SensuPluginTestHelper
@@ -0,0 +1,39 @@
1
+ require 'test_helper'
2
+
3
+ class TestHandleHelpers < MiniTest::Unit::TestCase
4
+ include SensuPluginTestHelper
5
+
6
+ def setup
7
+ set_script 'external/handle-helpers'
8
+ end
9
+
10
+ def test_event_summary
11
+ event = {
12
+ 'client' => {
13
+ 'name' => 'test'
14
+ },
15
+ 'check' => {
16
+ 'name' => 'test',
17
+ 'output' => 'test',
18
+ 'status' => 0
19
+ },
20
+ 'occurrences' => 1,
21
+ 'action' => 'create'
22
+ }
23
+ output = run_script_with_input(JSON.generate(event))
24
+ assert_equal(0, $?.exitstatus)
25
+ assert_match("test/test : test\n", output)
26
+ event['check']['source'] = 'switch-x'
27
+ output = run_script_with_input(JSON.generate(event))
28
+ assert_equal(0, $?.exitstatus)
29
+ assert_match("switch-x/test : test\n", output)
30
+ event['check']['description'] = 'y is broken'
31
+ output = run_script_with_input(JSON.generate(event))
32
+ assert_equal(0, $?.exitstatus)
33
+ assert_match("y is broken\n", output)
34
+ event['check']['notification'] = 'z is broken'
35
+ output = run_script_with_input(JSON.generate(event))
36
+ assert_equal(0, $?.exitstatus)
37
+ assert_match("z is broken\n", output)
38
+ end
39
+ end
File without changes
metadata CHANGED
@@ -1,143 +1,123 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugin
3
- version: !ruby/object:Gem::Version
4
- hash: 19
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 3
9
- - 0
10
- version: 0.3.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Decklin Foster
14
8
  - Sean Porter
15
9
  autorequire:
16
10
  bindir: bin
17
11
  cert_chain: []
18
-
19
- date: 2014-05-02 00:00:00 -07:00
20
- default_executable:
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
12
+ date: 2014-09-29 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
23
15
  name: json
24
- prerelease: false
25
- requirement: &id001 !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
28
18
  - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 3
31
- segments:
32
- - 0
33
- version: "0"
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
34
21
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: mixlib-cli
38
22
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
42
25
  - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 19
45
- segments:
46
- - 1
47
- - 1
48
- - 0
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: mixlib-cli
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
49
34
  version: 1.1.0
50
35
  type: :runtime
51
- version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
53
- name: rake
54
36
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
56
- none: false
57
- requirements:
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
58
39
  - - ">="
59
- - !ruby/object:Gem::Version
60
- hash: 3
61
- segments:
62
- - 0
63
- version: "0"
40
+ - !ruby/object:Gem::Version
41
+ version: 1.1.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
64
49
  type: :development
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
67
- name: minitest
68
50
  prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
70
- none: false
71
- requirements:
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: minitest
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
72
60
  - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
76
- - 0
77
- version: "0"
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
78
63
  type: :development
79
- version_requirements: *id004
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
80
70
  description: Plugins and helper libraries for Sensu, a monitoring framework
81
- email:
71
+ email:
82
72
  - decklin@red-bean.com
83
73
  - portertech@gmail.com
84
74
  executables: []
85
-
86
75
  extensions: []
87
-
88
76
  extra_rdoc_files: []
89
-
90
- files:
77
+ files:
91
78
  - lib/sensu-handler.rb
79
+ - lib/sensu-plugin.rb
92
80
  - lib/sensu-plugin/check/cli.rb
93
81
  - lib/sensu-plugin/cli.rb
94
82
  - lib/sensu-plugin/metric/cli.rb
95
83
  - lib/sensu-plugin/utils.rb
96
- - lib/sensu-plugin.rb
97
84
  - test/external_check_test.rb
98
85
  - test/external_handler_argument_test.rb
99
86
  - test/external_handler_test.rb
100
87
  - test/external_metric_test.rb
101
88
  - test/handle_filter_test.rb
102
- - test/helper.rb
103
- has_rdoc: true
89
+ - test/handle_helper_test.rb
90
+ - test/test_helper.rb
104
91
  homepage: https://github.com/sonian/sensu-plugin
105
- licenses:
92
+ licenses:
106
93
  - MIT
94
+ metadata: {}
107
95
  post_install_message:
108
96
  rdoc_options: []
109
-
110
- require_paths:
97
+ require_paths:
111
98
  - lib
112
- required_ruby_version: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
99
+ required_ruby_version: !ruby/object:Gem::Requirement
100
+ requirements:
115
101
  - - ">="
116
- - !ruby/object:Gem::Version
117
- hash: 3
118
- segments:
119
- - 0
120
- version: "0"
121
- required_rubygems_version: !ruby/object:Gem::Requirement
122
- none: false
123
- requirements:
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ requirements:
124
106
  - - ">="
125
- - !ruby/object:Gem::Version
126
- hash: 3
127
- segments:
128
- - 0
129
- version: "0"
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
130
109
  requirements: []
131
-
132
110
  rubyforge_project:
133
- rubygems_version: 1.3.7
111
+ rubygems_version: 2.2.2
134
112
  signing_key:
135
- specification_version: 3
113
+ specification_version: 4
136
114
  summary: Sensu Plugins
137
- test_files:
138
- - test/external_check_test.rb
139
- - test/external_handler_argument_test.rb
140
- - test/external_handler_test.rb
115
+ test_files:
141
116
  - test/external_metric_test.rb
117
+ - test/handle_helper_test.rb
118
+ - test/external_handler_argument_test.rb
142
119
  - test/handle_filter_test.rb
143
- - test/helper.rb
120
+ - test/external_handler_test.rb
121
+ - test/external_check_test.rb
122
+ - test/test_helper.rb
123
+ has_rdoc: false