sensu 0.22.2 → 0.23.0.beta
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +40 -0
- data/MIT-LICENSE.txt +1 -1
- data/lib/sensu/api/process.rb +69 -65
- data/lib/sensu/cli.rb +3 -0
- data/lib/sensu/client/process.rb +9 -44
- data/lib/sensu/client/socket.rb +4 -4
- data/lib/sensu/constants.rb +1 -1
- data/lib/sensu/daemon.rb +69 -40
- data/lib/sensu/server/filter.rb +63 -24
- data/lib/sensu/server/mutate.rb +1 -1
- data/lib/sensu/server/process.rb +68 -54
- data/lib/sensu/server/sandbox.rb +4 -4
- data/lib/sensu/utilities.rb +40 -4
- data/sensu.gemspec +7 -9
- metadata +21 -36
- data/lib/sensu/redis.rb +0 -25
data/lib/sensu/server/sandbox.rb
CHANGED
@@ -2,16 +2,16 @@ module Sensu
|
|
2
2
|
module Server
|
3
3
|
module Sandbox
|
4
4
|
# Evaluate a Ruby expression within the context of a simple
|
5
|
-
# "sandbox", a Proc in a module method.
|
6
|
-
#
|
7
|
-
# single value is provided to the
|
5
|
+
# "sandbox", a Proc in a module method. As of Ruby 2.3.0,
|
6
|
+
# `$SAFE` no longer supports levels > 1, so its use has been
|
7
|
+
# removed from this method. A single value is provided to the
|
8
|
+
# "sandbox".
|
8
9
|
#
|
9
10
|
# @param expression [String] to be evaluated.
|
10
11
|
# @param value [Object] to provide the "sandbox" with.
|
11
12
|
# @return [Object]
|
12
13
|
def self.eval(expression, value=nil)
|
13
14
|
result = Proc.new do
|
14
|
-
$SAFE = (RUBY_VERSION < "2.1.0" ? 4 : 3)
|
15
15
|
Kernel.eval(expression)
|
16
16
|
end
|
17
17
|
result.call
|
data/lib/sensu/utilities.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require "uuidtools"
|
1
|
+
require "securerandom"
|
4
2
|
|
5
3
|
module Sensu
|
6
4
|
module Utilities
|
@@ -50,7 +48,7 @@ module Sensu
|
|
50
48
|
#
|
51
49
|
# @return [String] random UUID.
|
52
50
|
def random_uuid
|
53
|
-
|
51
|
+
::SecureRandom.uuid
|
54
52
|
end
|
55
53
|
|
56
54
|
# Remove sensitive information from a hash (eg. passwords). By
|
@@ -82,5 +80,43 @@ module Sensu
|
|
82
80
|
end
|
83
81
|
hash
|
84
82
|
end
|
83
|
+
|
84
|
+
# Traverse a hash for an attribute value, with a fallback default
|
85
|
+
# value if nil.
|
86
|
+
#
|
87
|
+
# @param tree [Hash] to traverse.
|
88
|
+
# @param path [Array] of attribute keys.
|
89
|
+
# @param default [Object] value if attribute value is nil.
|
90
|
+
# @return [Object] attribute or fallback default value.
|
91
|
+
def find_attribute_value(tree, path, default)
|
92
|
+
attribute = tree[path.shift]
|
93
|
+
if attribute.is_a?(Hash)
|
94
|
+
find_attribute_value(attribute, path, default)
|
95
|
+
else
|
96
|
+
attribute.nil? ? default : attribute
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# Substitute dot notation tokens (eg. :::db.name|production:::)
|
101
|
+
# with the associated definition attribute value. Tokens can
|
102
|
+
# provide a fallback default value, following a pipe.
|
103
|
+
#
|
104
|
+
# @param tokens [String]
|
105
|
+
# @param attributes [Hash]
|
106
|
+
# @return [Array] containing the string with tokens substituted
|
107
|
+
# and an array of unmatched tokens.
|
108
|
+
def substitute_tokens(tokens, attributes)
|
109
|
+
unmatched_tokens = []
|
110
|
+
substituted = tokens.gsub(/:::([^:].*?):::/) do
|
111
|
+
token, default = $1.to_s.split("|", -1)
|
112
|
+
path = token.split(".").map(&:to_sym)
|
113
|
+
matched = find_attribute_value(attributes, path, default)
|
114
|
+
if matched.nil?
|
115
|
+
unmatched_tokens << token
|
116
|
+
end
|
117
|
+
matched
|
118
|
+
end
|
119
|
+
[substituted, unmatched_tokens]
|
120
|
+
end
|
85
121
|
end
|
86
122
|
end
|
data/sensu.gemspec
CHANGED
@@ -13,17 +13,15 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.license = "MIT"
|
14
14
|
s.has_rdoc = false
|
15
15
|
|
16
|
-
s.add_dependency "
|
17
|
-
s.add_dependency "
|
18
|
-
s.add_dependency "
|
19
|
-
s.add_dependency "
|
20
|
-
s.add_dependency "sensu-logger", "1.1.0"
|
21
|
-
s.add_dependency "sensu-settings", "3.3.0"
|
16
|
+
s.add_dependency "eventmachine", "1.2.0.1"
|
17
|
+
s.add_dependency "sensu-json", "1.1.0"
|
18
|
+
s.add_dependency "sensu-logger", "1.2.0"
|
19
|
+
s.add_dependency "sensu-settings", "3.4.0"
|
22
20
|
s.add_dependency "sensu-extension", "1.5.0"
|
23
|
-
s.add_dependency "sensu-extensions", "1.
|
24
|
-
s.add_dependency "sensu-transport", "
|
21
|
+
s.add_dependency "sensu-extensions", "1.5.0"
|
22
|
+
s.add_dependency "sensu-transport", "5.0.0"
|
25
23
|
s.add_dependency "sensu-spawn", "1.8.0"
|
26
|
-
s.add_dependency "
|
24
|
+
s.add_dependency "sensu-redis", "1.2.0"
|
27
25
|
s.add_dependency "sinatra", "1.4.6"
|
28
26
|
s.add_dependency "async_sinatra", "1.2.0"
|
29
27
|
s.add_dependency "thin", "1.6.3" unless RUBY_PLATFORM =~ /java/
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.23.0.beta
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Porter
|
@@ -9,78 +9,64 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-03-
|
12
|
+
date: 2016-03-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - '='
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: 1.11.2
|
21
|
-
type: :runtime
|
22
|
-
prerelease: false
|
23
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - '='
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: 1.11.2
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: uuidtools
|
15
|
+
name: eventmachine
|
30
16
|
requirement: !ruby/object:Gem::Requirement
|
31
17
|
requirements:
|
32
18
|
- - '='
|
33
19
|
- !ruby/object:Gem::Version
|
34
|
-
version: 2.1
|
20
|
+
version: 1.2.0.1
|
35
21
|
type: :runtime
|
36
22
|
prerelease: false
|
37
23
|
version_requirements: !ruby/object:Gem::Requirement
|
38
24
|
requirements:
|
39
25
|
- - '='
|
40
26
|
- !ruby/object:Gem::Version
|
41
|
-
version: 2.1
|
27
|
+
version: 1.2.0.1
|
42
28
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
29
|
+
name: sensu-json
|
44
30
|
requirement: !ruby/object:Gem::Requirement
|
45
31
|
requirements:
|
46
32
|
- - '='
|
47
33
|
- !ruby/object:Gem::Version
|
48
|
-
version: 1.0
|
34
|
+
version: 1.1.0
|
49
35
|
type: :runtime
|
50
36
|
prerelease: false
|
51
37
|
version_requirements: !ruby/object:Gem::Requirement
|
52
38
|
requirements:
|
53
39
|
- - '='
|
54
40
|
- !ruby/object:Gem::Version
|
55
|
-
version: 1.0
|
41
|
+
version: 1.1.0
|
56
42
|
- !ruby/object:Gem::Dependency
|
57
43
|
name: sensu-logger
|
58
44
|
requirement: !ruby/object:Gem::Requirement
|
59
45
|
requirements:
|
60
46
|
- - '='
|
61
47
|
- !ruby/object:Gem::Version
|
62
|
-
version: 1.
|
48
|
+
version: 1.2.0
|
63
49
|
type: :runtime
|
64
50
|
prerelease: false
|
65
51
|
version_requirements: !ruby/object:Gem::Requirement
|
66
52
|
requirements:
|
67
53
|
- - '='
|
68
54
|
- !ruby/object:Gem::Version
|
69
|
-
version: 1.
|
55
|
+
version: 1.2.0
|
70
56
|
- !ruby/object:Gem::Dependency
|
71
57
|
name: sensu-settings
|
72
58
|
requirement: !ruby/object:Gem::Requirement
|
73
59
|
requirements:
|
74
60
|
- - '='
|
75
61
|
- !ruby/object:Gem::Version
|
76
|
-
version: 3.
|
62
|
+
version: 3.4.0
|
77
63
|
type: :runtime
|
78
64
|
prerelease: false
|
79
65
|
version_requirements: !ruby/object:Gem::Requirement
|
80
66
|
requirements:
|
81
67
|
- - '='
|
82
68
|
- !ruby/object:Gem::Version
|
83
|
-
version: 3.
|
69
|
+
version: 3.4.0
|
84
70
|
- !ruby/object:Gem::Dependency
|
85
71
|
name: sensu-extension
|
86
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,28 +87,28 @@ dependencies:
|
|
101
87
|
requirements:
|
102
88
|
- - '='
|
103
89
|
- !ruby/object:Gem::Version
|
104
|
-
version: 1.
|
90
|
+
version: 1.5.0
|
105
91
|
type: :runtime
|
106
92
|
prerelease: false
|
107
93
|
version_requirements: !ruby/object:Gem::Requirement
|
108
94
|
requirements:
|
109
95
|
- - '='
|
110
96
|
- !ruby/object:Gem::Version
|
111
|
-
version: 1.
|
97
|
+
version: 1.5.0
|
112
98
|
- !ruby/object:Gem::Dependency
|
113
99
|
name: sensu-transport
|
114
100
|
requirement: !ruby/object:Gem::Requirement
|
115
101
|
requirements:
|
116
102
|
- - '='
|
117
103
|
- !ruby/object:Gem::Version
|
118
|
-
version:
|
104
|
+
version: 5.0.0
|
119
105
|
type: :runtime
|
120
106
|
prerelease: false
|
121
107
|
version_requirements: !ruby/object:Gem::Requirement
|
122
108
|
requirements:
|
123
109
|
- - '='
|
124
110
|
- !ruby/object:Gem::Version
|
125
|
-
version:
|
111
|
+
version: 5.0.0
|
126
112
|
- !ruby/object:Gem::Dependency
|
127
113
|
name: sensu-spawn
|
128
114
|
requirement: !ruby/object:Gem::Requirement
|
@@ -138,19 +124,19 @@ dependencies:
|
|
138
124
|
- !ruby/object:Gem::Version
|
139
125
|
version: 1.8.0
|
140
126
|
- !ruby/object:Gem::Dependency
|
141
|
-
name:
|
127
|
+
name: sensu-redis
|
142
128
|
requirement: !ruby/object:Gem::Requirement
|
143
129
|
requirements:
|
144
130
|
- - '='
|
145
131
|
- !ruby/object:Gem::Version
|
146
|
-
version: 1.0
|
132
|
+
version: 1.2.0
|
147
133
|
type: :runtime
|
148
134
|
prerelease: false
|
149
135
|
version_requirements: !ruby/object:Gem::Requirement
|
150
136
|
requirements:
|
151
137
|
- - '='
|
152
138
|
- !ruby/object:Gem::Version
|
153
|
-
version: 1.0
|
139
|
+
version: 1.2.0
|
154
140
|
- !ruby/object:Gem::Dependency
|
155
141
|
name: sinatra
|
156
142
|
requirement: !ruby/object:Gem::Requirement
|
@@ -275,7 +261,6 @@ files:
|
|
275
261
|
- lib/sensu/client/socket.rb
|
276
262
|
- lib/sensu/constants.rb
|
277
263
|
- lib/sensu/daemon.rb
|
278
|
-
- lib/sensu/redis.rb
|
279
264
|
- lib/sensu/server/filter.rb
|
280
265
|
- lib/sensu/server/handle.rb
|
281
266
|
- lib/sensu/server/mutate.rb
|
@@ -299,9 +284,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
299
284
|
version: '0'
|
300
285
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
301
286
|
requirements:
|
302
|
-
- - "
|
287
|
+
- - ">"
|
303
288
|
- !ruby/object:Gem::Version
|
304
|
-
version:
|
289
|
+
version: 1.3.1
|
305
290
|
requirements: []
|
306
291
|
rubyforge_project:
|
307
292
|
rubygems_version: 2.4.5.1
|
data/lib/sensu/redis.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
gem "em-redis-unified", "1.0.1"
|
2
|
-
|
3
|
-
require "em-redis-unified"
|
4
|
-
|
5
|
-
module Sensu
|
6
|
-
class Redis
|
7
|
-
# Connect to Redis and ensure that the Redis version is at least
|
8
|
-
# 1.3.14, in order to support certain commands.
|
9
|
-
#
|
10
|
-
# @param options [Hash]
|
11
|
-
# @return [Object] Redis connection object.
|
12
|
-
def self.connect(options={})
|
13
|
-
options ||= {}
|
14
|
-
connection = EM::Protocols::Redis.connect(options)
|
15
|
-
connection.info do |info|
|
16
|
-
if info[:redis_version] < "1.3.14"
|
17
|
-
klass = EM::Protocols::Redis::RedisError
|
18
|
-
message = "redis version must be >= 2.0 RC 1"
|
19
|
-
connection.error(klass, message)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
connection
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|