chef 10.16.0 → 10.16.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.
- data/distro/common/html/chef-client.8.html +3 -3
- data/distro/common/html/chef-expander.8.html +3 -3
- data/distro/common/html/chef-expanderctl.8.html +3 -3
- data/distro/common/html/chef-server-webui.8.html +3 -3
- data/distro/common/html/chef-server.8.html +3 -3
- data/distro/common/html/chef-solo.8.html +3 -3
- data/distro/common/html/chef-solr.8.html +3 -3
- data/distro/common/html/knife-bootstrap.1.html +3 -3
- data/distro/common/html/knife-client.1.html +4 -4
- data/distro/common/html/knife-configure.1.html +4 -4
- data/distro/common/html/knife-cookbook-site.1.html +3 -3
- data/distro/common/html/knife-cookbook.1.html +3 -3
- data/distro/common/html/knife-data-bag.1.html +3 -3
- data/distro/common/html/knife-environment.1.html +6 -6
- data/distro/common/html/knife-exec.1.html +4 -4
- data/distro/common/html/knife-index.1.html +4 -4
- data/distro/common/html/knife-node.1.html +4 -4
- data/distro/common/html/knife-role.1.html +6 -6
- data/distro/common/html/knife-search.1.html +3 -3
- data/distro/common/html/knife-ssh.1.html +3 -3
- data/distro/common/html/knife-status.1.html +3 -3
- data/distro/common/html/knife-tag.1.html +3 -3
- data/distro/common/html/knife.1.html +0 -320
- data/distro/common/html/shef.1.html +3 -3
- data/distro/common/man/man1/knife-bootstrap.1 +1 -1
- data/distro/common/man/man1/knife-client.1 +1 -1
- data/distro/common/man/man1/knife-configure.1 +1 -1
- data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
- data/distro/common/man/man1/knife-cookbook.1 +1 -1
- data/distro/common/man/man1/knife-data-bag.1 +1 -1
- data/distro/common/man/man1/knife-environment.1 +1 -1
- data/distro/common/man/man1/knife-exec.1 +1 -1
- data/distro/common/man/man1/knife-index.1 +1 -1
- data/distro/common/man/man1/knife-node.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +1 -1
- data/distro/common/man/man1/knife-search.1 +1 -1
- data/distro/common/man/man1/knife-ssh.1 +1 -1
- data/distro/common/man/man1/knife-status.1 +1 -1
- data/distro/common/man/man1/knife-tag.1 +1 -1
- data/distro/common/man/man1/knife.1 +1 -1
- data/distro/common/man/man1/shef.1 +1 -1
- data/distro/common/man/man8/chef-client.8 +1 -1
- data/distro/common/man/man8/chef-expander.8 +1 -1
- data/distro/common/man/man8/chef-expanderctl.8 +1 -1
- data/distro/common/man/man8/chef-server-webui.8 +1 -1
- data/distro/common/man/man8/chef-server.8 +1 -1
- data/distro/common/man/man8/chef-solo.8 +1 -1
- data/distro/common/man/man8/chef-solr.8 +1 -1
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +6 -0
- data/lib/chef/knife/cookbook_site_install.rb +10 -1
- data/lib/chef/provider/cookbook_file.rb +0 -3
- data/lib/chef/provider/file.rb +21 -4
- data/lib/chef/provider/remote_directory.rb +24 -15
- data/lib/chef/version.rb +1 -1
- data/spec/functional/resource/cookbook_file_spec.rb +51 -0
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +31 -1
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +2 -0
- data/spec/unit/provider/directory_spec.rb +72 -66
- data/spec/unit/provider/file_spec.rb +72 -66
- data/spec/unit/provider/remote_directory_spec.rb +7 -0
- metadata +5 -4
|
@@ -79,6 +79,8 @@ describe Chef::Mixin::EnforceOwnershipAndPermissions do
|
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
it "sets updated_by_last_action on the new resource" do
|
|
82
|
+
@provider.new_resource.owner(0) # CHEF-3557 hack - Set these because we don't for windows
|
|
83
|
+
@provider.new_resource.group(0) # CHEF-3557 hack - Set these because we don't for windows
|
|
82
84
|
@provider.new_resource.should_receive(:updated_by_last_action)
|
|
83
85
|
Chef::FileAccessControl.any_instance.stub(:set_all)
|
|
84
86
|
@provider.run_action(:create)
|
|
@@ -33,74 +33,80 @@ describe Chef::Provider::Directory do
|
|
|
33
33
|
@directory = Chef::Provider::Directory.new(@new_resource, @run_context)
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
36
|
+
context "load_current_resource_attrs", :unix_only do
|
|
37
|
+
it "should load the current resource based on the new resource" do
|
|
38
|
+
File.stub!(:exist?).and_return(true)
|
|
39
|
+
cstats = mock("stats")
|
|
40
|
+
cstats.stub!(:uid).and_return(500)
|
|
41
|
+
cstats.stub!(:gid).and_return(500)
|
|
42
|
+
cstats.stub!(:mode).and_return(0755)
|
|
43
|
+
File.should_receive(:stat).twice.and_return(cstats)
|
|
44
|
+
@directory.load_current_resource
|
|
45
|
+
@directory.current_resource.path.should eql(@new_resource.path)
|
|
46
|
+
@directory.current_resource.owner.should eql(500)
|
|
47
|
+
@directory.current_resource.group.should eql(500)
|
|
48
|
+
@directory.current_resource.mode.should == 00755
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "should create a new directory on create, setting updated to true" do
|
|
52
|
+
@new_resource.path "/tmp/foo"
|
|
53
|
+
|
|
54
|
+
File.should_receive(:exist?).exactly(3).and_return(false)
|
|
55
|
+
Dir.should_receive(:mkdir).with(@new_resource.path).once.and_return(true)
|
|
56
|
+
|
|
57
|
+
@directory.should_receive(:set_all_access_controls)
|
|
58
|
+
@directory.stub!(:update_new_file_state)
|
|
59
|
+
@directory.run_action(:create)
|
|
60
|
+
@directory.new_resource.should be_updated
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "should raise an exception if the parent directory does not exist and recursive is false" do
|
|
64
|
+
@new_resource.path "/tmp/some/dir"
|
|
65
|
+
@new_resource.recursive false
|
|
66
|
+
lambda { @directory.run_action(:create) }.should raise_error(Chef::Exceptions::EnclosingDirectoryDoesNotExist)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "should create a new directory when parent directory does not exist if recursive is true and permissions are correct" do
|
|
70
|
+
@new_resource.path "/path/to/dir"
|
|
71
|
+
@new_resource.recursive true
|
|
72
|
+
File.should_receive(:exist?).with(@new_resource.path).ordered.and_return(false)
|
|
73
|
+
File.should_receive(:exist?).with(@new_resource.path).ordered.and_return(false)
|
|
74
|
+
|
|
75
|
+
File.should_receive(:exist?).with('/path/to').ordered.and_return(false)
|
|
76
|
+
File.should_receive(:exist?).with('/path').ordered.and_return(true)
|
|
77
|
+
File.should_receive(:writable?).with('/path').ordered.and_return(true)
|
|
78
|
+
File.should_receive(:exist?).with(@new_resource.path).ordered.and_return(false)
|
|
79
|
+
|
|
80
|
+
FileUtils.should_receive(:mkdir_p).with(@new_resource.path).and_return(true)
|
|
81
|
+
@directory.should_receive(:set_all_access_controls)
|
|
82
|
+
@directory.stub!(:update_new_file_state)
|
|
83
|
+
@directory.run_action(:create)
|
|
84
|
+
@new_resource.should be_updated
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# it "should raise an error when creating a directory recursively and permissions do not allow creation" do
|
|
88
|
+
|
|
89
|
+
# end
|
|
90
|
+
|
|
91
|
+
it "should raise an error when creating a directory when parent directory is a file" do
|
|
92
|
+
File.should_receive(:directory?).and_return(false)
|
|
93
|
+
Dir.should_not_receive(:mkdir).with(@new_resource.path)
|
|
94
|
+
lambda { @directory.run_action(:create) }.should raise_error(Chef::Exceptions::EnclosingDirectoryDoesNotExist)
|
|
95
|
+
@directory.new_resource.should_not be_updated
|
|
96
|
+
end
|
|
87
97
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
98
|
+
it "should not create the directory if it already exists" do
|
|
99
|
+
stub_file_cstats
|
|
100
|
+
@new_resource.path "/tmp/foo"
|
|
101
|
+
File.should_receive(:exist?).exactly(3).and_return(true)
|
|
102
|
+
Dir.should_not_receive(:mkdir).with(@new_resource.path)
|
|
103
|
+
@directory.should_receive(:set_all_access_controls)
|
|
104
|
+
@directory.run_action(:create)
|
|
105
|
+
end
|
|
95
106
|
end
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
@new_resource.path "/tmp/foo"
|
|
100
|
-
File.should_receive(:exist?).exactly(3).and_return(true)
|
|
101
|
-
Dir.should_not_receive(:mkdir).with(@new_resource.path)
|
|
102
|
-
@directory.should_receive(:set_all_access_controls)
|
|
103
|
-
@directory.run_action(:create)
|
|
107
|
+
|
|
108
|
+
context "load_current_resource_attrs", :windows_only do
|
|
109
|
+
pending "CHEF-3557: Fix implicit resource change collection on Windows"
|
|
104
110
|
end
|
|
105
111
|
|
|
106
112
|
it "should delete the directory if it exists, and is writable with action_delete" do
|
|
@@ -53,76 +53,82 @@ describe Chef::Provider::File do
|
|
|
53
53
|
@provider.current_resource.content.should eql(nil)
|
|
54
54
|
end
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
56
|
+
context "load_current_resource_attrs", :unix_only do
|
|
57
|
+
it "should collect the current state of the file on the filesystem and populate current_resource" do
|
|
58
|
+
# test setup
|
|
59
|
+
stat_struct = mock("::File.stat", :mode => 0600, :uid => 0, :gid => 0, :mtime => 10000)
|
|
60
|
+
::File.should_receive(:stat).exactly(3).with(@resource.path).and_return(stat_struct)
|
|
61
|
+
|
|
62
|
+
# test execution
|
|
63
|
+
@provider.load_current_resource
|
|
64
|
+
|
|
65
|
+
# post-condition checks
|
|
66
|
+
@provider.current_resource.mode.should == 0600
|
|
67
|
+
@provider.current_resource.owner.should == 0
|
|
68
|
+
@provider.current_resource.group.should == 0
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "should NOT update the new_resource state with the current_resourse state if new_resource state is already specified" do
|
|
72
|
+
# test setup
|
|
73
|
+
stat_struct = mock("::File.stat", :mode => 0600, :uid => 0, :gid => 0, :mtime => 10000)
|
|
74
|
+
::File.should_receive(:stat).exactly(3).with(@resource.path).and_return(stat_struct)
|
|
75
|
+
|
|
76
|
+
@provider.new_resource.group(1)
|
|
77
|
+
@provider.new_resource.owner(1)
|
|
78
|
+
@provider.new_resource.mode(0644)
|
|
79
|
+
|
|
80
|
+
# test execution
|
|
81
|
+
@provider.load_current_resource
|
|
82
|
+
|
|
83
|
+
# post-condition checks
|
|
84
|
+
@provider.new_resource.group.should == 1
|
|
85
|
+
@provider.new_resource.owner.should == 1
|
|
86
|
+
@provider.new_resource.mode.should == 0644
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it "should update the new_resource state with the current_resource state if the new_resource state is not specified." do
|
|
90
|
+
# test setup
|
|
91
|
+
stat_struct = mock("::File.stat", :mode => 0600, :uid => 0, :gid => 0, :mtime => 10000)
|
|
92
|
+
::File.should_receive(:stat).exactly(3).with(@resource.path).and_return(stat_struct)
|
|
93
|
+
|
|
94
|
+
@provider.new_resource.group(nil)
|
|
95
|
+
@provider.new_resource.owner(nil)
|
|
96
|
+
@provider.new_resource.mode(nil)
|
|
97
|
+
|
|
98
|
+
# test execution
|
|
99
|
+
@provider.load_current_resource
|
|
100
|
+
|
|
101
|
+
# post-condition checks
|
|
102
|
+
@provider.new_resource.group.should eql(@provider.current_resource.group)
|
|
103
|
+
@provider.new_resource.owner.should eql(@provider.current_resource.owner)
|
|
104
|
+
@provider.new_resource.mode.should eql(@provider.current_resource.mode)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "should update the new_resource when attempting to set the new state" do
|
|
108
|
+
# test setup
|
|
109
|
+
stat_struct = mock("::File.stat", :mode => 0600, :uid => 0, :gid => 0, :mtime => 10000)
|
|
110
|
+
# called once in update_new_file_state and once in checksum
|
|
111
|
+
::File.should_receive(:stat).twice.with(@provider.new_resource.path).and_return(stat_struct)
|
|
112
|
+
::File.should_receive(:directory?).once.with(@provider.new_resource.path).and_return(false)
|
|
113
|
+
|
|
114
|
+
@provider.new_resource.group(nil)
|
|
115
|
+
@provider.new_resource.owner(nil)
|
|
116
|
+
@provider.new_resource.mode(nil)
|
|
117
|
+
|
|
118
|
+
# test exectution
|
|
119
|
+
@provider.update_new_file_state
|
|
120
|
+
|
|
121
|
+
# post-condition checks
|
|
122
|
+
@provider.new_resource.group.should == 0
|
|
123
|
+
@provider.new_resource.owner.should == 0
|
|
124
|
+
@provider.new_resource.mode.should == 0600
|
|
125
|
+
end
|
|
86
126
|
end
|
|
87
127
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
stat_struct = mock("::File.stat", :mode => 0600, :uid => 0, :gid => 0, :mtime => 10000)
|
|
91
|
-
::File.should_receive(:stat).exactly(3).with(@resource.path).and_return(stat_struct)
|
|
92
|
-
|
|
93
|
-
@provider.new_resource.group(nil)
|
|
94
|
-
@provider.new_resource.owner(nil)
|
|
95
|
-
@provider.new_resource.mode(nil)
|
|
96
|
-
|
|
97
|
-
# test execution
|
|
98
|
-
@provider.load_current_resource
|
|
99
|
-
|
|
100
|
-
# post-condition checks
|
|
101
|
-
@provider.new_resource.group.should eql(@provider.current_resource.group)
|
|
102
|
-
@provider.new_resource.owner.should eql(@provider.current_resource.owner)
|
|
103
|
-
@provider.new_resource.mode.should eql(@provider.current_resource.mode)
|
|
128
|
+
context "load_current_resource_attrs", :windows_only do
|
|
129
|
+
pending "CHEF-3557: Fix implicit resource change collection on Windows"
|
|
104
130
|
end
|
|
105
131
|
|
|
106
|
-
it "should update the new_resource when attempting to set the new state" do
|
|
107
|
-
# test setup
|
|
108
|
-
stat_struct = mock("::File.stat", :mode => 0600, :uid => 0, :gid => 0, :mtime => 10000)
|
|
109
|
-
# called once in update_new_file_state and once in checksum
|
|
110
|
-
::File.should_receive(:stat).twice.with(@provider.new_resource.path).and_return(stat_struct)
|
|
111
|
-
::File.should_receive(:directory?).once.with(@provider.new_resource.path).and_return(false)
|
|
112
|
-
|
|
113
|
-
@provider.new_resource.group(nil)
|
|
114
|
-
@provider.new_resource.owner(nil)
|
|
115
|
-
@provider.new_resource.mode(nil)
|
|
116
|
-
|
|
117
|
-
# test exectution
|
|
118
|
-
@provider.update_new_file_state
|
|
119
|
-
|
|
120
|
-
# post-condition checks
|
|
121
|
-
@provider.new_resource.group.should == 0
|
|
122
|
-
@provider.new_resource.owner.should == 0
|
|
123
|
-
@provider.new_resource.mode.should == 0600
|
|
124
|
-
end
|
|
125
|
-
|
|
126
132
|
it "should load a mostly blank current resource if the file specified in new_resource doesn't exist/isn't readable" do
|
|
127
133
|
resource = Chef::Resource::File.new("seattle")
|
|
128
134
|
resource.path(File.expand_path(File.join(CHEF_SPEC_DATA, "templates", "woot.txt")))
|
|
@@ -98,6 +98,13 @@ describe Chef::Provider::RemoteDirectory do
|
|
|
98
98
|
|
|
99
99
|
after {FileUtils.rm_rf(@destination_dir)}
|
|
100
100
|
|
|
101
|
+
# CHEF-3552
|
|
102
|
+
it "creates the toplevel directory without error " do
|
|
103
|
+
@resource.recursive(false)
|
|
104
|
+
@provider.run_action(:create)
|
|
105
|
+
::File.exist?(@destination_dir).should be_true
|
|
106
|
+
end
|
|
107
|
+
|
|
101
108
|
it "transfers the directory with all contents" do
|
|
102
109
|
@provider.run_action(:create)
|
|
103
110
|
::File.exist?(@destination_dir + '/remote_dir_file1.txt').should be_true
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: chef
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 11
|
|
5
5
|
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 10
|
|
8
8
|
- 16
|
|
9
|
-
-
|
|
10
|
-
version: 10.16.
|
|
9
|
+
- 2
|
|
10
|
+
version: 10.16.2
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Adam Jacob
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2012-10-
|
|
18
|
+
date: 2012-10-26 00:00:00 Z
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|
|
21
21
|
name: mixlib-config
|
|
@@ -1383,6 +1383,7 @@ files:
|
|
|
1383
1383
|
- spec/functional/knife/exec_spec.rb
|
|
1384
1384
|
- spec/functional/knife/ssh_spec.rb
|
|
1385
1385
|
- spec/functional/resource/file_spec.rb
|
|
1386
|
+
- spec/functional/resource/cookbook_file_spec.rb
|
|
1386
1387
|
- spec/functional/resource/link_spec.rb
|
|
1387
1388
|
- spec/functional/resource/remote_directory_spec.rb
|
|
1388
1389
|
- spec/functional/resource/template_spec.rb
|