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.

Reply via email to