Puppet Function: generate_server_names
- Defined in:
- lib/puppet/parser/functions/generate_server_names.rb
- Function type:
- Ruby 3.x API
Overview
This function applies a suffix and a prefix to all elements in an array.
Examples:
$server_names = [ 'test1.ch', 'test2.ch' ]
$supre = {
'suffix' => [ '.server1', '.server2' ],
'prefix' => [ 'www.', 'dev.' ],
}
generate_server_names($server_names,$supre)
Will return: [“test1.ch”, “test2.ch”, “www.test1.ch”, “dev.test1.ch”, “www.test2.ch”,
"dev.test2.ch", "test1.ch.server1", "test1.ch.server2", "test2.ch.server1", "test2.ch.server2"]
6 7 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 |
# File 'lib/puppet/parser/functions/generate_server_names.rb', line 6 newfunction(:generate_server_names, :type => :rvalue, :doc => <<-EOS This function applies a suffix and a prefix to all elements in an array. *Examples:* $server_names = [ 'test1.ch', 'test2.ch' ] $supre = { 'suffix' => [ '.server1', '.server2' ], 'prefix' => [ 'www.', 'dev.' ], } generate_server_names($server_names,$supre) Will return: ["test1.ch", "test2.ch", "www.test1.ch", "dev.test1.ch", "www.test2.ch", "dev.test2.ch", "test1.ch.server1", "test1.ch.server2", "test2.ch.server1", "test2.ch.server2"] EOS ) do |arguments| # Two arguments are required raise(Puppet::ParseError, "generate_server_names(): Wrong number of arguments " + "given (#{arguments.size} for 2)") if arguments.size != 2 input = arguments[0] unless input.is_a?(Array) raise Puppet::ParseError, "generate_server_names(): expected first argument to be an Array, got #{array.inspect}" end unless arguments[1].is_a?(Hash) raise Puppet::ParseError, "generate_server_names(): expected second argument to be a Hash, got #{array.inspect}" end suffix = arguments[1]['suffix'] prefix = arguments[1]['prefix'] suffixed = [] input.each do |i| suffix.each do |s| suffixed << i + s end end prefixed = [] input.each do |i| prefix.each do |s| prefixed << s + i end end unioned1 = input | prefixed unioned = unioned1 | suffixed return unioned end |