barkdog 0.1.0 → 0.1.1

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: 8eb8ef495351e01eb4686bbc1d73c68529267ae0
4
- data.tar.gz: 69eeda438a1769ddce356e142ff224397b3830b9
3
+ metadata.gz: 0b5e5d649d610c2a18c3e7185cf455c98ef6adcb
4
+ data.tar.gz: 99bb65f4e8e0e695a6adda0e95c8d56f62af6b25
5
5
  SHA512:
6
- metadata.gz: 912452f325a9a745879cb0ca115494967d73cea9c1a460e16101b7fcfc12990d21b7436126206c9575a655769b1936122088fac701bb556bd5a6cf9ed3dfaa59
7
- data.tar.gz: 8fb714af798b001fee0d23ca4c7ea63237b86fd39ffdd3bfc7f615d5ad60712526d6d42869336d2f027a3dc547fcdfa16891d0a0d2e8f550d0fcc86a187ba9c5
6
+ metadata.gz: 8ed8488deaa1d47587baef8eaa428bc96f5531dfae1844edf9da4b0e8ef4da8015b53f5041e00b1d88d65a04ca37cf191e63f3041dd7b45fd768c2b50f58c7cb
7
+ data.tar.gz: 007ec89d86de1ad97fc72e3ec9dfc7ed2189d3288cef44568df6c60b52bfcb878886450e7ef6ca3b60325266056488ed2c052806c39edca34c57f626a4827c76
data/barkdog.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency 'dogapi'
22
22
  spec.add_dependency 'term-ansicolor'
23
+ spec.add_dependency 'diffy'
23
24
 
24
25
  spec.add_development_dependency 'bundler'
25
26
  spec.add_development_dependency 'rake'
data/lib/barkdog.rb CHANGED
@@ -2,6 +2,7 @@ require 'dogapi'
2
2
  require 'logger'
3
3
  require 'singleton'
4
4
  require 'term/ansicolor'
5
+ require 'diffy'
5
6
 
6
7
  module Barkdog; end
7
8
 
@@ -63,7 +63,7 @@ class Barkdog::Client
63
63
  monitor_id = actual_without_id.delete('id')
64
64
 
65
65
  if expected != actual_without_id
66
- updated = @driver.update_monitor(name, expected.merge('id' => monitor_id)) || updated
66
+ updated = @driver.update_monitor(name, expected.merge('id' => monitor_id), actual) || updated
67
67
  end
68
68
 
69
69
  updated
@@ -37,25 +37,28 @@ class Barkdog::Driver
37
37
  updated
38
38
  end
39
39
 
40
- def update_monitor(name, attrs)
40
+ def update_monitor(name, expected, actual)
41
41
  updated = false
42
- log(:info, "Update Monitor: #{name}", :color => :green)
43
42
 
44
- attrs.each do |key, value|
45
- next if key == 'id'
46
- log(:info, " set #{key}=#{value}", :color => :green)
47
- end
43
+ diffy = Diffy::Diff.new(
44
+ Barkdog::DSL::Converter.convert({name => actual}),
45
+ Barkdog::DSL::Converter.convert({name => expected}),
46
+ :diff => "-u"
47
+ )
48
48
 
49
- unless @options[:dry_run]
50
- @dog.update_monitor(
51
- attrs['id'],
52
- attrs['query'],
53
- :name => name,
54
- :message => attrs['message'],
55
- :options => attrs['options']
56
- )
57
-
58
- updated = true
49
+ if diffy.diff.size > 0
50
+ log(:info, "Update Monitor: #{name}", :color => :cyan)
51
+ log(:info, diffy.to_s(:color), :color => false )
52
+ unless @options[:dry_run]
53
+ @dog.update_monitor(
54
+ expected['id'],
55
+ expected['query'],
56
+ :name => name,
57
+ :message => expected['message'],
58
+ :options => expected['options']
59
+ )
60
+ updated = true
61
+ end
59
62
  end
60
63
 
61
64
  updated
@@ -51,17 +51,16 @@ end
51
51
  def output_monitor_options(monitor_options)
52
52
  options_body = monitor_options.map {|key, value|
53
53
  value_is_hash = value.is_a?(Hash)
54
- value = value.inspect
55
54
 
56
55
  if value_is_hash
57
- value = unbrace(value).strip
56
+ value = value.map{ |k,v| "#{k.inspect}=>#{v.inspect}" }.sort.join(", ")
58
57
  value = value.empty? ? '({})' : " #{value}"
59
58
  else
60
- value = " #{value}"
59
+ value = " #{value.inspect}"
61
60
  end
62
61
 
63
62
  "#{key}#{value}"
64
- }.join("\n ")
63
+ }.sort.join("\n ")
65
64
 
66
65
  <<-RUBY.chomp
67
66
  options do
@@ -1,3 +1,3 @@
1
1
  module Barkdog
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
data/spec/barkdog_spec.rb CHANGED
@@ -7,9 +7,9 @@ monitor "my metric check", :type=>"metric alert" do
7
7
  query "avg(last_5m):avg:datadog.dogstatsd.packet.count{*} > 1"
8
8
  message "metric check message"
9
9
  options do
10
- notify_no_data false
11
10
  no_data_timeframe 2
12
11
  notify_audit false
12
+ notify_no_data false
13
13
  silenced({})
14
14
  end
15
15
  end
@@ -18,14 +18,14 @@ monitor "my service check", :type=>"service check" do
18
18
  query "\"datadog.agent.up\".over(\"*\").last(2).count_by_status()"
19
19
  message "service check message"
20
20
  options do
21
+ no_data_timeframe 2
21
22
  notify_audit false
22
- timeout_h 0
23
- silenced({})
24
- thresholds "warning"=>1, "ok"=>1, "critical"=>1
25
- period 15
26
23
  notify_no_data true
24
+ period 15
27
25
  renotify_interval 0
28
- no_data_timeframe 2
26
+ silenced({})
27
+ thresholds "critical"=>1, "ok"=>1, "warning"=>1
28
+ timeout_h 0
29
29
  end
30
30
  end
31
31
  RUBY
@@ -50,9 +50,9 @@ monitor "my metric check", :type=>"metric alert" do
50
50
  query "avg(last_5m):avg:datadog.dogstatsd.packet.count{*} > 2"
51
51
  message "metric check message2"
52
52
  options do
53
- notify_no_data true
54
53
  no_data_timeframe 3
55
54
  notify_audit true
55
+ notify_no_data true
56
56
  silenced "*"=>nil
57
57
  end
58
58
  end
@@ -61,14 +61,14 @@ monitor "my service check", :type=>"service check" do
61
61
  query "\"datadog.agent.up\".over(\"*\").last(3).count_by_status()"
62
62
  message "service check message2"
63
63
  options do
64
+ no_data_timeframe 3
64
65
  notify_audit true
65
- timeout_h 1
66
- silenced "*"=>nil
67
- thresholds "warning"=>2, "ok"=>2, "critical"=>2
68
- period 30
69
66
  notify_no_data true
67
+ period 30
70
68
  renotify_interval 1
71
- no_data_timeframe 3
69
+ silenced "*"=>nil
70
+ thresholds "critical"=>2, "ok"=>2, "warning"=>2
71
+ timeout_h 1
72
72
  end
73
73
  end
74
74
  RUBY
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.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-31 00:00:00.000000000 Z
11
+ date: 2015-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dogapi
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: diffy
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement