chef-handler-serf 0.0.1 → 0.0.2

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: 26f6546521df001b8bc1294d7184b6feef567edb
4
- data.tar.gz: c717903de3c08ba0f8df2e526f9a4a2c1cca03e6
3
+ metadata.gz: 1a8af9e4bc554192319988cab6e9895c60405c89
4
+ data.tar.gz: 1206048452b98061e6442e8f696273c2ce10d311
5
5
  SHA512:
6
- metadata.gz: 25c8c890b5f7d18f02f513bd8694a9bf58c0d32b8e77a1c957f49f900c8557afaf50f4c4e144d831e50e08a0e1107c3a63ab2e46eb12f50357090f3a763cb8d2
7
- data.tar.gz: 186d4aa3838ce0dd31ffbdbe380ce260685ddd3b1988d52066b9d632a4f8ead58eaaee75150f5b8701c2a268def9ae9251539d8d98102976adca009e5674684d
6
+ metadata.gz: bc65d14ebd4743082c21aa83dede9568b7a93190c3d5721740b872e26a0c640a4ff620b5442d7f5142959c990cb507274e3af7060b47109e2ec764b0c7ebf873
7
+ data.tar.gz: f64286ca22f6c14060321a6023fdb70c325e70250405efdc2e1668017485a3ddc159f225df30f20cadc090ca166a0ffc9e9ac6c23e6fb1f93c18489e85fdb295
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ before_install:
2
+ - bundle install --path .bundle
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1.0
7
+ branches:
8
+ only:
9
+ - master
data/README.md CHANGED
@@ -40,6 +40,17 @@ run
40
40
 
41
41
  ```
42
42
 
43
+ Resource updated events can also be published as serf events using the
44
+ `publish` meta attribute, introduced by _chef-handler-serf_.
45
+
46
+ ```ruby
47
+ template '/etc/haproxy.cfg' do
48
+ publish true
49
+ variables(foo: 'bar')
50
+ notifies :restart, 'service[haproxy]'
51
+ end
52
+ ```
53
+
43
54
 
44
55
  ## Contributing
45
56
 
data/Rakefile CHANGED
@@ -1,2 +1,4 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
2
3
 
4
+ RSpec::Core::RakeTask.new('spec')
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'chef-handler-serf'
7
- spec.version = '0.0.1'
7
+ spec.version = '0.0.2'
8
8
  spec.authors = ['Ranjib Dey']
9
9
  spec.email = ['ranjib@pagerduty.com']
10
10
  spec.summary = %q{Chef event handler for serf}
@@ -19,4 +19,5 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_development_dependency 'bundler', '~> 1.6'
21
21
  spec.add_development_dependency 'rake'
22
+ spec.add_development_dependency 'rspec'
22
23
  end
@@ -1,6 +1,20 @@
1
1
  require 'chef/event_dispatch/base'
2
- require 'serfx'
2
+ require 'chef/resource'
3
3
  require 'chef/json_compat'
4
+ require 'serfx'
5
+
6
+ class Chef
7
+ class Resource
8
+ attr_reader :publish
9
+ def publish(arg=nil)
10
+ set_or_return(
11
+ :publish,
12
+ arg,
13
+ :kind_of => [ TrueClass, FalseClass ]
14
+ )
15
+ end
16
+ end
17
+ end
4
18
 
5
19
  class Chef
6
20
  module EventDispatch
@@ -22,7 +36,7 @@ class Chef
22
36
  end
23
37
 
24
38
  def resource_updated(res, action)
25
- if @publish_all or @subscribe.include?(res.to_s)
39
+ if @publish_all or @subscribe.include?(res.to_s) or res.publish
26
40
  payload = Chef::JSONCompat.to_json(
27
41
  resource: res.to_s,
28
42
  action: action.to_s
@@ -0,0 +1,41 @@
1
+ require 'rspec'
2
+ require 'chef'
3
+ require 'chef/event_dispatch/serf'
4
+
5
+ describe 'serf handler' do
6
+
7
+ it 'should publish an event in serf' do
8
+ conn = double(Serfx::Connection)
9
+ allow(Serfx).to receive(:connect).and_return(conn)
10
+ handler = Chef::EventDispatch::Serf.new
11
+ Chef::Config[:solo] = true
12
+ Chef::Config[:event_handlers] << handler
13
+ client = Chef::Client.new
14
+ client.run_ohai
15
+ client.load_node
16
+ client.build_node
17
+ rc = Chef::RunContext.new(client.node, {}, client.events)
18
+ recipe = Chef::Recipe.new('spec', 'serf', rc)
19
+ recipe.instance_eval do
20
+ execute 'pass' do
21
+ command 'echo HelloWorld'
22
+ publish true
23
+ end
24
+ execute 'fail' do
25
+ command 'echo HelloWorld'
26
+ end
27
+ end
28
+
29
+ runner = Chef::Runner.new(rc)
30
+
31
+ expect(conn).to receive(:event).with(
32
+ 'resource_updated',
33
+ '{"resource":"execute[pass]","action":"run"}'
34
+ )
35
+ expect(conn).to_not receive(:event).with(
36
+ 'resource_updated',
37
+ '{"resource":"execute[fail]","action":"run"}'
38
+ )
39
+ runner.converge
40
+ end
41
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-handler-serf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ranjib Dey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-25 00:00:00.000000000 Z
11
+ date: 2014-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chef
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description: Send serf events from chef run on resource updates
70
84
  email:
71
85
  - ranjib@pagerduty.com
@@ -74,12 +88,14 @@ extensions: []
74
88
  extra_rdoc_files: []
75
89
  files:
76
90
  - ".gitignore"
91
+ - ".travis.yml"
77
92
  - Gemfile
78
93
  - LICENSE
79
94
  - README.md
80
95
  - Rakefile
81
96
  - chef-handler-serf.gemspec
82
97
  - lib/chef/event_dispatch/serf.rb
98
+ - spec/serf_handler_spec.rb
83
99
  homepage: https://github.com/PagerDuty/chef-handler-serf
84
100
  licenses:
85
101
  - Apache