kennel 1.92.1 → 1.92.2

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: 25dc1229c8a5638ae303b4abc140bd5b1d3c734416161e1b431dbff9ba40b980
4
- data.tar.gz: 4e87ad53e75fd11e258cf82a36c95bcde7e0ff0aa90918fc282a1177d8e48839
3
+ metadata.gz: 1e94541bcdef70aa7074e902576e22ffff456e11f04c55bed2567f2074273f38
4
+ data.tar.gz: 2eb1d620e5a4dfe57041e8252d06746ff5bb067aa6d0e375093278218e09662a
5
5
  SHA512:
6
- metadata.gz: 17a8ec0d1697ba73d498d0f86f53e81e48a0ce92b0589f4a0a44f8e8735af98bd133e3270d4147d08d7e1a1d896093c4db0d3607441e7b911398de47a21b494b
7
- data.tar.gz: aa1b95aab43b1fb0e7db8b50f3a6869bd620e815e7f7c3aaf10daad85cfd1309f926b713eec1a3ce33bf9a9f3e09b9df43f6ba280a1720bd1247dbac823db590
6
+ metadata.gz: 3404e5804b142f2f96b35ceaf9d51f3e7fb5c6e29c2573ef603f090e04653d77cd201081147c272d0648f0fac24f532b3a648d356755faa3973364997193367a
7
+ data.tar.gz: d8dcc7f3ea50824d6cbff9c3e29b83ecfd59559f25345e2ad7b468dea30f8423703879b9517823bc565d4e15b3a2fbb55f6c88a4727a20b98292f12958a17e3f
data/lib/kennel/syncer.rb CHANGED
@@ -3,6 +3,7 @@ module Kennel
3
3
  class Syncer
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
+ DEFAULT_BRANCH = "master"
6
7
 
7
8
  def initialize(api, expected, project: nil)
8
9
  @api = api
@@ -26,11 +27,7 @@ module Kennel
26
27
  def confirm
27
28
  return false if noop?
28
29
  return true if ENV["CI"] || !STDIN.tty?
29
- if @delete.any? && @project_filter
30
- Kennel.out.puts(
31
- Utils.color(:red, "WARNING: deleting resources that had `id: -> { ...` breaks master branch")
32
- )
33
- end
30
+ warn_about_deleting_resources_with_id if @project_filter
34
31
  Utils.ask("Execute Plan ?")
35
32
  end
36
33
 
@@ -63,6 +60,30 @@ module Kennel
63
60
 
64
61
  private
65
62
 
63
+ # this is brittle/hacky since it relies on knowledge from the generation + git + branch knowledge
64
+ def warn_about_deleting_resources_with_id
65
+ @delete.each do |_, _, a|
66
+ tracking_id = a.fetch(:tracking_id)
67
+ api_resource = a.fetch(:klass).api_resource
68
+
69
+ file = "generated/#{tracking_id.sub(":", "/")}.json"
70
+ old = `true && git show #{DEFAULT_BRANCH}:#{file.shellescape} 2>&1` # true && to not crash on missing git
71
+
72
+ next unless $?.success?
73
+ old =
74
+ begin
75
+ JSON.parse(old)
76
+ rescue StandardError
77
+ false
78
+ end
79
+ next if !old || !old["id"]
80
+
81
+ Kennel.out.puts(
82
+ Utils.color(:red, "WARNING: deleting #{api_resource} #{tracking_id} will break #{DEFAULT_BRANCH} branch")
83
+ )
84
+ end
85
+ end
86
+
66
87
  # loop over items until everything is resolved or crash when we get stuck
67
88
  # this solves cases like composite monitors depending on each other or monitor->monitor slo->slo monitor chains
68
89
  def each_resolved(list)
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.92.1"
3
+ VERSION = "1.92.2"
4
4
  end
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 "shellwords"
4
5
  require "English"
5
6
 
6
7
  require "kennel/version"
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.92.1
4
+ version: 1.92.2
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-08-29 00:00:00.000000000 Z
11
+ date: 2021-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday