On 2013-27-11 17:33, Israel Calvete wrote:
Hi all,

I try write a custom function

My code:

/  $gluster = {/
/    '10.241.5.6' => '/data/gv0/brick1',/
/    '10.241.5.7' => '/data/gv0/brick1',/
/  }/
/
/
/  $a = glusterFunctions($gluster)/
/
/
/  notify{$a:}/


My simple custom function:

/require 'rubygems'/
/
/
/module Puppet::Parser::Functions/
/
/
/class GlusterFunctions/
/
/
/  def initialize(gluster)/
/    @gluster = gluster/
/  end/
/
/
/  def formatBricks()/
/    r = ''/
/    @gluster.each do |k,v|/
/      r += "#{k}:#{v} "/
/    end/
/    return  r[0..-2]/
/  end/
/end/
/
/
/  newfunction(:glusterFunctions, :type => :rvalue) do |args|/
/    gluster = args *# with one argument args isn't an arra*y/
/
/
/    g = GlusterFunctions.new(gluster)/
/    return g.formatBricks()/
/  end/
/end/

The notify:

/notice: 10.241.5.7/data/gv0/brick110.241.5.6/data/gv0/brick1:/

It's seems like if hash paremeter is converted in a string

Why? Any solutions?

All functions get their arguments as an array. The first argument passed is found in args[0], the second in args[1], etc.

You probably want to do this:

gluster = args[0]
unless gluster.is_a? Hash
  raise ArgumentError, "glusterFunctions(): first arg must be a hash"
end


Regards
- henrik

--
You received this message because you are subscribed to the Google Groups "Puppet 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/l75qoo%24aqn%241%40ger.gmane.org.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to