I just modified your code a little bit and created two function out of that:
*# am_running_oss_hash.rb*
> module Puppet::Parser::Functions
> newfunction(:am_running_oss_hash, :type => :rvalue ) do |args|
> inFile = args[0]
> gos = {}
>
> if File.exist?(inFile)
> open(inFile, 'r').each do |line|
> next if line =~ /^\s*(#|$)/
> parts = line.split(',').map(&:strip)
>
> case parts[1]
> when /^Mac/
> (gos[:mac] ||= []) << parts[0]
> when /_Win$/
> (gos[:win] ||= []) << parts[0]
> else
> (gos[:linux] ||= []) << parts[0]
> end
> end
> end
>
> return gos
> end
> end
>
*# am_running_oss.rb*
> module Puppet::Parser::Functions
> newfunction(:am_running_oss, :type => :rvalue ) do |args|
> #Puppet::Parser::Functions.function('am_running_oss_hash')
> Puppet::Parser::Functions.autoloader.loadall
>
> oss = function_am_running_oss_hash(['/tmp/OSs.txt'])
> if oss.count >= 1
> return oss.keys.join(',')
> else
> return 'undefined'
> end
> end
> end
>
and then in the module:
$h = am_running_oss()
> notify {"=*=*= RunnigOSS <|:|> ${h} =*=*=*=*=*=*=*=":}
>
but I'm getting this error:
Error: Could not retrieve catalog from remote server: Error 400 on SERVER:
> custom functions must be called with a single array that contains the
> arguments. For example, function_example([1]) instead of function_example(1)
>
What am I doing wrong? Cheers!!
On Wednesday, October 16, 2013 11:45:42 AM UTC+1, Cristian Falcas wrote:
>
> You could return a hash, or an array if you need multiple from the
> function.
>
>
>
--
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 post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-users.
For more options, visit https://groups.google.com/groups/opt_out.