kennel 1.145.1 → 1.146.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: 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