summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-10-09 16:33:13 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-10-09 16:33:13 +0000
commit1c6cb608660165d688adc4aafce7e773d732be22 (patch)
tree8da1b15ada945c1ac94b8415671f36379b52e171
parent34f8337c68ff6f4b8ff57e604bae77529eb0d16e (diff)
downloadpuppet-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.rb16
-rwxr-xr-xlib/puppet/type/user.rb9
-rw-r--r--test/types/file.rb31
-rwxr-xr-xtest/types/user.rb3
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