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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "KNIFE\-COOKBOOK" "1" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "KNIFE\-COOKBOOK" "1" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBknife\-cookbook\fR \- upload and manage chef cookbooks
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "KNIFE\-DATA\-BAG" "1" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "KNIFE\-DATA\-BAG" "1" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBknife\-data\-bag\fR \- Store arbitrary data on a Chef Server
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "KNIFE\-ENVIRONMENT" "1" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "KNIFE\-ENVIRONMENT" "1" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBknife\-environment\fR \- Define cookbook policies for the environments in your infrastructure
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "KNIFE\-EXEC" "1" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "KNIFE\-EXEC" "1" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBknife\-exec\fR \- Run user scripts using the Chef API DSL
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "KNIFE\-INDEX" "1" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "KNIFE\-INDEX" "1" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBknife\-index\fR \- Rebuild the search index on a Chef Server
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "KNIFE\-NODE" "1" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "KNIFE\-NODE" "1" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBknife\-node\fR \- Manage the hosts in your infrastructure
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "KNIFE\-ROLE" "1" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "KNIFE\-ROLE" "1" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBknife\-role\fR \- Group common configuration settings
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "KNIFE\-SEARCH" "1" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "KNIFE\-SEARCH" "1" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBknife\-search\fR \- Find objects on a Chef Server by query
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "KNIFE\-SSH" "1" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "KNIFE\-SSH" "1" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBknife\-ssh\fR \- Run a command or interactive session on multiple remote hosts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "KNIFE\-STATUS" "1" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "KNIFE\-STATUS" "1" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBknife\-status\fR \- Display status information for the nodes in your infrastructure
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "KNIFE\-TAG" "1" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "KNIFE\-TAG" "1" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBknife\-tag\fR \- Apply tags to nodes on a Chef Server
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "KNIFE" "1" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "KNIFE" "1" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBknife\fR \- Chef Server API client utility
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "CHEF\-CLIENT" "8" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "CHEF\-CLIENT" "8" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBchef\-client\fR \- Runs a client node connecting to a chef\-server\.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "CHEF\-EXPANDER" "8" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "CHEF\-EXPANDER" "8" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBchef\-expander\fR \- fetches messages from RabbitMQ, processes, and loads into chef\-solr
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "CHEF\-EXPANDERCTL" "8" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "CHEF\-EXPANDERCTL" "8" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBchef\-expanderctl\fR \- management program for chef\-expander
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "CHEF\-SERVER\-WEBUI" "8" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "CHEF\-SERVER\-WEBUI" "8" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBchef\-server\-webui\fR \- Start the Chef Server merb application slice providing Web User Interface (Management Console)\.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "CHEF\-SERVER" "8" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "CHEF\-SERVER" "8" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBchef\-server\fR \- Start the Chef Server merb application slice\.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "CHEF\-SOLO" "8" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "CHEF\-SOLO" "8" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBchef\-solo\fR \- Runs chef in solo mode against a specified cookbook location\.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
|
3
3
|
.
|
|
4
|
-
.TH "CHEF\-SOLR" "8" "October 2012" "Chef 10.16.
|
|
4
|
+
.TH "CHEF\-SOLR" "8" "October 2012" "Chef 10.16.2" "Chef Manual"
|
|
5
5
|
.
|
|
6
6
|
.SH "NAME"
|
|
7
7
|
\fBchef\-solr\fR \- Runs as Chef\'s search server
|
|
@@ -44,6 +44,12 @@ class Chef
|
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
error_description.section("Compiled Resource:", "#{resource.to_text}")
|
|
47
|
+
|
|
48
|
+
# Template errors get wrapped in an exception class that can show the relevant template code,
|
|
49
|
+
# so add them to the error output.
|
|
50
|
+
if exception.respond_to?(:source_listing)
|
|
51
|
+
error_description.section("Template Context:", "#{exception.source_location}\n#{exception.source_listing}")
|
|
52
|
+
end
|
|
47
53
|
end
|
|
48
54
|
|
|
49
55
|
def recipe_snippet
|
|
@@ -107,6 +107,7 @@ class Chef
|
|
|
107
107
|
end
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
+
|
|
110
111
|
unless config[:no_deps]
|
|
111
112
|
md = Chef::Cookbook::Metadata.new
|
|
112
113
|
md.from_file(File.join(@install_path, @cookbook_name, "metadata.rb"))
|
|
@@ -143,13 +144,21 @@ class Chef
|
|
|
143
144
|
|
|
144
145
|
def extract_cookbook(upstream_file, version)
|
|
145
146
|
ui.info("Uncompressing #{@cookbook_name} version #{version}.")
|
|
146
|
-
shell_out!("tar zxvf #{
|
|
147
|
+
shell_out!("tar zxvf #{convert_path upstream_file}", :cwd => @install_path)
|
|
147
148
|
end
|
|
148
149
|
|
|
149
150
|
def clear_existing_files(cookbook_path)
|
|
150
151
|
ui.info("Removing pre-existing version.")
|
|
151
152
|
FileUtils.rmtree(cookbook_path) if File.directory?(cookbook_path)
|
|
152
153
|
end
|
|
154
|
+
|
|
155
|
+
def convert_path(upstream_file)
|
|
156
|
+
if ENV['MSYSTEM'] == 'MINGW32'
|
|
157
|
+
return upstream_file.sub(/^([[:alpha:]]):/, '/\1')
|
|
158
|
+
else
|
|
159
|
+
return Shellwords.escape upstream_file
|
|
160
|
+
end
|
|
161
|
+
end
|
|
153
162
|
end
|
|
154
163
|
end
|
|
155
164
|
end
|
|
@@ -44,9 +44,6 @@ class Chef
|
|
|
44
44
|
Chef::Log.debug("#{@new_resource} staging #{file_cache_location} to #{tempfile.path}")
|
|
45
45
|
tempfile.close
|
|
46
46
|
FileUtils.cp(file_cache_location, tempfile.path)
|
|
47
|
-
# Since the @new_resource.path file will not be updated
|
|
48
|
-
# at the time of converge, we must use the tempfile
|
|
49
|
-
update_new_file_state(tempfile.path)
|
|
50
47
|
end
|
|
51
48
|
Chef::Log.info("#{@new_resource} created file #{@new_resource.path}")
|
|
52
49
|
end
|
data/lib/chef/provider/file.rb
CHANGED
|
@@ -132,7 +132,9 @@ class Chef
|
|
|
132
132
|
@current_resource.path(@new_resource.path)
|
|
133
133
|
if !::File.directory?(@new_resource.path)
|
|
134
134
|
if ::File.exist?(@new_resource.path)
|
|
135
|
-
@
|
|
135
|
+
if @action != :create_if_missing
|
|
136
|
+
@current_resource.checksum(checksum(@new_resource.path))
|
|
137
|
+
end
|
|
136
138
|
end
|
|
137
139
|
end
|
|
138
140
|
load_current_resource_attrs
|
|
@@ -142,6 +144,13 @@ class Chef
|
|
|
142
144
|
end
|
|
143
145
|
|
|
144
146
|
def load_current_resource_attrs
|
|
147
|
+
if Chef::Platform.windows?
|
|
148
|
+
# TODO: To work around CHEF-3554, add support for Windows
|
|
149
|
+
# equivalent, or implicit resource reporting won't work for
|
|
150
|
+
# Windows.
|
|
151
|
+
return
|
|
152
|
+
end
|
|
153
|
+
|
|
145
154
|
if ::File.exist?(@new_resource.path)
|
|
146
155
|
stat = ::File.stat(@new_resource.path)
|
|
147
156
|
@current_resource.owner(stat.uid)
|
|
@@ -215,13 +224,21 @@ class Chef
|
|
|
215
224
|
# override the default with the tempfile, since the
|
|
216
225
|
# file at @new_resource.path will not be updated on converge
|
|
217
226
|
def update_new_file_state(path=@new_resource.path)
|
|
227
|
+
if !::File.directory?(path)
|
|
228
|
+
@new_resource.checksum(checksum(path))
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
if Chef::Platform.windows?
|
|
232
|
+
# TODO: To work around CHEF-3554, add support for Windows
|
|
233
|
+
# equivalent, or implicit resource reporting won't work for
|
|
234
|
+
# Windows.
|
|
235
|
+
return
|
|
236
|
+
end
|
|
237
|
+
|
|
218
238
|
stat = ::File.stat(path)
|
|
219
239
|
@new_resource.owner(stat.uid)
|
|
220
240
|
@new_resource.mode(stat.mode & 07777)
|
|
221
241
|
@new_resource.group(stat.gid)
|
|
222
|
-
if !::File.directory?(path)
|
|
223
|
-
@new_resource.checksum(checksum(path))
|
|
224
|
-
end
|
|
225
242
|
end
|
|
226
243
|
|
|
227
244
|
def action_create
|
|
@@ -34,23 +34,27 @@ class Chef
|
|
|
34
34
|
|
|
35
35
|
def action_create
|
|
36
36
|
super
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
37
|
+
files_to_purge = Set.new(Dir.glob(::File.join(@new_resource.path, '**', '*'),
|
|
38
|
+
::File::FNM_DOTMATCH).select do |name|
|
|
39
|
+
name !~ /(?:^|#{Regexp.escape(::File::SEPARATOR)})\.\.?$/
|
|
40
|
+
end)
|
|
41
|
+
|
|
42
|
+
converge_by("Create managed files in directory") do
|
|
43
|
+
files_to_transfer.each do |cookbook_file_relative_path|
|
|
44
|
+
create_cookbook_file(cookbook_file_relative_path)
|
|
45
|
+
# the file is removed from the purge list
|
|
46
|
+
files_to_purge.delete(::File.join(@new_resource.path, cookbook_file_relative_path))
|
|
47
|
+
# parent directories are also removed from the purge list
|
|
48
|
+
directories=::File.dirname(::File.join(@new_resource.path, cookbook_file_relative_path)).split(::File::SEPARATOR)
|
|
49
|
+
for i in 0..directories.length-1
|
|
50
|
+
files_to_purge.delete(::File.join(directories[0..i]))
|
|
51
|
+
end
|
|
51
52
|
end
|
|
52
53
|
end
|
|
53
|
-
|
|
54
|
+
|
|
55
|
+
converge_by("Purge unmanaged files from directory") do
|
|
56
|
+
purge_unmanaged_files(files_to_purge)
|
|
57
|
+
end
|
|
54
58
|
end
|
|
55
59
|
|
|
56
60
|
def action_create_if_missing
|
|
@@ -170,5 +174,10 @@ class Chef
|
|
|
170
174
|
end
|
|
171
175
|
|
|
172
176
|
end
|
|
177
|
+
|
|
178
|
+
def whyrun_supported?
|
|
179
|
+
true
|
|
180
|
+
end
|
|
181
|
+
|
|
173
182
|
end
|
|
174
183
|
end
|
data/lib/chef/version.rb
CHANGED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Tim Hinderliter (<tim@opscode.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2012 Opscode, Inc.
|
|
4
|
+
# License:: Apache License, Version 2.0
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'spec_helper'
|
|
20
|
+
|
|
21
|
+
describe Chef::Resource::CookbookFile do
|
|
22
|
+
include_context Chef::Resource::File
|
|
23
|
+
|
|
24
|
+
let(:file_base) { 'cookbook_file_spec' }
|
|
25
|
+
let(:source) { 'java.response' }
|
|
26
|
+
let(:cookbook_name) { 'java' }
|
|
27
|
+
let(:expected_content) { IO.read(File.join(CHEF_SPEC_DATA, 'cookbooks', 'java', 'files', 'default', 'java.response')) }
|
|
28
|
+
|
|
29
|
+
def create_resource
|
|
30
|
+
# set up cookbook collection for this run to use, based on our
|
|
31
|
+
# spec data.
|
|
32
|
+
cookbook_repo = File.expand_path(File.join(CHEF_SPEC_DATA, 'cookbooks'))
|
|
33
|
+
Chef::Cookbook::FileVendor.on_create { |manifest| Chef::Cookbook::FileSystemFileVendor.new(manifest, cookbook_repo) }
|
|
34
|
+
cookbook_collection = Chef::CookbookCollection.new(Chef::CookbookLoader.new(cookbook_repo))
|
|
35
|
+
|
|
36
|
+
node = Chef::Node.new
|
|
37
|
+
events = Chef::EventDispatch::Dispatcher.new
|
|
38
|
+
run_context = Chef::RunContext.new(node, cookbook_collection, events)
|
|
39
|
+
resource = Chef::Resource::CookbookFile.new(path, run_context)
|
|
40
|
+
resource.cookbook(cookbook_name)
|
|
41
|
+
resource.source(source)
|
|
42
|
+
|
|
43
|
+
resource
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
let!(:resource) do
|
|
47
|
+
create_resource
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it_behaves_like "a file resource"
|
|
51
|
+
end
|
|
@@ -34,7 +34,8 @@ describe Chef::Formatters::ErrorInspectors::ResourceFailureInspector do
|
|
|
34
34
|
|
|
35
35
|
before do
|
|
36
36
|
@description = Chef::Formatters::ErrorDescription.new("Error Converging Resource:")
|
|
37
|
-
@
|
|
37
|
+
@stdout = StringIO.new
|
|
38
|
+
@outputter = Chef::Formatters::Outputter.new(@stdout, STDERR)
|
|
38
39
|
#@outputter = Chef::Formatters::Outputter.new(STDOUT, STDERR)
|
|
39
40
|
|
|
40
41
|
Chef::Config.stub!(:cookbook_path).and_return([ "/var/chef/cache" ])
|
|
@@ -77,6 +78,35 @@ describe Chef::Formatters::ErrorInspectors::ResourceFailureInspector do
|
|
|
77
78
|
@description.display(@outputter)
|
|
78
79
|
end
|
|
79
80
|
|
|
81
|
+
describe "and the error is a template error" do
|
|
82
|
+
before do
|
|
83
|
+
@description = Chef::Formatters::ErrorDescription.new("Error Converging Resource:")
|
|
84
|
+
@template_class = Class.new { include Chef::Mixin::Template }
|
|
85
|
+
@template = @template_class.new
|
|
86
|
+
@context = {:chef => "cool"}
|
|
87
|
+
|
|
88
|
+
@resource = template("/tmp/foo.txt") do
|
|
89
|
+
mode "0644"
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
@error = begin
|
|
93
|
+
@template.render_template("foo\nbar\nbaz\n<%= this_is_not_defined %>\nquin\nqunx\ndunno", @context) {|r| r}
|
|
94
|
+
rescue Chef::Mixin::Template::TemplateError => e
|
|
95
|
+
e
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
@inspector = Chef::Formatters::ErrorInspectors::ResourceFailureInspector.new(@resource, :create, @error)
|
|
99
|
+
@inspector.add_explanation(@description)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it "includes contextual info from the template error in the output" do
|
|
103
|
+
@description.display(@outputter)
|
|
104
|
+
@stdout.string.should include(@error.source_listing)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
end
|
|
109
|
+
|
|
80
110
|
describe "recipe_snippet" do
|
|
81
111
|
before do
|
|
82
112
|
# fake code to run through #recipe_snippet
|