chef-handler-serf 0.0.1 → 0.0.2

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