Puppet Function: simplib::bracketize
- Defined in:
- lib/puppet/functions/simplib/bracketize.rb
- Function type:
- Ruby 4.x API
Overview
Add brackets to strings of IPv6 addresses and ‘Arrays` of IPv6 addresses based on the rules for bracketing IPv6 addresses.
Ignores anything that does not look like an IPv6 address and return those entries untouched.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/puppet/functions/simplib/bracketize.rb', line 8 Puppet::Functions.create_function(:'simplib::bracketize') do # @param ip_arr The array of IPv6 addresses to bracketize # @return [Variant[String, Array[String]]] converted input # # @example Bracketize ip_arr input # # $foo = [ '2001:0db8:85a3:0000:0000:8a2e:0370:7334', # '2001:0db8:85a3:0000:0000:8a2e:0370:7334/24' ] # # $bar = simplib::bracketize($foo) # # $bar contains:[ '[2001:0db8:85a3:0000:0000:8a2e:0370:7334]', # '[2001:0db8:85a3:0000:0000:8a2e:0370:7334]/24' ] # dispatch :bracketize do required_param 'Array[String]', :ip_arr end # @param ipaddr_string The string of IPv6 addresses to bracketize (comma, space, and/or semi-colon separated) # @return [Variant[String, Array[String]]] converted input # # @example Bracketize ipaddr_string input # # $foo = '2001:0db8:85a3:0000:0000:8a2e:0370:7334,2001:0db8:85a3:0000:0000:8a2e:0370:7334/24 3456:0db8:85a3:0000:0000:8a2e:0370:7334' # # $bar = simplib::bracketize($foo) # # $bar contains:[ '[2001:0db8:85a3:0000:0000:8a2e:0370:7334]', # '[2001:0db8:85a3:0000:0000:8a2e:0370:7334]/24', # '[3456:0db8:85a3:0000:0000:8a2e:0370:7334]' ] # dispatch :bracketize_string_input do required_param 'String', :ipaddr_string end def bracketize_string_input(ipaddr_string) ip_arr = ipaddr_string.split(/\s|,|;/).delete_if{ |y| y.empty? } bracketize(ip_arr) end def bracketize(ip_arr) require 'ipaddr' ipaddr = Array(ip_arr).flatten retval = Array.new ipaddr.each do |x| begin ip = IPAddr.new(x) rescue #allowed to fail because input can be string of hostname # will just return unaltered input in that case retval << x next end # IPv6 Address? if ip.ipv6?() then if x[0].chr != '[' then y = x.split('/') y[0] = "[#{y[0]}]" retval << y.join('/') else retval << x end else retval << x end end retval = retval.first if retval.size == 1 return retval end end |