kennel 1.92.1 → 1.93.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 25dc1229c8a5638ae303b4abc140bd5b1d3c734416161e1b431dbff9ba40b980
4
- data.tar.gz: 4e87ad53e75fd11e258cf82a36c95bcde7e0ff0aa90918fc282a1177d8e48839
3
+ metadata.gz: d8f4d45717fa5e2f6913760a8b627b279e7ad4a09bd035c82b98897839f7a19e
4
+ data.tar.gz: 5b194c6871ee6e8ff5708f4530dd2ffbc5d65ac2243a16c33ecf3f360558dd22
5
5
  SHA512:
6
- metadata.gz: 17a8ec0d1697ba73d498d0f86f53e81e48a0ce92b0589f4a0a44f8e8735af98bd133e3270d4147d08d7e1a1d896093c4db0d3607441e7b911398de47a21b494b
7
- data.tar.gz: aa1b95aab43b1fb0e7db8b50f3a6869bd620e815e7f7c3aaf10daad85cfd1309f926b713eec1a3ce33bf9a9f3e09b9df43f6ba280a1720bd1247dbac823db590
6
+ metadata.gz: 1f2e4b91c48fbb9bc25552cfbac91f78d3f970acf2b7d7a56569103959eba5f84de9061f82f153fd7981607a16ed4bc9f08fa277c55e5de5cbc28e1eb5c5ccbf
7
+ data.tar.gz: 50a39e8b033b3afc854844e3c565eea8c83a7b644f3d1ffc213d52a829ba57fbe679c94292bcf9808a6e1fb8b9a86faace328e7769fc7eea52fefd9dd311140f
@@ -6,7 +6,7 @@ module Kennel
6
6
  include OptionalValidations
7
7
 
8
8
  READONLY_ATTRIBUTES = superclass::READONLY_ATTRIBUTES + [
9
- :author_handle, :author_name, :modified_at, :url, :is_read_only, :notify_list
9
+ :author_handle, :author_name, :modified_at, :url, :is_read_only, :notify_list, :restricted_roles
10
10
  ]
11
11
  TRACKING_FIELD = :description
12
12
  REQUEST_DEFAULTS = {
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)
@@ -139,6 +160,7 @@ module Kennel
139
160
  ensure_all_ids_found
140
161
  @create = @expected.map { |e| [nil, e] }
141
162
  @delete.sort_by! { |_, _, a| DELETE_ORDER.index a.fetch(:klass).api_resource }
163
+ @update.sort_by! { |_, e, _| DELETE_ORDER.index e.class.api_resource } # slo needs to come before slo alert
142
164
  end
143
165
  end
144
166
 
data/lib/kennel/tasks.rb CHANGED
@@ -48,7 +48,7 @@ namespace :kennel do
48
48
  url = Kennel::Utils.path_to_url "/account/settings"
49
49
  puts "Invalid mentions found, either ignore them by adding to `KNOWN` env var or add them via #{url}"
50
50
  bad.each { |f, v| puts "Invalid mention #{v} in monitor message of #{f}" }
51
- Kennel::Tasks.abort
51
+ Kennel::Tasks.abort ENV["KNOWN_WARNING"]
52
52
  end
53
53
  end
54
54
 
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.92.1"
3
+ VERSION = "1.93.1"
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.93.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: 2021-08-29 00:00:00.000000000 Z
11
+ date: 2021-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday