Issue #4496 has been updated by Jesse Wolfe.

Status changed from Available In Testing Branch to Accepted
Assignee deleted (Jesse Wolfe)
Target version changed from Statler to 2.6.x
Affected version deleted (2.6.1rc1)

I think this is a good candidate to backport this to 2.6.x, as it is a bugfix 
for a 2.6 feature.
----------------------------------------
Bug #4496: module_name variable not consistently set
http://projects.puppetlabs.com/issues/4496

Author: Paul Berry
Status: Accepted
Priority: Normal
Assignee: 
Category: 
Target version: 2.6.x
Affected version: 
Keywords: 
Branch:  http://github.com/reductivelabs/puppet/tree/next


With this directory structure:

modules/foo/manifests/init.pp:
<pre>
class foo {
  notify {"foo (inside module $module_name)": }
}
class foo::bar {
  notify {"foo::bar (inside module $module_name)": }
}
</pre>

init1.pp:
<pre>
include foo
</pre>

init2.pp:
<pre>
include foo::bar
</pre>

init3.pp:
<pre>
include foo
include foo::bar
</pre>

When running "puppet --modulepath modules init1.pp", we get the output:
<pre>
notice: foo (inside module foo)
notice: /Stage[main]/Foo/Notify[foo (inside module foo)]/message: defined 
'message' as 'foo (inside module foo)'
</pre>

This is expected, since $module_name refers to the name of the module that the 
class "foo" is defined in, namely, "foo".

When running "puppet --modulepath modules init2.pp", we get the output:
<pre>
notice: foo::bar (inside module foo)
notice: /Stage[main]/Foo::Bar/Notify[foo::bar (inside module foo)]/message: 
defined 'message' as 'foo::bar (inside module foo)'
</pre>

Again, this is expected.  The functionality of $module_name doesn't depend on 
whether we are including module foo directly or some subclass defined within it.

However, when running "puppet --modulepath modules init3.pp", we get unexpected 
output:
<pre>
notice: foo::bar (inside module )
notice: /Stage[main]/Foo::Bar/Notify[foo::bar (inside module )]/message: 
defined 'message' as 'foo::bar (inside module )'
notice: foo (inside module foo)
notice: /Stage[main]/Foo/Notify[foo (inside module foo)]/message: defined 
'message' as 'foo (inside module foo)'
</pre>

The reference to $module_name within foo::bar has mysteriously stopped working.

This bug only applies to version 2.6 since the $module_name feature did not 
exist in previous releases.


-- 
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