On Sep 3, 2013, at 12:00 PM, Eric Sorenson <[email protected]> wrote:

> Replies inline; I've butchered the quoting but will try to keep the 
> attribution correct.
> 
> [John Bollinger] Part of my premise here is that you cannot reasonably infer 
> from a class declaration alone -- regardless of the form of the declaration 
> -- whether its declaring class intends to contain the declared one.  There 
> has to be something to distinguish the contained case from the non-contained 
> one.
> 
> This was a valuable piece of insight, thanks.

Totally agree; this is why we were getting dependency cycles before we changed 
this.

> [Luke] Maybe PuppetDB makes this all irrelevant because it actually builds a 
> graph that contains both, and makes that graph easily accessible, but… if 
> it's good for PuppetDB, why isn't it good for Puppet?
> 
> We absolutely plan to consolidate down to one catalog format, which should be 
> the one used by PuppetDB. I think the graph refactoring work you'd like to 
> see is desirable but should come as a byproduct of writing new code to 
> produce and consume these, rather than trying to shoehorn those changes onto 
> the anchor pattern work.

Until recently, my understanding was that the bug was caused by the whits 
stuff, and I was advocating for fixing all of that at once.

It looks like we shouldn't need to touch the catalog stuff at all to make this 
work, so I agree.  Is there a ticket out there for the catalog format 
refactoring?

> [Andy] Here are the possibilities:
>   * resource like syntax for classes expresses containment:
>       class container { class { contained: parameter => value } }
>   * a function declares the class *and* expresses containment
>       class container { contain(contained, { parameter => value }) }
>   * a function expresses containment, but does not declare the class
>       class container { class { contained: parameter => value } 
> contain(contained) }
>   * a new "resource type" expresses containment
>      class container { contain { contained: parameter => value } }
> 
> I'm most in favour of number 3 here, a function to express the containment as 
> a separate thing to declaring the class.

Why?  What are the benefits of this, and downsides of the other options?

> [Nick Lewis] A 'contain' function was the decision we came to last time I was 
> involved in a conversation about this. That turned into ticket #13045, which 
> was closed with the decision that it should be fixed in Puppet
>  
> [Luke] I'm in favor of it as a simple, optional, backward-compatible fix. 
> Basically, if you're using the anchor pattern now, you can use the contain 
> function instead, and properly represents what's going on.
> 
> +1

How is it that we're coming to the same decision as we did a year ago, everyone 
seems to agree, most of the players are the same, yet we didn't just fix this a 
year ago?

Or, even, why didn't someone just write the 2 line function and start using it?

-- 
Luke Kanies | http://about.me/lak | http://puppetlabs.com/ | +1-615-594-8199

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-dev.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to