kennel 1.112.0 → 1.113.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Readme.md +2 -1
- data/lib/kennel/models/record.rb +2 -5
- data/lib/kennel/models/slo.rb +2 -2
- data/lib/kennel/syncer.rb +11 -8
- data/lib/kennel/utils.rb +1 -1
- data/lib/kennel/version.rb +1 -1
- data/lib/kennel.rb +9 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af3ac09353ce317e01997ae925ac4873b24708bc710bec0cedf1cf3b78334396
|
4
|
+
data.tar.gz: 148af144d196c02155eeb0f295f59aaadaa157f3943d7a93af1154cc9f644779
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be15b9ec70bb981a851e0a0dd55fad94a0d765a4747111ff12aa1dde90d1dffb8f1228aee85bf83020df7cbd94d64c9ef2df4dfb7532e664c2aeca5e151fe9fd
|
7
|
+
data.tar.gz: 85916df4a2ea0cbc8dd72e033dd3a2159fe8cbd60f44d4869cf62f014eeeabce5a7e633807772e9bd9b0af312b60a78571ec63e16b2106a178bb2cfb38ed3332
|
data/Readme.md
CHANGED
@@ -307,7 +307,8 @@ https://foo.datadog.com/monitor/123
|
|
307
307
|
## Development
|
308
308
|
|
309
309
|
### Benchmarking
|
310
|
-
Setting `FORCE_GET_CACHE=true` will cache all get requests, which makes benchmarking improvements more reliable.
|
310
|
+
- Setting `FORCE_GET_CACHE=true` will cache all get requests, which makes benchmarking improvements more reliable.
|
311
|
+
- Setting `STORE=false` will make `rake plan` not update the files on disk and save a bit of time
|
311
312
|
|
312
313
|
### Integration testing
|
313
314
|
```Bash
|
data/lib/kennel/models/record.rb
CHANGED
@@ -109,11 +109,8 @@ module Kennel
|
|
109
109
|
private
|
110
110
|
|
111
111
|
def resolve(value, type, id_map, force:)
|
112
|
-
|
113
|
-
|
114
|
-
end
|
115
|
-
|
116
|
-
value
|
112
|
+
return value unless tracking_id?(value)
|
113
|
+
resolve_link(value, type, id_map, force: force)
|
117
114
|
end
|
118
115
|
|
119
116
|
def tracking_id?(id)
|
data/lib/kennel/models/slo.rb
CHANGED
@@ -68,8 +68,8 @@ module Kennel
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def resolve_linked_tracking_ids!(id_map, **args)
|
71
|
-
return unless as_json[:monitor_ids] # ignore_default can remove it
|
72
|
-
as_json[:monitor_ids] =
|
71
|
+
return unless ids = as_json[:monitor_ids] # ignore_default can remove it
|
72
|
+
as_json[:monitor_ids] = ids.map do |id|
|
73
73
|
resolve(id, :monitor, id_map, **args) || id
|
74
74
|
end
|
75
75
|
end
|
data/lib/kennel/syncer.rb
CHANGED
@@ -7,7 +7,7 @@ module Kennel
|
|
7
7
|
def initialize(api, expected, project_filter: nil)
|
8
8
|
@api = api
|
9
9
|
@project_filter = project_filter
|
10
|
-
@expected = expected
|
10
|
+
@expected = Set.new expected # need set to speed up deletion
|
11
11
|
calculate_diff
|
12
12
|
validate_plan
|
13
13
|
prevent_irreversible_partial_updates
|
@@ -110,9 +110,10 @@ module Kennel
|
|
110
110
|
|
111
111
|
@expected.each(&:add_tracking_id) # avoid diff with actual
|
112
112
|
|
113
|
+
lookup_map = matching_expected_lookup_map
|
113
114
|
items = actual.map do |a|
|
114
|
-
e = matching_expected(a)
|
115
|
-
if e && @expected.delete(e)
|
115
|
+
e = matching_expected(a, lookup_map)
|
116
|
+
if e && @expected.delete?(e)
|
116
117
|
[e, a]
|
117
118
|
else
|
118
119
|
[nil, a]
|
@@ -127,7 +128,7 @@ module Kennel
|
|
127
128
|
items.each do |e, a|
|
128
129
|
id = a.fetch(:id)
|
129
130
|
if e
|
130
|
-
diff = e.diff(a)
|
131
|
+
diff = e.diff(a) # slow ...
|
131
132
|
@update << [id, e, a, diff] if diff.any?
|
132
133
|
elsif a.fetch(:tracking_id) # was previously managed
|
133
134
|
@delete << [id, nil, a]
|
@@ -166,9 +167,9 @@ module Kennel
|
|
166
167
|
end
|
167
168
|
end
|
168
169
|
|
169
|
-
|
170
|
-
|
171
|
-
@
|
170
|
+
# index list by all the thing we look up by: tracking id and actual id
|
171
|
+
def matching_expected_lookup_map
|
172
|
+
@expected.each_with_object({}) do |e, all|
|
172
173
|
keys = [e.tracking_id]
|
173
174
|
keys << "#{e.class.api_resource}:#{e.id}" if e.id
|
174
175
|
keys.compact.each do |key|
|
@@ -176,9 +177,11 @@ module Kennel
|
|
176
177
|
all[key] = e
|
177
178
|
end
|
178
179
|
end
|
180
|
+
end
|
179
181
|
|
182
|
+
def matching_expected(a, map)
|
180
183
|
klass = a.fetch(:klass)
|
181
|
-
|
184
|
+
map["#{klass.api_resource}:#{a.fetch(:id)}"] || map[a.fetch(:tracking_id)]
|
182
185
|
end
|
183
186
|
|
184
187
|
def print_plan(step, list, color)
|
data/lib/kennel/utils.rb
CHANGED
@@ -149,7 +149,7 @@ module Kennel
|
|
149
149
|
# TODO: use awesome-print or similar, but it has too many monkey-patches
|
150
150
|
# https://github.com/amazing-print/amazing_print/issues/36
|
151
151
|
def pretty_inspect(object)
|
152
|
-
string = object.inspect
|
152
|
+
string = object.inspect.dup
|
153
153
|
string.gsub!(/:([a-z_]+)=>/, "\\1: ")
|
154
154
|
10.times do
|
155
155
|
string.gsub!(/{(\S.*?\S)}/, "{ \\1 }") || break
|
data/lib/kennel/version.rb
CHANGED
data/lib/kennel.rb
CHANGED
@@ -47,7 +47,9 @@ module Kennel
|
|
47
47
|
attr_accessor :out, :err, :strict_imports
|
48
48
|
|
49
49
|
def generate
|
50
|
-
|
50
|
+
out = generated
|
51
|
+
store out if ENV["STORE"] != "false" # quicker when debugging
|
52
|
+
out
|
51
53
|
end
|
52
54
|
|
53
55
|
def plan
|
@@ -106,7 +108,7 @@ module Kennel
|
|
106
108
|
known = []
|
107
109
|
filter = project_filter
|
108
110
|
|
109
|
-
parts = Models::Project.recursive_subclasses
|
111
|
+
parts = Utils.parallel(Models::Project.recursive_subclasses) do |project_class|
|
110
112
|
project = project_class.new
|
111
113
|
kennel_id = project.kennel_id
|
112
114
|
if filter
|
@@ -114,7 +116,7 @@ module Kennel
|
|
114
116
|
next [] unless filter.include?(kennel_id)
|
115
117
|
end
|
116
118
|
project.validated_parts
|
117
|
-
end
|
119
|
+
end.flatten(1)
|
118
120
|
|
119
121
|
if filter && parts.empty?
|
120
122
|
raise "#{filter.join(", ")} does not match any projects, try any of these:\n#{known.uniq.sort.join("\n")}"
|
@@ -127,6 +129,10 @@ module Kennel
|
|
127
129
|
use a different `kennel_id` when defining multiple projects/monitors/dashboards to avoid this conflict
|
128
130
|
ERROR
|
129
131
|
end
|
132
|
+
|
133
|
+
# trigger json caching here so it counts into generating
|
134
|
+
Utils.parallel(parts, &:as_json)
|
135
|
+
|
130
136
|
parts
|
131
137
|
end
|
132
138
|
end
|
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.113.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-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -117,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: '0'
|
119
119
|
requirements: []
|
120
|
-
rubygems_version: 3.
|
120
|
+
rubygems_version: 3.0.3
|
121
121
|
signing_key:
|
122
122
|
specification_version: 4
|
123
123
|
summary: Keep datadog monitors/dashboards/etc in version control, avoid chaotic management
|