sensu 1.4.3 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 77726a20c8e3a4cb2f549caa4f33c3c6bfcf4efb
4
- data.tar.gz: c7fe0e9214ccb27c3b14bfa6aa7f89f7f5d07f1f
3
+ metadata.gz: cd7b102ebf9542da1c8e67721efb465c978f3978
4
+ data.tar.gz: '0950ca2940859b00064f57c3aea3ec52d37df446'
5
5
  SHA512:
6
- metadata.gz: ef6330e24403cf0aa3d9b7e5ad9b918197ad3634583c053ffed676948f26737bf4aeda29e902318fa1c37864ca27b11250477900098bc6cf0f2467b6c95ab8e1
7
- data.tar.gz: da78852eed102c0c250118384e976fad1c0fa64bf729b8c61459550a10a9400633f2ac093a264c56e69f9b31024e28e2260baeba6439ceceaa5ae481ab29a1e8
6
+ metadata.gz: 0c702e3136fa2c612b8f1b8d297de375ea0f3487f029485364915ea1fb43685ead29bc06114e3e3571d0b5781764b0ae89d42df49ecf86d448aa37996eae5364
7
+ data.tar.gz: 0451e6005668651a87f14eed8b7baa22300f7dd14d1ad37ad77c73fa5648b158044bd6c5b1e24cd3398728e1d8123d2fcbcb88e79670f9f27e16a78c66d9971c
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -5,6 +5,12 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [1.5.0] - 2018-09-04
9
+
10
+ ### Fixed
11
+ - Bumped sensu-extensions to version 1.10.0 to include subscription support in the check dependencies filter.
12
+ - Improved check result validation by applying existing validation rules from sensu-settings to check results created using the API and the client socket.
13
+
8
14
  ## [1.4.3] - 2018-07-23
9
15
 
10
16
  ### Fixed
@@ -142,6 +142,7 @@ module Sensu
142
142
  result_key = "#{client_name}:#{check_name}"
143
143
  @redis.del("result:#{result_key}")
144
144
  @redis.del("history:#{result_key}")
145
+ @redis.del("history:#{result_key}:last_ok")
145
146
  end
146
147
  @redis.del("result:#{client_name}")
147
148
  end
@@ -1,3 +1,4 @@
1
+ require "sensu/api/validators/check"
1
2
  require "sensu/api/utilities/publish_check_result"
2
3
 
3
4
  module Sensu
@@ -12,17 +13,17 @@ module Sensu
12
13
 
13
14
  # POST /results
14
15
  def post_results
15
- rules = {
16
- :name => {:type => String, :nil_ok => false, :regex => /\A[\w\.-]+\z/},
17
- :output => {:type => String, :nil_ok => false},
18
- :status => {:type => Integer, :nil_ok => true},
19
- :source => {:type => String, :nil_ok => true, :regex => /\A[\w\.-]+\z/},
20
- :ttl => {:type => Integer, :nil_ok => true}
21
- }
22
- read_data(rules) do |data|
23
- publish_check_result("sensu-api", data)
24
- @response_content = {:issued => Time.now.to_i}
25
- accepted!
16
+ read_data do |check|
17
+ check[:status] ||= 0
18
+ check[:executed] ||= Time.now.to_i
19
+ validator = Validators::Check.new
20
+ if validator.valid?(check)
21
+ publish_check_result("sensu-api", check)
22
+ @response_content = {:issued => Time.now.to_i}
23
+ accepted!
24
+ else
25
+ bad_request!
26
+ end
26
27
  end
27
28
  end
28
29
 
@@ -0,0 +1,55 @@
1
+ require "sensu/api/validators/invalid"
2
+ require "sensu/settings/rules"
3
+ require "sensu/settings/validators/check"
4
+
5
+ module Sensu
6
+ module API
7
+ module Validators
8
+ class Check
9
+ # Include Sensu Settings rules and check validator.
10
+ include Sensu::Settings::Rules
11
+ include Sensu::Settings::Validators::Check
12
+
13
+ # Validate a check result, selectively using check definition
14
+ # validation methods.
15
+ #
16
+ # @param check [Hash]
17
+ def validate_check_result(check)
18
+ must_be_a_string(check[:output]) ||
19
+ invalid(check, "check output must be a string")
20
+ must_be_an_integer(check[:status]) ||
21
+ invalid(check, "check status must be an integer")
22
+ must_be_an_integer(check[:executed]) ||
23
+ invalid(check, "check executed timestamp must be an integer")
24
+ validate_check_name(check)
25
+ validate_check_handling(check)
26
+ validate_check_aggregate(check)
27
+ validate_check_flap_detection(check)
28
+ validate_check_truncate_output(check)
29
+ validate_check_source(check) if check[:source]
30
+ validate_check_ttl(check) if check[:ttl]
31
+ end
32
+
33
+ # Determine if a check definition is valid.
34
+ #
35
+ # @param check [Hash]
36
+ # @return [TrueClass, FalseClass]
37
+ def valid?(check)
38
+ validate_check_result(check)
39
+ true
40
+ rescue Invalid
41
+ false
42
+ end
43
+
44
+ private
45
+
46
+ # This method is called when validation methods encounter an
47
+ # invalid definition object. This method raises an exception
48
+ # to be caught by `valid?()`.
49
+ def invalid(*arguments)
50
+ raise Invalid
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -14,15 +14,6 @@ module Sensu
14
14
  unless validator.valid?(check)
15
15
  raise DataError, validator.failures.first[:message]
16
16
  end
17
- unless check[:output].is_a?(String)
18
- raise DataError, "check output must be a string"
19
- end
20
- unless check[:status].is_a?(Integer)
21
- raise DataError, "check status must be an integer"
22
- end
23
- unless check[:executed].is_a?(Integer)
24
- raise DataError, "check executed timestamp must be an integer"
25
- end
26
17
  end
27
18
 
28
19
  # Process a check result. Set check result attribute defaults,
@@ -20,12 +20,19 @@ module Sensu
20
20
  # @param client [Hash]
21
21
  # @return [TrueClass, FalseClass]
22
22
  def valid?(check)
23
+ must_be_a_string(check[:output]) ||
24
+ invalid(check, "check output must be a string")
25
+ must_be_an_integer(check[:status]) ||
26
+ invalid(check, "check status must be an integer")
27
+ must_be_an_integer(check[:executed]) ||
28
+ invalid(check, "check executed timestamp must be an integer")
23
29
  validate_check_name(check)
24
- validate_check_source(check) if check[:source]
25
30
  validate_check_handling(check)
26
- validate_check_ttl(check) if check[:ttl]
27
31
  validate_check_aggregate(check)
28
32
  validate_check_flap_detection(check)
33
+ validate_check_truncate_output(check)
34
+ validate_check_source(check) if check[:source]
35
+ validate_check_ttl(check) if check[:ttl]
29
36
  @failures.empty?
30
37
  end
31
38
 
@@ -1,7 +1,7 @@
1
1
  module Sensu
2
2
  unless defined?(Sensu::VERSION)
3
3
  # Sensu release version.
4
- VERSION = "1.4.3".freeze
4
+ VERSION = "1.5.0".freeze
5
5
 
6
6
  # Sensu release information.
7
7
  RELEASE_INFO = {
@@ -6,7 +6,7 @@ gem "sensu-json", "2.1.1"
6
6
  gem "sensu-logger", "1.2.2"
7
7
  gem "sensu-settings", "10.14.0"
8
8
  gem "sensu-extension", "1.5.2"
9
- gem "sensu-extensions", "1.9.1"
9
+ gem "sensu-extensions", "1.10.0"
10
10
  gem "sensu-transport", "7.1.0"
11
11
  gem "sensu-spawn", "2.5.0"
12
12
  gem "sensu-redis", "2.3.0"
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.add_dependency "sensu-logger", "1.2.2"
17
17
  s.add_dependency "sensu-settings", "10.14.0"
18
18
  s.add_dependency "sensu-extension", "1.5.2"
19
- s.add_dependency "sensu-extensions", "1.9.1"
19
+ s.add_dependency "sensu-extensions", "1.10.0"
20
20
  s.add_dependency "sensu-transport", "7.1.0"
21
21
  s.add_dependency "sensu-spawn", "2.5.0"
22
22
  s.add_dependency "sensu-redis", "2.3.0"
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: 1.4.3
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Porter
@@ -31,7 +31,7 @@ cert_chain:
31
31
  jOeGyhtQa9j4FFmsEJDg59f5v/3hECXsa3Xuml3foaFHzX3Ya/YIyd2YFxvkFKIu
32
32
  GVbe7A3YdxzdkH2Es/Ym9twdxXaIDdXzj8sWhw==
33
33
  -----END CERTIFICATE-----
34
- date: 2018-07-23 00:00:00.000000000 Z
34
+ date: 2018-09-04 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: eventmachine
@@ -109,14 +109,14 @@ dependencies:
109
109
  requirements:
110
110
  - - '='
111
111
  - !ruby/object:Gem::Version
112
- version: 1.9.1
112
+ version: 1.10.0
113
113
  type: :runtime
114
114
  prerelease: false
115
115
  version_requirements: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - '='
118
118
  - !ruby/object:Gem::Version
119
- version: 1.9.1
119
+ version: 1.10.0
120
120
  - !ruby/object:Gem::Dependency
121
121
  name: sensu-transport
122
122
  requirement: !ruby/object:Gem::Requirement
@@ -299,6 +299,7 @@ files:
299
299
  - lib/sensu/api/utilities/resolve_event.rb
300
300
  - lib/sensu/api/utilities/servers_info.rb
301
301
  - lib/sensu/api/utilities/transport_info.rb
302
+ - lib/sensu/api/validators/check.rb
302
303
  - lib/sensu/api/validators/client.rb
303
304
  - lib/sensu/api/validators/invalid.rb
304
305
  - lib/sensu/cli.rb
metadata.gz.sig CHANGED
Binary file