kennel 2.5.0 → 2.6.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: ca7ba16c7952c8b56ba72203c27828ed64cf0b5e927673b7de2e3b132536d318
4
- data.tar.gz: 77b70544f3be1cda6a21dd24ce5b80eaa9c3f6588d566f46d7c1b43e87bf93e0
3
+ metadata.gz: bb95ceae817bc98d083407c5a6b19483e12e1932a98209c13fd097cd9bcf7ebd
4
+ data.tar.gz: 1a0c92f146ab14ffe80bccc86cb12f1561e8d874faefbe7f48f550a4c108cb6e
5
5
  SHA512:
6
- metadata.gz: c773b16cd6f66d0941073c6146578b5e5b011aff2aa83e90dffea2f069912a3afdb14dabc553fb10436089947f056a9aa13797e9ae54ed3e668e2da6c7b1c40c
7
- data.tar.gz: 8c61dac6e484e8ebba99d7abe758f45e81c56536e6d9c686c57e7dcb6a373c9ff1f2afa7feee583d31722c2969234057aa6e23e52a2685d9e73dade48ae37fc2
6
+ metadata.gz: 2b43e7160e79a8174ae60d929d998322cfda2730116500ce8e6ddbfd4114c2217b0d75c5f326ffafbc94c5976155810a858f6d43423430223fa9325207373a75
7
+ data.tar.gz: b9c53626a278cea303b617ec12f792f89b5a5ca858a20dd75f244367a38065ed436e5309184b04e8c5ba5f7060a5c5dab472837b2729c2313ab6cb730d6f0bef
data/lib/kennel/syncer.rb CHANGED
@@ -127,6 +127,7 @@ module Kennel
127
127
  # update it instead to avoid old urls from becoming invalid
128
128
  # - careful with unmatched_actual being huge since it has all api resources
129
129
  # - don't do it when a monitor type is changing since that would block the update
130
+ # - don't do it when a dashboard layout_type is changing since that would block the update
130
131
  # - when using a filter and updating the kennel_id of an existing item, old and new must be in the filter
131
132
  def convert_replace_into_update!(matching, unmatched_actual, unmatched_expected)
132
133
  unmatched_expected.reject! do |e|
@@ -135,10 +136,15 @@ module Kennel
135
136
  break [field, value]
136
137
  end
137
138
  raise unless e_field # uncovered: should never happen ...
139
+ # TODO: ideally reuse invalid_update! logic and just put the fields somewhere
138
140
  e_monitor_type = e.as_json[:type]
141
+ e_dashboard_layout_type = e.as_json[:layout_type]
139
142
 
140
143
  actual = unmatched_actual.detect do |a|
141
- a[:klass].api_resource == e.class.api_resource && a[e_field] == e_value && a[:type] == e_monitor_type
144
+ a[:klass].api_resource == e.class.api_resource &&
145
+ a[e_field] == e_value &&
146
+ a[:type] == e_monitor_type &&
147
+ a[:layout_type] == e_dashboard_layout_type
142
148
  end
143
149
  next false unless actual # keep in unmatched
144
150
 
data/lib/kennel/tasks.rb CHANGED
@@ -67,26 +67,30 @@ namespace :kennel do
67
67
  end
68
68
 
69
69
  # ideally do this on every run, but it's slow (~1.5s) and brittle
70
- # (might not find all via the matcher + might find false-positives because random emails can also be sent to)
70
+ # (might not find all via the regex + might find false-positives because random emails can also be sent to)
71
71
  # https://help.datadoghq.com/hc/en-us/requests/254114 for automatic validation
72
- # /monitor/notifications has users+slack+sns so there is lots of overlap and we don't really need sns
72
+ # /monitor/notifications has users+slack+sns but not @team- and @webhook-
73
73
  # got a support ticket open to get sns into api/v2 too
74
74
  desc "Verify that all used monitor mentions are valid"
75
75
  task validate_mentions: :environment do
76
76
  known = []
77
77
 
78
- # @slack- @team- @webhook- user-emails
78
+ # @slack- @team- @webhook- @sns- user-emails
79
79
  known += Kennel::Api.new.send(:request, :get, "/api/v2/notifications/handles?group_limit=99999")
80
80
  .fetch(:data)
81
81
  .flat_map { |d| d.dig(:attributes, :handles) }
82
82
  .map { |v| v.fetch(:value) }
83
83
 
84
- # group emails or other 1-off things to ignore
84
+ # group emails or other 1-off things we know are valid
85
85
  manual = ENV["KNOWN"].to_s.split(",")
86
86
  dupes = (manual & known)
87
87
  Kennel::Tasks.abort "KNOWN=#{dupes.join(",")} values are already known and should be removed" if dupes.any?
88
88
  known += manual
89
89
 
90
+ # @sns- handles are randomly invalid so we need to ignore them without checking if the ignore is needed
91
+ # https://help.datadoghq.com/hc/en-us/requests/2310423
92
+ known += ENV["KNOWN_RANDOM"].to_s.split(",")
93
+
90
94
  bad = []
91
95
  Dir["generated/**/*.json"].each do |f|
92
96
  next unless (message = JSON.parse(File.read(f))["message"])
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "2.5.0"
3
+ VERSION = "2.6.1"
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: 2.5.0
4
+ version: 2.6.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: 2025-10-18 00:00:00.000000000 Z
11
+ date: 2025-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diff-lcs