Uploaded image for project: 'Puppet'
  1. Puppet
  2. PUP-1367

behavior change within 2.6 makes it impossible to override class parameters of "included" parametrized classes

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Normal
    • Resolution: Won't Fix
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
    • Template:

      Description

      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>

      1. 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.

        Attachments

          Activity

            People

            Assignee:
            Unassigned
            Reporter:
            redmine.exporter redmine.exporter
            Votes:
            5 Vote for this issue
            Watchers:
            13 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Zendesk Support