X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fstdlib%2Flib%2Fpuppet%2Fparser%2Ffunctions%2Ffqdn_uuid.rb;h=e325fe73233e14a4741201f583858624f68f85b8;hb=30caaa85aed7015ca0d77216bff175eebd917eb7;hp=30205d0c84b5512f6c1e553d326228814a705b62;hpb=6963202b4b62c2816655ac9532521b018fdf83bd;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/stdlib/lib/puppet/parser/functions/fqdn_uuid.rb b/3rdparty/modules/stdlib/lib/puppet/parser/functions/fqdn_uuid.rb index 30205d0c8..e325fe732 100644 --- a/3rdparty/modules/stdlib/lib/puppet/parser/functions/fqdn_uuid.rb +++ b/3rdparty/modules/stdlib/lib/puppet/parser/functions/fqdn_uuid.rb @@ -1,47 +1,24 @@ require 'digest/sha1' - +# +# fqdn_uuid.rb +# module Puppet::Parser::Functions - newfunction(:fqdn_uuid, :type => :rvalue, :doc => <<-END) do |args| - - Creates a UUID based on a given string, assumed to be the FQDN - - For example, to generate a UUID based on the FQDN of a system: - - Usage: - - $uuid = fqdn_uuid($::fqdn) - - The generated UUID will be the same for the given hostname - - The resulting UUID is returned on the form: + newfunction(:fqdn_uuid, :type => :rvalue, :doc => <<-DOC) do |args| + @summary + Returns a [RFC 4122](https://tools.ietf.org/html/rfc4122) valid version 5 UUID based + on an FQDN string under the DNS namespace - 1d839dea-5e10-5243-88eb-e66815bd7d5c + @return + Returns a [RFC 4122](https://tools.ietf.org/html/rfc4122) valid version 5 UUID - (u.e. without any curly braces.) + @example Example Usage: + fqdn_uuid('puppetlabs.com') # Returns '9c70320f-6815-5fc5-ab0f-debe68bf764c' + fqdn_uuid('google.com') # Returns '64ee70a4-8cc1-5d25-abf2-dea6c79a09c8' + DOC - The generated UUID is a version 5 UUID with the V5 DNS namespace: - - 6ba7b810-9dad-11d1-80b4-00c04fd430c8 - - This only supports a the V5 SHA-1 hash, using the DNS namespace. - - Please consult http://www.ietf.org/rfc/rfc4122.txt for the details on - UUID generation and example implementation. - - No verification is present at the moment as whether the domain name given - is in fact a correct fully-qualified domain name. Therefore any arbitrary - string and/or alpha-numeric value can subside for a domain name. - EOS - - END - - if args.length == 0 - raise(ArgumentError, "fqdn_uuid: No arguments given") - elsif args.length == 1 - fqdn = args[0] - else - raise(ArgumentError, "fqdn_uuid: Too many arguments given (#{args.length})") - end + raise(ArgumentError, 'fqdn_uuid: No arguments given') if args.empty? + raise(ArgumentError, "fqdn_uuid: Too many arguments given (#{args.length})") unless args.length == 1 + fqdn = args[0] # Code lovingly taken from # https://github.com/puppetlabs/marionette-collective/blob/master/lib/mcollective/ssl.rb @@ -51,22 +28,21 @@ module Puppet::Parser::Functions # 6ba7b810-9dad-11d1-80b4-00c04fd430c8 # uuid_name_space_dns = [0x6b, - 0xa7, - 0xb8, - 0x10, - 0x9d, - 0xad, - 0x11, - 0xd1, - 0x80, - 0xb4, - 0x00, - 0xc0, - 0x4f, - 0xd4, - 0x30, - 0xc8 - ].map {|b| b.chr}.join + 0xa7, + 0xb8, + 0x10, + 0x9d, + 0xad, + 0x11, + 0xd1, + 0x80, + 0xb4, + 0x00, + 0xc0, + 0x4f, + 0xd4, + 0x30, + 0xc8].map { |b| b.chr }.join sha1 = Digest::SHA1.new sha1.update(uuid_name_space_dns) @@ -83,7 +59,7 @@ module Puppet::Parser::Functions bytes[8] &= 0x3f bytes[8] |= 0x80 - bytes = [4, 2, 2, 2, 6].collect do |i| + bytes = [4, 2, 2, 2, 6].map do |i| bytes.slice!(0, i).pack('C*').unpack('H*') end