chef-rewind 0.0.7 → 0.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cefbbaa69a7831ac60f9c606e878059e7f2608dc
4
+ data.tar.gz: 2a4f1030ac29fac1a99648ba1adb0b6cb29ec53e
5
+ SHA512:
6
+ metadata.gz: c5054f2756825cb8eb289b35d93b1759699dfb801797eba165de52ce56e6955ce2394d26b9c5094c00e24090af6f15698d3c15cb56242ac65a40a6f022650cf7
7
+ data.tar.gz: 4e60f6920312e2e226fbfd52c8860b06504cf82155f207ad762bdbb2cca8ba70db5432f6e1e698fb964707edb287b60e751ca51f2d77cd22adc5fd1153793097
data/CHANGELOG CHANGED
@@ -1,18 +1,21 @@
1
- Hugo Lopes Tavares: Allow unwinding resources
2
- Peter Fern: Allow rewinding recipe_name
3
- Peter Fern: Shef extensions have moved in 11.x, add compatible require
4
- Peter Fern: Change deprecated Gemfile source `:rubygems` to `https://rubygems.org`
5
- aabes: Update README.md
6
- Bryan Berry: now with rspec tests using chef's spec_helper
7
- Bryan Berry: rename to chef-rewind
8
- Bryan Berry: use set_and_return for Chef::Resource.cookbook_name
9
- Bryan Berry: update readme
10
- Bryan Berry: revert earlier commit that sets cookbook_name
11
- Bryan Berry: update readme
12
- Bryan Berry: set cookbook_name to current cookbook at time of editing
13
- Bryan Berry: don't create nonexistent resources
14
- Nathen Harvey: Add recipe file name to the README
15
- Bryan Berry: add note that need `chef_gem` to install it
16
- Bryan Berry: update readme
17
- Bryan Berry: set version #
18
- Bryan Berry: initial commit
1
+ Merge pull request #13 from yipit-cookbooks/bugfix-unwind
2
+ bump version for release
3
+ Merge pull request #12 from yipit-cookbooks/unwind
4
+ bump version for 0.0.6 release
5
+ Merge pull request #7 from pdf/rubygems_deprecation
6
+ Merge pull request #8 from pdf/chef_11_compat
7
+ Merge pull request #9 from pdf/rewind_recipe_name
8
+ Merge pull request #4 from aabes/master
9
+ now with rspec tests using chef's spec_helper
10
+ rename to chef-rewind
11
+ use set_and_return for Chef::Resource.cookbook_name
12
+ update readme
13
+ revert earlier commit that sets cookbook_name
14
+ update readme
15
+ set cookbook_name to current cookbook at time of editing
16
+ Merge pull request #1 from nathenharvey/patch-1
17
+ don't create nonexistent resources
18
+ add note that need `chef_gem` to install it
19
+ update readme
20
+ set version #
21
+ initial commit
@@ -12,5 +12,5 @@ Gem::Specification.new do |gem|
12
12
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
13
  gem.name = "chef-rewind"
14
14
  gem.require_paths = ["lib"]
15
- gem.version = "0.0.7"
15
+ gem.version = "0.0.8"
16
16
  end
@@ -72,7 +72,13 @@ class Chef
72
72
 
73
73
  # assumes `resource_id` is the same as `Chef::Resource#to_s`
74
74
  @resources.delete_if {|r| r.to_s == resource_id }
75
+ resource_index_value = @resources_by_name[resource_id]
76
+ @resources_by_name.each do |k, v|
77
+ @resources_by_name[k] = v - 1 if v > resource_index_value
78
+ end
79
+
75
80
  @resources_by_name.delete resource_id
81
+
76
82
  end
77
83
  end
78
84
  end
@@ -0,0 +1,21 @@
1
+ class Chef
2
+ class Provider
3
+ class Cat < Chef::Provider
4
+ class CatError < RuntimeError
5
+ end
6
+
7
+ def load_current_resource
8
+ true
9
+ end
10
+
11
+ def action_sell
12
+ true
13
+ end
14
+
15
+ def action_blowup
16
+ raise CatError, "CAT BLOWUP"
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,13 @@
1
+ class Chef
2
+ class Provider
3
+ class ZenMaster < Chef::Provider
4
+ def load_current_resource
5
+ true
6
+ end
7
+
8
+ def action_change
9
+ true
10
+ end
11
+ end
12
+ end
13
+ end
@@ -19,13 +19,11 @@
19
19
  class Chef
20
20
  class Resource
21
21
  class Cat < Chef::Resource
22
-
23
- attr_accessor :action
24
-
25
22
  def initialize(name, run_context=nil)
26
23
  @resource_name = :cat
27
24
  super
28
- @action = "sell"
25
+ @action = :nothing
26
+ @allowed_actions = [:nothing, :sell, :blowup]
29
27
  end
30
28
 
31
29
  def pretty_kitty(arg=nil)
@@ -27,12 +27,18 @@ class Chef
27
27
  def initialize(name, run_context=nil)
28
28
  @resource_name = :zen_master
29
29
  super
30
+ @action = :nothing
31
+ @allowed_actions = [:change, :nothing]
30
32
  end
31
33
 
32
34
  def peace(tf)
33
35
  @peace = tf
34
36
  end
35
37
 
38
+ def updated_by_last_action?
39
+ true
40
+ end
41
+
36
42
  def something(arg=nil)
37
43
  set_if_args(@something, arg) do
38
44
  case arg
@@ -2,17 +2,21 @@ require 'spec_helper'
2
2
  require 'chef/rewind'
3
3
 
4
4
  describe Chef::Recipe do
5
-
5
+
6
6
  before(:each) do
7
7
  @cookbook_repo = File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "cookbooks"))
8
8
  cl = Chef::CookbookLoader.new(@cookbook_repo)
9
9
  cl.load_cookbooks
10
10
  @cookbook_collection = Chef::CookbookCollection.new(cl)
11
11
  @node = Chef::Node.new
12
+ @node.name "latte"
13
+ @node.automatic[:platform] = "mac_os_x"
14
+ @node.automatic[:platform_version] = "10.5.1"
12
15
  @node.normal[:tags] = Array.new
13
16
  @events = Chef::EventDispatch::Dispatcher.new
14
17
  @run_context = Chef::RunContext.new(@node, @cookbook_collection, @events)
15
18
  @recipe = Chef::Recipe.new("hjk", "test", @run_context)
19
+ @runner = Chef::Runner.new(@run_context)
16
20
  end
17
21
 
18
22
 
@@ -21,15 +25,38 @@ describe Chef::Recipe do
21
25
  @recipe.zen_master "foobar" do
22
26
  peace false
23
27
  end
24
-
28
+
25
29
  @recipe.unwind "zen_master[foobar]"
26
30
 
27
31
  resources = @run_context.resource_collection.all_resources
28
32
  resources.length.should == 0
29
33
  end
30
34
 
35
+ it "should define resource completely when unwind is called" do
36
+ @recipe.zen_master "foo" do
37
+ action :nothing
38
+ peace false
39
+ end
40
+ @recipe.cat "blanket" do
41
+ end
42
+ @recipe.zen_master "bar" do
43
+ action :nothing
44
+ peace false
45
+ end
46
+
47
+ @recipe.unwind "zen_master[foo]"
48
+
49
+ @recipe.zen_master "foobar" do
50
+ peace true
51
+ action :change
52
+ notifies :blowup, "cat[blanket]"
53
+ end
54
+
55
+ lambda { @runner.converge }.should raise_error(Chef::Provider::Cat::CatError)
56
+ end
57
+
31
58
  it "should throw an error when unwinding a nonexistent resource" do
32
- lambda do
59
+ lambda do
33
60
  @recipe.unwind "zen_master[foobar]"
34
61
  end.should raise_error(Chef::Exceptions::ResourceNotFound)
35
62
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-rewind
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
5
- prerelease:
4
+ version: 0.0.8
6
5
  platform: ruby
7
6
  authors:
8
7
  - Bryan Berry
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-10-14 00:00:00.000000000 Z
11
+ date: 2013-12-04 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: Monkey patches Chef to allow rewinding and unwinding of existing resources
15
14
  email:
@@ -56,8 +55,10 @@ files:
56
55
  - spec/rewind_resource_spec.rb
57
56
  - spec/spec_helper.rb
58
57
  - spec/support/chef_helpers.rb
58
+ - spec/support/lib/chef/provider/cat.rb
59
59
  - spec/support/lib/chef/provider/easy.rb
60
60
  - spec/support/lib/chef/provider/snakeoil.rb
61
+ - spec/support/lib/chef/provider/zen_master.rb
61
62
  - spec/support/lib/chef/resource/cat.rb
62
63
  - spec/support/lib/chef/resource/one_two_three_four.rb
63
64
  - spec/support/lib/chef/resource/zen_master.rb
@@ -76,27 +77,26 @@ files:
76
77
  - spec/unwind_recipe_spec.rb
77
78
  homepage: ''
78
79
  licenses: []
80
+ metadata: {}
79
81
  post_install_message:
80
82
  rdoc_options: []
81
83
  require_paths:
82
84
  - lib
83
85
  required_ruby_version: !ruby/object:Gem::Requirement
84
- none: false
85
86
  requirements:
86
- - - ! '>='
87
+ - - '>='
87
88
  - !ruby/object:Gem::Version
88
89
  version: '0'
89
90
  required_rubygems_version: !ruby/object:Gem::Requirement
90
- none: false
91
91
  requirements:
92
- - - ! '>='
92
+ - - '>='
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0'
95
95
  requirements: []
96
96
  rubyforge_project:
97
- rubygems_version: 1.8.25
97
+ rubygems_version: 2.0.14
98
98
  signing_key:
99
- specification_version: 3
99
+ specification_version: 4
100
100
  summary: Monkey patches Chef to allow rewinding and unwinding of existing resources
101
101
  test_files:
102
102
  - spec/data/cookbooks/angrybash/recipes/default.rb
@@ -129,8 +129,10 @@ test_files:
129
129
  - spec/rewind_resource_spec.rb
130
130
  - spec/spec_helper.rb
131
131
  - spec/support/chef_helpers.rb
132
+ - spec/support/lib/chef/provider/cat.rb
132
133
  - spec/support/lib/chef/provider/easy.rb
133
134
  - spec/support/lib/chef/provider/snakeoil.rb
135
+ - spec/support/lib/chef/provider/zen_master.rb
134
136
  - spec/support/lib/chef/resource/cat.rb
135
137
  - spec/support/lib/chef/resource/one_two_three_four.rb
136
138
  - spec/support/lib/chef/resource/zen_master.rb