Issue #1572 has been updated by jamtur01.

Category set to file
Status changed from Unreviewed to Accepted
Assigned to set to andrew
Priority changed from Normal to Urgent
Target version set to 0.24.6


----------------------------------------
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: Accepted
Priority: Urgent
Assigned to: andrew
Category: file
Target version: 0.24.6
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to