Annex C: Software Module Management UUID Usage

C.1 Overview

The Software Module Management mechanism uses a UUID (see RFC 4122 [28] for a complete definition of UUID) to uniformly identify a Deployment Unit across Agents. Since Deployment Units can be installed multiple times on a single Agent (e.g., multiple versions of the same Deployment Unit or the same version of the Deployment Unit on different Execution Environments), a Deployment Unit on a specific Agent is uniquely identified by the combination of UUID, version, and Execution Environment that the Deployment Unit is installed upon, but the UUID is still the uniform unique identifier of that Deployment Unit (i.e., this means that the UUID will be the same independent of the version of the Deployment Unit). A version 5 UUID is a method for generating UUIDs from “names” that are unique within some “namespace”, which means that a UUID generated by different actors but using the same “name” and “namespace” will cause the generation of the same exact UUID. The Software Module Management mechanism requires, whether the Controller or the Agent generates the UUID, that the UUID be generated in the exact same manner following both the rules defined in Section 4.3 / RFC 4122 [28] and the rules defined within this Annex.

Section 4.3 / RFC 4122 [28] identifies the following high-level requirements for a Version 3 UUID:

The remainder of this Annex defines additional rules that MUST be followed by the Controller and Agent when generating a UUID as well as under what circumstances a Agent will be required to generate a UUID.

C.2 UUID Generation Requirements

The following set of additional requirements ensures that the Version 5 UUID will be uniform regardless of whether the Controller or Agent generates it:

The FQDN “namespace” UUID as defined in Appendix C /RFC 4122 [28] MUST be used: 6ba7b810-9dad-11d1-80b4-00c04fd430c8

The “name” will be the FQDN of the Deployment Unit, which MUST be a combination of the Deployment Unit’s Name (the value that will be contained within the DeploymentUnit.{i}.Name Parameter) and the Deployment Unit Vendor’s domain name (the value that will be contained within the DeploymentUnit.{i}.Vendor Parameter). The format is: ‘<Name> + “.” + <Vendor> + “.”’. For example, if the DU Vendor is “” and the DU Name is “sample1”, then the FQDN of the DU is “”

As the Deployment Unit’s Name is used within generation of the FQDN, it MUST be altered if it contains any characters other than 0-9, a-z, A-Z, _ (underscore), or - (hyphen). Percent-encoding MUST be used to replace any other characters (i.e., a ‘%’ character followed by the ASCII hex value of the replaced character). For example, a Deployment Unit Name of “sample.1” would be converted to “sample%2e1”.

An example of a Version 5 UUID looks like: * 76183ed7-6a38-3890-66ef-a6488efb6690

C.3 Agent Requirements

There are three circumstances when a Agent MUST generate its own UUID:

In these circumstances the Agent MUST generate the UUID as it installs the Deployment Unit. The Controller can discover / validate the generated UUID by either inspecting the DUStateChangeComplete or inspecting the Deployment Unit Data Model table.