Issue #16688 has been updated by Avishai Ish-Shalom.

Status changed from Unreviewed to In Topic Branch Pending Review

https://github.com/puppetlabs/puppet/pull/1211
----------------------------------------
Bug #16688: scope.function_hiera looks up wrong calling_module and 
calling_class when template is used inside definition
https://projects.puppetlabs.com/issues/16688#change-72766

Author: Avishai Ish-Shalom
Status: In Topic Branch Pending Review
Priority: Normal
Assignee: 
Category: 
Target version: 
Affected Puppet version: 3.0.0
Keywords: 
Branch: 


Same as Hiera issue #16555, i'm re-opening as a puppet 3.x issue since hiera 
has been integrated.

<pre><code>
class test {
    file{"/tmp/test":
        content => template("test/test.erb"),
        mode => 644
    }
    define test::test_file {
        file {"/tmp/$name":
            mode => 644,
            content => template("test/test.erb"),
        }
    }
    test::test_file {"test-definition": }
}
</code></pre>

template:
<pre><code>
<%= scope.function_hiera(["test", "%{calling_module}"]) %>
</code></pre>

Test file will show the definition type name instead of the calling module 
name. this is due to hiera/scope.rb using scope.resource.name.split(“::”) which 
is incorrect for defined types. This patch does the trick:
<pre>
--- a/lib/hiera/scope.rb
+++ b/lib/hiera/scope.rb
@@ -8,9 +8,9 @@ class Hiera
 
         def [](key)
             if key == "calling_class"
-                ans = @real.resource.name.to_s.downcase
+                ans = @real.scope_path.find  {|c| c.source.type == :hostclass 
}.source.name
             elsif key == "calling_module"
-                ans = @real.resource.name.to_s.downcase.split("::").first
+                ans = @real.source.module_name
             else
                 ans = @real.lookupvar(key)
             end
@@ -38,4 +38,4 @@ class Hiera
</pre>



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