Issue #4549 has been updated by Matt Robinson.

Status changed from Accepted to Needs Decision
Assignee set to Nigel Kersten
Target version set to 2.7.x
Branch set to 
https://github.com/mmrobins/puppet/tree/ticket/2.7.x/4549-functions_in_templates

I've gone ahead and implemented Peter's suggestion of method_missing on the 
scope and it seems to work pretty well.  The attached branch has the code, 
still needs tests, but I'll work on those right after this.

I'm assigning it to Nigel to make sure he's happy with this solution going into 
2.7.x.
----------------------------------------
Bug #4549: not all puppet functions are available in the template scope
https://projects.puppetlabs.com/issues/4549

Author: Peter Meier
Status: Needs Decision
Priority: Normal
Assignee: Nigel Kersten
Category: 
Target version: 2.7.x
Affected Puppet version: 0.25.5
Keywords: 
Branch: 
https://github.com/mmrobins/puppet/tree/ticket/2.7.x/4549-functions_in_templates


I was looking for a way to call puppet function in templates (for example to 
evaluate a template in a template). According to 
http://serverfault.com/questions/34642/call-puppet-function-from-puppet-template
 it looks like this is possible. However it does not seem to work for all 
functions:

<pre>
# cat foo.pp 
$a = inline_template("<%= scope.methods.select{|meth| meth =~ /^function_/ 
}.sort.join('\n')  %>")
notice $a
# puppet foo.pp 
notice: Scope(Class[main]): function_alert
function_crit
function_debug
function_emerg
function_err
function_info
function_inline_template
function_notice
function_warning
#
</pre>

There was also a report about that on the users list with no answer: 
http://groups.google.com/group/puppet-users/browse_thread/thread/59a7ee977b26fc3d

In general we can ask: Is it the idea that puppet functions are available in 
templates?

If no, why is the inline_template function available? Besides that I think 
functions in general should be available.
If yes, where are the missing functions and how can we call them?

Looking at the code doesn't reveal how inline_teplate might be added in a 
special way to the scope, also it seems that the function creation code should 
register the functions and at least for the tests they seem to be registered.


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