ad
2012-Jun-22 15:20 UTC
[Puppet Users] Calling custom functions from functions, parameter weirdness
This is on Windows running 2.7.16. I haven''t tested on Linux or other versions. I''m still relatively new to Puppet and haven''t used custom functions before, so wanted to run this by the list before filing a bug. When calling custom functions from functions, arguments are being converted to decimal arrays. That is, passing the argument ''bar'' from a custom function to another function results in arg[0]: 98 arg[1]: 97 arg[2]: 114 Here''s a full example in case I''m doing something wrong here. Function 1: module Puppet::Parser::Functions newfunction(:foo) do |args| puts ''args[0]:'' + args[0].to_s puts ''args.size:'' + args.size.to_s end end Function 2: module Puppet::Parser::Functions newfunction(:foo2) do |args| Puppet::Parser::Functions.autoloader.loadall function_foo(''from_function'') end end A manifest: foo(''from_manifest'') foo2() Puppet Agent run Result: args[0]:from_manifest args.size:1 args[0]:102 args.size:13 13 is the string length of ''from_function'', and 102 is the decimal representation of ''f''. - Adam -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/mdCdbqkswjUJ. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
ad
2012-Jun-22 16:13 UTC
[Puppet Users] Re: Calling custom functions from functions, parameter weirdness
I just tested this on CentOS/Puppet 2.7.12 with the same result. - Adam On Friday, June 22, 2012 10:20:52 AM UTC-5, ad wrote:> > This is on Windows running 2.7.16. I haven''t tested on Linux or other > versions. I''m still relatively new to Puppet and haven''t used custom > functions before, so wanted to run this by the list before filing a bug. > > When calling custom functions from functions, arguments are being > converted to decimal arrays. That is, passing the argument ''bar'' from a > custom function to another function results in > > arg[0]: 98 > arg[1]: 97 > arg[2]: 114 > > Here''s a full example in case I''m doing something wrong here. > > Function 1: > > module Puppet::Parser::Functions > newfunction(:foo) do |args| > puts ''args[0]:'' + args[0].to_s > puts ''args.size:'' + args.size.to_s > end > end > > Function 2: > > module Puppet::Parser::Functions > newfunction(:foo2) do |args| > Puppet::Parser::Functions.autoloader.loadall > function_foo(''from_function'') > end > end > > A manifest: > > foo(''from_manifest'') > foo2() > > Puppet Agent run Result: > > args[0]:from_manifest > args.size:1 > args[0]:102 > args.size:13 > > 13 is the string length of ''from_function'', and 102 is the decimal > representation of ''f''. > > - Adam >-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/-eqfuh4NRI0J. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Josh Cooper
2012-Jun-22 17:01 UTC
Re: [Puppet Users] Re: Calling custom functions from functions, parameter weirdness
On Fri, Jun 22, 2012 at 9:13 AM, ad <adam.denning@gmail.com> wrote:> I just tested this on CentOS/Puppet 2.7.12 with the same result. > > - Adam > > > On Friday, June 22, 2012 10:20:52 AM UTC-5, ad wrote: >> >> This is on Windows running 2.7.16. I haven''t tested on Linux or other >> versions. I''m still relatively new to Puppet and haven''t used custom >> functions before, so wanted to run this by the list before filing a bug. >> >> When calling custom functions from functions, arguments are being >> converted to decimal arrays. That is, passing the argument ''bar'' from a >> custom function to another function results in >> >> arg[0]: 98 >> arg[1]: 97 >> arg[2]: 114 >> >> Here''s a full example in case I''m doing something wrong here. >> >> Function 1: >> >> module Puppet::Parser::Functions >> newfunction(:foo) do |args| >> puts ''args[0]:'' + args[0].to_s >> puts ''args.size:'' + args.size.to_s >> end >> end >> >> Function 2: >> >> module Puppet::Parser::Functions >> newfunction(:foo2) do |args| >> Puppet::Parser::Functions.**autoloader.loadall >> function_foo(''from_function'') >> >Since you are calling foo with a single argument, I believe the args in function foo is a string, not an array. If you instead say `function_foo([''from_function''])`, it should do what function foo expects. end>> end >> >> A manifest: >> >> foo(''from_manifest'') >> foo2() >> >> Puppet Agent run Result: >> >> args[0]:from_manifest >> args.size:1 >> args[0]:102 >> args.size:13 >> >> 13 is the string length of ''from_function'', and 102 is the decimal >> representation of ''f''. >> >> - Adam >> > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/puppet-users/-/-eqfuh4NRI0J. > > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to > puppet-users+unsubscribe@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/puppet-users?hl=en. >-- Josh Cooper Developer, Puppet Labs -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
ad
2012-Jun-22 17:53 UTC
Re: [Puppet Users] Re: Calling custom functions from functions, parameter weirdness
Josh, I appreciate the help. Using function_foo([''bar'']) rather than function_foo(''bar'') works as expected. I''m sure this will also solve the same issue I was having calling a custom function from a Ruby DSL defined type. Cheers, Adam On Friday, June 22, 2012 12:01:24 PM UTC-5, Josh Cooper wrote:> > > > On Fri, Jun 22, 2012 at 9:13 AM, ad <adam.denning@gmail.com> wrote: > >> I just tested this on CentOS/Puppet 2.7.12 with the same result. >> >> - Adam >> >> >> On Friday, June 22, 2012 10:20:52 AM UTC-5, ad wrote: >>> >>> This is on Windows running 2.7.16. I haven''t tested on Linux or other >>> versions. I''m still relatively new to Puppet and haven''t used custom >>> functions before, so wanted to run this by the list before filing a bug. >>> >>> When calling custom functions from functions, arguments are being >>> converted to decimal arrays. That is, passing the argument ''bar'' from a >>> custom function to another function results in >>> >>> arg[0]: 98 >>> arg[1]: 97 >>> arg[2]: 114 >>> >>> Here''s a full example in case I''m doing something wrong here. >>> >>> Function 1: >>> >>> module Puppet::Parser::Functions >>> newfunction(:foo) do |args| >>> puts ''args[0]:'' + args[0].to_s >>> puts ''args.size:'' + args.size.to_s >>> end >>> end >>> >>> Function 2: >>> >>> module Puppet::Parser::Functions >>> newfunction(:foo2) do |args| >>> Puppet::Parser::Functions.**autoloader.loadall >>> function_foo(''from_function'') >>> >> > Since you are calling foo with a single argument, I believe the args in > function foo is a string, not an array. If you instead say > `function_foo([''from_function''])`, it should do what function foo expects. > > end >>> end >>> >>> A manifest: >>> >>> foo(''from_manifest'') >>> foo2() >>> >>> Puppet Agent run Result: >>> >>> args[0]:from_manifest >>> args.size:1 >>> args[0]:102 >>> args.size:13 >>> >>> 13 is the string length of ''from_function'', and 102 is the decimal >>> representation of ''f''. >>> >>> - Adam >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "Puppet Users" group. >> To view this discussion on the web visit >> https://groups.google.com/d/msg/puppet-users/-/-eqfuh4NRI0J. >> >> To post to this group, send email to puppet-users@googlegroups.com. >> To unsubscribe from this group, send email to >> puppet-users+unsubscribe@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/puppet-users?hl=en. >> > > -- > Josh Cooper > Developer, Puppet Labs > >-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/Hr7CuBWk-LgJ. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Krzysztof Wilczynski
2012-Jun-25 10:06 UTC
Re: [Puppet Users] Re: Calling custom functions from functions, parameter weirdness
Hi, Ruby DSL and templates (via e.g. inline_template) would have the same problem, unless this was handled properly on the function''s side. KW On Friday, 22 June 2012 18:53:55 UTC+1, ad wrote:> > Josh, > > I appreciate the help. Using function_foo([''bar'']) rather than > function_foo(''bar'') works as expected. I''m sure this will also solve the > same issue I was having calling a custom function from a Ruby DSL defined > type. > > Cheers, > > Adam > > On Friday, June 22, 2012 12:01:24 PM UTC-5, Josh Cooper wrote: >> >> >> >> On Fri, Jun 22, 2012 at 9:13 AM, ad <adam.denning@gmail.com> wrote: >> >>> I just tested this on CentOS/Puppet 2.7.12 with the same result. >>> >>> - Adam >>> >>> >>> On Friday, June 22, 2012 10:20:52 AM UTC-5, ad wrote: >>>> >>>> This is on Windows running 2.7.16. I haven''t tested on Linux or other >>>> versions. I''m still relatively new to Puppet and haven''t used custom >>>> functions before, so wanted to run this by the list before filing a bug. >>>> >>>> When calling custom functions from functions, arguments are being >>>> converted to decimal arrays. That is, passing the argument ''bar'' from a >>>> custom function to another function results in >>>> >>>> arg[0]: 98 >>>> arg[1]: 97 >>>> arg[2]: 114 >>>> >>>> Here''s a full example in case I''m doing something wrong here. >>>> >>>> Function 1: >>>> >>>> module Puppet::Parser::Functions >>>> newfunction(:foo) do |args| >>>> puts ''args[0]:'' + args[0].to_s >>>> puts ''args.size:'' + args.size.to_s >>>> end >>>> end >>>> >>>> Function 2: >>>> >>>> module Puppet::Parser::Functions >>>> newfunction(:foo2) do |args| >>>> Puppet::Parser::Functions.**autoloader.loadall >>>> function_foo(''from_function'') >>>> >>> >> Since you are calling foo with a single argument, I believe the args in >> function foo is a string, not an array. If you instead say >> `function_foo([''from_function''])`, it should do what function foo expects. >> >> end >>>> end >>>> >>>> A manifest: >>>> >>>> foo(''from_manifest'') >>>> foo2() >>>> >>>> Puppet Agent run Result: >>>> >>>> args[0]:from_manifest >>>> args.size:1 >>>> args[0]:102 >>>> args.size:13 >>>> >>>> 13 is the string length of ''from_function'', and 102 is the decimal >>>> representation of ''f''. >>>> >>>> - Adam >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Puppet Users" group. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msg/puppet-users/-/-eqfuh4NRI0J. >>> >>> To post to this group, send email to puppet-users@googlegroups.com. >>> To unsubscribe from this group, send email to >>> puppet-users+unsubscribe@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/puppet-users?hl=en. >>> >> >> -- >> Josh Cooper >> Developer, Puppet Labs >> >>-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/UAzUIA3jQWkJ. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.