Issue #5046 has been updated by Nigel Kersten.
Target version changed from 2.6.x to Statler
To get down a discussion a few of us had in person, I believe there was general
consensus of:
* deprecate include and require functions for class declaration
* use the new parameterized class declaration syntax only. <pre>class { foo:
}</pre>
* make appropriate metaparameters like before/require work with above syntax
* probably a new function to replace include that could accept hashes for
parameters, with some question over whether the title could be embedded in the
hash.
e.g. with "declare" not necessarily being the function name:
<pre>
declare myclass { require => Class["myclass2"], stage => "bootstrap" }
</pre>
scales well to the simplest case, but perhaps we should also support:
<pre>
declare { title => "myclass", require => Class["myclass2"], stage =>
"bootstrap" }
</pre>
Opening for comments from people outside the room where the conversation
happened.
----------------------------------------
Bug #5046: Mixed invocation of parameterized classes leads to order
dependencies, should be disallowed
https://projects.puppetlabs.com/issues/5046
Author: Paul Berry
Status: Needs design decision
Priority: Normal
Assignee:
Category: language
Target version: Statler
Affected Puppet version:
Keywords: parameterized_classes
Branch:
When a parameterized class has default values for all of its parameters, it may
be invoked using either "include" or "class { ... }" notation. The "include"
notation is idempotent; the "class { ... }" notation isn't. As a result, there
is an order dependency. This works:
<pre>
class foo($param = defaultvalue) {
notify { $param: }
}
class { foo: param => value }
include foo
</pre>
But this produces an error:
<pre>
class foo($param = defaultvalue) {
notify { $param: }
}
include foo
class { foo: param => value }
</pre>
In large manifests, it is not always obvious (or even well-defined) what order
statements will be executed in. To avoid user confusion, I think it would be
preferable if both these examples produced an error message saying something
like "class foo already invoked using 'class { ... }' syntax, cannot also
invoke using 'include'".
--
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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-bugs?hl=en.