kennel 1.99.0 → 1.100.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/kennel/id_map.rb +26 -0
- data/lib/kennel/models/dashboard.rb +6 -9
- data/lib/kennel/models/monitor.rb +1 -1
- data/lib/kennel/models/record.rb +14 -3
- data/lib/kennel/models/slo.rb +1 -1
- data/lib/kennel/syncer.rb +9 -3
- data/lib/kennel/version.rb +1 -1
- data/lib/kennel.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97207492f3f5afd31ab4d3b16db46f8b70a772c101c57bc26c7d135c9ece6a75
|
4
|
+
data.tar.gz: 6a2c515b9116f1da7764a0a509886fee28ec36241e982b425843f6bc64c02067
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4304111e6d35d92ed2b1adbba277a39eb67e7b2e697a5b2cbd031731a1aa968477249f13a18377f7ea4af49bfafd8742060a3ab6c7b7161bb78fd9b63889972
|
7
|
+
data.tar.gz: 8a5588b35ef64e8a91354a5554866f5a59ca354d850ecd96c7d2d164cf79ffe8f6b8cf79ff0c3bc5d4108cba4a600211492ccd0c7033725dc3e2c0a4197e55ef
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Kennel
|
3
|
+
class IdMap
|
4
|
+
NEW = :new # will be created during this run
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@map = Hash.new { |h, k| h[k] = {} }
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(type, tracking_id)
|
11
|
+
@map[type][tracking_id]
|
12
|
+
end
|
13
|
+
|
14
|
+
def set(type, tracking_id, id)
|
15
|
+
@map[type][tracking_id] = id
|
16
|
+
end
|
17
|
+
|
18
|
+
def set_new(type, tracking_id)
|
19
|
+
@map[type][tracking_id] = NEW
|
20
|
+
end
|
21
|
+
|
22
|
+
def new?(type, tracking_id)
|
23
|
+
@map[type][tracking_id] == NEW
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -189,16 +189,17 @@ module Kennel
|
|
189
189
|
when "uptime"
|
190
190
|
if ids = definition[:monitor_ids]
|
191
191
|
definition[:monitor_ids] = ids.map do |id|
|
192
|
-
|
192
|
+
resolve(id, :monitor, id_map, **args) || id
|
193
193
|
end
|
194
194
|
end
|
195
195
|
when "alert_graph"
|
196
|
-
if
|
197
|
-
|
196
|
+
if id = definition[:alert_id]
|
197
|
+
resolved = resolve(id, :monitor, id_map, **args) || id
|
198
|
+
definition[:alert_id] = resolved.to_s # even though it's a monitor id
|
198
199
|
end
|
199
200
|
when "slo"
|
200
|
-
if
|
201
|
-
definition[:slo_id] = (
|
201
|
+
if id = definition[:slo_id]
|
202
|
+
definition[:slo_id] = resolve(id, :slo, id_map, **args) || id
|
202
203
|
end
|
203
204
|
end
|
204
205
|
end
|
@@ -206,10 +207,6 @@ module Kennel
|
|
206
207
|
|
207
208
|
private
|
208
209
|
|
209
|
-
def tracking_id?(id)
|
210
|
-
id.is_a?(String) && id.include?(":")
|
211
|
-
end
|
212
|
-
|
213
210
|
# creates queries from metadata to avoid having to keep q and expression in sync
|
214
211
|
#
|
215
212
|
# {q: :metadata, metadata: [{expression: "sum:bar", alias_name: "foo"}, ...], }
|
@@ -121,7 +121,7 @@ module Kennel
|
|
121
121
|
when "composite", "slo alert"
|
122
122
|
type = (as_json[:type] == "composite" ? :monitor : :slo)
|
123
123
|
as_json[:query] = as_json[:query].gsub(/%{(.*?)}/) do
|
124
|
-
|
124
|
+
resolve($1, type, id_map, **args) || $&
|
125
125
|
end
|
126
126
|
end
|
127
127
|
end
|
data/lib/kennel/models/record.rb
CHANGED
@@ -100,9 +100,20 @@ module Kennel
|
|
100
100
|
|
101
101
|
private
|
102
102
|
|
103
|
+
def resolve(value, type, id_map, force:)
|
104
|
+
if tracking_id?(value)
|
105
|
+
return resolve_link(value, type, id_map, force: force)
|
106
|
+
end
|
107
|
+
|
108
|
+
value
|
109
|
+
end
|
110
|
+
|
111
|
+
def tracking_id?(id)
|
112
|
+
id.is_a?(String) && id.include?(":")
|
113
|
+
end
|
114
|
+
|
103
115
|
def resolve_link(tracking_id, type, id_map, force:)
|
104
|
-
|
105
|
-
if id == :new
|
116
|
+
if id_map.new?(type.to_s, tracking_id)
|
106
117
|
if force
|
107
118
|
invalid!(
|
108
119
|
"#{type} #{tracking_id} was referenced but is also created by the current run.\n" \
|
@@ -111,7 +122,7 @@ module Kennel
|
|
111
122
|
else
|
112
123
|
nil # will be re-resolved after the linked object was created
|
113
124
|
end
|
114
|
-
elsif id
|
125
|
+
elsif id = id_map.get(type.to_s, tracking_id)
|
115
126
|
id
|
116
127
|
else
|
117
128
|
invalid! "Unable to find #{type} #{tracking_id} (does not exist and is not being created by the current run)"
|
data/lib/kennel/models/slo.rb
CHANGED
@@ -70,7 +70,7 @@ module Kennel
|
|
70
70
|
def resolve_linked_tracking_ids!(id_map, **args)
|
71
71
|
return unless as_json[:monitor_ids] # ignore_default can remove it
|
72
72
|
as_json[:monitor_ids] = as_json[:monitor_ids].map do |id|
|
73
|
-
|
73
|
+
resolve(id, :monitor, id_map, **args) || id
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
data/lib/kennel/syncer.rb
CHANGED
@@ -122,7 +122,7 @@ module Kennel
|
|
122
122
|
def calculate_diff
|
123
123
|
@update = []
|
124
124
|
@delete = []
|
125
|
-
@id_map =
|
125
|
+
@id_map = IdMap.new
|
126
126
|
|
127
127
|
actual = Progress.progress("Downloading definitions") { download_definitions }
|
128
128
|
|
@@ -254,11 +254,17 @@ module Kennel
|
|
254
254
|
end
|
255
255
|
|
256
256
|
def populate_id_map(expected, actual)
|
257
|
+
expected.each do |e|
|
258
|
+
@id_map.set_new(e.class.api_resource, e.tracking_id)
|
259
|
+
end
|
260
|
+
|
257
261
|
actual.each do |a|
|
258
262
|
next unless tracking_id = a.fetch(:tracking_id)
|
259
|
-
@id_map
|
263
|
+
@id_map.set(a.fetch(:klass).api_resource, tracking_id, a.fetch(:id))
|
264
|
+
if a[:klass].api_resource == "synthetics/tests"
|
265
|
+
@id_map.set(Kennel::Models::Monitor.api_resource, tracking_id, a.fetch(:monitor_id))
|
266
|
+
end
|
260
267
|
end
|
261
|
-
expected.each { |e| @id_map[e.tracking_id] ||= :new }
|
262
268
|
end
|
263
269
|
|
264
270
|
def resolve_linked_tracking_ids!(list, force: false)
|
data/lib/kennel/version.rb
CHANGED
data/lib/kennel.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kennel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.100.0
|
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-11-
|
11
|
+
date: 2021-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -77,6 +77,7 @@ files:
|
|
77
77
|
- lib/kennel/api.rb
|
78
78
|
- lib/kennel/file_cache.rb
|
79
79
|
- lib/kennel/github_reporter.rb
|
80
|
+
- lib/kennel/id_map.rb
|
80
81
|
- lib/kennel/importer.rb
|
81
82
|
- lib/kennel/models/base.rb
|
82
83
|
- lib/kennel/models/dashboard.rb
|