If you enroll in custom naming in the Cloud Assembly UI, you can create custom naming templates for your organization or project using the IaaS API. Custom naming provides a way for you to name deployed resources using conventions that you define.

If you create a custom name using POST /iaas/api/naming, any project that does not already have a template applied can use the naming template. An organization-level naming template applies to any project that is added to an organization.

A maximum of two resource naming templates can be applied to a project: one project-level naming template and one organization-level naming template. Each can have multiple resource types. If naming templates exist at both the project and organization level, the project uses the naming convention used in the project-level naming template.

Note: If you created a project and specified a custom naming template as part of a previous project definition, that template is deprecated when you enroll in custom naming. To replace that template, create a custom name at the project level and add a new naming template.

The following examples show how to define custom naming templates for an organization and a project.

Prerequisites for creating a custom name

  • Verify that general prerequisites have been satisfied. See Prerequisites for working with the Cloud Assembly APIs.
  • Verify that you have enrolled in Custom Naming.

    For information about enrolling in custom naming, see Custom naming deployed resources in Cloud Assembly.

  • Verify that you know your organization ID. If you do not know your organization ID, perform the following steps:
    1. Log in to the organization console of your vRealize Automation appliance, for example https://appliance.domain.com/csp/gateway/portal/
    2. Click the drop-down arrow by your name to display the organization ID below the organization name.
    3. Right click the icon next to the organization ID to copy the long string.
  • If you are adding a project-level template, verify that you know the name and ID of the project that you want to assign to the template. For information on how to get a list of projects, see Create a Project to use in Cloud Assembly.

How to create a custom name with organization scope

This example shows how to define an organization-level custom name with a naming template for a machine resource type in "orgId": "8327d53f-91ea-420a-8613-ba8f3149db95" .

curl -X POST \
  "$url/api/naming?apiVersion=$api_version" \
  -H "Authorization: Bearer $access_token" \
  -H 'Content-Type: application/json' \    
  -d '{
    "name": "org-level custom name",
    "description": "Example organization-level custom name", 
    "projects": [
      {
        "defaultOrg": true,
        "active": true,
        "projectName": "*",
        "projectId": "*",
        "orgId": "8327d53f-91ea-420a-8613-ba8f3149db95"
      }
    ],
    "templates": [
      {
        "uniqueName": true,
        "staticPattern": "",
        "counters": [],
        "incrementStep": 1,
        "pattern": "myvm-${##}",
        "startCounter": 1,
        "resourceTypeName": "Machine",
        "resourceType": "COMPUTE",
        "resourceDefault": true
      }
    ]
  }' | jq "."

The response shows the organization-level custom name with the custom name ID.

{
    "name": "org-level custom name",
    "description": "Example organization-level custom name",
    "id": "6ca7be62-627b-41f0-9505-fc29c1349a85",
    "_links": {
        "self": {
            "href": "/iaas/api/naming/6ca7be62-627b-41f0-9505-fc29c1349a85"
        }
    }
}

How to create a custom name with project scope

This example shows how to define a project-level custom name with naming templates for network and machine resource types, and assigned to a project that has not already been added to a custom name with project scope.

curl -X POST \
  "$url/api/naming?apiVersion=$api_version" \
  -H "Authorization: Bearer $access_token" \
  -H 'Content-Type: application/json' \    
  -d '{
    "name": "proj-level custom name ",
    "description": "Example project-level custom name", 
    "projects": [
      {
        "defaultOrg": false,
        "active": true,
        "projectName": "Example-CA-project",
        "projectId": "5944aacb-91de-4541-bb9e-ef2a5403f81b",
        "orgId": "8327d53f-91ea-420a-8613-ba8f3149db95"
      }
    ],      
    "templates": [
      {
        "uniqueName": true,
        "staticPattern": "",
        "counters": [],
        "incrementStep": 1,
        "pattern": "myCAproject-${##}",
        "startCounter": 1,
        "resourceTypeName": "Network",
        "resourceType": "NETWORK",
        "resourceDefault": true
      },
      {
        "uniqueName": true,
        "staticPattern": "",
        "counters": [],
        "incrementStep": 1,
        "pattern": "myCAproject-${##}",
        "startCounter": 1,
        "resourceTypeName": "Machine",
        "resourceType": "COMPUTE",
        "resourceDefault": true
      }
    ]
 }' | jq "."

The response shows the project-level custom name with the custom name ID.

{
    "name": "proj-level custom name",
    "description": "Example project-level custom name",
    "id": "9afa9636-9536-4867-a325-fc70eb073a86",
    "_links": {
        "self": {
            "href": "/iaas/api/naming/9afa9636-9536-4867-a325-fc70eb073a86"
        }
    }
}