kennel 1.95.0 → 1.97.1
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/kennel/models/monitor.rb +6 -1
- data/lib/kennel/version.rb +1 -1
- data/lib/kennel.rb +31 -1
- metadata +20 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e8d215839f60e7de711646bbe7fa33a6cb6e760abccf0b93eb1aa2bf4a7698d5
|
|
4
|
+
data.tar.gz: edee1d1856e9573bff15881653f3b6b1c0e28aeea923ce228a292a7d5e9bef77
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 488aaaff92f09f9176533e8103d86c4eda767cd0ec0d5f6b6982c14f5a0886e7f41ad1ddc9d4d8c2dd4b9906c5fbd90609071af89f4de8c800fa6b8687c171a1
|
|
7
|
+
data.tar.gz: 0011e0ba0634266a400f224e5855ffdff23142cc111af8acb4f808dfdda29ebf25a4718cf5b70e9222dc600cfdcbd5ae903ffc1d128d9ca2b1b5d475c8eff4c7
|
|
@@ -31,7 +31,7 @@ module Kennel
|
|
|
31
31
|
settings(
|
|
32
32
|
:query, :name, :message, :escalation_message, :critical, :type, :renotify_interval, :warning, :timeout_h, :evaluation_delay,
|
|
33
33
|
:ok, :no_data_timeframe, :notify_no_data, :notify_audit, :tags, :critical_recovery, :warning_recovery, :require_full_window,
|
|
34
|
-
:threshold_windows, :new_host_delay, :priority
|
|
34
|
+
:threshold_windows, :new_host_delay, :new_group_delay, :priority
|
|
35
35
|
)
|
|
36
36
|
|
|
37
37
|
defaults(
|
|
@@ -45,6 +45,7 @@ module Kennel
|
|
|
45
45
|
no_data_timeframe: -> { 60 },
|
|
46
46
|
notify_audit: -> { MONITOR_OPTION_DEFAULTS.fetch(:notify_audit) },
|
|
47
47
|
new_host_delay: -> { MONITOR_OPTION_DEFAULTS.fetch(:new_host_delay) },
|
|
48
|
+
new_group_delay: -> { nil },
|
|
48
49
|
tags: -> { @project.tags },
|
|
49
50
|
timeout_h: -> { MONITOR_OPTION_DEFAULTS.fetch(:timeout_h) },
|
|
50
51
|
evaluation_delay: -> { MONITOR_OPTION_DEFAULTS.fetch(:evaluation_delay) },
|
|
@@ -70,6 +71,7 @@ module Kennel
|
|
|
70
71
|
notify_audit: notify_audit,
|
|
71
72
|
require_full_window: require_full_window,
|
|
72
73
|
new_host_delay: new_host_delay,
|
|
74
|
+
new_group_delay: new_group_delay,
|
|
73
75
|
include_tags: true,
|
|
74
76
|
escalation_message: Utils.presence(escalation_message.strip),
|
|
75
77
|
evaluation_delay: evaluation_delay,
|
|
@@ -106,6 +108,9 @@ module Kennel
|
|
|
106
108
|
options[:threshold_windows] = windows
|
|
107
109
|
end
|
|
108
110
|
|
|
111
|
+
# Datadog requires only either new_group_delay or new_host_delay, never both
|
|
112
|
+
options.delete(options[:new_group_delay] ? :new_host_delay : :new_group_delay)
|
|
113
|
+
|
|
109
114
|
validate_json(data) if validate
|
|
110
115
|
|
|
111
116
|
@as_json = data
|
data/lib/kennel/version.rb
CHANGED
data/lib/kennel.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
require "faraday"
|
|
3
3
|
require "json"
|
|
4
|
+
require "zeitwerk"
|
|
4
5
|
require "shellwords"
|
|
5
6
|
require "English"
|
|
6
7
|
|
|
@@ -30,6 +31,10 @@ require "kennel/models/synthetic_test"
|
|
|
30
31
|
require "kennel/models/project"
|
|
31
32
|
require "kennel/models/team"
|
|
32
33
|
|
|
34
|
+
# need to define early since we autoload the teams/ folder into it
|
|
35
|
+
module Teams
|
|
36
|
+
end
|
|
37
|
+
|
|
33
38
|
module Kennel
|
|
34
39
|
class ValidationError < RuntimeError
|
|
35
40
|
end
|
|
@@ -128,9 +133,34 @@ module Kennel
|
|
|
128
133
|
end
|
|
129
134
|
|
|
130
135
|
def load_all
|
|
131
|
-
|
|
136
|
+
loader = Zeitwerk::Loader.new
|
|
137
|
+
Dir.exist?("teams") && loader.push_dir("teams", namespace: Teams)
|
|
138
|
+
Dir.exist?("parts") && loader.push_dir("parts")
|
|
139
|
+
loader.setup
|
|
140
|
+
|
|
141
|
+
# TODO: also do projects and update expected path too
|
|
142
|
+
["projects"].each do |folder|
|
|
132
143
|
Dir["#{folder}/**/*.rb"].sort.each { |f| require "./#{f}" }
|
|
133
144
|
end
|
|
145
|
+
rescue NameError => e
|
|
146
|
+
message = e.message
|
|
147
|
+
raise unless klass = message[/uninitialized constant (.*)/, 1]
|
|
148
|
+
|
|
149
|
+
# inverse of zeitwerk lib/zeitwerk/inflector.rb
|
|
150
|
+
path = klass.gsub("::", "/").gsub(/([a-z])([A-Z])/, "\\1_\\2").downcase + ".rb"
|
|
151
|
+
expected_path = (path.start_with?("teams/") ? path : "parts/#{path}")
|
|
152
|
+
|
|
153
|
+
# TODO: prefer to raise a new exception with the old backtrace attacked
|
|
154
|
+
e.define_singleton_method(:message) do
|
|
155
|
+
"\n" + <<~MSG.gsub(/^/, " ")
|
|
156
|
+
#{message}
|
|
157
|
+
Unable to load #{klass} from #{expected_path}
|
|
158
|
+
- Option 1: rename the constant or the file it lives in, to make them match
|
|
159
|
+
- Option 2: Use `require` or `require_relative` to load the constant
|
|
160
|
+
MSG
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
raise
|
|
134
164
|
end
|
|
135
165
|
end
|
|
136
166
|
end
|
metadata
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kennel
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.97.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michael Grosser
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-10-
|
|
11
|
+
date: 2021-10-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '1.8'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- - "
|
|
24
|
+
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
26
|
+
version: '1.8'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: hashdiff
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -52,6 +52,20 @@ dependencies:
|
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '4.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: zeitwerk
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '2.4'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '2.4'
|
|
55
69
|
description:
|
|
56
70
|
email: michael@grosser.it
|
|
57
71
|
executables: []
|