sensu-plugin 0.3.0 → 1.0.0

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.
@@ -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