diff options
| author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-10-09 16:33:13 +0000 |
|---|---|---|
| committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-10-09 16:33:13 +0000 |
| commit | 1c6cb608660165d688adc4aafce7e773d732be22 (patch) | |
| tree | 8da1b15ada945c1ac94b8415671f36379b52e171 | |
| parent | 34f8337c68ff6f4b8ff57e604bae77529eb0d16e (diff) | |
| download | puppet-1c6cb608660165d688adc4aafce7e773d732be22.tar.gz puppet-1c6cb608660165d688adc4aafce7e773d732be22.tar.xz puppet-1c6cb608660165d688adc4aafce7e773d732be22.zip | |
Fixing #310 -- users no longer autorequire their homedirs, and files now autorequire their owner and group.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1747 980ebf18-57e1-0310-9a29-db15c13687c0
| -rw-r--r-- | lib/puppet/type/pfile.rb | 16 | ||||
| -rwxr-xr-x | lib/puppet/type/user.rb | 9 | ||||
| -rw-r--r-- | test/types/file.rb | 31 | ||||
| -rwxr-xr-x | test/types/user.rb | 3 |
4 files changed, 49 insertions, 10 deletions
diff --git a/lib/puppet/type/pfile.rb b/lib/puppet/type/pfile.rb index 5d7a3e881..d89fe17e3 100644 --- a/lib/puppet/type/pfile.rb +++ b/lib/puppet/type/pfile.rb @@ -172,6 +172,7 @@ module Puppet newvalues(:true, :false) end + # Autorequire any parent directories. autorequire(:file) do cur = [] pary = self[:path].split(File::SEPARATOR) @@ -187,6 +188,21 @@ module Puppet cur end + # Autorequire the owner and group of the file. + {:user => :owner, :group => :group}.each do |type, state| + autorequire(type) do + if @states.include?(state) + # The user/group states automatically converts to IDs + val = @states[state].shouldorig[0] + if val.is_a?(Integer) or val =~ /^\d+$/ + nil + else + val + end + end + end + end + validate do if self[:content] and self[:source] self.fail "You cannot specify both content and a source" diff --git a/lib/puppet/type/user.rb b/lib/puppet/type/user.rb index ac6ce461d..2fffc6f48 100755 --- a/lib/puppet/type/user.rb +++ b/lib/puppet/type/user.rb @@ -342,15 +342,6 @@ module Puppet autos end - autorequire(:file) do - dir = self.should(:home) or self.is(:home) - if dir =~ /^#{File::SEPARATOR}/ - dir - else - nil - end - end - def self.list_by_name users = [] defaultprovider.listbyname do |user| diff --git a/test/types/file.rb b/test/types/file.rb index 71a04a40d..c4818ba32 100644 --- a/test/types/file.rb +++ b/test/types/file.rb @@ -1420,6 +1420,37 @@ class TestFile < Test::Unit::TestCase assert_apply(obj) end + + def test_autorequire_owner_and_group + file = tempfile() + comp = nil + user = nil + group =nil + home = nil + ogroup = nil + assert_nothing_raised { + user = Puppet.type(:user).create( + :name => "pptestu", + :home => file, + :gid => "pptestg" + ) + home = Puppet.type(:file).create( + :path => file, + :owner => "pptestu", + :group => "pptestg", + :ensure => "directory" + ) + group = Puppet.type(:group).create( + :name => "pptestg" + ) + comp = newcomp(user, group, home) + } + comp.finalize + comp.retrieve + + assert(home.requires?(user), "File did not require owner") + assert(home.requires?(group), "File did not require group") + end end # $Id$ diff --git a/test/types/user.rb b/test/types/user.rb index 9a2781308..4afe65722 100755 --- a/test/types/user.rb +++ b/test/types/user.rb @@ -375,6 +375,7 @@ class TestUser < Test::Unit::TestCase ) home = Puppet.type(:file).create( :path => file, + :owner => "pptestu", :ensure => "directory" ) group = Puppet.type(:group).create( @@ -389,7 +390,7 @@ class TestUser < Test::Unit::TestCase comp.retrieve assert(user.requires?(group), "User did not require group") - assert(user.requires?(home), "User did not require home dir") + assert(home.requires?(user), "Homedir did not require user") assert(user.requires?(ogroup), "User did not require other groups") end |
