barkdog 0.1.0 → 0.1.1

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
  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