Puppet Function: lsys::fqdn_rand_array

Defined in:
lib/puppet/functions/lsys/fqdn_rand_array.rb
Function type:
Ruby 4.x API

Overview

lsys::fqdn_rand_array(Array[Any] $data, Optional[Integer] $rand_max)Any

Parameters:

  • data (Array[Any])
  • rand_max (Optional[Integer])

Returns:

  • (Any)


5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/puppet/functions/lsys/fqdn_rand_array.rb', line 5

Puppet::Functions.create_function(:'lsys::fqdn_rand_array') do
  dispatch :fqdn_rand_array do
    param 'Array[Any]', :data
    optional_param 'Integer', :rand_max
  end

  def rand_int(max, *args)
    hostname = Facter.value(:hostname)
    seed = Digest::MD5.hexdigest([hostname, max, *args].join(':')).hex
    Random.new(seed).rand(max)
  end

  # 4 bytes unnsigned int maximum
  def fqdn_rand_array(data, rand_max = 2**32)
    data.sort_by { |e| rand_int(rand_max, e.to_s) }
  end
end