Issue #2053 has been updated by Corey Hickey.
I ran into some deeper trouble with this bug while parameterizing a class--it
appears that `include` respects the `::` prefix, but `class {}` does not. In my
case, I have two classes `webconf::php` and `::php`. I'm going to phase out the
former in favor of the latter, but they both need to exist for a transitional
period.
This loads ::php, as expected:
<pre>
class webconf {
include ::php
}
</pre>
This tries to load both(?) ::php and webconf::php:
<pre>
class webconf {
class { "::php": }
}
</pre>
...resulting in the error:
<pre>
Duplicate declaration: Package[php] is already declared in file
/usr/local/puppet/modules/webconf/manifests/php.pp at line 5; cannot redeclare
at /usr/local/puppet/modules/php/manifests/init.pp:21
</pre>
I admit it's possible I'm doing this wrong, but if I rename `webconf::php` to
`webconf::oldphp`, the class declaration works fine.
This is with puppet 2.7.17.
----------------------------------------
Bug #2053: Relative namespacing of class/define names results in big surprises
https://projects.puppetlabs.com/issues/2053#change-77967
Author: Lawrence Ludwig
Status: Needs Decision
Priority: Normal
Assignee: eric sorenson
Category: modules
Target version:
Affected Puppet version: 0.24.7
Keywords: telly deprecation modules classes namespaces names
Branch:
Due to Puppet's relative namespacing of class names, `include bar` does not
mean "declare class `bar`." It actually means "try to declare class `<current
namespace>::bar`, class `<parent of current namespace>::bar`, and so on,
declaring class `bar` only as a last resort."
class bar {
notice("From class bar")
}
class foo::bar {
notice("From class foo::bar")
}
class foo {
include bar
}
include foo
This is maximally surprising, especially considering the prevalence of things
like:
class apache::nagios {
include nagios # joke's on you, because this just includes apache::nagios
again
}
(Test code from original report: <http://pastie.org/409446>)
--
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.