kennel 1.10.2 → 1.11.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: ac58d80b06095fc1703c9c12c547de0fb43c81e2072c8c2ed4c5b05e4bf53de1
4
- data.tar.gz: feeac0f08078935641310c6b5dfb81409c13242128830e21132903330dfa4494
3
+ metadata.gz: 7f3b1eb54a6d3249228c90e6313b1b014ce75463da52f3bf9a242ab81aa45b84
4
+ data.tar.gz: 1e2650fc9d44b68e91336afea05f711b90bca96bb571be027404ad103d94043b
5
5
  SHA512:
6
- metadata.gz: 16b0fbc19d41c74242999cc33ec63defd1894ae0dfd3aaecf237c1549c485162088c43c16ffc9cf43dc189445c3628fdc5376300617ea6afbdc11148db680a4c
7
- data.tar.gz: 5070cccb9a86e218ee472d41fbe2d195f0826d3aa1c2b393f593f0a05379dd390d0e431655af07c96a298879c0bcc5284d5d2d01280df63178be7e0aa7dfdf2e
6
+ metadata.gz: 603e35948978e66351219b4b34d3ae35ef3d95a48f77a6ebed8fdc167edcba73ebf2be8910779ce62354f2ce34df9a457a882aaef18aac938e58ed6792476482
7
+ data.tar.gz: 37c00fd53b6767e7f49592eb6f46d63e13289bf64fac7dbbb339a22cb12b51f7bddd2d0a685c95968dda972cb0d1e3a4a0c188ad40a7b52a1b92d5ea4298e73b
@@ -95,6 +95,10 @@ module Kennel
95
95
  "#{project.kennel_id}:#{kennel_id}"
96
96
  end
97
97
 
98
+ def to_json
99
+ raise NotImplementedError, "Use as_json"
100
+ end
101
+
98
102
  private
99
103
 
100
104
  # discard styles/conditional_formats/aggregator if nothing would change when we applied (both are default or nil)
@@ -138,30 +138,46 @@ module Kennel
138
138
  def validate_json(data)
139
139
  type = data.fetch(:type)
140
140
 
141
+ # do not allow deprecated type that will be coverted by datadog and then produce a diff
141
142
  if type == "metric alert"
142
143
  invalid! "type 'metric alert' is deprecated, do not set type to use the default 'query alert'"
143
144
  end
144
145
 
146
+ # verify service checks use interger thresholds to avoid diff
145
147
  if type == "service check" && [ok, warning, critical].compact.map(&:class).uniq != [Integer]
146
148
  invalid! ":ok, :warning and :critical must be integers for service check type"
147
149
  end
148
150
 
151
+ # verify query includes critical value
149
152
  if query_value = data.fetch(:query)[/\s*[<>]\s*(\d+(\.\d+)?)\s*$/, 1]
150
153
  if Float(query_value) != Float(data.dig(:options, :thresholds, :critical))
151
154
  invalid! "critical and value used in query must match"
152
155
  end
153
156
  end
154
157
 
158
+ # verify renotify interval is valid
155
159
  unless RENOTIFY_INTERVALS.include? data.dig(:options, :renotify_interval)
156
160
  invalid! "renotify_interval must be one of #{RENOTIFY_INTERVALS.join(", ")}"
157
161
  end
158
162
 
159
- if ["metric alert", "query alert"].include?(type)
163
+ if type == "query alert"
164
+ # verify interval is valud
160
165
  interval = data.fetch(:query)[/\(last_(\S+?)\)/, 1]
161
166
  unless QUERY_INTERVALS.include?(interval)
162
167
  invalid! "query interval was #{interval}, but must be one of #{QUERY_INTERVALS.join(", ")}"
163
168
  end
164
169
  end
170
+
171
+ if ["query alert", "service check"].include?(type) # TODO: most likely more types need this
172
+ # verify is_match uses available variables
173
+ message = data.fetch(:message)
174
+ used = message.scan(/{{\s*#is_match\s*"([a-zA-Z\d_.-]+).name"/).flatten.uniq
175
+ allowed = data.fetch(:query)[/by\s*{([^\}]+)}/, 1].to_s.split(/\s*,\s*/)
176
+ unsupported = used - allowed
177
+ if unsupported.any?
178
+ invalid! "is_match used with unsupported dimensions #{unsupported}, allowed dimensions are #{allowed}"
179
+ end
180
+ end
165
181
  end
166
182
  end
167
183
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.10.2"
3
+ VERSION = "1.11.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.10.2
4
+ version: 1.11.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: 2018-07-21 00:00:00.000000000 Z
11
+ date: 2018-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday