kennel 1.71.0 → 1.73.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: 7632d0aefebe72da3129a6d0a67e73500352862b090f7fef7a8dc6b24aeaa6af
4
- data.tar.gz: 6c6d8170140c0d707a925861efa6246e136b114a8a0c9ca5ad6b4e30e1d4504a
3
+ metadata.gz: d99d149867f4ae8fefb711537a756a1d450ae396f5ac371b48f7db555b81d880
4
+ data.tar.gz: 6faa7915de915d57051a3722ba76eef833e464340dd14e211aedd6075ef13a9a
5
5
  SHA512:
6
- metadata.gz: f215fabaaee748bd6d2a2df5b765f30875b25400c8ef62ffda2531acf042246acde524c33c7aab8f8bb2eb43fa1b109a8370fc18b959a91ec84f3f18e57de959
7
- data.tar.gz: 62a3efb2c67ed3f411ac60e2398be09fcff859c58e162883671cf149113df2d3faba01126d088255587a028a9294036ddfe4fb40bb7637d41e35cfcaff5f717e
6
+ metadata.gz: aa4907af5eb82756b646cd4e89f6ff6b69832c6cd7ce20ceb18d2cf9da57913866c5237293916e6299baaa35a84254d941cf2dbd7a89ca7e2364f06b6b7e197f
7
+ data.tar.gz: f8beb5d100df9b205d7759e8f338fb5d01a267f5f22ab312f0793085aff78c0b1e51546cde2555f1f2cda34c62978ba0e60953ac21a87461411892cd52674806
@@ -13,15 +13,23 @@ module Kennel
13
13
  REQUEST_DEFAULTS = {
14
14
  style: { line_width: "normal", palette: "dog_classic", line_type: "solid" }
15
15
  }.freeze
16
- TIMESERIES_DEFAULTS = { show_legend: false, legend_size: "0" }.freeze
16
+ WIDGET_DEFAULTS = {
17
+ "timeseries" => { show_legend: false, legend_size: "0" },
18
+ "note" => { background_color: "white", font_size: "14", show_tick: false, tick_edge: "left", tick_pos: "50%", text_align: "left" }
19
+ }.freeze
17
20
  SUPPORTED_DEFINITION_OPTIONS = [:events, :markers, :precision].freeze
18
21
 
19
- settings :title, :description, :definitions, :widgets, :layout_type
22
+ DEFAULTS = {
23
+ template_variable_presets: nil
24
+ }.freeze
25
+
26
+ settings :title, :description, :definitions, :widgets, :layout_type, :template_variable_presets
20
27
 
21
28
  defaults(
22
29
  description: -> { "" },
23
30
  definitions: -> { [] },
24
31
  widgets: -> { [] },
32
+ template_variable_presets: -> { DEFAULTS.fetch(:template_variable_presets) },
25
33
  id: -> { nil }
26
34
  )
27
35
 
@@ -33,6 +41,8 @@ module Kennel
33
41
  def normalize(expected, actual)
34
42
  super
35
43
 
44
+ ignore_default(expected, actual, DEFAULTS)
45
+
36
46
  widgets_pairs(expected, actual).each do |pair|
37
47
  # conditional_formats ordering is randomly changed by datadog, compare a stable ordering
38
48
  pair.each do |widgets|
@@ -43,7 +53,7 @@ module Kennel
43
53
  end
44
54
  end
45
55
 
46
- ignore_definition_defaults_for_type pair, "timeseries", TIMESERIES_DEFAULTS
56
+ ignore_widget_defaults pair
47
57
 
48
58
  ignore_request_defaults(*pair)
49
59
 
@@ -54,11 +64,12 @@ module Kennel
54
64
 
55
65
  private
56
66
 
57
- def ignore_definition_defaults_for_type(pair, type, defaults)
67
+ def ignore_widget_defaults(pair)
58
68
  pair.map(&:size).max.times do |i|
59
- if pair.all? { |w| w.dig(i, :definition, :type) == type }
60
- ignore_defaults(pair[0], pair[1], defaults, nesting: :definition)
61
- end
69
+ types = pair.map { |w| w.dig(i, :definition, :type) }.uniq
70
+ next unless types.size == 1
71
+ next unless defaults = WIDGET_DEFAULTS[types.first]
72
+ ignore_defaults(pair[0], pair[1], defaults, nesting: :definition)
62
73
  end
63
74
  end
64
75
 
@@ -102,6 +113,7 @@ module Kennel
102
113
  title: "#{title}#{LOCK}",
103
114
  description: description,
104
115
  template_variables: render_template_variables,
116
+ template_variable_presets: template_variable_presets,
105
117
  widgets: all_widgets
106
118
  }
107
119
 
@@ -167,6 +179,10 @@ module Kennel
167
179
  super
168
180
 
169
181
  validate_template_variables data, :widgets
182
+
183
+ # Avoid diff from datadog presets sorting.
184
+ presets = data[:template_variable_presets]
185
+ invalid! "template_variable_presets must be sorted by name" if presets && presets != presets.sort_by { |p| p[:name] }
170
186
  end
171
187
 
172
188
  def render_definitions
@@ -202,7 +202,7 @@ module Kennel
202
202
  # verify is_match uses available variables
203
203
  message = data.fetch(:message)
204
204
  used = message.scan(/{{\s*#is_match\s*"([a-zA-Z\d_.-]+).name"/).flatten.uniq
205
- allowed = data.fetch(:query)[/by\s*{([^\}]+)}/, 1].to_s.split(/\s*,\s*/)
205
+ allowed = data.fetch(:query)[/by\s*[\({]([^\}\)]+)[}\)]/, 1].to_s.gsub(/["']/, "").split(/\s*,\s*/)
206
206
  unsupported = used - allowed
207
207
  if unsupported.any?
208
208
  invalid! "is_match used with #{unsupported}, but metric is only grouped by #{allowed}"
@@ -228,7 +228,7 @@ module Kennel
228
228
  json = e.as_json
229
229
  field = tracking_field(json)
230
230
  value = json[field]
231
- json[field] = value.dup.sub!(/\n-- Managed by kennel .*/, "") || raise("did not find tracking id in #{value}")
231
+ json[field] = value.dup.sub!(/\n?-- Managed by kennel .*/, "") || raise("did not find tracking id in #{value}")
232
232
  end
233
233
 
234
234
  def tracking_id(a)
@@ -19,6 +19,7 @@ module Kennel
19
19
  .gsub(/::/, "_") # Foo::Bar -> foo_bar
20
20
  .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') # FOOBar -> foo_bar
21
21
  .gsub(/([a-z\d])([A-Z])/, '\1_\2') # fooBar -> foo_bar
22
+ .tr("-", "_") # foo-bar -> foo_bar
22
23
  .downcase
23
24
  end
24
25
 
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.71.0"
3
+ VERSION = "1.73.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.71.0
4
+ version: 1.73.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: 2020-06-02 00:00:00.000000000 Z
11
+ date: 2020-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday