sensu-settings 8.0.0 → 9.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.
- checksums.yaml +4 -4
- data/lib/sensu/settings/validators.rb +2 -2
- data/lib/sensu/settings/validators/check.rb +9 -1
- data/lib/sensu/settings/validators/filter.rb +9 -0
- data/lib/sensu/settings/validators/handler.rb +3 -4
- data/lib/sensu/settings/validators/time_window.rb +65 -0
- data/sensu-settings.gemspec +1 -1
- data/spec/validator_spec.rb +129 -53
- metadata +3 -3
- data/lib/sensu/settings/validators/subdue.rb +0 -68
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cbf9a4e7d37ba04e4fbbcfe697fcadb75a448c2
|
4
|
+
data.tar.gz: c6c4db9dcbf1f9f076aa6f5f9770c865b9ed1fe0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b07bc280b7a7c920cc3f4eac878f49645bf34a48812c021cb2c111d55a0b8a23fbc9594a8aa8180491da316386ff2ae8d7f84126e7e0ba5b46cc7a10d5cc558
|
7
|
+
data.tar.gz: 5aff8a7a597d6d6c8ceeaa061663fa403167003c734c7b53dd6bfb7c2c4ab7cc8c5e2900b8c66d694b2ead2f60953d4151d8c026b45a3f8684d1fb21e60f6399
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require "sensu/settings/validators/sensu"
|
2
2
|
require "sensu/settings/validators/transport"
|
3
|
-
require "sensu/settings/validators/
|
3
|
+
require "sensu/settings/validators/time_window"
|
4
4
|
require "sensu/settings/validators/check"
|
5
5
|
require "sensu/settings/validators/filter"
|
6
6
|
require "sensu/settings/validators/mutator"
|
@@ -14,7 +14,7 @@ module Sensu
|
|
14
14
|
module Validators
|
15
15
|
include Sensu
|
16
16
|
include Transport
|
17
|
-
include
|
17
|
+
include TimeWindow
|
18
18
|
include Check
|
19
19
|
include Filter
|
20
20
|
include Mutator
|
@@ -129,6 +129,14 @@ module Sensu
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
+
# Validate check subdue.
|
133
|
+
# Validates: subdue
|
134
|
+
#
|
135
|
+
# @param check [Hash] sensu check definition.
|
136
|
+
def validate_check_subdue(check)
|
137
|
+
validate_time_windows(check, :subdue)
|
138
|
+
end
|
139
|
+
|
132
140
|
# Validate a Sensu check definition.
|
133
141
|
#
|
134
142
|
# @param check [Hash] sensu check definition.
|
@@ -141,7 +149,7 @@ module Sensu
|
|
141
149
|
validate_check_ttl(check) if check[:ttl]
|
142
150
|
validate_check_aggregate(check)
|
143
151
|
validate_check_flap_detection(check)
|
144
|
-
|
152
|
+
validate_check_subdue(check) if check[:subdue]
|
145
153
|
end
|
146
154
|
end
|
147
155
|
end
|
@@ -2,6 +2,14 @@ module Sensu
|
|
2
2
|
module Settings
|
3
3
|
module Validators
|
4
4
|
module Filter
|
5
|
+
# Validate filter when.
|
6
|
+
# Validates: when
|
7
|
+
#
|
8
|
+
# @param filter [Hash] sensu filter definition.
|
9
|
+
def validate_filter_when(filter)
|
10
|
+
validate_time_windows(filter, :when)
|
11
|
+
end
|
12
|
+
|
5
13
|
# Validate a Sensu filter definition.
|
6
14
|
# Validates: attributes, negate
|
7
15
|
#
|
@@ -11,6 +19,7 @@ module Sensu
|
|
11
19
|
invalid(filter, "filter negate must be boolean")
|
12
20
|
must_be_a_hash(filter[:attributes]) ||
|
13
21
|
invalid(filter, "filter attributes must be a hash")
|
22
|
+
validate_filter_when(filter) if filter[:when]
|
14
23
|
end
|
15
24
|
end
|
16
25
|
end
|
@@ -110,7 +110,7 @@ module Sensu
|
|
110
110
|
end
|
111
111
|
|
112
112
|
# Validate a Sensu handler definition.
|
113
|
-
# Validates: timeout, mutator, handle_flapping
|
113
|
+
# Validates: timeout, mutator, handle_flapping, handle_silenced
|
114
114
|
#
|
115
115
|
# @param handler [Hash] sensu handler definition.
|
116
116
|
def validate_handler(handler)
|
@@ -123,9 +123,8 @@ module Sensu
|
|
123
123
|
invalid(handler, "handler mutator must be a string")
|
124
124
|
must_be_boolean_if_set(handler[:handle_flapping]) ||
|
125
125
|
invalid(handler, "handler handle_flapping must be boolean")
|
126
|
-
|
127
|
-
|
128
|
-
end
|
126
|
+
must_be_boolean_if_set(handler[:handle_silenced]) ||
|
127
|
+
invalid(handler, "handler handle_silenced must be boolean")
|
129
128
|
end
|
130
129
|
end
|
131
130
|
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Sensu
|
2
|
+
module Settings
|
3
|
+
module Validators
|
4
|
+
module TimeWindow
|
5
|
+
# Validate time window condition
|
6
|
+
# Validates: begin, end
|
7
|
+
#
|
8
|
+
# @param definition [Hash] sensu definition.
|
9
|
+
# @param scope [String] definition scope to validate.
|
10
|
+
# @param condition [Hash] to have begin and end validated.
|
11
|
+
def validate_time_window_condition(definition, scope, condition)
|
12
|
+
if is_a_hash?(condition)
|
13
|
+
if either_are_set?(condition[:begin], condition[:end])
|
14
|
+
must_be_time(condition[:begin], condition[:end]) ||
|
15
|
+
invalid(definition, "#{scope} begin and end times must be valid")
|
16
|
+
end
|
17
|
+
else
|
18
|
+
invalid(definition, "#{scope} must be a hash")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Validate time windows
|
23
|
+
# Validates: days
|
24
|
+
#
|
25
|
+
# @param definition [Hash] sensu definition.
|
26
|
+
# @param scope [String] definition scope to validate.
|
27
|
+
# @param days [String] time window days to validate.
|
28
|
+
def validate_time_windows_days(definition, scope, days)
|
29
|
+
valid_days = [:all, :sunday, :monday, :tuesday, :wednesday, :thursday, :friday, :saturday]
|
30
|
+
if must_be_either(valid_days, days.keys)
|
31
|
+
days.each do |day, conditions|
|
32
|
+
if is_an_array?(conditions)
|
33
|
+
conditions.each do |condition|
|
34
|
+
validate_time_window_condition(definition, scope, condition)
|
35
|
+
end
|
36
|
+
else
|
37
|
+
invalid(definition, "#{scope} #{day} time windows must be in an array")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
else
|
41
|
+
invalid(definition, "#{scope} days must be valid days of the week or 'all'")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Validate time windows
|
46
|
+
# Validates: days
|
47
|
+
#
|
48
|
+
# @param definition [Hash] sensu definition.
|
49
|
+
# @param scope [String] definition scope to validate.
|
50
|
+
def validate_time_windows(definition, scope)
|
51
|
+
if is_a_hash?(definition[scope])
|
52
|
+
days = definition[scope][:days]
|
53
|
+
must_be_a_hash_if_set(days) ||
|
54
|
+
invalid(definition, "#{scope} days must be a hash")
|
55
|
+
if is_a_hash?(days)
|
56
|
+
validate_time_windows_days(definition, scope, days)
|
57
|
+
end
|
58
|
+
else
|
59
|
+
invalid(definition, "#{scope} must be a hash")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/sensu-settings.gemspec
CHANGED
data/spec/validator_spec.rb
CHANGED
@@ -270,56 +270,72 @@ describe "Sensu::Settings::Validator" do
|
|
270
270
|
@validator.validate_check(check)
|
271
271
|
expect(@validator.reset).to eq(1)
|
272
272
|
check[:subdue] = {
|
273
|
-
:
|
273
|
+
:days => []
|
274
274
|
}
|
275
275
|
@validator.validate_check(check)
|
276
276
|
expect(@validator.reset).to eq(1)
|
277
|
-
check[:subdue]
|
278
|
-
|
279
|
-
|
280
|
-
check[:subdue][:at] = "handler"
|
281
|
-
@validator.validate_check(check)
|
282
|
-
expect(@validator.reset).to eq(0)
|
283
|
-
check[:subdue][:begin] = "14:30"
|
284
|
-
check[:subdue][:end] = 1
|
285
|
-
@validator.validate_check(check)
|
286
|
-
expect(@validator.reset).to eq(1)
|
287
|
-
check[:subdue][:begin] = 1
|
288
|
-
check[:subdue][:end] = "14:30"
|
289
|
-
@validator.validate_check(check)
|
290
|
-
expect(@validator.reset).to eq(1)
|
291
|
-
check[:subdue][:begin] = "14:30"
|
292
|
-
check[:subdue][:end] = "16:30"
|
277
|
+
check[:subdue] = {
|
278
|
+
:days => {}
|
279
|
+
}
|
293
280
|
@validator.validate_check(check)
|
294
281
|
expect(@validator.reset).to eq(0)
|
295
|
-
check[:subdue]
|
296
|
-
|
297
|
-
|
298
|
-
|
282
|
+
check[:subdue] = {
|
283
|
+
:days => {
|
284
|
+
:nope => {}
|
285
|
+
}
|
286
|
+
}
|
299
287
|
@validator.validate_check(check)
|
300
288
|
expect(@validator.reset).to eq(1)
|
301
|
-
check[:subdue]
|
289
|
+
check[:subdue] = {
|
290
|
+
:days => {
|
291
|
+
:nope => []
|
292
|
+
}
|
293
|
+
}
|
302
294
|
@validator.validate_check(check)
|
303
295
|
expect(@validator.reset).to eq(1)
|
304
|
-
check[:subdue]
|
305
|
-
|
306
|
-
|
307
|
-
|
296
|
+
check[:subdue] = {
|
297
|
+
:days => {
|
298
|
+
:all => {}
|
299
|
+
}
|
300
|
+
}
|
308
301
|
@validator.validate_check(check)
|
309
302
|
expect(@validator.reset).to eq(1)
|
310
|
-
check[:subdue]
|
303
|
+
check[:subdue] = {
|
304
|
+
:days => {
|
305
|
+
:all => []
|
306
|
+
}
|
307
|
+
}
|
311
308
|
@validator.validate_check(check)
|
312
309
|
expect(@validator.reset).to eq(0)
|
313
|
-
check[:subdue]
|
310
|
+
check[:subdue] = {
|
311
|
+
:days => {
|
312
|
+
:all => [true]
|
313
|
+
}
|
314
|
+
}
|
314
315
|
@validator.validate_check(check)
|
315
316
|
expect(@validator.reset).to eq(1)
|
316
|
-
check[:subdue]
|
317
|
-
|
318
|
-
|
319
|
-
|
317
|
+
check[:subdue] = {
|
318
|
+
:days => {
|
319
|
+
:all => [
|
320
|
+
{
|
321
|
+
:begin => "5:00 PM",
|
322
|
+
:end => "nope"
|
323
|
+
}
|
324
|
+
]
|
325
|
+
}
|
326
|
+
}
|
320
327
|
@validator.validate_check(check)
|
321
328
|
expect(@validator.reset).to eq(1)
|
322
|
-
check[:subdue]
|
329
|
+
check[:subdue] = {
|
330
|
+
:days => {
|
331
|
+
:all => [
|
332
|
+
{
|
333
|
+
:begin => "5:00 PM",
|
334
|
+
:end => "8:00 AM"
|
335
|
+
}
|
336
|
+
]
|
337
|
+
}
|
338
|
+
}
|
323
339
|
@validator.validate_check(check)
|
324
340
|
expect(@validator.reset).to eq(0)
|
325
341
|
end
|
@@ -358,6 +374,86 @@ describe "Sensu::Settings::Validator" do
|
|
358
374
|
expect(@validator.reset).to eq(0)
|
359
375
|
end
|
360
376
|
|
377
|
+
it "can validate filter when" do
|
378
|
+
filter = {
|
379
|
+
:attributes => {}
|
380
|
+
}
|
381
|
+
@validator.validate_filter(filter)
|
382
|
+
expect(@validator.reset).to eq(0)
|
383
|
+
filter[:when] = true
|
384
|
+
@validator.validate_filter(filter)
|
385
|
+
expect(@validator.reset).to eq(1)
|
386
|
+
filter[:when] = {
|
387
|
+
:days => []
|
388
|
+
}
|
389
|
+
@validator.validate_filter(filter)
|
390
|
+
expect(@validator.reset).to eq(1)
|
391
|
+
filter[:when] = {
|
392
|
+
:days => {}
|
393
|
+
}
|
394
|
+
@validator.validate_filter(filter)
|
395
|
+
expect(@validator.reset).to eq(0)
|
396
|
+
filter[:when] = {
|
397
|
+
:days => {
|
398
|
+
:nope => {}
|
399
|
+
}
|
400
|
+
}
|
401
|
+
@validator.validate_filter(filter)
|
402
|
+
expect(@validator.reset).to eq(1)
|
403
|
+
filter[:when] = {
|
404
|
+
:days => {
|
405
|
+
:nope => []
|
406
|
+
}
|
407
|
+
}
|
408
|
+
@validator.validate_filter(filter)
|
409
|
+
expect(@validator.reset).to eq(1)
|
410
|
+
filter[:when] = {
|
411
|
+
:days => {
|
412
|
+
:all => {}
|
413
|
+
}
|
414
|
+
}
|
415
|
+
@validator.validate_filter(filter)
|
416
|
+
expect(@validator.reset).to eq(1)
|
417
|
+
filter[:when] = {
|
418
|
+
:days => {
|
419
|
+
:all => []
|
420
|
+
}
|
421
|
+
}
|
422
|
+
@validator.validate_filter(filter)
|
423
|
+
expect(@validator.reset).to eq(0)
|
424
|
+
filter[:when] = {
|
425
|
+
:days => {
|
426
|
+
:all => [true]
|
427
|
+
}
|
428
|
+
}
|
429
|
+
@validator.validate_filter(filter)
|
430
|
+
expect(@validator.reset).to eq(1)
|
431
|
+
filter[:when] = {
|
432
|
+
:days => {
|
433
|
+
:all => [
|
434
|
+
{
|
435
|
+
:begin => "5:00 PM",
|
436
|
+
:end => "nope"
|
437
|
+
}
|
438
|
+
]
|
439
|
+
}
|
440
|
+
}
|
441
|
+
@validator.validate_filter(filter)
|
442
|
+
expect(@validator.reset).to eq(1)
|
443
|
+
filter[:when] = {
|
444
|
+
:days => {
|
445
|
+
:all => [
|
446
|
+
{
|
447
|
+
:begin => "5:00 PM",
|
448
|
+
:end => "8:00 AM"
|
449
|
+
}
|
450
|
+
]
|
451
|
+
}
|
452
|
+
}
|
453
|
+
@validator.validate_filter(filter)
|
454
|
+
expect(@validator.reset).to eq(0)
|
455
|
+
end
|
456
|
+
|
361
457
|
it "can validate a mutator definition" do
|
362
458
|
mutator = {}
|
363
459
|
@validator.validate_mutator(mutator)
|
@@ -526,26 +622,6 @@ describe "Sensu::Settings::Validator" do
|
|
526
622
|
expect(@validator.reset).to eq(0)
|
527
623
|
end
|
528
624
|
|
529
|
-
it "can validate handler subdue" do
|
530
|
-
handler = {
|
531
|
-
:name => "foo",
|
532
|
-
:type => "pipe",
|
533
|
-
:command => "cat"
|
534
|
-
}
|
535
|
-
@validator.validate_handler(handler)
|
536
|
-
expect(@validator.reset).to eq(0)
|
537
|
-
handler[:subdue] = true
|
538
|
-
@validator.validate_handler(handler)
|
539
|
-
expect(@validator.reset).to eq(1)
|
540
|
-
handler[:subdue] = {
|
541
|
-
:at => "handler",
|
542
|
-
:begin => "14:30",
|
543
|
-
:end => "15:45"
|
544
|
-
}
|
545
|
-
@validator.validate_handler(handler)
|
546
|
-
expect(@validator.reset).to eq(0)
|
547
|
-
end
|
548
|
-
|
549
625
|
it "can validate a client definition" do
|
550
626
|
client = true
|
551
627
|
@validator.validate_client(client)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-settings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 9.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Porter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-json
|
@@ -107,7 +107,7 @@ files:
|
|
107
107
|
- lib/sensu/settings/validators/handler.rb
|
108
108
|
- lib/sensu/settings/validators/mutator.rb
|
109
109
|
- lib/sensu/settings/validators/sensu.rb
|
110
|
-
- lib/sensu/settings/validators/
|
110
|
+
- lib/sensu/settings/validators/time_window.rb
|
111
111
|
- lib/sensu/settings/validators/transport.rb
|
112
112
|
- sensu-settings.gemspec
|
113
113
|
- spec/assets/alternative/conf.d/loop
|
@@ -1,68 +0,0 @@
|
|
1
|
-
module Sensu
|
2
|
-
module Settings
|
3
|
-
module Validators
|
4
|
-
module Subdue
|
5
|
-
# Validate subdue time.
|
6
|
-
# Validates: begin, end
|
7
|
-
#
|
8
|
-
# @param scope [String] definition scope to report under.
|
9
|
-
# @param definition [Hash] sensu definition.
|
10
|
-
# @param object [Hash] to have begin and end validated.
|
11
|
-
def validate_subdue_time(scope, definition, object)
|
12
|
-
if is_a_hash?(object)
|
13
|
-
if either_are_set?(object[:begin], object[:end])
|
14
|
-
must_be_time(object[:begin], object[:end]) ||
|
15
|
-
invalid(definition, "#{scope} begin and end times must be valid")
|
16
|
-
end
|
17
|
-
else
|
18
|
-
invalid(definition, "#{scope} must be a hash")
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
# Validate subdue days.
|
23
|
-
# Validates: days
|
24
|
-
#
|
25
|
-
# @param definition [Hash] sensu definition.
|
26
|
-
def validate_subdue_days(definition)
|
27
|
-
subdue = definition[:subdue]
|
28
|
-
must_be_an_array_if_set(subdue[:days]) ||
|
29
|
-
invalid(definition, "subdue days must be an array")
|
30
|
-
if is_an_array?(subdue[:days])
|
31
|
-
days = %w[sunday monday tuesday wednesday thursday friday saturday]
|
32
|
-
must_be_either(days, subdue[:days]) ||
|
33
|
-
invalid(definition, "subdue days must be valid days of the week")
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
# Validate subdue exceptions.
|
38
|
-
# Validates: exceptions (begin, end)
|
39
|
-
#
|
40
|
-
# @param definition [Hash] sensu definition.
|
41
|
-
def validate_subdue_exceptions(definition)
|
42
|
-
subdue = definition[:subdue]
|
43
|
-
must_be_an_array_if_set(subdue[:exceptions]) ||
|
44
|
-
invalid(definition, "subdue exceptions must be an array")
|
45
|
-
if is_an_array?(subdue[:exceptions])
|
46
|
-
subdue[:exceptions].each do |exception|
|
47
|
-
validate_subdue_time("subdue exceptions", definition, exception)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
# Validate Sensu subdue, for either a check or handler definition.
|
53
|
-
#
|
54
|
-
# @param definition [Hash] sensu definition.
|
55
|
-
def validate_subdue(definition)
|
56
|
-
subdue = definition[:subdue]
|
57
|
-
validate_subdue_time("subdue", definition, subdue)
|
58
|
-
if is_a_hash?(subdue)
|
59
|
-
must_be_either_if_set(%w[handler publisher], subdue[:at]) ||
|
60
|
-
invalid(definition, "subdue at must be either handler or publisher")
|
61
|
-
validate_subdue_days(definition)
|
62
|
-
validate_subdue_exceptions(definition)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|