barkdog 0.1.7 → 0.1.8
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/README.md +3 -0
- data/bin/barkdog +4 -1
- data/lib/barkdog/client.rb +3 -0
- data/lib/barkdog/driver.rb +11 -2
- data/lib/barkdog/dsl/context/monitor.rb +4 -0
- data/lib/barkdog/dsl/converter.rb +8 -0
- data/lib/barkdog/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 664faf09036f76de878c2740b01aba796d7bfc04
|
4
|
+
data.tar.gz: 86e38039a21ecca783b6cb8a8e78541844830190
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/bin/barkdog
CHANGED
@@ -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
|
data/lib/barkdog/client.rb
CHANGED
@@ -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
|
|
data/lib/barkdog/driver.rb
CHANGED
@@ -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
|
data/lib/barkdog/version.rb
CHANGED
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.
|
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:
|
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.
|
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.
|