kennel 1.116.1 → 1.117.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/kennel/file_cache.rb +7 -1
- data/lib/kennel/syncer.rb +30 -1
- data/lib/kennel/version.rb +1 -1
- data/lib/kennel.rb +6 -2
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0cb7a96d8fed145f6db8ab76ee7cac6287f24af57ee8bc785707830548e07a76
|
4
|
+
data.tar.gz: '076522890c0d40993b8f6a676e106da15b145df4e3361e851f7bc70d38ed096c'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18c8879eaa8aff627087b164156127ac6358060985e1adb79d1a8fe9994b23647d17fe629bdd99fb8c2410f8685c17500e4a890611dd5d028f43185caef1e0e8
|
7
|
+
data.tar.gz: 1ab7202e9152b7e71aee2d40b42b3fdf91ea2c2af5290152f147254895e79c83b40da015efef7e5b8855b72fe49cde96c0c4e127ba80108a388966ccae4dbe39
|
data/lib/kennel/file_cache.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "tempfile"
|
4
|
+
|
3
5
|
# cache that reads everything from a single file
|
4
6
|
# - avoids doing multiple disk reads while iterating all definitions
|
5
7
|
# - has a global expiry to not keep deleted resources forever
|
@@ -44,7 +46,11 @@ module Kennel
|
|
44
46
|
def persist
|
45
47
|
dir = File.dirname(@file)
|
46
48
|
FileUtils.mkdir_p(dir) unless File.directory?(dir)
|
47
|
-
|
49
|
+
|
50
|
+
Tempfile.create "kennel-file-cache", dir do |tmp|
|
51
|
+
Marshal.dump @data, tmp
|
52
|
+
File.rename tmp.path, @file
|
53
|
+
end
|
48
54
|
end
|
49
55
|
|
50
56
|
# keep the cache small to make loading it fast (5MB ~= 100ms)
|
data/lib/kennel/syncer.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "diff/lcs"
|
4
|
+
|
2
5
|
module Kennel
|
3
6
|
class Syncer
|
4
7
|
DELETE_ORDER = ["dashboard", "slo", "monitor", "synthetics/tests"].freeze # dashboards references monitors + slos, slos reference monitors
|
@@ -196,16 +199,22 @@ module Kennel
|
|
196
199
|
|
197
200
|
def print_diff(diff)
|
198
201
|
diff.each do |type, field, old, new|
|
202
|
+
use_diff = false
|
199
203
|
if type == "+"
|
200
204
|
temp = Utils.pretty_inspect(new)
|
201
205
|
new = Utils.pretty_inspect(old)
|
202
206
|
old = temp
|
207
|
+
elsif old.is_a?(String) && new.is_a?(String) && (old.include?("\n") || new.include?("\n"))
|
208
|
+
use_diff = true
|
203
209
|
else # ~ and -
|
204
210
|
old = Utils.pretty_inspect(old)
|
205
211
|
new = Utils.pretty_inspect(new)
|
206
212
|
end
|
207
213
|
|
208
|
-
if
|
214
|
+
if use_diff
|
215
|
+
Kennel.out.puts " #{type}#{field}"
|
216
|
+
Kennel.out.puts(diff(old, new).map { |l| " #{l}" })
|
217
|
+
elsif (old + new).size > 100
|
209
218
|
Kennel.out.puts " #{type}#{field}"
|
210
219
|
Kennel.out.puts " #{old} ->"
|
211
220
|
Kennel.out.puts " #{new}"
|
@@ -215,6 +224,26 @@ module Kennel
|
|
215
224
|
end
|
216
225
|
end
|
217
226
|
|
227
|
+
# display diff for multi-line strings
|
228
|
+
# must stay readable when color is off too
|
229
|
+
def diff(old, new)
|
230
|
+
Diff::LCS.sdiff(old.split("\n", -1), new.split("\n", -1)).flat_map do |diff|
|
231
|
+
case diff.action
|
232
|
+
when "-"
|
233
|
+
Utils.color(:red, "- #{diff.old_element}")
|
234
|
+
when "+"
|
235
|
+
Utils.color(:green, "+ #{diff.new_element}")
|
236
|
+
when "!"
|
237
|
+
[
|
238
|
+
Utils.color(:red, "- #{diff.old_element}"),
|
239
|
+
Utils.color(:green, "+ #{diff.new_element}")
|
240
|
+
]
|
241
|
+
else
|
242
|
+
" #{diff.old_element}"
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
218
247
|
# We've already validated the desired objects ('generated') in isolation.
|
219
248
|
# Now that we have made the plan, we can perform some more validation.
|
220
249
|
def validate_plan
|
data/lib/kennel/version.rb
CHANGED
data/lib/kennel.rb
CHANGED
@@ -138,8 +138,12 @@ module Kennel
|
|
138
138
|
end
|
139
139
|
|
140
140
|
def project_filter
|
141
|
-
|
142
|
-
|
141
|
+
projects = ENV["PROJECT"]&.split(",")
|
142
|
+
tracking_projects = tracking_id_filter&.map { |id| id.split(":", 2).first }
|
143
|
+
if projects && tracking_projects && projects != tracking_projects
|
144
|
+
raise "do not set PROJECT= when using TRACKING_ID="
|
145
|
+
end
|
146
|
+
projects || tracking_projects
|
143
147
|
end
|
144
148
|
|
145
149
|
def tracking_id_filter
|
metadata
CHANGED
@@ -1,15 +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.117.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: 2022-
|
11
|
+
date: 2022-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: diff-lcs
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.5'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.5'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: faraday
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|