Issue #5046 has been updated by Jeff McCune.
Thinking about this, does the class declaration syntax support declaring
"virtual" classes?
Working with a customer, they specifically asked if the following use case
would be possible:
class dbserver {
@class { "mysql::server":
socket => "/var/lib/mysql/socket",
}
}
# site.pp
node default {
include dbserver
Class <| title == "mysql::server" |>
}
The expectation of this use case is that multiple classes could "realize" the
classes they require, but they'd be guaranteed the class is evaluated at a
predictable scoping level, in this use case in the scope of
Node[default]/Class[dbserver]/Class[mysql::server] and NOT at the scope of
Node[default]/Class[mysql::server] or whatever other classes decided to realize
the virtual class?
----------------------------------------
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.