Issue #5517 has been updated by Dustin Mitchell.

There's been some discussion on the mailing list (embedded in the more general 
"Stop the new hotness cycle.." thread).  I think there's general agreement that 
short-term this construct should be flagged by puppet, either with a warning or 
an error.  This doesn't represent a change to puppet's behavior, since this 
construct doesn't work now.  It's just better error handling.

Longer-term, there's talk about using lazy evaluation to get better support for 
overriding class parameters in subclasses.  In simple terms, this would 
basically delay dealing with classes for as long as possible, in hopes that 
both the parent class and subclass are parsed before the parameterized class.

Hopefully that summarizes the current state adequately.

----------------------------------------
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-96453

* 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.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to