kennel 1.44.3 → 1.45.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: 82488fef0ae45c53bb50527a0c4b2f8505e7351b92ac93da52ad55116a24cb05
4
- data.tar.gz: 1f37533c21b572a27156970599c47e4be9de463145c45ebfc2ec2d0b0f10eea8
3
+ metadata.gz: ee0eb25c1eeee5339b2c15799af781497ff2b3725c81232ec022e875c8a74662
4
+ data.tar.gz: df97a57586b6a096c1a08a6c97eb3dc6af45ff9915d3bb611d943dc9a4388b33
5
5
  SHA512:
6
- metadata.gz: d92161b6b85b7a3f248e8419211f4c6ec135e7bd94d09cf3307d99682c711cc4fd6f1ec08bdc6c14853d33deaefe3f25ac7d339e858939cba78d698e8a6b0c5f
7
- data.tar.gz: 55c31707217384ee4c182ceab20015f6685854a864a0aad4dcb794b298905732d8e3bfc2c863c27aff68e4a661a46bd02e7f25610a68edb760bb4a434972fd95
6
+ metadata.gz: ac7738e1a4b05d806829f61a5f7ecda1b46d148d73247af9a161a976e7c7a35d5086ccef49c24da35b973bb2a13fef51523edda741733521f3ef79889d40157d
7
+ data.tar.gz: 66d620fe6f03d72cf5cf7d4b6a122941e761c1906a0dd8cbbada22dd7fdb8387476a374da3dfa92d59a06c5bacb83322ea4f9a3b643c4d6c711b54610becb7aa
data/Readme.md CHANGED
@@ -167,7 +167,7 @@ To link to existing monitors via their kennel_id
167
167
  - figure out project name by converting the class name to snake-case
168
168
  - run `PROJECT=foo bundle exec rake kennel:update_datadog` to test changes for a single project
169
169
 
170
- ### Listing umuted alerts
170
+ ### Listing un-muted alerts
171
171
 
172
172
  Run `rake kennel:alerts TAG=service:my-service` to see all un-muted alerts for a given datadog monitor tag.
173
173
 
@@ -21,7 +21,6 @@ require "kennel/models/base"
21
21
  require "kennel/models/monitor"
22
22
  require "kennel/models/dash"
23
23
  require "kennel/models/dashboard"
24
- require "kennel/models/screen"
25
24
 
26
25
  # settings
27
26
  require "kennel/models/project"
@@ -123,7 +123,6 @@ module Kennel
123
123
  Utils.parallel(api_resources.compact.uniq) do |api_resource|
124
124
  results = @api.list(api_resource, with_downtimes: false) # lookup monitors without adding unnecessary downtime information
125
125
  results = results[results.keys.first] if results.is_a?(Hash) # dashes/screens are nested in {dash: {}}
126
- results.each { |r| r[:id] = Integer(r[:id]) if r[:id] =~ /\A\d+\z/ } # screen ids are integers as strings
127
126
  results.each { |c| c[:api_resource] = api_resource } # store api resource for later diffing
128
127
  end.flatten(1)
129
128
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.44.3"
3
+ VERSION = "1.45.0"
4
4
  end
@@ -149,7 +149,7 @@ To link to existing monitors via their kennel_id
149
149
  - figure out project name by converting the class name to snake-case
150
150
  - run `PROJECT=foo bundle exec rake kennel:update_datadog` to test changes for a single project
151
151
 
152
- ### Listing umuted alerts
152
+ ### Listing un-muted alerts
153
153
 
154
154
  Run `rake kennel:alerts TAG=service:my-service` to see all un-muted alerts for a given datadog monitor tag.
155
155
 
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.44.3
4
+ version: 1.45.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-08-01 00:00:00.000000000 Z
11
+ date: 2019-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -69,7 +69,6 @@ files:
69
69
  - lib/kennel/models/dashboard.rb
70
70
  - lib/kennel/models/monitor.rb
71
71
  - lib/kennel/models/project.rb
72
- - lib/kennel/models/screen.rb
73
72
  - lib/kennel/models/team.rb
74
73
  - lib/kennel/optional_validations.rb
75
74
  - lib/kennel/progress.rb
@@ -1,173 +0,0 @@
1
- # frozen_string_literal: true
2
- module Kennel
3
- module Models
4
- class Screen < Base
5
- include TemplateVariables
6
- include OptionalValidations
7
-
8
- API_LIST_INCOMPLETE = true
9
- COPIED_WIDGET_VALUES = [:board_id, :isShared].freeze
10
- WIDGET_DEFAULTS = {
11
- time: {},
12
- timeframe: "1h"
13
- }.freeze
14
- READONLY_ATTRIBUTES = (Base::READONLY_ATTRIBUTES + [
15
- :disableCog,
16
- :disableEditing,
17
- :isIntegration,
18
- :isShared,
19
- :original_title,
20
- :read_only,
21
- :resource,
22
- :title,
23
- :title_edited,
24
- :created_by,
25
- :board_bgtype,
26
- :height,
27
- :width,
28
- :showGlobalTimeOnboarding,
29
- :originalHeight,
30
- :originalWidth,
31
- :new_id
32
- ]).freeze
33
- SCREEN_DEFAULTS = { template_variables: [] }.freeze
34
-
35
- settings :id, :board_title, :description, :widgets, :kennel_id
36
-
37
- defaults(
38
- description: -> { "" },
39
- widgets: -> { [] },
40
- id: -> { nil }
41
- )
42
-
43
- attr_reader :project
44
-
45
- def initialize(project, *args)
46
- @project = project
47
- super(*args)
48
- end
49
-
50
- def self.api_resource
51
- "screen"
52
- end
53
-
54
- def as_json
55
- return @json if @json
56
- @json = {
57
- id: id,
58
- board_title: "#{board_title}#{LOCK}",
59
- description: description,
60
- widgets: render_widgets,
61
- template_variables: render_template_variables
62
- }
63
-
64
- validate_json(@json) if validate
65
-
66
- @json
67
- end
68
-
69
- def self.normalize(expected, actual)
70
- super
71
-
72
- (actual[:widgets] || []).each do |w|
73
- # api randomly returns time.live_span or timeframe or empty time hash
74
- if w.dig(:time, :live_span)
75
- w[:timeframe] = w[:time].delete(:live_span)
76
- end
77
-
78
- COPIED_WIDGET_VALUES.each { |v| w.delete v }
79
- end
80
-
81
- ignore_default expected, actual, SCREEN_DEFAULTS
82
- ignore_defaults expected[:widgets], actual[:widgets], WIDGET_DEFAULTS
83
- ignore_request_defaults expected, actual, :widgets, :tile_def
84
- end
85
-
86
- def url(id)
87
- Utils.path_to_url "/screen/#{id}"
88
- end
89
-
90
- def resolve_linked_tracking_ids(id_map)
91
- as_json[:widgets].each do |widget|
92
- case widget[:type]
93
- when "uptime"
94
- resolve_link(widget, [:monitor, :id], id_map)
95
- when "alert_graph"
96
- resolve_link(widget, [:alert_id], id_map)
97
- end
98
- end
99
- end
100
-
101
- private
102
-
103
- def validate_json(data)
104
- super
105
-
106
- # check for fields that are unsettable
107
- data[:widgets].each do |w|
108
- COPIED_WIDGET_VALUES.each do |ignored|
109
- if w.key?(ignored)
110
- invalid! "remove definition #{ignored}, it is unsettable and will always produce a diff"
111
- end
112
- end
113
- end
114
- end
115
-
116
- def render_widgets
117
- widgets.map do |widget|
118
- widget = widget_defaults(widget[:type]).merge(widget)
119
- if tile = widget[:tile_def]
120
- tile[:autoscale] = true unless widget[:tile_def].key?(:autoscale) # TODO: use ignore_default
121
- end
122
- widget
123
- end
124
- end
125
-
126
- def widget_defaults(type)
127
- basics = {
128
- title_size: 16,
129
- title_align: "left",
130
- height: 20,
131
- width: 30
132
- }
133
-
134
- custom =
135
- case type
136
- when "free_text"
137
- {
138
- font_size: "auto",
139
- text_align: "left",
140
- title_text: "",
141
- title: true,
142
- color: "#4d4d4d"
143
- }
144
- when "timeseries"
145
- {
146
- title: true,
147
- legend: false,
148
- legend_size: "0"
149
- }
150
- else
151
- {}
152
- end
153
-
154
- basics.merge(custom)
155
- end
156
-
157
- def resolve_link(widget, key, id_map)
158
- id = widget.dig(*key)
159
- return unless tracking_id?(id)
160
-
161
- *id_path, id_key = key
162
- monitor_path = (id_path.empty? ? widget : widget.dig(*id_path))
163
- monitor_path[id_key] =
164
- id_map[id] ||
165
- Kennel.err.puts("Unable to find #{id} in existing monitors (they need to be created first to link them)")
166
- end
167
-
168
- def tracking_id?(id)
169
- id.is_a?(String) && !id.match?(/\A\d+\z/)
170
- end
171
- end
172
- end
173
- end