chef 0.10.0.beta.6 → 0.10.0.beta.7
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/chef/application.rb +3 -0
- data/lib/chef/application/client.rb +34 -2
- data/lib/chef/checksum.rb +2 -2
- data/lib/chef/checksum_cache.rb +2 -2
- data/lib/chef/client.rb +7 -5
- data/lib/chef/cookbook/remote_file_vendor.rb +1 -1
- data/lib/chef/cookbook/syntax_check.rb +2 -2
- data/lib/chef/cookbook_version.rb +5 -0
- data/lib/chef/data_bag_item.rb +1 -1
- data/lib/chef/environment.rb +31 -9
- data/lib/chef/file_access_control.rb +7 -3
- data/lib/chef/index_queue/indexable.rb +2 -2
- data/lib/chef/knife.rb +1 -1
- data/lib/chef/knife/bootstrap.rb +1 -1
- data/lib/chef/knife/cookbook_site_install.rb +1 -1
- data/lib/chef/knife/cookbook_site_share.rb +2 -2
- data/lib/chef/knife/cookbook_upload.rb +32 -11
- data/lib/chef/knife/core/subcommand_loader.rb +24 -13
- data/lib/chef/knife/core/text_formatter.rb +2 -2
- data/lib/chef/knife/core/ui.rb +1 -1
- data/lib/chef/knife/search.rb +1 -1
- data/lib/chef/knife/ssh.rb +1 -0
- data/lib/chef/mixin/shell_out.rb +2 -2
- data/lib/chef/node.rb +7 -4
- data/lib/chef/provider/cookbook_file.rb +4 -5
- data/lib/chef/provider/cron.rb +3 -3
- data/lib/chef/provider/cron/solaris.rb +7 -7
- data/lib/chef/provider/deploy.rb +52 -29
- data/lib/chef/provider/directory.rb +8 -8
- data/lib/chef/provider/env.rb +8 -8
- data/lib/chef/provider/erl_call.rb +7 -6
- data/lib/chef/provider/execute.rb +7 -2
- data/lib/chef/provider/file.rb +9 -9
- data/lib/chef/provider/git.rb +17 -8
- data/lib/chef/provider/group.rb +6 -6
- data/lib/chef/provider/group/aix.rb +1 -1
- data/lib/chef/provider/group/dscl.rb +2 -2
- data/lib/chef/provider/group/gpasswd.rb +3 -3
- data/lib/chef/provider/group/groupadd.rb +1 -1
- data/lib/chef/provider/group/pw.rb +3 -3
- data/lib/chef/provider/group/usermod.rb +2 -2
- data/lib/chef/provider/group/windows.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +9 -7
- data/lib/chef/provider/link.rb +27 -24
- data/lib/chef/provider/mdadm.rb +10 -10
- data/lib/chef/provider/mount.rb +10 -13
- data/lib/chef/provider/mount/mount.rb +10 -10
- data/lib/chef/provider/mount/windows.rb +4 -3
- data/lib/chef/provider/ohai.rb +2 -1
- data/lib/chef/provider/package.rb +10 -6
- data/lib/chef/provider/package/apt.rb +18 -18
- data/lib/chef/provider/package/dpkg.rb +3 -3
- data/lib/chef/provider/package/easy_install.rb +2 -2
- data/lib/chef/provider/package/freebsd.rb +4 -5
- data/lib/chef/provider/package/macports.rb +2 -2
- data/lib/chef/provider/package/pacman.rb +2 -2
- data/lib/chef/provider/package/portage.rb +1 -1
- data/lib/chef/provider/package/rpm.rb +3 -3
- data/lib/chef/provider/package/rubygems.rb +7 -7
- data/lib/chef/provider/package/solaris.rb +9 -9
- data/lib/chef/provider/package/yum.rb +4 -4
- data/lib/chef/provider/package/zypper.rb +5 -11
- data/lib/chef/provider/remote_directory.rb +15 -14
- data/lib/chef/provider/remote_file.rb +11 -12
- data/lib/chef/provider/route.rb +8 -10
- data/lib/chef/provider/ruby_block.rb +1 -0
- data/lib/chef/provider/service.rb +10 -16
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/freebsd.rb +16 -18
- data/lib/chef/provider/service/gentoo.rb +2 -3
- data/lib/chef/provider/service/simple.rb +7 -5
- data/lib/chef/provider/service/upstart.rb +8 -8
- data/lib/chef/provider/service/windows.rb +3 -3
- data/lib/chef/provider/subversion.rb +12 -9
- data/lib/chef/provider/template.rb +2 -3
- data/lib/chef/provider/user.rb +13 -14
- data/lib/chef/provider/user/dscl.rb +2 -2
- data/lib/chef/provider/user/pw.rb +4 -4
- data/lib/chef/provider/user/useradd.rb +3 -3
- data/lib/chef/provider/user/windows.rb +3 -3
- data/lib/chef/resource.rb +4 -3
- data/lib/chef/resource/deploy.rb +1 -1
- data/lib/chef/rest/rest_request.rb +2 -2
- data/lib/chef/run_context.rb +1 -1
- data/lib/chef/shell_out.rb +13 -1
- data/lib/chef/solr_query.rb +1 -1
- data/lib/chef/solr_query/solr_http_request.rb +1 -1
- data/lib/chef/tasks/chef_repo.rake +74 -0
- data/lib/chef/version.rb +1 -1
- metadata +2 -2
data/lib/chef/resource/deploy.rb
CHANGED
@@ -274,7 +274,7 @@ class Chef
|
|
274
274
|
|
275
275
|
def environment(arg=nil)
|
276
276
|
if arg.is_a?(String)
|
277
|
-
Chef::Log.
|
277
|
+
Chef::Log.debug "Setting RAILS_ENV, RACK_ENV, and MERB_ENV to `#{arg}'"
|
278
278
|
Chef::Log.warn "[DEPRECATED] please modify your deploy recipe or attributes to set the environment using a hash"
|
279
279
|
arg = {"RAILS_ENV"=>arg,"MERB_ENV"=>arg,"RACK_ENV"=>arg}
|
280
280
|
end
|
@@ -101,7 +101,7 @@ class Chef
|
|
101
101
|
# http://redmine.ruby-lang.org/issues/show/2708
|
102
102
|
# http://redmine.ruby-lang.org/issues/show/2758
|
103
103
|
if e.to_s =~ /#{Regexp.escape(%q|undefined method `closed?' for nil:NilClass|)}/
|
104
|
-
Chef::Log.debug("
|
104
|
+
Chef::Log.debug("Rescued error in http connect, re-raising as Errno::ECONNREFUSED to hide bug in net/http")
|
105
105
|
Chef::Log.debug("#{e.class.name}: #{e.to_s}")
|
106
106
|
Chef::Log.debug(e.backtrace.join("\n"))
|
107
107
|
raise Errno::ECONNREFUSED, "Connection refused attempting to contact #{url.scheme}://#{host}:#{port}"
|
@@ -141,7 +141,7 @@ class Chef
|
|
141
141
|
if http_proxy.nil?
|
142
142
|
@http_client = Net::HTTP.new(host, port)
|
143
143
|
else
|
144
|
-
Chef::Log.debug("
|
144
|
+
Chef::Log.debug("Using #{http_proxy.host}:#{http_proxy.port} for proxy")
|
145
145
|
user = Chef::Config["#{url.scheme}_proxy_user"]
|
146
146
|
pass = Chef::Config["#{url.scheme}_proxy_pass"]
|
147
147
|
@http_client = Net::HTTP.Proxy(http_proxy.host, http_proxy.port, user, pass).new(host, port)
|
data/lib/chef/run_context.rb
CHANGED
@@ -107,7 +107,7 @@ class Chef
|
|
107
107
|
resourcelist = Chef::ResourceDefinitionList.new
|
108
108
|
resourcelist.from_file(filename)
|
109
109
|
definitions.merge!(resourcelist.defines) do |key, oldval, newval|
|
110
|
-
Chef::Log.info("Overriding duplicate definition #{key}, new found in #{filename}")
|
110
|
+
Chef::Log.info("Overriding duplicate definition #{key}, new definition found in #{filename}")
|
111
111
|
newval
|
112
112
|
end
|
113
113
|
end
|
data/lib/chef/shell_out.rb
CHANGED
@@ -56,6 +56,8 @@ class Chef
|
|
56
56
|
attr_accessor :cwd
|
57
57
|
attr_accessor :valid_exit_codes
|
58
58
|
attr_accessor :live_stream
|
59
|
+
attr_accessor :command_log_level
|
60
|
+
attr_accessor :command_log_prepend
|
59
61
|
|
60
62
|
attr_reader :command, :umask, :environment
|
61
63
|
attr_writer :timeout
|
@@ -111,6 +113,8 @@ class Chef
|
|
111
113
|
def initialize(*command_args)
|
112
114
|
@stdout, @stderr = '', ''
|
113
115
|
@live_stream = nil
|
116
|
+
@command_log_level = :debug
|
117
|
+
@command_log_prepend = nil
|
114
118
|
@environment = DEFAULT_ENVIRONMENT
|
115
119
|
@cwd = nil
|
116
120
|
@valid_exit_codes = [0]
|
@@ -169,7 +173,11 @@ class Chef
|
|
169
173
|
# * Chef::Exceptions::CommandTimeout when the command does not complete
|
170
174
|
# within +timeout+ seconds (default: 60s)
|
171
175
|
def run_command
|
172
|
-
|
176
|
+
if command_log_prepend
|
177
|
+
Chef::Log.send(command_log_level, "#{command_log_prepend} sh(#{@command})")
|
178
|
+
else
|
179
|
+
Chef::Log.send(command_log_level, "sh(#{@command})")
|
180
|
+
end
|
173
181
|
super
|
174
182
|
end
|
175
183
|
|
@@ -224,6 +232,10 @@ class Chef
|
|
224
232
|
self.valid_exit_codes = Array(setting)
|
225
233
|
when 'live_stream'
|
226
234
|
self.live_stream = setting
|
235
|
+
when 'command_log_level'
|
236
|
+
self.command_log_level = setting
|
237
|
+
when 'command_log_prepend'
|
238
|
+
self.command_log_prepend = setting
|
227
239
|
when 'environment', 'env'
|
228
240
|
# passing :environment => nil means don't set any new ENV vars
|
229
241
|
@environment = setting.nil? ? {} : @environment.dup.merge!(setting)
|
data/lib/chef/solr_query.rb
CHANGED
@@ -104,7 +104,7 @@ class Chef
|
|
104
104
|
def objects
|
105
105
|
if !object_ids.empty?
|
106
106
|
@bulk_objects ||= @couchdb.bulk_get(object_ids)
|
107
|
-
Chef::Log.debug { "
|
107
|
+
Chef::Log.debug { "Bulk get of objects: #{@bulk_objects.inspect}" }
|
108
108
|
@bulk_objects
|
109
109
|
else
|
110
110
|
[]
|
@@ -97,7 +97,7 @@ class Chef
|
|
97
97
|
# http://redmine.ruby-lang.org/issues/show/2758
|
98
98
|
if e.to_s =~ /#{Regexp.escape(%q|undefined method 'closed?' for nil:NilClass|)}/
|
99
99
|
Chef::Log.fatal("#{description} failed. Chef::Exceptions::SolrConnectionError exception: Errno::ECONNREFUSED (net/http undefined method closed?) attempting to contact #{solr_url}")
|
100
|
-
Chef::Log.debug("
|
100
|
+
Chef::Log.debug("Rescued error in http connect, treating it as Errno::ECONNREFUSED to hide bug in net/http")
|
101
101
|
Chef::Log.debug(e.backtrace.join("\n"))
|
102
102
|
raise Chef::Exceptions::SolrConnectionError, "Errno::ECONNREFUSED: Connection refused attempting to contact #{solr_url}"
|
103
103
|
else
|
@@ -254,3 +254,77 @@ task :test_cookbook, :cookbook do |t, args|
|
|
254
254
|
system("knife cookbook test #{args.cookbook}")
|
255
255
|
end
|
256
256
|
|
257
|
+
namespace :databag do
|
258
|
+
path = "data_bags"
|
259
|
+
|
260
|
+
desc "Upload a single databag"
|
261
|
+
task :upload, :databag do |t, args|
|
262
|
+
input_databag = args[:databag] || 'none_specified'
|
263
|
+
databag = File.join(path, input_databag)
|
264
|
+
|
265
|
+
if File.exists?(databag) && File.directory?(databag)
|
266
|
+
system "knife data bag create #{input_databag}"
|
267
|
+
Dir.foreach(databag) do |item|
|
268
|
+
name, type = item.split('.')
|
269
|
+
if type == 'json' && name.length > 0
|
270
|
+
system "knife data bag from file #{input_databag} " + File.join(databag, item)
|
271
|
+
end
|
272
|
+
end
|
273
|
+
else
|
274
|
+
puts "ERROR: Could not find the databag in your databag path (" + File.join(path, input_databag) + "), skipping it"
|
275
|
+
end
|
276
|
+
end
|
277
|
+
|
278
|
+
desc "Upload all databags"
|
279
|
+
task :upload_all do
|
280
|
+
if File.exists?(path) && File.directory?(path)
|
281
|
+
Dir.foreach(path) do |databag|
|
282
|
+
if databag == databag[/^[\-[:alnum:]_]+$/]
|
283
|
+
Rake::Task['databag:upload'].execute( { :databag => databag } )
|
284
|
+
end
|
285
|
+
end
|
286
|
+
else
|
287
|
+
puts "ERROR: Could not find any databags, skipping it"
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
desc "Create a databag"
|
292
|
+
task :create, :databag do |t, args|
|
293
|
+
input_databag = args[:databag] || 'none_specified'
|
294
|
+
|
295
|
+
FileUtils.mkdir(path) unless File.exists?(path)
|
296
|
+
databag = File.join(path, input_databag)
|
297
|
+
FileUtils.mkdir(databag) unless File.exists?(databag)
|
298
|
+
end
|
299
|
+
|
300
|
+
desc "Create a databag item stub"
|
301
|
+
task :create_item, :databag, :item do |t, args|
|
302
|
+
input_databag = args[:databag] || 'none_specified'
|
303
|
+
input_item = args[:item] || false
|
304
|
+
|
305
|
+
databag = File.join(path, input_databag)
|
306
|
+
if File.exists?(databag) && File.directory?(databag)
|
307
|
+
if input_item
|
308
|
+
json_filename = File.join(databag, "#{input_item}.json")
|
309
|
+
if !File.exists?(json_filename)
|
310
|
+
stub = <<EOH
|
311
|
+
{
|
312
|
+
"id" : "#{input_item}"
|
313
|
+
}
|
314
|
+
EOH
|
315
|
+
json_file = File.new(json_filename, "w")
|
316
|
+
json_file.write(stub)
|
317
|
+
json_file.close
|
318
|
+
else
|
319
|
+
puts "ERROR: databag item already exists (#{json_filename}), skipping it"
|
320
|
+
end
|
321
|
+
else
|
322
|
+
puts "ERROR: No item id specified, skipping it"
|
323
|
+
end
|
324
|
+
else
|
325
|
+
puts "ERROR: Could not find your databag (#{databag}), skipping it"
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
329
|
+
end
|
330
|
+
|
data/lib/chef/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: chef
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: 7
|
5
|
-
version: 0.10.0.beta.
|
5
|
+
version: 0.10.0.beta.7
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Adam Jacob
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-04-
|
13
|
+
date: 2011-04-06 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|