kennel 1.145.1 → 1.146.0

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: e3043dcfb11f7d16c0ac340a1dc5d94488f801f52a75ed5946c7ec514a116f8d
4
- data.tar.gz: 98b4a64f1b659bde487a5d18a5674b9b3c0022e45bbe48bf9150963fcf289e68
3
+ metadata.gz: 135900ecb21e1299d4b8fb044235e58363e94b19739d782eb13a3b37f3ebec01
4
+ data.tar.gz: 9333524bd316ca81abbf42eb678d7c6fb9558bc7ad03e61534eb268e8a7d487e
5
5
  SHA512:
6
- metadata.gz: e5fee59bdac78be8f4797f3a6ff12117f19cbddf709fb9c1a4d66cc7b39f199ef451d0b014b4556ddedcf5f30285448c554c6bf5168d9bdb54a53beb2d1bf139
7
- data.tar.gz: b0fba5079b184ed126d23a61d6b30daf3d9190665582f56e332a60909f832efa883a078d68f3cee3879ceaf9a2e461b729fc25d2fbada563e9f283c2456eab4a
6
+ metadata.gz: 6d935709f003f87021baae50e8dbc5701bdf98abb9a1b34562669a953ca768e1bcc6354d8eb2f006b0b16514091a550b23bef855b194027bc0179a070354be80
7
+ data.tar.gz: e4fce646569437007d027fbacfd0086a909f382a861f5c90c938251822b8fd0a1f0072af799d1cfcb1f5d8d570d0ec895a3e3d9ba5c1375ddf5ef6c9f7c29f85
data/lib/kennel/syncer.rb CHANGED
@@ -62,22 +62,28 @@ module Kennel
62
62
  Kennel.out.puts "#{LINE_UP}Deleted #{message}"
63
63
  end
64
64
 
65
- resolver.each_resolved internal_plan.creates do |item|
66
- message = "#{item.api_resource} #{item.tracking_id}"
67
- Kennel.out.puts "Creating #{message}"
68
- reply = @api.create item.api_resource, item.expected.as_json
69
- id = reply.fetch(:id)
70
- changes << item.change(id)
71
- resolver.add_actual [reply] # allow resolving ids we could previously not resolve
72
- Kennel.out.puts "#{LINE_UP}Created #{message} #{item.url(id)}"
73
- end
74
-
75
- resolver.each_resolved internal_plan.updates do |item|
76
- message = "#{item.api_resource} #{item.tracking_id} #{item.url}"
77
- Kennel.out.puts "Updating #{message}"
78
- @api.update item.api_resource, item.id, item.expected.as_json
79
- changes << item.change
80
- Kennel.out.puts "#{LINE_UP}Updated #{message}"
65
+ planned_actions = internal_plan.creates + internal_plan.updates
66
+
67
+ # slos need to be updated first in case their timeframes changed
68
+ # because datadog validates that update+create of slo alerts match an existing timeframe
69
+ planned_actions.sort_by! { |item| item.expected.is_a?(Models::Slo) ? 0 : 1 }
70
+
71
+ resolver.each_resolved(planned_actions) do |item|
72
+ if item.is_a?(Types::PlannedCreate)
73
+ message = "#{item.api_resource} #{item.tracking_id}"
74
+ Kennel.out.puts "Creating #{message}"
75
+ reply = @api.create item.api_resource, item.expected.as_json
76
+ id = reply.fetch(:id)
77
+ changes << item.change(id)
78
+ resolver.add_actual [reply] # allow resolving ids we could previously not resolve
79
+ Kennel.out.puts "#{LINE_UP}Created #{message} #{item.url(id)}"
80
+ else
81
+ message = "#{item.api_resource} #{item.tracking_id} #{item.url}"
82
+ Kennel.out.puts "Updating #{message}"
83
+ @api.update item.api_resource, item.id, item.expected.as_json
84
+ changes << item.change
85
+ Kennel.out.puts "#{LINE_UP}Updated #{message}"
86
+ end
81
87
  end
82
88
 
83
89
  Plan.new(changes: changes)
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.145.1"
3
+ VERSION = "1.146.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.145.1
4
+ version: 1.146.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-10-17 00:00:00.000000000 Z
11
+ date: 2023-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diff-lcs