barkdog 0.1.7 → 0.1.8

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
  SHA1:
3
- metadata.gz: 3ad96f41f70527e373b9a3692bd958719dd8c252
4
- data.tar.gz: 88506b2d709e7b35f051cc56f9632578e0626f70
3
+ metadata.gz: 664faf09036f76de878c2740b01aba796d7bfc04
4
+ data.tar.gz: 86e38039a21ecca783b6cb8a8e78541844830190
5
5
  SHA512:
6
- metadata.gz: b5dd8b5e4961137354df664f063c0de173301d6f4f8a920a3499c4798ae135482e9638aa143d3ccca2b3c451b408692998bf4404951e7c8670edc7029677e779
7
- data.tar.gz: d27eb6b936e21369ae4766f9d7ceb1e8ad7b122797785af2c2bd877618945da4b7f6a21d2402d77811b4327c67ceffcf4f330ecd14429bd1fa4b7c5893840fa2
6
+ metadata.gz: 4451cb38fdeffd9c21b7fcdfa96026a69708fe0d985c04877c0e3fef7c5d8e33e086d1804d032842488e856deec9bbf4d955dac074323a06ce8845da6e7717a8
7
+ data.tar.gz: 8a73bf98f571b4768a48f515f4ca57f7006948324126ec55c2d71807d33dd3b2f7781300157ee7b9e46fecdfa38a2a5891a37ff12b041feff7779d9380901738
data/README.md CHANGED
@@ -53,8 +53,10 @@ Usage: barkdog [options]
53
53
  -o, --output FILE
54
54
  --no-color
55
55
  --no-delete
56
+ --delete-only-tagged TAG
56
57
  --debug
57
58
  --datadog-timeout TIMEOUT
59
+ --fail-if-empty
58
60
  -h, --help
59
61
  ```
60
62
 
@@ -64,6 +66,7 @@ Usage: barkdog [options]
64
66
  monitor "Check load avg", :type=>"metric alert" do
65
67
  query "avg(last_5m):avg:ddstat.load_avg.1m{host:i-XXXXXXXX} > 1"
66
68
  message "@winebarrel@example.net"
69
+ tags ["load", "host", "example"]
67
70
  options do
68
71
  locked false
69
72
  new_host_delay 300
@@ -23,7 +23,8 @@ options = {
23
23
  :ignore_silenced => false,
24
24
  :color => true,
25
25
  :debug => false,
26
- :datadog_timeout => nil
26
+ :datadog_timeout => nil,
27
+ :fail_if_empty => false
27
28
  }
28
29
 
29
30
  ARGV.options do |opt|
@@ -38,8 +39,10 @@ ARGV.options do |opt|
38
39
  opt.on('-o', '--output FILE') {|v| output_file = v }
39
40
  opt.on('' , '--no-color') { options[:color] = false }
40
41
  opt.on('' , '--no-delete') { options[:no_delete] = true }
42
+ opt.on('' , '--delete-only-tagged TAG') {|v| options[:delete_tagged] = v }
41
43
  opt.on('' , '--debug') { options[:debug] = true }
42
44
  opt.on('' , '--datadog-timeout TIMEOUT') {|v| options[:datadog_timeout] = v.to_i }
45
+ opt.on('' , '--fail-if-empty') { options[:fail_if_empty] = false }
43
46
 
44
47
  opt.on('-h', '--help') do
45
48
  puts opt.help
@@ -28,6 +28,9 @@ class Barkdog::Client
28
28
  def walk(file)
29
29
  expected = load_file(file)
30
30
  actual = Barkdog::Exporter.export(@dog, @options)
31
+ if actual.empty? && @options[:fail_if_empty]
32
+ raise 'Zero existing monitors reported, failing as --fail-if-empty is set'
33
+ end
31
34
  walk_monitors(expected, actual)
32
35
  end
33
36
 
@@ -14,13 +14,16 @@ class Barkdog::Driver
14
14
  attrs['options'].delete('silenced')
15
15
  end
16
16
 
17
+ tags = attrs['tags'] || []
18
+
17
19
  unless @options[:dry_run]
18
20
  _, response = @dog.monitor(
19
21
  attrs['type'],
20
22
  attrs['query'],
21
23
  :name => name,
22
24
  :message => attrs['message'],
23
- :options => attrs['options']
25
+ :options => attrs['options'],
26
+ :tags => tags
24
27
  )
25
28
 
26
29
  validate_response(response)
@@ -33,6 +36,11 @@ class Barkdog::Driver
33
36
  def delete_monitor(name, attrs)
34
37
  return false if @options[:no_delete]
35
38
 
39
+ # If restricting deletions to a tag, validate the tag
40
+ if @options[:delete_tagged]
41
+ return false unless attrs['tags'].include?(@options[:delete_tagged])
42
+ end
43
+
36
44
  updated = false
37
45
  log(:info, "Delete Monitor: #{name}", :color => :red)
38
46
 
@@ -69,7 +77,8 @@ class Barkdog::Driver
69
77
  expected['query'],
70
78
  :name => name,
71
79
  :message => expected['message'],
72
- :options => expected['options']
80
+ :options => expected['options'],
81
+ :tags => expected['tags']
73
82
  )
74
83
 
75
84
  validate_response(response)
@@ -20,6 +20,10 @@ class Barkdog::DSL::Context::Monitor
20
20
  @result['message'] = value.to_s
21
21
  end
22
22
 
23
+ def tags(value)
24
+ @result['tags'] = value.to_a
25
+ end
26
+
23
27
  def options(&block)
24
28
  @result['options'] = Barkdog::DSL::Context::Monitor::Options.new(@context, &block).result
25
29
  end
@@ -25,6 +25,7 @@ class Barkdog::DSL::Converter
25
25
  fixed_options = Hash[Barkdog::FIXED_OPTION_KEYS.map {|k| [k.to_sym, attrs[k]] }]
26
26
  query = attrs['query']
27
27
  message = attrs['message']
28
+ tags = attrs['tags'] || []
28
29
  monitor_options = attrs['options'] || {}
29
30
 
30
31
  if monitor_options.empty?
@@ -33,10 +34,17 @@ class Barkdog::DSL::Converter
33
34
  monitor_options = "\n" + output_monitor_options(monitor_options)
34
35
  end
35
36
 
37
+ if tags.empty?
38
+ tags_output = ''
39
+ else
40
+ tags_output = "\n tags #{tags.inspect}"
41
+ end
42
+
36
43
  <<-EOS
37
44
  monitor #{monitor_name.inspect}, #{unbrace(fixed_options.inspect)} do
38
45
  query #{query.inspect}
39
46
  message #{message.inspect}#{
47
+ tags_output}#{
40
48
  monitor_options}
41
49
  end
42
50
  EOS
@@ -1,3 +1,3 @@
1
1
  module Barkdog
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.8'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: barkdog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-20 00:00:00.000000000 Z
11
+ date: 2017-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dogapi
@@ -177,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
177
  version: '0'
178
178
  requirements: []
179
179
  rubyforge_project:
180
- rubygems_version: 2.5.1
180
+ rubygems_version: 2.5.2
181
181
  signing_key:
182
182
  specification_version: 4
183
183
  summary: Barkdog is a tool to manage Datadog monitors.