Skip to content

Commit d4a4742

Browse files
committed
Merge branch 'master' into jasonjackson/chef-212
2 parents 7227b64 + baee3d0 commit d4a4742

15 files changed

Lines changed: 240 additions & 47 deletions

File tree

chef-server-slice/Rakefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ Rake::GemPackageTask.new(spec) do |pkg|
4747
end
4848

4949
desc "Install the gem"
50-
task :install do
50+
task :install => :package do
5151
sh %{sudo gem install pkg/#{GEM_NAME}-#{CHEF_SERVER_VERSION} --no-rdoc --no-ri}
5252
end
5353

chef-server-slice/config/init.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
# code and views.
2222
#
2323

24-
merb_gems_version = "1.0.10"
24+
merb_gems_version = "> 1.0"
2525
dependency "merb-haml", merb_gems_version
2626
dependency "merb-assets", merb_gems_version
2727
dependency "merb-helpers", merb_gems_version

chef-server/bin/chef-server

100644100755
File mode changed.

chef-server/config/dependencies.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# dependencies are generated using a strict version, don't forget to edit the dependency versions when upgrading.
2-
merb_gems_version = "1.0.10"
2+
merb_gems_version = "> 1.0"
33

44
# For more information about each component, please read http://wiki.merbivore.com/faqs/merb_components
55
dependency "merb-core", merb_gems_version

chef/lib/chef/config.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class Config
6363
:remotefile_url => "http://localhost:4000",
6464
:search_url => "http://localhost:4000",
6565
:couchdb_database => "chef",
66+
:couchdb_version => nil,
6667
:openid_store_couchdb => false,
6768
:openid_cstore_couchdb => false,
6869
:openid_store_path => "/var/chef/openid/db",

chef/lib/chef/couchdb.rb

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,11 @@
2525
class Chef
2626
class CouchDB
2727
include Chef::Mixin::ParamsValidate
28-
28+
2929
def initialize(url=nil)
3030
url ||= Chef::Config[:couchdb_url]
3131
@rest = Chef::REST.new(url)
32+
Chef::Config[:couchdb_version] ||= @rest.run_request(:GET, URI.parse(@rest.url + "/"), false, 10, false)["version"].gsub(/-.+/,"").to_f
3233
end
3334

3435
def create_db
@@ -119,9 +120,9 @@ def list(view, inflate=false)
119120
}
120121
)
121122
if inflate
122-
@rest.get_rest("#{Chef::Config[:couchdb_database]}/_view/#{view}/all")
123+
@rest.get_rest(view_uri(view, "all"))
123124
else
124-
@rest.get_rest("#{Chef::Config[:couchdb_database]}/_view/#{view}/all_id")
125+
@rest.get_rest(view_uri(view, "all_id"))
125126
end
126127
end
127128

@@ -145,9 +146,19 @@ def has_key?(obj_type, name)
145146
end
146147

147148
private
148-
def safe_name(name)
149-
name.gsub(/\./, "_")
149+
150+
def safe_name(name)
151+
name.gsub(/\./, "_")
152+
end
153+
154+
def view_uri(design, view)
155+
case Chef::Config[:couchdb_version]
156+
when 0.9
157+
"#{Chef::Config[:couchdb_database]}/_design/#{design}/_view/#{view}"
158+
when 0.8
159+
"#{Chef::Config[:couchdb_database]}/_view/#{design}/#{view}"
150160
end
161+
end
151162

152163
end
153164
end

chef/lib/chef/exceptions.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,6 @@ class UnsupportedAction < RuntimeError; end
2929
class MissingLibrary < RuntimeError; end
3030
class User < RuntimeError; end
3131
class Group < RuntimeError; end
32+
class Link < RuntimeError; end
3233
end
3334
end

chef/lib/chef/provider/file.rb

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,12 @@ def negative_complement(big)
3737
end
3838
big
3939
end
40+
41+
def octal_mode(mode)
42+
((mode.respond_to?(:oct) ? mode.oct : mode.to_i) & 007777)
43+
end
4044

41-
private :negative_complement
45+
private :negative_complement, :octal_mode
4246

4347
def load_current_resource
4448
@current_resource = Chef::Resource::File.new(@new_resource.name)
@@ -47,7 +51,7 @@ def load_current_resource
4751
cstats = ::File.stat(@current_resource.path)
4852
@current_resource.owner(cstats.uid)
4953
@current_resource.group(cstats.gid)
50-
@current_resource.mode("%o" % (cstats.mode & 007777))
54+
@current_resource.mode(octal_mode(cstats.mode))
5155
@current_resource.checksum(checksum(@current_resource.path))
5256
end
5357
@current_resource
@@ -104,17 +108,17 @@ def set_group
104108
def compare_mode
105109
case @new_resource.mode
106110
when /^\d+$/, Integer
107-
real_mode = sprintf("%o" % (@new_resource.mode & 007777))
108-
real_mode.to_i == @current_resource.mode.to_i
111+
octal_mode(@new_resource.mode) == octal_mode(@current_resource.mode)
109112
else
110113
false
111114
end
112115
end
113116

114117
def set_mode
115118
unless compare_mode && @new_resource.mode != nil
116-
Chef::Log.info("Setting mode to #{sprintf("%o" % (@new_resource.mode & 007777))} for #{@new_resource}")
117-
::File.chmod(@new_resource.mode.to_i, @new_resource.path)
119+
Chef::Log.info("Setting mode to #{sprintf("%o" % octal_mode(@new_resource.mode))} for #{@new_resource}")
120+
# CHEF-174, bad mojo around treating integers as octal. If a string is passed, we try to do the "right" thing
121+
::File.chmod(octal_mode(@new_resource.mode), @new_resource.path)
118122
@new_resource.updated = true
119123
end
120124
end
@@ -125,9 +129,9 @@ def action_create
125129
::File.open(@new_resource.path, "w+") { |f| }
126130
@new_resource.updated = true
127131
end
128-
set_owner if @new_resource.owner != nil
129-
set_group if @new_resource.group != nil
130-
set_mode if @new_resource.mode != nil
132+
set_owner unless @new_resource.owner.nil?
133+
set_group unless @new_resource.group.nil?
134+
set_mode unless @new_resource.mode.nil?
131135
end
132136

133137
def action_create_if_missing

chef/lib/chef/provider/link.rb

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,24 @@ def action_create
6868
end
6969

7070
def action_delete
71-
if ::File.exists?(@new_resource.target_file) && ::File.writable?(@new_resource.target_file)
72-
Chef::Log.info("Deleting #{@new_resource} at #{@new_resource.target_file}")
73-
::File.delete(@new_resource.target_file)
74-
@new_resource.updated = true
75-
else
76-
raise "Cannot delete #{@new_resource} at #{@new_resource_path}!"
71+
if ::File.exists?(@new_resource.target_file)
72+
if @new_resource.link_type == :symbolic
73+
if ::File.symlink?(@new_resource.target_file)
74+
Chef::Log.info("Deleting #{@new_resource} at #{@new_resource.target_file}")
75+
::File.delete(@new_resource.target_file)
76+
@new_resource.updated = true
77+
else
78+
raise Chef::Exceptions::Link, "Cannot delete #{@new_resource} at #{@new_resource.target_file}! Not a symbolic link."
79+
end
80+
elsif @new_resource.link_type == :hard
81+
if ::File.exists?(@new_resource.to) && ::File.stat(@current_resource.target_file).ino == ::File.stat(@new_resource.to).ino
82+
Chef::Log.info("Deleting #{@new_resource} at #{@new_resource.target_file}")
83+
::File.delete(@new_resource.target_file)
84+
@new_resource.updated = true
85+
else
86+
raise Chef::Exceptions::Link, "Cannot delete #{@new_resource} at #{@new_resource.target_file}! Not a hard link."
87+
end
88+
end
7789
end
7890
end
7991
end

chef/lib/chef/resource/file.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def mode(arg=nil)
5959
set_or_return(
6060
:mode,
6161
arg,
62-
:regex => /^\d{3,4}$/
62+
:regex => /^0?\d{3,4}$/
6363
)
6464
end
6565

@@ -81,4 +81,4 @@ def path(arg=nil)
8181

8282
end
8383
end
84-
end
84+
end

0 commit comments

Comments
 (0)