kennel 1.150.0 → 1.152.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: 29514740a2760f494ce7958c4156f5dd864635e61abdca7c5c805226bc56e255
4
- data.tar.gz: 58d17b770fa613029bd490d60aeb3131a1e3e036f82ef5d49b87ebe9e1151292
3
+ metadata.gz: c18c40b3d259f4b19d396f956937f54a50d064e79f9c069204aede3d5e743f1b
4
+ data.tar.gz: dfabe30c42756650cda60fc0d90268f672284841e8dfff76db1d08f9e956f3b5
5
5
  SHA512:
6
- metadata.gz: d9a379ff67c951e8b8bb346272da47d420ba95cd9ac856dd592a94696b564dc4010db13945fbeaa42480f10288baf441886bea5f0e03981356231e210cfc1d6b
7
- data.tar.gz: 99d921199f21e237880ee6a38f51e62ab7ff2d94bdf886f3553a3102defea51b33cc7366a7775a6dcb9ccac869594bcb7bc653d1ed09fdd35a7771b418defb06
6
+ metadata.gz: adb30eab75ab3e4cc7a5f86ac0f7c465441c07e53fe19534f339e67ac56d14719e40e598260bb6e2a123183badd1bd38aabe8eab12d8fcfe03b89cc57f244930
7
+ data.tar.gz: 69b9d6e6bbedf62d9325d58fee3e9aa76b1f79693a9b36d7232cd6771327c1803ea26e91e09bb23078b710c32f2f13fd9b1974d71fc13539fa33e5071aaa73ba
data/Readme.md CHANGED
@@ -342,6 +342,7 @@ so they can be created in a single update and can be re-created if any of them i
342
342
  |Dashboard|uptime|`monitor: {id: "foo:bar"}`|
343
343
  |Dashboard|alert_graph|`alert_id: "foo:bar"`|
344
344
  |Dashboard|slo|`slo_id: "foo:bar"`|
345
+ |Dashboard|timeseries|`queries: [{ data_source: "slo", slo_id: "foo:bar" }]`|
345
346
  |Monitor|composite|`query: -> { "%{foo:bar} && %{foo:baz}" }`|
346
347
  |Monitor|slo alert|`query: -> { "error_budget(\"%{foo:bar}\").over(\"7d\") > 123.0" }`|
347
348
  |Slo|monitor|`monitor_ids: -> ["foo:bar"]`|
@@ -2,8 +2,15 @@
2
2
 
3
3
  module Kennel
4
4
  class Importer
5
+ # title will have the lock symbol we need to remove when re-importing
5
6
  TITLES = [:name, :title].freeze
6
- SORT_ORDER = [*TITLES, :id, :kennel_id, :type, :tags, :query, *Models::Record.subclasses.map { |k| k::TRACKING_FIELDS }, :template_variables].freeze
7
+
8
+ # bring important fields to the top
9
+ SORT_ORDER = [
10
+ *TITLES, :id, :kennel_id, :type, :tags, :query, :sli_specification,
11
+ *Models::Record.subclasses.flat_map { |k| k::TRACKING_FIELDS },
12
+ :template_variables
13
+ ].freeze
7
14
 
8
15
  def initialize(api)
9
16
  @api = api
@@ -19,6 +26,7 @@ module Kennel
19
26
  raise(ArgumentError, "#{resource} is not supported")
20
27
 
21
28
  data = @api.show(model.api_resource, id)
29
+
22
30
  id = data.fetch(:id) # keep native value
23
31
  model.normalize({}, data) # removes id
24
32
  data[:id] = id
@@ -195,6 +195,14 @@ module Kennel
195
195
  if id = definition[:slo_id]
196
196
  definition[:slo_id] = resolve(id, :slo, id_map, **args) || id
197
197
  end
198
+ when "timeseries"
199
+ definition[:requests]&.each do |request|
200
+ request[:queries]&.each do |query|
201
+ if query[:data_source] == "slo" && (slo_id = query[:slo_id])
202
+ query[:slo_id] = resolve(slo_id, :slo, id_map, **args) || slo_id
203
+ end
204
+ end
205
+ end
198
206
  end
199
207
  end
200
208
  end
@@ -4,7 +4,10 @@ module Kennel
4
4
  class Slo < Record
5
5
  include TagsValidation
6
6
 
7
- READONLY_ATTRIBUTES = superclass::READONLY_ATTRIBUTES + [:type_id, :monitor_tags, :target_threshold, :timeframe, :warning_threshold]
7
+ READONLY_ATTRIBUTES = [
8
+ *superclass::READONLY_ATTRIBUTES,
9
+ :type_id, :monitor_tags, :target_threshold, :timeframe, :warning_threshold
10
+ ].freeze
8
11
  TRACKING_FIELD = :description
9
12
  DEFAULTS = {
10
13
  description: nil,
@@ -14,7 +17,7 @@ module Kennel
14
17
  thresholds: []
15
18
  }.freeze
16
19
 
17
- settings :type, :description, :thresholds, :query, :tags, :monitor_ids, :monitor_tags, :name, :groups
20
+ settings :type, :description, :thresholds, :query, :tags, :monitor_ids, :monitor_tags, :name, :groups, :sli_specification
18
21
 
19
22
  defaults(
20
23
  tags: -> { @project.tags },
@@ -35,7 +38,9 @@ module Kennel
35
38
  type: type
36
39
  )
37
40
 
38
- if v = query
41
+ if type == "time_slice"
42
+ data[:sli_specification] = sli_specification
43
+ elsif v = query
39
44
  data[:query] = v
40
45
  end
41
46
 
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.150.0"
3
+ VERSION = "1.152.0"
4
4
  end
data/template/Readme.md CHANGED
@@ -324,6 +324,7 @@ so they can be created in a single update and can be re-created if any of them i
324
324
  |Dashboard|uptime|`monitor: {id: "foo:bar"}`|
325
325
  |Dashboard|alert_graph|`alert_id: "foo:bar"`|
326
326
  |Dashboard|slo|`slo_id: "foo:bar"`|
327
+ |Dashboard|timeseries|`queries: [{ data_source: "slo", slo_id: "foo:bar" }]`|
327
328
  |Monitor|composite|`query: -> { "%{foo:bar} && %{foo:baz}" }`|
328
329
  |Monitor|slo alert|`query: -> { "error_budget(\"%{foo:bar}\").over(\"7d\") > 123.0" }`|
329
330
  |Slo|monitor|`monitor_ids: -> ["foo:bar"]`|
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.150.0
4
+ version: 1.152.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: 2024-03-29 00:00:00.000000000 Z
11
+ date: 2024-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diff-lcs