Issue #5517 has been updated by Luke Kanies.

On Feb 22, 2013, at 8:24 AM, [email protected] wrote:

> Issue #5517 has been updated by John Bollinger.
> I think it’s a harder problem than you appreciate, and that it’s not just 
> pathological cases that will prove difficult. If you have it working before 
> PuppetConf 2013 such that
> 
> all variable references that are currently allowed continue to be allowed and 
> to evaluate to the same values that they do in Puppet 3.0.2 and earlier, 
> while at the same time
> class parameter overrides succeed reliably in a sufficient majority of cases 
> to satisfy those clamoring for the feature, in such a way that
> whether a particular override will work or not is predictable by unaided 
> human analysis of the manifest set in reasonable time
> then I will buy you the beverage of your choice at PC2013. Supposing I’m 
> there, which I hope to be. And yes, the challenge contains some weasel words 
> — my challenge, my rules. 
> 
Heh, I'll see what I can do, but I agree that #3 will always be the sticky one. 
 #1 and #2 are probably straightforward.

Maybe you could make a proposal in the new Armiture system for what you'd like 
to see instead?

https://github.com/puppetlabs/armatures
----------------------------------------
Bug #5517: behavior change within 2.6 makes it impossible to override class 
parameters of "included" parametrized classes
https://projects.puppetlabs.com/issues/5517#change-83741

Author: Peter Meier
Status: Accepted
Priority: High
Assignee: eric sorenson
Category: language
Target version: 3.x
Affected Puppet version: 3.0.2
Keywords: parameterized_classes
Branch: 


In 2.6.1 the following recipe:

<pre>
class a(
  $b_c = { 'b' => 'foo' }
) {
  notice $a::b_c
  if $a::b_c {
    notice $a::b_c['b']
  }
}

class b {
  class{'a': b_c => false }
}

class b::c inherits b {
  Class['a']{ b_c => { 'b' => 'bleh' } }
}

class b::d {
  include ::b::c
}

include b::d
</pre>

produces the following output:

<pre>
$ puppet foo.pp 
notice: Scope(Class[A]): bbleh
notice: Scope(Class[A]): bleh
</pre>

Which is what I expected. However with 2.6.3 it produces the following output:

<pre>
# puppet foo.pp 
notice: Scope(Class[A]): false
</pre>

Imho likely the changes for #4778 and #5074 are responsible for that behavior 
change.

However this makes it impossible to overwrite parameters of a "included" 
parametrized class in a subclass. There are only ugly workarounds for that 
problem and I think this should actually work as it did within 2.6.1. Otherwise 
the usefulness of parametrized classes is quite reduced.


-- 
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://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" 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-bugs?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to