On Friday, February 27, 2015 at 2:51:03 PM UTC-6, Trevor Vaughan wrote:
>
> Ok, you certainly have a working counter example, but I feel that it 
> *should* actually fail and that this is a bug.
>
>

[...]

 

> I would like to propose that symlinks should naturally (i.e. autorequire*) 
> come *after* all components of relevant file resources because otherwise 
> they are systemically invalid.
>


I have just demonstrated that dangling symlinks are NOT systematically 
invalid.  They have inherent significance, however limited.

In any event, don't lose sight of the fact that resource relationships are 
strictly about *order of application*, not about semantic associations 
between resources.  The validity of a symlink in light of other elements of 
the state of the system is a resource-relationship concern only to the 
extent that it affects whether the symlink or other resources can be 
applied.  Whether a dangling link is acceptable or wanted is an entirely 
separate issue.

It is, moreover, a good general idea to minimize the number of resource 
relationships by avoiding unneeded ones.  Although a relationship *is* 
needed (to ensure a viable order of application) in the case described in 
PUP-4036, that's unusual and case-specific.  It should also be readily 
visible to the manifest author, and easily fixable without changes to 
Puppet.

 

> Thinking about this further, should Puppet even be able to create invalid 
> symlinks?
>


Of course it should be able to do.  Puppet is my tool, not my nanny.  If 
the target system allows dangling symlinks then Puppet has no good reason 
to go out of its way to make it difficult to create them.  It doesn't know 
and shouldn't be expected to guess whether it's intentional, acceptable, or 
wrong for any particular link to dangle at any given time.

I'd be ok with warnings about dangling links, though, which potentially 
Puppet could emit even when the link is already in sync.

 

> I don't feel like it should as they can cause all sorts of havoc on a 
> system with a code (expectation)-based infrastructure. Additionally, having 
> Puppet complain on making a link to something that hasn't yet been mounted 
> could be a very good thing since you would be aware that your underlying 
> external system requirements have not been correctly met.
>
> It *should* leave invalid symlinks alone unless told to remove them, of 
> course.
>
>

Can we at least have consistency?  If Puppet accepts dangling symlinks as a 
valid, in-sync target state for existing resources, then it should not 
refuse to manage resources into such a state.  On the other hand, if Puppet 
is unwilling to manage a symlink into a dangling state, then it should not 
accept an existing dangling symlink as being in sync.


John


-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-dev/5e3447ea-8ebe-4cfa-85df-56decb5506d4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to