kennel 1.148.0 → 1.150.0

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: 4a544470a54c1480f1ed92be13555d44349eb59405c0f2620f00645f536be10d
4
- data.tar.gz: 5425b8bf340f5956d87ad6cd08e26c4e8c70d066cf05f70b7b7df6d0816b0f30
3
+ metadata.gz: 29514740a2760f494ce7958c4156f5dd864635e61abdca7c5c805226bc56e255
4
+ data.tar.gz: 58d17b770fa613029bd490d60aeb3131a1e3e036f82ef5d49b87ebe9e1151292
5
5
  SHA512:
6
- metadata.gz: b07268a2f09ccb5465afab53a6ee3bdc8448ffa223d092496a04d6fb5c4d704c593df35d69555d0b021bf13f7068bf102332eaaa3412f62dc39c65979744460c
7
- data.tar.gz: f15042a4259a60a8a69fa7c57aa5d12b1ec1fee7e8ba20fc053ab87742b5fa9eb1ce1b66bfd856f2a5ad098b614d5996450d2fae4971ba5a6a22912a084fea0f
6
+ metadata.gz: d9a379ff67c951e8b8bb346272da47d420ba95cd9ac856dd592a94696b564dc4010db13945fbeaa42480f10288baf441886bea5f0e03981356231e210cfc1d6b
7
+ data.tar.gz: 99d921199f21e237880ee6a38f51e62ab7ff2d94bdf886f3553a3102defea51b33cc7366a7775a6dcb9ccac869594bcb7bc653d1ed09fdd35a7771b418defb06
data/lib/kennel/api.rb CHANGED
@@ -5,6 +5,8 @@ module Kennel
5
5
  class Api
6
6
  CACHE_FILE = ENV.fetch("KENNEL_API_CACHE_FILE", "tmp/cache/details")
7
7
 
8
+ RateLimitParams = Data.define(:limit, :period, :remaining, :reset, :name)
9
+
8
10
  def self.tag(api_resource, reply)
9
11
  klass = Models::Record.api_resource_map[api_resource]
10
12
  return reply unless klass # do not blow up on unknown models
@@ -122,6 +124,23 @@ module Kennel
122
124
  end
123
125
  end
124
126
 
127
+ rate_limit = RateLimitParams.new(
128
+ limit: response.headers["x-ratelimit-limit"],
129
+ period: response.headers["x-ratelimit-period"],
130
+ remaining: response.headers["x-ratelimit-remaining"],
131
+ reset: response.headers["x-ratelimit-reset"],
132
+ name: response.headers["x-ratelimit-name"]
133
+ )
134
+
135
+ if response.status == 429
136
+ message = "Datadog rate limit #{rate_limit.name.inspect} hit"
137
+ message += " (#{rate_limit.limit} requests per #{rate_limit.period} seconds)"
138
+ message += "; sleeping #{rate_limit.reset} seconds before trying again"
139
+ Kennel.err.puts message
140
+ sleep rate_limit.reset.to_f
141
+ redo
142
+ end
143
+
125
144
  break if i == tries - 1 || method != :get || response.status < 500
126
145
  Kennel.err.puts "Retrying on server error #{response.status} for #{path}"
127
146
  end
@@ -83,7 +83,7 @@ module Kennel
83
83
  include_tags: true,
84
84
  escalation_message: Utils.presence(escalation_message.strip),
85
85
  evaluation_delay: evaluation_delay,
86
- locked: false, # setting this to true prevents any edit and breaks updates when using replace workflow
86
+ locked: false, # deprecated: setting this to true will likely fail
87
87
  renotify_interval: renotify_interval || 0,
88
88
  variables: variables
89
89
  }
@@ -153,6 +153,9 @@ module Kennel
153
153
  options[:notification_preset_name] = notification_preset_name
154
154
  end
155
155
 
156
+ # locked is deprecated, will fail if used
157
+ options.delete :locked
158
+
156
159
  data
157
160
  end
158
161
 
@@ -231,6 +234,9 @@ module Kennel
231
234
  options.delete(:escalation_message)
232
235
  expected_options.delete(:escalation_message)
233
236
  end
237
+ # locked is deprecated: ignored when diffing
238
+ options.delete(:locked)
239
+ expected_options.delete(:locked)
234
240
  end
235
241
 
236
242
  private
@@ -22,11 +22,19 @@ module Kennel
22
22
 
23
23
  def print_changes(step, list, color)
24
24
  return if list.empty?
25
+
26
+ use_groups = ENV.key?("GITHUB_STEP_SUMMARY")
27
+
25
28
  list.each do |item|
29
+ # No trailing newline
30
+ Kennel.out.print "::group::" if item.class::TYPE == :update && use_groups
31
+
26
32
  Kennel.out.puts Console.color(color, "#{step} #{item.api_resource} #{item.tracking_id}")
27
33
  if item.class::TYPE == :update
28
34
  item.diff.each { |args| Kennel.out.puts @attribute_differ.format(*args) } # only for update
29
35
  end
36
+
37
+ Kennel.out.puts "::endgroup::" if item.class::TYPE == :update && use_groups
30
38
  end
31
39
  end
32
40
  end
data/lib/kennel/tasks.rb CHANGED
@@ -91,8 +91,8 @@ namespace :kennel do
91
91
 
92
92
  if bad.any?
93
93
  url = Kennel::Utils.path_to_url "/account/settings"
94
- Kennel.out.puts "Invalid mentions found, either ignore them by adding to `KNOWN` env var or add them via #{url}"
95
- bad.each { |f, v| Kennel.out.puts "Invalid mention #{v} in monitor message of #{f}" }
94
+ Kennel.err.puts "Invalid mentions found, either ignore them by adding to `KNOWN` env var or add them via #{url}"
95
+ bad.each { |f, v| Kennel.err.puts "Invalid mention #{v} in monitor message of #{f}" }
96
96
  Kennel::Tasks.abort ENV["KNOWN_WARNING"]
97
97
  end
98
98
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.148.0"
3
+ VERSION = "1.150.0"
4
4
  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.148.0
4
+ version: 1.150.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-08 00:00:00.000000000 Z
11
+ date: 2024-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diff-lcs