kennel 1.71.0 → 1.73.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: 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