kennel 1.60.1 → 1.61.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 +4 -4
- data/lib/kennel/models/dashboard.rb +44 -14
- data/lib/kennel/models/record.rb +0 -24
- data/lib/kennel/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b27c8e5ce2f9b7ec5b649d582ff591bd05b2c874fdbf21207db795d3cc5b6c26
|
|
4
|
+
data.tar.gz: a1385e625b05f60d80d9cb5b6ca89a97cd9099187bb24896fee4e1bdcdcf51b3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 32273b702f893078015f99518c2798b3aa30dbd81abc68802ff35765ee489a2a16d0ad5f270c2d824c3d54fd44d4fba48d554486c19683a113f3a9e87f6ce1cd
|
|
7
|
+
data.tar.gz: 0f3c9290832283f5d1ae08865b926e84c7ba34fa8c79ebb01ddad91dad16eb592e54b9e246e432a00d7c2334908180b31cb2d343ce719a75c39b9cb4cf691ce2
|
|
@@ -13,6 +13,7 @@ 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
17
|
SUPPORTED_DEFINITION_OPTIONS = [:events, :markers, :precision].freeze
|
|
17
18
|
|
|
18
19
|
settings :title, :description, :definitions, :widgets, :layout_type
|
|
@@ -32,39 +33,68 @@ module Kennel
|
|
|
32
33
|
def normalize(expected, actual)
|
|
33
34
|
super
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
widgets_pairs(expected, actual).each do |pair|
|
|
36
37
|
# datadog always adds 2 to slo widget height
|
|
37
38
|
# need to check fir layout since some monitors have height/width in their definition
|
|
38
|
-
pair.
|
|
39
|
+
pair[1].each do |widget|
|
|
39
40
|
if widget.dig(:definition, :type) == "slo" && widget.dig(:layout, :height)
|
|
40
41
|
widget[:layout][:height] -= 2
|
|
41
42
|
end
|
|
42
43
|
end
|
|
43
44
|
|
|
44
45
|
# conditional_formats ordering is randomly changed by datadog, compare a stable ordering
|
|
45
|
-
pair.each do |
|
|
46
|
-
|
|
47
|
-
if formats =
|
|
48
|
-
|
|
46
|
+
pair.each do |widgets|
|
|
47
|
+
widgets.each do |widget|
|
|
48
|
+
if formats = widget.dig(:definition, :conditional_formats)
|
|
49
|
+
widget[:definition][:conditional_formats] = formats.sort_by(&:hash)
|
|
49
50
|
end
|
|
50
51
|
end
|
|
51
52
|
end
|
|
52
53
|
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
ignore_definition_defaults_for_type pair, "timeseries", TIMESERIES_DEFAULTS
|
|
55
|
+
|
|
56
|
+
ignore_request_defaults(*pair)
|
|
57
|
+
|
|
58
|
+
# ids are kinda random so we always discard them
|
|
59
|
+
pair.each { |widgets| widgets.each { |w| w.delete(:id) } }
|
|
55
60
|
end
|
|
56
61
|
end
|
|
57
62
|
|
|
58
63
|
private
|
|
59
64
|
|
|
65
|
+
def ignore_definition_defaults_for_type(pair, type, defaults)
|
|
66
|
+
pair.map(&:size).max.times do |i|
|
|
67
|
+
if pair.all? { |w| w.dig(i, :definition, :type) == type }
|
|
68
|
+
ignore_defaults(pair[0], pair[1], defaults, nesting: :definition)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# discard styles/conditional_formats/aggregator if nothing would change when we applied (both are default or nil)
|
|
74
|
+
def ignore_request_defaults(expected, actual)
|
|
75
|
+
[expected.size, actual.size].max.times do |i|
|
|
76
|
+
a_r = actual.dig(i, :definition, :requests) || []
|
|
77
|
+
e_r = expected.dig(i, :definition, :requests) || []
|
|
78
|
+
ignore_defaults e_r, a_r, REQUEST_DEFAULTS
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def ignore_defaults(expected, actual, defaults, nesting: nil)
|
|
83
|
+
[expected.size, actual.size].max.times do |i|
|
|
84
|
+
e = expected.dig(i, *nesting) || {}
|
|
85
|
+
a = actual.dig(i, *nesting) || {}
|
|
86
|
+
ignore_default(e, a, defaults)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
60
90
|
# expand nested widgets into expected/actual pairs for default resolution
|
|
61
|
-
# [a, e] -> [[a, e], [
|
|
62
|
-
def
|
|
63
|
-
result = [pair]
|
|
64
|
-
slots =
|
|
91
|
+
# [a, e] -> [[a-w, e-w], [a-w1-w1, e-w1-w1], ...]
|
|
92
|
+
def widgets_pairs(*pair)
|
|
93
|
+
result = [pair.map { |d| d[:widgets] || [] }]
|
|
94
|
+
slots = result.compact.map(&:size).max.to_i
|
|
65
95
|
slots.times do |i|
|
|
66
|
-
nested = pair.map { |d| d.dig(:widgets, i, :definition) ||
|
|
67
|
-
result << nested if nested.any?
|
|
96
|
+
nested = pair.map { |d| d.dig(:widgets, i, :definition, :widgets) || [] }
|
|
97
|
+
result << nested if nested.any?(&:any?)
|
|
68
98
|
end
|
|
69
99
|
result
|
|
70
100
|
end
|
data/lib/kennel/models/record.rb
CHANGED
|
@@ -6,11 +6,6 @@ module Kennel
|
|
|
6
6
|
READONLY_ATTRIBUTES = [
|
|
7
7
|
:deleted, :id, :created, :created_at, :creator, :org_id, :modified, :modified_at, :api_resource
|
|
8
8
|
].freeze
|
|
9
|
-
REQUEST_DEFAULTS = {
|
|
10
|
-
style: { width: "normal", palette: "dog_classic", type: "solid" },
|
|
11
|
-
conditional_formats: [],
|
|
12
|
-
aggregator: "avg"
|
|
13
|
-
}.freeze
|
|
14
9
|
API_LIST_INCOMPLETE = false
|
|
15
10
|
|
|
16
11
|
settings :id, :kennel_id
|
|
@@ -22,25 +17,6 @@ module Kennel
|
|
|
22
17
|
self::READONLY_ATTRIBUTES.each { |k| actual.delete k }
|
|
23
18
|
end
|
|
24
19
|
|
|
25
|
-
# discard styles/conditional_formats/aggregator if nothing would change when we applied (both are default or nil)
|
|
26
|
-
def ignore_request_defaults(expected, actual, level1, level2)
|
|
27
|
-
actual = actual[level1] || {}
|
|
28
|
-
expected = expected[level1] || {}
|
|
29
|
-
[expected.size.to_i, actual.size.to_i].max.times do |i|
|
|
30
|
-
a_r = actual.dig(i, level2, :requests) || []
|
|
31
|
-
e_r = expected.dig(i, level2, :requests) || []
|
|
32
|
-
ignore_defaults e_r, a_r, self::REQUEST_DEFAULTS
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def ignore_defaults(expected, actual, defaults)
|
|
37
|
-
[expected&.size.to_i, actual&.size.to_i].max.times do |i|
|
|
38
|
-
e = expected[i] || {}
|
|
39
|
-
a = actual[i] || {}
|
|
40
|
-
ignore_default(e, a, defaults)
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
20
|
def ignore_default(expected, actual, defaults)
|
|
45
21
|
definitions = [actual, expected]
|
|
46
22
|
defaults.each do |key, default|
|
data/lib/kennel/version.rb
CHANGED
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.
|
|
4
|
+
version: 1.61.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: 2019-12-
|
|
11
|
+
date: 2019-12-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|