diff options
Diffstat (limited to 'lib/puppet')
-rw-r--r-- | lib/puppet/parser/functions/base64.rb | 12 | ||||
-rw-r--r-- | lib/puppet/parser/functions/delete_undef_values.rb | 10 | ||||
-rw-r--r-- | lib/puppet/parser/functions/delete_values.rb | 2 | ||||
-rw-r--r-- | lib/puppet/parser/functions/pick_default.rb | 35 | ||||
-rw-r--r-- | lib/puppet/parser/functions/range.rb | 2 | ||||
-rw-r--r-- | lib/puppet/parser/functions/str2bool.rb | 2 |
6 files changed, 49 insertions, 14 deletions
diff --git a/lib/puppet/parser/functions/base64.rb b/lib/puppet/parser/functions/base64.rb index d9a590a..617ba31 100644 --- a/lib/puppet/parser/functions/base64.rb +++ b/lib/puppet/parser/functions/base64.rb @@ -1,5 +1,5 @@ module Puppet::Parser::Functions - + newfunction(:base64, :type => :rvalue, :doc => <<-'ENDHEREDOC') do |args| Base64 encode or decode a string based on the command and the string submitted @@ -10,9 +10,9 @@ module Puppet::Parser::Functions $decodestring = base64('decode','dGhlc3RyaW5n') ENDHEREDOC - + require 'base64' - + raise Puppet::ParseError, ("base64(): Wrong number of arguments (#{args.length}; must be = 2)") unless args.length == 2 actions = ['encode','decode'] @@ -20,18 +20,18 @@ module Puppet::Parser::Functions unless actions.include?(args[0]) raise Puppet::ParseError, ("base64(): the first argument must be one of 'encode' or 'decode'") end - + unless args[1].is_a?(String) raise Puppet::ParseError, ("base64(): the second argument must be a string to base64") end - + case args[0] when 'encode' result = Base64.encode64(args[1]) when 'decode' result = Base64.decode64(args[1]) end - + return result end end diff --git a/lib/puppet/parser/functions/delete_undef_values.rb b/lib/puppet/parser/functions/delete_undef_values.rb index 532639e..f94d4da 100644 --- a/lib/puppet/parser/functions/delete_undef_values.rb +++ b/lib/puppet/parser/functions/delete_undef_values.rb @@ -3,7 +3,7 @@ module Puppet::Parser::Functions Returns a copy of input hash or array with all undefs deleted. *Examples:* - + $hash = delete_undef_values({a=>'A', b=>'', c=>undef, d => false}) Would return: {a => 'A', b => '', d => false} @@ -11,19 +11,19 @@ Would return: {a => 'A', b => '', d => false} $array = delete_undef_values(['A','',undef,false]) Would return: ['A','',false] - + EOS ) do |args| raise(Puppet::ParseError, "delete_undef_values(): Wrong number of arguments given " + "(#{args.size})") if args.size < 1 - - unless args[0].is_a? Array or args[0].is_a? Hash + + unless args[0].is_a? Array or args[0].is_a? Hash raise(Puppet::ParseError, "delete_undef_values(): expected an array or hash, got #{args[0]} type #{args[0].class} ") end - result = args[0].dup + result = args[0].dup if result.is_a?(Hash) result.delete_if {|key, val| val.equal? :undef} elsif result.is_a?(Array) diff --git a/lib/puppet/parser/functions/delete_values.rb b/lib/puppet/parser/functions/delete_values.rb index ca8eef5..f6c8c0e 100644 --- a/lib/puppet/parser/functions/delete_values.rb +++ b/lib/puppet/parser/functions/delete_values.rb @@ -19,7 +19,7 @@ Would return: {'a'=>'A','c'=>'C','B'=>'D'} if not hash.is_a?(Hash) raise(TypeError, "delete_values(): First argument must be a Hash. " + \ - "Given an argument of class #{hash.class}.") + "Given an argument of class #{hash.class}.") end hash.dup.delete_if { |key, val| item == val } end diff --git a/lib/puppet/parser/functions/pick_default.rb b/lib/puppet/parser/functions/pick_default.rb new file mode 100644 index 0000000..36e33ab --- /dev/null +++ b/lib/puppet/parser/functions/pick_default.rb @@ -0,0 +1,35 @@ +module Puppet::Parser::Functions + newfunction(:pick_default, :type => :rvalue, :doc => <<-EOS + +This function is similar to a coalesce function in SQL in that it will return +the first value in a list of values that is not undefined or an empty string +(two things in Puppet that will return a boolean false value). If no value is +found, it will return the last argument. + +Typically, this function is used to check for a value in the Puppet +Dashboard/Enterprise Console, and failover to a default value like the +following: + + $real_jenkins_version = pick_default($::jenkins_version, '1.449') + +The value of $real_jenkins_version will first look for a top-scope variable +called 'jenkins_version' (note that parameters set in the Puppet Dashboard/ +Enterprise Console are brought into Puppet as top-scope variables), and, +failing that, will use a default value of 1.449. + +Note that, contrary to the pick() function, the pick_default does not fail if +all arguments are empty. This allows pick_default to use an empty value as +default. + +EOS +) do |args| + fail "Must receive at least one argument." if args.empty? + default = args.last + args = args[0..-2].compact + args.delete(:undef) + args.delete(:undefined) + args.delete("") + args << default + return args[0] + end +end diff --git a/lib/puppet/parser/functions/range.rb b/lib/puppet/parser/functions/range.rb index 0849491..ffbdf84 100644 --- a/lib/puppet/parser/functions/range.rb +++ b/lib/puppet/parser/functions/range.rb @@ -28,7 +28,7 @@ Will return: ["a","b","c"] Will return: ["host01", "host02", ..., "host09", "host10"] -Passing a third argument will cause the generated range to step by that +Passing a third argument will cause the generated range to step by that interval, e.g. range("0", "9", "2") diff --git a/lib/puppet/parser/functions/str2bool.rb b/lib/puppet/parser/functions/str2bool.rb index fece7a6..446732e 100644 --- a/lib/puppet/parser/functions/str2bool.rb +++ b/lib/puppet/parser/functions/str2bool.rb @@ -14,7 +14,7 @@ like: 0, f, n, false, no to 'false'. "given (#{arguments.size} for 1)") if arguments.size < 1 string = arguments[0] - + # If string is already Boolean, return it if !!string == string return string |