diff options
author | Hunter Haugen <hunter@puppetlabs.com> | 2016-03-15 16:48:50 -0700 |
---|---|---|
committer | Hunter Haugen <hunter@puppetlabs.com> | 2016-03-15 16:48:50 -0700 |
commit | 72f6e379a647396c276d7f216b307361ac76f376 (patch) | |
tree | ffc8b06eaa817edf29b48254f3e06959c0f90090 /lib/puppet | |
parent | 69ca8d09c6124e9b5bd98e62fb201e734ae5bd05 (diff) | |
parent | 0378336f9cefea65675d03f1d7107c75cb950fb6 (diff) | |
download | puppet-stdlib-72f6e379a647396c276d7f216b307361ac76f376.tar.gz puppet-stdlib-72f6e379a647396c276d7f216b307361ac76f376.tar.bz2 |
Merge pull request #577 from EmilienM/enclose_ipv6
Add enclose_ipv6 function
Diffstat (limited to 'lib/puppet')
-rw-r--r-- | lib/puppet/parser/functions/enclose_ipv6.rb | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/puppet/parser/functions/enclose_ipv6.rb b/lib/puppet/parser/functions/enclose_ipv6.rb new file mode 100644 index 0000000..80ffc3a --- /dev/null +++ b/lib/puppet/parser/functions/enclose_ipv6.rb @@ -0,0 +1,45 @@ +# +# enclose_ipv6.rb +# + +module Puppet::Parser::Functions + newfunction(:enclose_ipv6, :type => :rvalue, :doc => <<-EOS +Takes an array of ip addresses and encloses the ipv6 addresses with square brackets. + EOS + ) do |arguments| + + require 'ipaddr' + + rescuable_exceptions = [ ArgumentError ] + if defined?(IPAddr::InvalidAddressError) + rescuable_exceptions << IPAddr::InvalidAddressError + end + + if (arguments.size != 1) then + raise(Puppet::ParseError, "enclose_ipv6(): Wrong number of arguments "+ + "given #{arguments.size} for 1") + end + unless arguments[0].is_a?(String) or arguments[0].is_a?(Array) then + raise(Puppet::ParseError, "enclose_ipv6(): Wrong argument type "+ + "given #{arguments[0].class} expected String or Array") + end + + input = [arguments[0]].flatten.compact + result = [] + + input.each do |val| + unless val == '*' + begin + ip = IPAddr.new(val) + rescue *rescuable_exceptions + raise(Puppet::ParseError, "enclose_ipv6(): Wrong argument "+ + "given #{val} is not an ip address.") + end + val = "[#{ip.to_s}]" if ip.ipv6? + end + result << val + end + + return result.uniq + end +end |