summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-08-21 22:54:17 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-08-21 22:54:17 +0000
commitbf43c76deddb8475fea43515ebd530b5d3f331a2 (patch)
tree96376c18daa8fd49a7776a2ca2f33f2d385ebd62 /lib
parentaee1c6a6ad10e3a42a8f4150b4838425e3580253 (diff)
downloadpuppet-bf43c76deddb8475fea43515ebd530b5d3f331a2.tar.gz
puppet-bf43c76deddb8475fea43515ebd530b5d3f331a2.tar.xz
puppet-bf43c76deddb8475fea43515ebd530b5d3f331a2.zip
Fixing #228. The real problem was that "present" should match any type of file existence, whereas it was just matching files. If the file was a directory, as in this case, Puppet considered it to be out of sync. Now, "present" matches files, links, or directories, but still creates an empty file if the path is missing.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1477 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib')
-rwxr-xr-xlib/puppet/type/pfile/ensure.rb29
1 files changed, 25 insertions, 4 deletions
diff --git a/lib/puppet/type/pfile/ensure.rb b/lib/puppet/type/pfile/ensure.rb
index f22e43637..ac045dfd6 100755
--- a/lib/puppet/type/pfile/ensure.rb
+++ b/lib/puppet/type/pfile/ensure.rb
@@ -2,9 +2,11 @@ module Puppet
Puppet.type(:file).ensurable do
require 'etc'
desc "Whether to create files that don't currently exist.
- Possible values are *absent*, *present* (equivalent to *file*),
- *file*, and *directory*. Specifying 'absent' will delete the file,
- although currently this will not recursively delete directories.
+ Possible values are *absent*, *present* (equivalent to ``exists`` in
+ most file tests -- will match any form of file existence, and if the
+ file is missing will create an empty file), *file*, and
+ *directory*. Specifying ``absent`` will delete the file, although
+ currently this will not recursively delete directories.
Anything other than those values will be considered to be a symlink.
For instance, the following text creates a link:
@@ -50,7 +52,12 @@ module Puppet
return :file_created
end
- aliasvalue(:present, :file)
+ #aliasvalue(:present, :file)
+ newvalue(:present) do
+ # Make a file if they want something, but this will match almost
+ # anything.
+ set_file
+ end
newvalue(:directory) do
mode = @parent.should(:mode)
@@ -120,6 +127,20 @@ module Puppet
end
end
+ # We have to treat :present specially, because it works with any
+ # type of file.
+ def insync?
+ if self.should == :present
+ if @is.nil? or @is == :absent
+ return false
+ else
+ return true
+ end
+ else
+ return super
+ end
+ end
+
def retrieve
if stat = @parent.stat(false)
@is = stat.ftype.intern