Update stdlib and concat to 6.1.0 both
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / lib / puppet / parser / functions / fqdn_uuid.rb
index 30205d0..e325fe7 100644 (file)
@@ -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