kennel 1.109.0 → 1.111.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ffd1a9a74e7d2ac535e24fdb6f4fef30fad6c6e61e61ae7b73b17821510c0a2e
4
- data.tar.gz: 761b0cd94a3a4ec951302e9aa7b7a9d806330cfe7ba6adc0b83571b332f4eea9
3
+ metadata.gz: a22d2d6a7199c2d5b565ad42834dc9634ec81fff3eaadf0bc1e31cff307c34fa
4
+ data.tar.gz: 4ccfa084a8118408b8126fb125c24641741274225817d1fefb593ae69dd0f7b6
5
5
  SHA512:
6
- metadata.gz: db853fd8eb79eeeb29556fb132bdd03e2042e955848b4d3b466c140a06b61e61522b2656437da4488c50428da9b8e37cd3cd172a33d12b956ba98a85a71392da
7
- data.tar.gz: a240420d91cfe30d250d1e7ef3462a34f7845825dd3bcbfe9eabd511ac231b882e285668c6553c0835afa710777016b7379fe143b771cf145524383191101b31
6
+ metadata.gz: ad4d3c2ea98b94a4a178c95b34b4a30ba0bfb66a96ce07f2bbbef2e184abce14a4e509062fd73894f3204f6509ef1a53c05f64d0e2b97d4e8528372b25c667d1
7
+ data.tar.gz: 0fd84a01af923c6b57b05ad6ad7f7577a30d695d98f1936e65e470ffb41b0b35cdbe5704b7d9526fa86291b230e2a5855ba028c04d6e51328b8f07baf0078357
data/Readme.md CHANGED
@@ -248,6 +248,7 @@ so they can be created in a single update and can be re-created if any of them i
248
248
  - rebase on updated `master` to not undo other changes
249
249
  - figure out project name by converting the class name to snake-case
250
250
  - run `PROJECT=foo bundle exec rake kennel:update_datadog` to test changes for a single project (monitors: remove mentions while debugging to avoid alert spam)
251
+ - use `PROJECT=foo,bar,...` for multiple projects
251
252
 
252
253
  ### Reuse
253
254
  Add to `parts/<folder>`.
@@ -53,8 +53,11 @@ module Kennel
53
53
  super
54
54
 
55
55
  # tags come in a semi-random order and order is never updated
56
- expected[:tags]&.sort!
57
- actual[:tags].sort!
56
+ expected[:tags] = expected[:tags]&.sort
57
+ actual[:tags] = actual[:tags]&.sort
58
+
59
+ expected[:locations] = expected[:locations]&.sort
60
+ actual[:locations] = actual[:locations]&.sort
58
61
 
59
62
  ignore_default(expected, actual, DEFAULTS)
60
63
  end
data/lib/kennel/syncer.rb CHANGED
@@ -4,9 +4,9 @@ module Kennel
4
4
  DELETE_ORDER = ["dashboard", "slo", "monitor", "synthetics/tests"].freeze # dashboards references monitors + slos, slos reference monitors
5
5
  LINE_UP = "\e[1A\033[K" # go up and clear
6
6
 
7
- def initialize(api, expected, project: nil)
7
+ def initialize(api, expected, project_filter: nil)
8
8
  @api = api
9
- @project_filter = project
9
+ @project_filter = project_filter
10
10
  @expected = expected
11
11
  calculate_diff
12
12
  validate_plan
@@ -252,7 +252,7 @@ module Kennel
252
252
  end
253
253
 
254
254
  # override resources that exist with their id
255
- project_prefix = @project_filter && "#{@project_filter}:"
255
+ project_prefixes = @project_filter&.map { |p| "#{p}:" }
256
256
  actual.each do |a|
257
257
  # ignore when not managed by kennel
258
258
  next unless tracking_id = a.fetch(:tracking_id)
@@ -262,7 +262,7 @@ module Kennel
262
262
  api_resource = a.fetch(:klass).api_resource
263
263
  next if
264
264
  !@id_map.get(api_resource, tracking_id) &&
265
- (!project_prefix || tracking_id.start_with?(project_prefix))
265
+ (!project_prefixes || tracking_id.start_with?(*project_prefixes))
266
266
 
267
267
  @id_map.set(api_resource, tracking_id, a.fetch(:id))
268
268
  if a[:klass].api_resource == "synthetics/tests"
@@ -277,9 +277,10 @@ module Kennel
277
277
 
278
278
  def filter_actual_by_project!(actual)
279
279
  return unless @project_filter
280
+ project_prefixes = @project_filter&.map { |p| "#{p}:" }
280
281
  actual.select! do |a|
281
282
  tracking_id = a.fetch(:tracking_id)
282
- !tracking_id || tracking_id.start_with?("#{@project_filter}:")
283
+ !tracking_id || tracking_id.start_with?(*project_prefixes)
283
284
  end
284
285
  end
285
286
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.109.0"
3
+ VERSION = "1.111.1"
4
4
  end
data/lib/kennel.rb CHANGED
@@ -63,7 +63,7 @@ module Kennel
63
63
 
64
64
  def store(parts)
65
65
  Progress.progress "Storing" do
66
- old = Dir["generated/#{project_filter || "**"}/*"]
66
+ old = Dir["generated/{#{(project_filter || ["**"]).join(",")}}/*"]
67
67
  used = []
68
68
 
69
69
  Utils.parallel(parts, max: 2) do |part|
@@ -92,7 +92,7 @@ module Kennel
92
92
  end
93
93
 
94
94
  def syncer
95
- @syncer ||= Syncer.new(api, generated, project: project_filter)
95
+ @syncer ||= Syncer.new(api, generated, project_filter: project_filter)
96
96
  end
97
97
 
98
98
  def api
@@ -104,18 +104,20 @@ module Kennel
104
104
  Progress.progress "Generating" do
105
105
  load_all
106
106
  known = []
107
+ filter = project_filter
108
+
107
109
  parts = Models::Project.recursive_subclasses.flat_map do |project_class|
108
110
  project = project_class.new
109
111
  kennel_id = project.kennel_id
110
- if project_filter
112
+ if filter
111
113
  known << kennel_id
112
- next [] if kennel_id != project_filter
114
+ next [] unless filter.include?(kennel_id)
113
115
  end
114
116
  project.validated_parts
115
117
  end
116
118
 
117
- if project_filter && parts.empty?
118
- raise "#{project_filter} does not match any projects, try any of these:\n#{known.uniq.sort.join("\n")}"
119
+ if filter && parts.empty?
120
+ raise "#{filter.join(", ")} does not match any projects, try any of these:\n#{known.uniq.sort.join("\n")}"
119
121
  end
120
122
 
121
123
  parts.group_by(&:tracking_id).each do |tracking_id, same|
@@ -131,7 +133,7 @@ module Kennel
131
133
  end
132
134
 
133
135
  def project_filter
134
- ENV["PROJECT"]
136
+ ENV["PROJECT"]&.split(",")
135
137
  end
136
138
 
137
139
  def load_all
data/template/Readme.md CHANGED
@@ -230,6 +230,7 @@ so they can be created in a single update and can be re-created if any of them i
230
230
  - rebase on updated `master` to not undo other changes
231
231
  - figure out project name by converting the class name to snake-case
232
232
  - run `PROJECT=foo bundle exec rake kennel:update_datadog` to test changes for a single project (monitors: remove mentions while debugging to avoid alert spam)
233
+ - use `PROJECT=foo,bar,...` for multiple projects
233
234
 
234
235
  ### Reuse
235
236
  Add to `parts/<folder>`.
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.109.0
4
+ version: 1.111.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-04-10 00:00:00.000000000 Z
11
+ date: 2022-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday