Issue #1572 has been reported by ssm.
----------------------------------------
Bug #1572: File resource with recurse => true, purge => true removes content of
directory when source is unavailable
http://projects.reductivelabs.com/issues/show/1572
Author: ssm
Status: Unreviewed
Priority: Normal
Assigned to:
Category:
Target version:
Complexity: Unknown
Affected version: 0.24.5
Keywords: file
directory
recurse
purge
h1. Description
When a file resource is listed with recurse => true, and purge => true, and the
source is unavailable, puppet will remove all content from the destination
directory.
(In our case, a fact was missing, and a variable from the fact was used in the
source path name)
I would expect puppet to remove content from the destination directory only if
puppet can verify that the source directory exists, and is empty.
h1. To reproduce:
h2. Run puppet with the following recipe to create a source:
<pre>
file {["/tmp/ssm","/tmp/ssm/source"]:
ensure => directory,
}
file {["/tmp/ssm/source/one","/tmp/ssm/source/two"]:
ensure => present,
content => "diddly-squat"
}
</pre>
h2. Copy source to destination
<pre>
file {"/tmp/ssm/destination":
ensure => directory,
recurse => true,
purge => true,
source => "/tmp/ssm/source",
require => Class["create_source"]
}
</pre>
h2. Copy source to destination, with a simulatet missing or unavailable source
(like a $variable in the source name being empty)
<pre>
file {"/tmp/ssm/destination":
ensure => directory,
recurse => true,
purge => true,
source => "/tmp/ssm/missing_source",
require => Class["create_source"]
}
</pre>
h1. Sample output
Output from run from the attached manifest (like the quoted ones above, just
wrapped in classes):
<pre>
notice: //create_source/File[/tmp/ssm]/ensure: created
notice: //create_source/File[/tmp/ssm/source]/ensure: created
notice: //create_source/File[/tmp/ssm/source/one]/ensure: changed file contents
from {md5}d4d36ee0f4852fc068b79561a4e5e65e to
{md5}d4d36ee0f4852fc068b79561a4e5e65e
notice: //create_source/File[/tmp/ssm/source/two]/ensure: changed file contents
from {md5}d4d36ee0f4852fc068b79561a4e5e65e to
{md5}d4d36ee0f4852fc068b79561a4e5e65e
notice: //copy_from_source/File[/tmp/ssm/destination]/ensure: created
notice: //copy_from_source/File[/tmp/ssm/destination/one]/ensure: created
notice: //copy_from_source/File[/tmp/ssm/destination/two]/ensure: created
</pre>
Output from run after substituting "copy_from_source" with
"copy_from_missing_source"
<pre>
err: //copy_from_missing_source/File[/tmp/ssm/destination]: Failed to retrieve
current state of resource: No specified source was found from
/tmp/ssm/missing_source
notice: //copy_from_missing_source/File[/tmp/ssm/destination/one]/ensure:
removed
notice: //copy_from_missing_source/File[/tmp/ssm/destination/two]/ensure:
removed
</pre>
----------------------------------------
You have received this notification because you have either subscribed to it,
or are involved in it.
To change your notification preferences, please click here:
http://reductivelabs.com/redmine/my/account
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Puppet Bugs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/puppet-bugs?hl=en
-~----------~----~----~----~------~----~------~--~---