Issue #5046 has been updated by Dan Bode.

I disagree with the proposal to drop number 3.

I don't care about redeclaraing parametrized classes, but I do want to be able 
to mix declarations with include without having to worry about order.

Use cases:

classes should be self contained, this requires being able to specify that a 
class has a dependency on another class. I like the idea of all classes being 
able to indicate dependencies on other classes with include, but also allowing 
a single place to override variables.

Another use case:

If include is required for variables from a class's scope to be accessible, 
then you have to be able to mix includes with class declarations. #5074
----------------------------------------
Bug #5046: Mixed invocation of parameterized classes leads to order 
dependencies, should be disallowed
https://projects.puppetlabs.com/issues/5046

Author: Paul Berry
Status: Accepted
Priority: Normal
Assignee: 
Category: language
Target version: 2.6.x
Affected Puppet version: 
Keywords: 
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.

Reply via email to