kennel 1.86.1 → 1.87.1

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: e2531f5f8a3ef6c978e2aeeec1db0a16f56aebe690ef6eae8baefff34c3c53fe
4
- data.tar.gz: d650a926e7d730f34e3dc90833f04f693161ad6aa112fd8ffdbca88f37d37497
3
+ metadata.gz: 42e4d1fd80bfa23ccbed32dcc6cfeb05fda2a2748bc29b302e6f982273302551
4
+ data.tar.gz: 6ffc6ddafa5518868cc913fd05add8f11eb49729ba4ca498b357241ab80111f3
5
5
  SHA512:
6
- metadata.gz: 12c01b65de8be29754e78b8caa6d8d8cc3f8c8089928008917a31121d3641161eb8b519aedfd7f5a643ff9f4f1123579e8bc6e07382e26613b5dd9937f6f6c16
7
- data.tar.gz: 421e6d81e4ea91f0eb152ba5230026334221e452f5dea8a4e040d5b8285db8f0913443357b128f5c00e917557ace751f264a55568e50ee86a8e304fb1f9f188e
6
+ metadata.gz: 76f2b875dd8e918db62b0ee13a6ad01acd6a187f11127824176cdee2f8665ec0ffa4d5ad3a0f8fbfd97fbf980faae8039cdbca8f2b078ef81e091a9a34c3ed0e
7
+ data.tar.gz: a612a2d02f684f847ef6c167d2a3ef9fc815f80c1fd618106c8824017cede188c77dec3700d1a7afd46c481cd3c8fa7c37358af6a9737c1703a68491d159a5b1
@@ -66,7 +66,10 @@ module Kennel
66
66
  data[:type] = "query alert" if data[:type] == "metric alert"
67
67
  when "dashboard"
68
68
  widgets = data[:widgets]&.flat_map { |widget| widget.dig(:definition, :widgets) || [widget] }
69
- widgets&.each { |widget| dry_up_query!(widget) }
69
+ widgets&.each do |widget|
70
+ dry_up_query!(widget)
71
+ (widget.dig(:definition, :markers) || []).each { |m| m[:label]&.delete! " " }
72
+ end
70
73
  end
71
74
 
72
75
  data.delete(:tags) if data[:tags] == [] # do not create super + [] call
@@ -12,8 +12,56 @@ module Kennel
12
12
  style: { line_width: "normal", palette: "dog_classic", line_type: "solid" }
13
13
  }.freeze
14
14
  WIDGET_DEFAULTS = {
15
- "timeseries" => { show_legend: false, legend_size: "0" },
16
- "note" => { background_color: "white", font_size: "14", show_tick: false, tick_edge: "left", tick_pos: "50%", text_align: "left" }
15
+ "timeseries" => {
16
+ legend_size: "0",
17
+ markers: [],
18
+ legend_columns: [
19
+ "avg",
20
+ "min",
21
+ "max",
22
+ "value",
23
+ "sum"
24
+ ],
25
+ legend_layout: "auto",
26
+ yaxis: {
27
+ include_zero: true,
28
+ label: "",
29
+ scale: "linear",
30
+ min: "auto",
31
+ max: "auto"
32
+ },
33
+ show_legend: true,
34
+ time: {},
35
+ title_align: "left",
36
+ title_size: "16"
37
+ },
38
+ "note" => {
39
+ show_tick: false,
40
+ tick_edge: "left",
41
+ tick_pos: "50%",
42
+ text_align: "left",
43
+ has_padding: true,
44
+ background_color: "white",
45
+ font_size: "14"
46
+ },
47
+ "query_value" => {
48
+ autoscale: true,
49
+ time: {},
50
+ title_align: "left",
51
+ title_size: "16"
52
+ },
53
+ "free_text" => {
54
+ font_size: "auto"
55
+ },
56
+ "check_status" => {
57
+ title_align: "left",
58
+ title_size: "16"
59
+ },
60
+ "slo" => {
61
+ global_time_target: "0",
62
+ title_align: "left",
63
+ title_size: "16"
64
+ }
17
65
  }.freeze
18
66
  SUPPORTED_DEFINITION_OPTIONS = [:events, :markers, :precision].freeze
19
67
 
@@ -40,53 +88,43 @@ module Kennel
40
88
  def normalize(expected, actual)
41
89
  super
42
90
 
43
- ignore_default(expected, actual, DEFAULTS)
44
- ignore_default(expected, actual, reflow_type: "auto") if expected[:layout_type] == "ordered"
91
+ ignore_default expected, actual, DEFAULTS
92
+ ignore_default expected, actual, reflow_type: "auto" if expected[:layout_type] == "ordered"
45
93
 
46
94
  widgets_pairs(expected, actual).each do |pair|
47
- # conditional_formats ordering is randomly changed by datadog, compare a stable ordering
48
- pair.each do |widgets|
49
- widgets.each do |widget|
50
- if formats = widget.dig(:definition, :conditional_formats)
51
- widget[:definition][:conditional_formats] = formats.sort_by(&:hash)
52
- end
53
- end
54
- end
55
-
56
- ignore_widget_defaults pair
57
-
95
+ pair.each { |w| sort_conditional_formats w }
96
+ ignore_widget_defaults(*pair)
58
97
  ignore_request_defaults(*pair)
59
-
60
- # ids are kinda random so we always discard them
61
- pair.each { |widgets| widgets.each { |w| w.delete(:id) } }
98
+ pair.each { |widget| widget&.delete(:id) } # ids are kinda random so we always discard them
62
99
  end
63
100
  end
64
101
 
65
102
  private
66
103
 
67
- def ignore_widget_defaults(pair)
68
- pair.map(&:size).max.times do |i|
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)
104
+ # conditional_formats ordering is randomly changed by datadog, compare a stable ordering
105
+ def sort_conditional_formats(widget)
106
+ if formats = widget&.dig(:definition, :conditional_formats)
107
+ widget[:definition][:conditional_formats] = formats.sort_by(&:hash)
73
108
  end
74
109
  end
75
110
 
111
+ def ignore_widget_defaults(expected, actual)
112
+ types = [expected&.dig(:definition, :type), actual&.dig(:definition, :type)].uniq.compact
113
+ return unless types.size == 1
114
+ return unless defaults = WIDGET_DEFAULTS[types.first]
115
+ ignore_default expected&.[](:definition) || {}, actual&.[](:definition) || {}, defaults
116
+ end
117
+
76
118
  # discard styles/conditional_formats/aggregator if nothing would change when we applied (both are default or nil)
77
119
  def ignore_request_defaults(expected, actual)
78
- [expected.size, actual.size].max.times do |i|
79
- a_r = actual.dig(i, :definition, :requests) || []
80
- e_r = expected.dig(i, :definition, :requests) || []
81
- ignore_defaults e_r, a_r, REQUEST_DEFAULTS
82
- end
120
+ a_r = actual&.dig(:definition, :requests) || []
121
+ e_r = expected&.dig(:definition, :requests) || []
122
+ ignore_defaults e_r, a_r, REQUEST_DEFAULTS
83
123
  end
84
124
 
85
- def ignore_defaults(expected, actual, defaults, nesting: nil)
125
+ def ignore_defaults(expected, actual, defaults)
86
126
  [expected.size, actual.size].max.times do |i|
87
- e = expected.dig(i, *nesting) || {}
88
- a = actual.dig(i, *nesting) || {}
89
- ignore_default(e, a, defaults)
127
+ ignore_default expected[i] || {}, actual[i] || {}, defaults
90
128
  end
91
129
  end
92
130
 
@@ -99,7 +137,7 @@ module Kennel
99
137
  nested = pair.map { |d| d.dig(:widgets, i, :definition, :widgets) || [] }
100
138
  result << nested if nested.any?(&:any?)
101
139
  end
102
- result
140
+ result.flat_map { |a, e| [a.size, e.size].max.times.map { |i| [a[i], e[i]] } }
103
141
  end
104
142
  end
105
143
 
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.86.1"
3
+ VERSION = "1.87.1"
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.86.1
4
+ version: 1.87.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-21 00:00:00.000000000 Z
11
+ date: 2021-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday