Sha256: 7722c7f0244c9bbe68d465b2f314dc440361a44656fa49de2afa7872e4fb005b

Contents?: true

Size: 1.17 KB

Versions: 83

Compression:

Stored size: 1.17 KB

Contents

require 'digest/md5'

Puppet::Parser::Functions::newfunction(:fqdn_rand, :arity => -2, :type => :rvalue, :doc =>
  "Usage: `fqdn_rand(MAX, [SEED])`. MAX is required and must be a positive
  integer; SEED is optional and may be any number or string.

  Generates a random whole number greater than or equal to 0 and less than MAX,
  combining the `$fqdn` fact and the value of SEED for repeatable randomness.
  (That is, each node will get a different random number from this function, but
  a given node's result will be the same every time unless its hostname changes.)

  This function is usually used for spacing out runs of resource-intensive cron
  tasks that run on many nodes, which could cause a thundering herd or degrade
  other services if they all fire at once. Adding a SEED can be useful when you
  have more than one such task and need several unrelated random numbers per
  node. (For example, `fqdn_rand(30)`, `fqdn_rand(30, 'expensive job 1')`, and
  `fqdn_rand(30, 'expensive job 2')` will produce totally different numbers.)") do |args|
    max = args.shift.to_i
    seed = Digest::MD5.hexdigest([self['::fqdn'],args].join(':')).hex
    Puppet::Util.deterministic_rand(seed,max)
end

Version data entries

83 entries across 83 versions & 2 rubygems

Version Path
puppet-retrospec-0.12.2 vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/fqdn_rand.rb
puppet-3.8.7 lib/puppet/parser/functions/fqdn_rand.rb
puppet-3.8.7-x86-mingw32 lib/puppet/parser/functions/fqdn_rand.rb
puppet-3.8.7-x64-mingw32 lib/puppet/parser/functions/fqdn_rand.rb
puppet-3.8.6 lib/puppet/parser/functions/fqdn_rand.rb
puppet-3.8.6-x86-mingw32 lib/puppet/parser/functions/fqdn_rand.rb
puppet-retrospec-0.12.1 vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/fqdn_rand.rb
puppet-3.8.6-x64-mingw32 lib/puppet/parser/functions/fqdn_rand.rb
puppet-retrospec-0.12.0 vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/fqdn_rand.rb
puppet-3.8.5 lib/puppet/parser/functions/fqdn_rand.rb
puppet-3.8.5-x86-mingw32 lib/puppet/parser/functions/fqdn_rand.rb
puppet-3.8.5-x64-mingw32 lib/puppet/parser/functions/fqdn_rand.rb
puppet-3.8.4 lib/puppet/parser/functions/fqdn_rand.rb
puppet-3.8.4-x86-mingw32 lib/puppet/parser/functions/fqdn_rand.rb
puppet-3.8.4-x64-mingw32 lib/puppet/parser/functions/fqdn_rand.rb
puppet-retrospec-0.11.0 vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/fqdn_rand.rb
puppet-retrospec-0.10.0 vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/fqdn_rand.rb
puppet-retrospec-0.9.1 vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/fqdn_rand.rb
puppet-retrospec-0.9.0 vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/fqdn_rand.rb
puppet-retrospec-0.8.1 vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/fqdn_rand.rb