github.com/Ilhicas/nomad@v1.0.4-0.20210304152020-e86851182bc3/website/content/docs/job-specification/hcl2/functions/uuid/uuidv5.mdx (about)

     1  ---
     2  layout: docs
     3  page_title: uuidv5 - Functions - Configuration Language
     4  sidebar_title: uuidv5
     5  description: |-
     6    The uuidv5 function generates a uuid v5 string representation of the value in
     7    the specified namespace.
     8  ---
     9  
    10  # `uuidv5` Function
    11  
    12  `uuidv5` generates a _name-based_ UUID, as described in [RFC 4122 section
    13  4.3](https://tools.ietf.org/html/rfc4122#section-4.3), also known as a "version
    14  5" UUID.
    15  
    16  ```hcl
    17  uuidv5(namespace, name)
    18  ```
    19  
    20  Unlike the pseudo-random UUIDs generated by [`uuidv4`](/docs/job-specification/hcl2/functions/uuid/uuidv4),
    21  name-based UUIDs derive from namespace and an name, producing the same UUID
    22  value every time if the namespace and name are unchanged.
    23  
    24  Name-based UUID namespaces are themselves UUIDs, but for readability this
    25  function accepts some keywords as aliases for the namespaces that were assigned
    26  by RFC 4122:
    27  
    28  | Keyword  | Namespace ID                           | Name format                                                                  |
    29  | -------- | -------------------------------------- | ---------------------------------------------------------------------------- |
    30  | `"dns"`  | `6ba7b810-9dad-11d1-80b4-00c04fd430c8` | A fully-qualified DNS domain name.                                           |
    31  | `"url"`  | `6ba7b811-9dad-11d1-80b4-00c04fd430c8` | Any valid URL as defined in [RFC 3986](https://tools.ietf.org/html/rfc3986). |
    32  | `"oid"`  | `6ba7b812-9dad-11d1-80b4-00c04fd430c8` | An [ISO/IEC object identifier](https://oidref.com/)                          |
    33  | `"x500"` | `6ba7b814-9dad-11d1-80b4-00c04fd430c8` | [X.500 Distinguished Name](https://tools.ietf.org/html/rfc1779)              |
    34  
    35  To use any other namespace not included in the above table, pass its assigned
    36  namespace ID directly in the first argument in the usual UUID string format.
    37  
    38  ## Examples
    39  
    40  Use the namespace keywords where possible, to make the intent more obvious to
    41  a future reader:
    42  
    43  ```shell-session
    44  > uuidv5("dns", "nomadproject.io")
    45  d2616d48-e1cb-5b87-8a8c-46355decc76a
    46  
    47  > uuidv5("url", "https://nomadproject.io/")
    48  a1572394-3948-5251-b0c7-b4ded43587b4
    49  
    50  > uuidv5("oid", "1.3.6.1.4")
    51  af9d40a5-7a36-5c07-b23a-851cd99fbfa5
    52  
    53  > uuidv5("x500", "CN=Example,C=GB")
    54  84e09961-4aa4-57f8-95b7-03edb1073253
    55  ```
    56  
    57  The namespace keywords treated as equivalent to their corresponding namespace
    58  UUIDs, and in some special cases it may be more appropriate to use the
    59  UUID form:
    60  
    61  ```shell-session
    62  > uuidv5("6ba7b810-9dad-11d1-80b4-00c04fd430c8", "nomadproject.io")
    63  d2616d48-e1cb-5b87-8a8c-46355decc76a
    64  ```
    65  
    66  If you wish to use a namespace defined outside of RFC 4122, using the namespace
    67  UUID is required because no corresponding keyword is available:
    68  
    69  ```shell-session
    70  > uuidv5("743ac3c0-3bf7-4a5b-9e6c-59360447c757", "LIBS:diskfont.library")
    71  ede1a974-df7e-5f17-84b9-76208818b2c8
    72  ```
    73  
    74  When using raw UUID namespaces, consider including a comment alongside the
    75  expression that indicates which namespace this represents in a
    76  human-significant manner, such as by reference to the standard that defined it.
    77  
    78  ## Related Functions
    79  
    80  - [`uuidv4`](/docs/job-specification/hcl2/functions/uuid/uuidv4), which generates pseudorandom UUIDs.