sensu-extensions 0.0.2 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sensu/extensions/loader.rb +30 -2
- data/lib/sensu/extensions/mutators/json.rb +20 -0
- data/lib/sensu/extensions/mutators/ruby_hash.rb +19 -0
- data/sensu-extensions.gemspec +2 -1
- data/spec/assets/extensions/error.rb +2 -2
- data/spec/assets/extensions/mock_check.rb +17 -0
- data/spec/assets/extensions/test.rb +2 -2
- data/spec/extensions_spec.rb +6 -2
- data/spec/loader_spec.rb +21 -3
- data/spec/mutators/json_spec.rb +24 -0
- data/spec/mutators/ruby_hash_spec.rb +24 -0
- metadata +24 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a70c9420e9ef4c2dab2a6cf6779ee760e0c5a0ef
|
4
|
+
data.tar.gz: 0321f2582670a20f127d149b769c1f8e7397a2c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7cbdd74714cf3278ba63688c574e4b5de7797a402ff7b178dc68c9e303a9c2253041573f8a79a857be10e1fa5c86a62fe4316c6dceac26b4894e93cadd197de6
|
7
|
+
data.tar.gz: d0799591f7564b4059604201ad14807c78c7370e7e319d262e4034663ff3a82fb50d91adeec8046b9efe049baa9b658b68462f4ccafc74fc588e5a87cd7d0c1d
|
@@ -1,4 +1,6 @@
|
|
1
1
|
require "sensu/extension"
|
2
|
+
require "sensu/extensions/mutators/json"
|
3
|
+
require "sensu/extensions/mutators/ruby_hash"
|
2
4
|
require "sensu/extensions/mutators/only_check_output"
|
3
5
|
require "sensu/extensions/handlers/debug"
|
4
6
|
|
@@ -84,8 +86,11 @@ module Sensu
|
|
84
86
|
end
|
85
87
|
|
86
88
|
# Load instances of the loaded extensions.
|
87
|
-
|
88
|
-
|
89
|
+
#
|
90
|
+
# @param [String] sensu service to load extensions for.
|
91
|
+
def load_instances(service=nil)
|
92
|
+
service ||= sensu_service_name
|
93
|
+
categories_to_load(service).each do |category|
|
89
94
|
extension_type = category.to_s.chop
|
90
95
|
Extension.const_get(extension_type.capitalize).descendants.each do |klass|
|
91
96
|
extension = klass.new
|
@@ -120,6 +125,29 @@ module Sensu
|
|
120
125
|
@extensions[category].has_key?(name)
|
121
126
|
end
|
122
127
|
|
128
|
+
# Retrieve Sensu service name.
|
129
|
+
#
|
130
|
+
# @return [String] service name.
|
131
|
+
def sensu_service_name
|
132
|
+
File.basename($0).split("-").last
|
133
|
+
end
|
134
|
+
|
135
|
+
# Determine which extension categories to load for the given
|
136
|
+
# sensu service.
|
137
|
+
#
|
138
|
+
# @param [String] sensu service to load extensions for.
|
139
|
+
# @return [Array] extension categories.
|
140
|
+
def categories_to_load(service)
|
141
|
+
case service
|
142
|
+
when "client"
|
143
|
+
[:checks]
|
144
|
+
when "server"
|
145
|
+
Extension::CATEGORIES.reject { |category| category == :checks }
|
146
|
+
else
|
147
|
+
Extension::CATEGORIES
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
123
151
|
# Record a warning.
|
124
152
|
#
|
125
153
|
# @param message [String] warning message.
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "sensu/extension"
|
2
|
+
require "multi_json"
|
3
|
+
|
4
|
+
module Sensu
|
5
|
+
module Extension
|
6
|
+
class Json < Mutator
|
7
|
+
def name
|
8
|
+
"json"
|
9
|
+
end
|
10
|
+
|
11
|
+
def description
|
12
|
+
"returns JSON formatted event data"
|
13
|
+
end
|
14
|
+
|
15
|
+
def run(event)
|
16
|
+
yield MultiJson.dump(event), 0
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require "sensu/extension"
|
2
|
+
|
3
|
+
module Sensu
|
4
|
+
module Extension
|
5
|
+
class RubyHash < Mutator
|
6
|
+
def name
|
7
|
+
"ruby_hash"
|
8
|
+
end
|
9
|
+
|
10
|
+
def description
|
11
|
+
"returns ruby hash event data"
|
12
|
+
end
|
13
|
+
|
14
|
+
def run(event)
|
15
|
+
yield event, 0
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/sensu-extensions.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "sensu-extensions"
|
5
|
-
spec.version = "0.0.
|
5
|
+
spec.version = "0.0.4"
|
6
6
|
spec.authors = ["Sean Porter"]
|
7
7
|
spec.email = ["portertech@gmail.com"]
|
8
8
|
spec.summary = "The Sensu extension loader library"
|
@@ -17,6 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
|
18
18
|
spec.add_dependency "sensu-em"
|
19
19
|
spec.add_dependency "sensu-extension"
|
20
|
+
spec.add_dependency "multi_json"
|
20
21
|
|
21
22
|
spec.add_development_dependency "bundler", "~> 1.6"
|
22
23
|
spec.add_development_dependency "rake"
|
data/spec/extensions_spec.rb
CHANGED
@@ -28,18 +28,22 @@ describe "Sensu::Extensions" do
|
|
28
28
|
|
29
29
|
it "can load extensions from a directory" do
|
30
30
|
extensions = Sensu::Extensions.load(:extension_dir => @extension_dir)
|
31
|
-
extensions.loaded_files.size.should eq(
|
31
|
+
extensions.loaded_files.size.should eq(2)
|
32
32
|
extensions.handler_exists?("test").should be_true
|
33
|
+
extensions.check_exists?("mock_check").should be_true
|
33
34
|
end
|
34
35
|
|
35
36
|
it "can load extensions from one or more directories" do
|
36
37
|
extensions = Sensu::Extensions.load(:extension_dirs => [@extension_dir])
|
37
|
-
extensions.loaded_files.size.should eq(
|
38
|
+
extensions.loaded_files.size.should eq(2)
|
38
39
|
extensions.handler_exists?("test").should be_true
|
40
|
+
extensions.check_exists?("mock_check").should be_true
|
39
41
|
end
|
40
42
|
|
41
43
|
it "can load the built-in extensions" do
|
42
44
|
extensions = Sensu::Extensions.load
|
45
|
+
extensions.mutator_exists?("json").should be_true
|
46
|
+
extensions.mutator_exists?("ruby_hash").should be_true
|
43
47
|
extensions.mutator_exists?("only_check_output").should be_true
|
44
48
|
extensions.handler_exists?("debug").should be_true
|
45
49
|
end
|
data/spec/loader_spec.rb
CHANGED
@@ -14,7 +14,7 @@ describe "Sensu::Extensions::Loader" do
|
|
14
14
|
it "can provide the extensions loader API" do
|
15
15
|
@loader.should respond_to(:load_file, :load_directory, :load_instances,
|
16
16
|
:warnings, :loaded_files, :[], :all,
|
17
|
-
:
|
17
|
+
:bridges, :checks, :mutators, :handlers)
|
18
18
|
end
|
19
19
|
|
20
20
|
it "can load an extension from a file" do
|
@@ -41,10 +41,12 @@ describe "Sensu::Extensions::Loader" do
|
|
41
41
|
|
42
42
|
it "can load extensions from a directory" do
|
43
43
|
@loader.load_directory(@extension_dir)
|
44
|
-
@loader.warnings.size.should eq(
|
45
|
-
@loader.loaded_files.size.should eq(
|
44
|
+
@loader.warnings.size.should eq(6)
|
45
|
+
@loader.loaded_files.size.should eq(2)
|
46
46
|
extension = Sensu::Extension::Test.new
|
47
47
|
extension.should respond_to(:name, :description, :definition, :safe_run, :stop, :has_key?, :[])
|
48
|
+
extension = Sensu::Extension::MockCheck.new
|
49
|
+
extension.should respond_to(:name, :description, :definition, :safe_run, :stop, :has_key?, :[])
|
48
50
|
end
|
49
51
|
|
50
52
|
it "can attempt to load extensions from a nonexistent directory" do
|
@@ -61,6 +63,8 @@ describe "Sensu::Extensions::Loader" do
|
|
61
63
|
extension.should respond_to(:name, :description, :definition, :safe_run, :stop, :has_key?, :[])
|
62
64
|
@loader.handlers.should include(extension.definition)
|
63
65
|
@loader.all.should include(extension)
|
66
|
+
@loader.mutator_exists?("json").should be_true
|
67
|
+
@loader.mutator_exists?("ruby_hash").should be_true
|
64
68
|
@loader.mutator_exists?("only_check_output").should be_true
|
65
69
|
end
|
66
70
|
|
@@ -76,4 +80,18 @@ describe "Sensu::Extensions::Loader" do
|
|
76
80
|
@loader.handler_exists?("debug").should be_true
|
77
81
|
@loader.mutator_exists?("only_check_output").should be_true
|
78
82
|
end
|
83
|
+
|
84
|
+
it "can load specific extension categories for a sensu client" do
|
85
|
+
@loader.load_instances("client")
|
86
|
+
@loader.handler_exists?("debug").should be_false
|
87
|
+
@loader.mutator_exists?("only_check_output").should be_false
|
88
|
+
@loader.check_exists?("mock_check").should be_true
|
89
|
+
end
|
90
|
+
|
91
|
+
it "can load specific extension categories for a sensu server" do
|
92
|
+
@loader.load_instances("server")
|
93
|
+
@loader.handler_exists?("debug").should be_true
|
94
|
+
@loader.mutator_exists?("only_check_output").should be_true
|
95
|
+
@loader.check_exists?("mock_check").should be_false
|
96
|
+
end
|
79
97
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "helpers")
|
2
|
+
require "sensu/extensions/mutators/json"
|
3
|
+
|
4
|
+
describe "Sensu::Extension::Json" do
|
5
|
+
include Helpers
|
6
|
+
|
7
|
+
before do
|
8
|
+
@extension = Sensu::Extension::Json.new
|
9
|
+
end
|
10
|
+
|
11
|
+
it "can run, returning JSON event data" do
|
12
|
+
event = {
|
13
|
+
:client => {},
|
14
|
+
:check => {
|
15
|
+
:output => "foo",
|
16
|
+
:status => 0
|
17
|
+
}
|
18
|
+
}
|
19
|
+
@extension.safe_run(event) do |output, status|
|
20
|
+
output.should eq(MultiJson.dump(event))
|
21
|
+
status.should eq(0)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "helpers")
|
2
|
+
require "sensu/extensions/mutators/ruby_hash"
|
3
|
+
|
4
|
+
describe "Sensu::Extension::RubyHash" do
|
5
|
+
include Helpers
|
6
|
+
|
7
|
+
before do
|
8
|
+
@extension = Sensu::Extension::RubyHash.new
|
9
|
+
end
|
10
|
+
|
11
|
+
it "can run, returning event data as a ruby hash" do
|
12
|
+
event = {
|
13
|
+
:client => {},
|
14
|
+
:check => {
|
15
|
+
:output => "foo",
|
16
|
+
:status => 0
|
17
|
+
}
|
18
|
+
}
|
19
|
+
@extension.safe_run(event) do |output, status|
|
20
|
+
output.should eq(event)
|
21
|
+
status.should eq(0)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Porter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-em
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: multi_json
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,15 +124,20 @@ files:
|
|
110
124
|
- lib/sensu/extensions.rb
|
111
125
|
- lib/sensu/extensions/handlers/debug.rb
|
112
126
|
- lib/sensu/extensions/loader.rb
|
127
|
+
- lib/sensu/extensions/mutators/json.rb
|
113
128
|
- lib/sensu/extensions/mutators/only_check_output.rb
|
129
|
+
- lib/sensu/extensions/mutators/ruby_hash.rb
|
114
130
|
- sensu-extensions.gemspec
|
115
131
|
- spec/assets/extensions/error.rb
|
132
|
+
- spec/assets/extensions/mock_check.rb
|
116
133
|
- spec/assets/extensions/test.rb
|
117
134
|
- spec/extensions_spec.rb
|
118
135
|
- spec/handlers/debug_spec.rb
|
119
136
|
- spec/helpers.rb
|
120
137
|
- spec/loader_spec.rb
|
138
|
+
- spec/mutators/json_spec.rb
|
121
139
|
- spec/mutators/only_check_output_spec.rb
|
140
|
+
- spec/mutators/ruby_hash_spec.rb
|
122
141
|
homepage: https://github.com/sensu/sensu-extensions
|
123
142
|
licenses:
|
124
143
|
- MIT
|
@@ -145,9 +164,12 @@ specification_version: 4
|
|
145
164
|
summary: The Sensu extension loader library
|
146
165
|
test_files:
|
147
166
|
- spec/assets/extensions/error.rb
|
167
|
+
- spec/assets/extensions/mock_check.rb
|
148
168
|
- spec/assets/extensions/test.rb
|
149
169
|
- spec/extensions_spec.rb
|
150
170
|
- spec/handlers/debug_spec.rb
|
151
171
|
- spec/helpers.rb
|
152
172
|
- spec/loader_spec.rb
|
173
|
+
- spec/mutators/json_spec.rb
|
153
174
|
- spec/mutators/only_check_output_spec.rb
|
175
|
+
- spec/mutators/ruby_hash_spec.rb
|