Programming Guide VRealize. Automation 7.1 V Realize Vrealize 71
User Manual: Pdf vRealize Automation - 7.1 - Programming Guide User Guide for VMware vRealize Software, Free Instruction Manual
Open the PDF directly: View PDF .
Page Count: 389
Download | |
Open PDF In Browser | View PDF |
Programming Guide vRealize Automation 7.1 Programming Guide You can find the most up-to-date technical documentation on the VMware website at: https://docs.vmware.com/ If you have comments about this documentation, submit your feedback to docfeedback@vmware.com VMware, Inc. 3401 Hillview Ave. Palo Alto, CA 94304 www.vmware.com Copyright © 2008–2016 VMware, Inc. All rights reserved. Copyright and trademark information. VMware, Inc. 2 Contents vRealize Automation Programming Guide 6 1 Overview of the vRealize Automation REST API 7 2 REST API Authentication 10 Using HTTP Bearer Tokens 10 Configure the Duration of an HTTP Bearer Token Request an HTTP Bearer Token 11 Validate an HTTP Bearer Token 14 Delete an HTTP Bearer Token 10 14 3 REST API Use Cases 16 Create a Tenant 17 Syntax for Displaying Your Current Tenants Syntax for Requesting a New Tenant 20 23 Syntax for Listing All Tenant Identity Stores 26 Syntax for Linking an Identity Store to the Tenant 29 Syntax for Searching LDAP or Active Directory for a User Syntax for Assigning a User to a Role 35 Syntax for Displaying all Roles Assigned to a User Request a Machine 33 36 38 Syntax for Listing Shared and Private Catalog Items Syntax for Getting Information for a Catalog Item 40 43 Syntax for Getting a Template Request for a Catalog Item Syntax for Requesting a Machine 51 Syntax for Viewing Details of a Machine Request Approve a Machine Request 47 54 57 Syntax for Listing Work Items 58 Syntax for Getting Work Item Details 65 Syntax for Constructing a JSON File to Approve a Machine Request Syntax for Approving a Submitted Machine Request Syntax for Updating Cost Information List Provisioned Resources 69 73 75 78 Syntax for Displaying Your Provisioned Resources 79 Syntax for Displaying Provisioned Resources by Resource Type Syntax for Displaying All Available Resource Types 81 84 Syntax for Displaying Provisioned Resources by Business Groups You Manage Syntax for Viewing Machine Details VMware, Inc. 86 93 3 Programming Guide Manage Provisioned Deployments 97 Syntax for Getting Deployment Details 99 Syntax for Navigating to the Children of a Deployed Resource 103 Perform a Day 2 Action: Power Off 109 Perform a Day 2 Action: Change Lease Working with Reservations Create a Reservation 112 113 Display a List of Reservations Update a Reservation Delete a Reservation 263 274 283 Working with Reservation Policies List Reservation Policies 285 285 Create a Reservation Policy 288 Display a Reservation Policy by ID Update a Reservation Policy Get a Key Pair List 296 301 Query a Key Pair 304 Delete a Key Pair 294 296 Create a Key Pair Update a Key Pair 290 292 Delete a Reservation Policy Working with Key Pairs 111 305 308 Working with Network Profiles Get a Network Profile List 310 311 Create a Network Profile 327 Query a Network Profile 332 Update a Network Profile Delete a Network Profile 338 341 Get a List of Available IP Ranges for an IPAM Provider Import and Export Content 342 359 Syntax for Listing Supported Content Types Syntax for Listing Available Content 362 365 Syntax for Filtering Content by Content Type Syntax for Creating a Package for Export 369 371 Syntax for Listing Packages in the Content Service Syntax for Exporting a Package 372 374 Syntax for Validating a Content Bundle Before Importing Syntax for Importing a Package Understanding Blueprint Schema 377 379 Manage XaaS Content with Import and Export VMware, Inc. 375 381 4 Programming Guide 4 Related Tools and Documentation 385 Using the vRealize Automation API Reference View Reference Information for an API Using vRealize CloudClient Using Third Party Tools 385 386 386 387 5 Filtering and Formatting REST API Information 389 VMware, Inc. 5 vRealize Automation Programming Guide The Programming Guide provides information about the vRealize Automation REST APIs, including how to use the REST API services and resources, create HTTP bearer tokens for authentication and authorization, and construct REST API service calls. Intended Audience This information is intended for administrators and programmers who want to configure and manage vRealize Automation programmatically using the vRealize Automation REST API. The guide focuses on common use cases. For related information about all available REST API services, see in vRealize Automation API Reference at https://www.vmware.com/support/pubs/vcac-pubs.html. VMware Technical Publications Glossary VMware Technical Publications provides a glossary of terms that might be unfamiliar to you. For definitions of terms as they are used in VMware technical documentation, go to https://www.vmware.com/support/pubs/vcac-pubs.html. VMware, Inc. 6 Overview of the vRealize Automation REST API 1 The vRealize Automation REST API provides consumer, administrator, and provider-level access to the service catalog with the same services that support the vRealize Automation console user interface. You can perform vRealize Automation functions programmatically by using REST API service calls. The vRealize Automation REST API offers the following services and functions. Table 1‑1. vRealize Automation REST API Services Service Description Approval Service Retrieve, create, update, and delete approval policies, policy types, policy instances, and policy requests. Branding Service Change the background and text colors, company logo, company name, product name, tenant name, and other resources in the console. Catalog Service Retrieve global and entitled catalog items, and entitlements for a catalog item and its service that the current user can review. A consumer can retrieve, edit, and submit a request form for a catalog item. A provider can retrieve, register, update, and delete catalog items. Provision and manage systems. Component Registry Service Access and manage all services and serves as the central view for all service lookups. Composition Service Allows vRealize Automation services to register application components, which the composition service manages so that they can be used in composite blueprints. Content Management Service Access and manage the content controller and package controller for export and import processes. This includes export and import for blueprints and software. Endpoint Configuration Service Create, read, update and delete endpoint types, endpoint categories, and endpoints. Event Broker Service Provide a central location and a consistent way of recording events and querying for events. Forms Service Used internally by the vRealize Automation system to create, read, update and delete (perform CRUD operations on) request forms for XaaS components. IaaS Proxy Provider Service Run a proxy service that acts as a bridge between the service catalog and the IaaS provider to call other services, such as the catalog service, composition service, reservation service, and event broker service. VMware, Inc. 7 Programming Guide Table 1‑1. vRealize Automation REST API Services (Continued) Service Description Identity Service Manage tenants, business groups, SSO and custom groups, users, and identity stores. IP Address Management Service Allocate and deallocate IP addresses from IP address management (IPAM) providers. Licensing Service Retrieve permissions and post serial keys. Management Service (Reclamation Service) Retrieve work item forms, callbacks, and tasks. Manage endpoint details including tenant, password, user name, and endpoint URL. Retrieve performance metrics. Retrieve and cancel reclamation requests. Network Service Access and manage application network and security settings for creating and configuring NAT and routed networks; creating load balancers; and adding and configuring security groups, security tags and security policies for application components. Notification Service Configure and send notifications for several types of events such as the successful completion of a catalog request or a required approval. Orchestration Gateway Service Provides a gateway to VMware Realize Orchestrator (vRO) for services running on vRealize Automation. By using the gateway, consumers of the API can access a vRO instance, and initiate workflows or script actions without having to deal directly with the vRO APIs. Extensibility (Plug-in) Service Retrieve, create, update, and delete a resource. Retrieve an extension. Retrieve license notifications. Portal Service Retrieve, create, update, and delete a portal resource. Properties Service Manage custom properties, property groups, and property definitions. Properties specify items that can be added to blueprints to trigger vRealize Orchestrator actions. Reservation Service Retrieve, create, update, and delete a reservation or reservation policy. Software Services Triggers the execution life cycle of software components using the software agent, registers software agents, and manages the creation, modification and deletion of software componentsoftware component types, software resource requests, and nodes (machines). vRA Orchestrator Service Manage vRealize Orchestrator actions, tasks, packages, and workflows. Browse system and plug-in inventories. Work Item Service Retrieve, create, update, complete, cancel, and delete a work item. Also retrieve form data, metadata, detail forms, and submission forms from service providers. XaaS Service Manages XaaS elements such as forms, endpoints, XaaS blueprints, tenants, vRealize Orchestrator imports, workflows, and work items. The advanced designer service selection on the vRealize Automation API Reference landing page selects the documentation for the XaaS service. VMware, Inc. 8 Programming Guide When a service request contains a resource URL, the first part of the URL identifies the service and the last part identifies the resource. For example, the following resource URL identifies the catalog service and the providers resource: https://$host/component-registry/api/services For more information about all the vRealize Automation REST API service calls, see Using the vRealize Automation API Reference and the vRealize Automation API Reference in your vRealize Automation installation. VMware, Inc. 9 REST API Authentication 2 In the REST API, vRealize Automation requires HTTP bearer tokens in request headers for authentication of consumer requests. A consumer request applies to tasks that you can perform in the vRealize Automation console, such as requesting a machine. To acquire an HTTP bearer token, you authenticate with an identity service that manages the communication with the SSO server. The identity service returns an HTTP bearer token that you include in all request headers until the token expires, or you delete it. An HTTP bearer token expires in 24 hours by default, but you can configure the token with a different duration. Using HTTP Bearer Tokens You use HTTP bearer tokens for tasks that you can also perform in the vRealize Automation console. You create a request header with the curl command or with some other utility. You use HTTP bearer tokens for tasks that you can also perform in the vRealize Automation console. You create a request header with the curl command or with some other utility. You use POST, HEAD, and DELETE methods to manage HTTP bearer tokens. Method URL Description POST /tokens Authenticate the user with the identity service /tokens and generate a new token. HEAD /tokens/tokenID Validate the token tokenID. DELETE /tokens/tokenID Delete the token tokenID. Use the following root URL for HTTP bearer calls: https://$vra_server/identity/api/tokens Configure the Duration of an HTTP Bearer Token You set the duration of HTTP bearer tokens in the /etc/vcac/security.properties file on the vRealize Automation appliance. VMware, Inc. 10 Programming Guide The effective duration or lifetime of an HTTP bearer token depends on the duration of its corresponding SAML token, which the SSO server creates at request time. An HTTP bearer token expires when it reaches the end of its configured duration, or at the end of the configured duration of the SAML token, whichever comes first. For example, if the configured duration is three days for the HTTP bearer token and two days for the SAML token, the HTTP bearer token expires in two days. A configuration setting on the SSO server determines the duration of SAML tokens. Prerequisites n Log in to the vRealize Automation appliance with SSH as root. The password is the one you specified when you deployed the appliance. n The /etc/vcac/security.properties file on the appliance must be editable. Procedure 1 Open the /etc/vcac/security.properties file for editing. 2 Add the following lines to the file, where N is an integer specifying the duration of the token in hours. identity.basic.token.lifetime.hours=N #The number is in hours. 3 Save and close the file. 4 Log out of the vRealize Automation appliance. The new value applies the next time someone requests an HTTP bearer token. Request an HTTP Bearer Token You use an HTTP bearer token to authenticate a vRealize Automation REST API consumer request . A consumer request must specify the correct component registry service and resource. For example, the URL to obtain an HTTP bearer token must specify the identity service and token resource. The HTTP bearer token expires in 24 hours by default. See Configure the Duration of an HTTP Bearer Token for information on how to set the duration. For related information, see Syntax for Requesting an HTTP Bearer Token. Prerequisites n Log in to vRealize Automation using the applicable credentials. For example, to assign a user to a role, log in as a tenant administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. VMware, Inc. 11 Programming Guide Procedure u Enter a curl command in the following format, replacing the variables with the correct values. The variable $vRA used in this example represents the host name.domain name of the vRealize Automation server, for example, mycompany.mktg.mydomain.com. curl --insecure -H "Accept: application/json" -H 'Content-Type: application/json' --data '{"username":"usrname","password":"passwd","tenant":"tenantURLtoken"}' https://$vRA/identity/api/tokens For example, enter the following command line: curl --insecure -H "Accept: application/json" -H 'Content-Type: application/json' --data '{"username":"tanteater @example.com","password":"password","tenant":"MYCOMPANY"}' https://tanteater.eng.mycompany.com:4870/identity/api/tokens The command returns a response header with a status code and, if your request is successful, an HTTP bearer token. For example, the following sample output displays based on the command input: HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Cache-Control: no-cache, no-store Pragma: no-cache Expires: Thur, 16 Jul 2015 23:59:59 GMT Content-Type: application/json;charset=UTF-8 Content-Length: 324 Date: Wed, 15 Jul 2015 13:04:50 GMT { "expires":"2015-16-01T13:09:45.619Z", "id":"MTM5MTI1OTg5MDQwMzozNDQyZWMxZmQ5ZDliODUzMGFiMjp0ZW5hbnQ6cWV1c2VybmFtZTpmcml0ekBjb2tlLmNvb TplMDViNGU0NGM2ZWU0MWQ1OWEwMTNmZGExNTQwZjNlNGM3YTBlM2I5MDhlYWZjYjY1ZjhiODI2OTg4ODU3M2UwOTUwOWRk MjlmYWRjNWQ4NjJkOTk1YmE3MTg1MWZhOTc2MjEyYjYxZmU3YTVhZDcwNzM3ZTg3ZDNjNDk2ZDlmNA==", "tenant":"MYCOMPANY" } What to do next Include the HTTP bearer token in your REST API service calls. You can store the token in a variable such as $AUTH and then use the variable in your requests. Syntax for Requesting an HTTP Bearer Token An HTTP bearer token is required by the REST client to use the vRealize Automation REST API. You can obtain a bearer token by authenticating to the identity service. Input Use the supported input parameters to control the command output. VMware, Inc. 12 Programming Guide A consumer request must specify the correct component registry service and resource. For example, the URL to obtain an HTTP bearer token must contain the identity service and token resource values. Input Description host host name.domain name of the vRealize Automation server, for example, mycompany.mktg.mydomain.com. usrname Specifies the tenant administrator user name. passwd Specifies the tenant administrator password. tenantURLtoken Specifies the tenant URL token determined by the system administrator when creating the tenant, for example, support. Output The following information is displayed as a result of your HTTP bearer token request. Output Description expires Contains the ISO 8601 timestamp indicating when the token expires. id Contains the HTTP bearer token to use in Authorization header in subsequent requests. tenant Displays the tenant ID associated with the token. Response Status Codes One of the following codes are displayed as a result of your HTTP bearer token request. Status Code Description 200 OK Your request succeeded and the resource was updated. The response body contains the full representation of the resource. 400 BAD REQUEST The data you provided in the POST failed validation. Inspect the response body for details. 401 UNAUTHORIZED The request could not authenticate the user or authentication credentials required. Example: curl Command You can enter the following command line format to request an HTTP bearer token. curl --insecure -H "Accept: application/json" -H 'Content-Type: application/json' --data '{"username":"usrname", "password":"passwd","tenant":"tenantURLtoken"}' https://$host/identity/api/tokens When your request succeeds, the system returns the 200 OK status code, the expiration date and time of the token, and the HTTP bearer token. After receiving the bearer token, you can include it in your request headers. VMware, Inc. 13 Programming Guide Validate an HTTP Bearer Token You can validate an existing HTTP bearer token. Prerequisites n Request an HTTP Bearer Token. Procedure u Create the request to validate the HTTP bearer token, as in the following example. HEAD /tokens/MTM5MTI1OTg5MDQwMzozNDQyZWMxZmQ5ZDliODUzMGFiMjp0ZW5hbnQ6cWV1c2VybmFtZTjYjY1ZjhiODI2OTg4O DU3M2UwOTUwOWRkMjlmYWRjNWQ4NjJkOTk1YmE3MTg1MWZhOTc2MjEyYjYxZmU3YTVhZDcwNzM3ZTg3ZDNjNDk2ZDlmNA== Accept: application/json The system returns one of the following status codes. Status Code Description 204 NO CONTENT The request succeeded. 401 UNAUTHORIZED You must have authentication credentials to access the resource. All requests must be authenticated. 403 FORBIDDEN Your authentication credentials do not provide sufficient access to the resource. 404 NOT FOUND Could not locate the resource based on the specified URI. 405 METHOD NOT ALLOWED The HEAD method is not supported for the resource. 500 SERVER ERROR Could not create or update the resource because of an internal server error. Delete an HTTP Bearer Token You can delete an HTTP bearer token. Prerequisites n Request an HTTP Bearer Token. Procedure u Create the request to delete the HTTP bearer token, as in the following example. DELETE /tokens/MTM5MTI1OTg5MDQwMzozNDQyZWMxZmQ5ZDliODUzMGFiMjp0ZW5hbnQ6cWV1c2VybmFtZTjYjY1ZjhiODI2OTg4O DU3M2UwOTUwOWRkMjlmYWRjNWQ4NjJkOTk1YmE3MTg1MWZhOTc2MjEyYjYxZmU3YTVhZDcwNzM3ZTg3ZDNjNDk2ZDlmNA== Accept: application/json The system returns one of the following status codes. VMware, Inc. 14 Programming Guide Status Code Description 204 NO CONTENT The request succeeded. The resource has been deleted. 401 UNAUTHORIZED You must have authentication credentials to access the resource. All requests must be authenticated. 403 FORBIDDEN Your authentication credentials do not provide sufficient access to the resource. 404 NOT FOUND Could not locate the resource based on the specified URI. 405 METHOD NOT ALLOWED The DELETE method is not supported for the resource. 500 SERVER ERROR Could not create or update the resource because of an internal server error. VMware, Inc. 15 REST API Use Cases 3 Available use cases provide the prerequisite, command line options and format, and sample results to help you perform a variety of vRealize Automation functions, such as requesting a machine or creating a reservation. You can find information about all of the available vRealize Automation REST API calls in the vRealize Automation API Reference zip file located in the vRealize Automation Documentation Center. The use cases provide samples of calls that you might commonly use and descriptions of example inputs and outputs relative to those calls. n Create a Tenant You can use the REST API identity service to create a vRealize Automation tenant and perform related functions. Perform the tasks required to create a tenant with the REST API in sequence. For information about creating and working with tenants and roles by using thevRealize Automation application user interface, see the Tenant Administration and IaaS Configuration documentation. n Request a Machine You can use REST API catalog service commands to complete a variety of tasks related to requesting a machine. This procedure provides sample command line syntax for machine request tasks. Supporting information regarding available input and output parameters, command-line entry samples, and sample JSON output samples is available in the subsequent topics that explain syntax for the various tasks. n Approve a Machine Request You can use a sequence of REST API workitem service commands to approve a machine request. n List Provisioned Resources You can use the REST API catalog service to log in to vRealize Automation and display a full or filtered list of your provisioned resources . n Manage Provisioned Deployments You can use the REST API catalog service to log in to vRealize Automation and view information about provisioned resources . n Working with Reservations You can work with the REST API reservation service to perform a variety of functions, such as creating and updating reservations. VMware, Inc. 16 Programming Guide n Working with Reservation Policies You can use the vRealize Automation REST API to work with the reservation service to perform a variety of functions, such as creating and updating reservation policies. n Working with Key Pairs You can work with the keyValuePair data element of the REST API workitem service to list, create, and update key pairs. n Working with Network Profiles You can use the vRealize Automation IaaS proxy provider service and IPAM service REST API to create, list, and update network profiles. n Get a List of Available IP Ranges for an IPAM Provider You can query a specified IPAM provider endpoint for a list of the available IP address ranges configured on the IPAM provider device. n Import and Export Content You can use the REST API content management service to import and export content, such as blueprints, between vRealize Automation systems. Create a Tenant You can use the REST API identity service to create a vRealize Automation tenant and perform related functions. Perform the tasks required to create a tenant with the REST API in sequence. For information about creating and working with tenants and roles by using thevRealize Automation application user interface, see the Tenant Administration and IaaS Configuration documentation. Prerequisites n Log in to vRealize Automation as a system administrator and a tenant administrator. n Verify that there is access to a functional LDAP, Active Directory, or Native Active Directory identity server. n Verify that the identity server details required for the JSON template are available. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Syntax for Displaying Your Current Tenants You can use the REST API identity service to list of all the vRealize Automation tenants in your system. n Syntax for Requesting a New Tenant You can use the REST API identity service to submit a request for a tenant. You can specify request parameters using JSON command line input or by calling an existing JSON file from the command line. VMware, Inc. 17 Programming Guide n Syntax for Listing All Tenant Identity Stores You can use the REST API identity service to list all available identity stores for a named vRealize Automation tenant, such as the default tenant vsphere.local. n Syntax for Linking an Identity Store to the Tenant You can use the REST API identity service to link an LDAP, Active Directory, or Native Active Directory identity store to the vRealize Automation tenant. n Syntax for Searching LDAP or Active Directory for a User You can use the vRealize Automation REST API identity service to search the configured LDAP directory, Active Directory, or Native Active Directory for a user. n Syntax for Assigning a User to a Role You can use the REST API identity service to assign a user to a role. n Syntax for Displaying all Roles Assigned to a User You can use the REST API identity service to display all of the roles assigned to a user. Procedure 1 Use the identity service to display all the available tenants. curl --insecure -H "Accept:text/xml" -H "Authorization: Bearer $token" https://$host/identity/api/tenants 2 Submit a request for a new tenant and either call a JSON file that contains tenant request parameters or specify those parameters using inline text. The first example uses a JSON file as input. The second example uses inline text as input. The first example calls the following sample newTenant.json file. { "@type" : "Tenant", "id" : "development", "urlName" : "development", "name" : "DevelopmentTenant", VMware, Inc. 18 Programming Guide "description" : "Tenant for all developers", "contactEmail" : "admin@mycompany.com", "defaultTenant" : false } Examples Example 1 Call the above newTenant.json file, which contains parameters for the tenant request. Example 2 Specify the parameters for the tenant request by using inline text. 3 Command curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/identity/api/tenants/development --data @C:\Temp\newTenant.json curl --insecure -H "Accept: application/json" -H "ContentType: application/json" -H "Authorization: Bearer $token" --data '{"@type":"Tenant","id":"development","urlName":"development"," name": "DevelopmentTenant","description":"Tenant for all developers","contactEmail": "admin@mycompany.com","defaultTenant":false}' List all available identity stores for a named tenant, such as the default tenant vsphere.local by using variables, instead of the full token and host name.domain name. curl --insecure -H "Accept: application/json" -H 'Content-Type: application/json' -H "Authorization: Bearer $token” https://$host/identity/api/tenants/MYCOMPANY/directories 4 Link an LDAP, Active Directory, or Native Active Directory identity store to the tenant by using the identity service. Call the following sample ldap.json.txt input file from the command line to specify necessary parameters. { "alias": "example.com", "domain": "example.mycompany.com", "groupBaseSearchDn": "ou=demo,dc=example,dc=mycompany,dc=com", "name": "openLDAPDemo", "password": "password", "type": "LDAP", VMware, Inc. 19 Programming Guide "url": "ldap://10.000.00.000:389", "userBaseSearchDn": "ou=demo,dc=example,dc=mycompany,dc=com", "userNameDn": "cn=demoadmin,ou=demo,dc=example,dc=mycompany,dc=com" } Use the following command to call the example JSON text file and link an identity store to a tenant. The command also tests that vRealize Automation can connect to the identity store successfully. If the command finishes successfully, vRealize Automation succeeded in connecting to the identity store. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/identity/api/tenants/development/directories/example.mycompany.com --data @C:\Temp\ldap.json.txt 5 Query the configured LDAP directory, Active Directory, or Native Active Directory for a specific user. curl --insecure -H "Accept:text/xml" -H "Authorization: Bearer $token" https://$host/identity/api/tenants/$tenantId/principals/$userId 6 Assign a user to a role with the REST API identity service. Use the following command string to submit a request to assign the user tony in the domain example.mycompany.com to the tenant administrator role. It provides empty braces for the required JSON payload. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token" "https://$host/identity/api/authorization/tenants/development/principals/ susan@example.mycompany.com/roles/CSP_TENANT_ADMIN/" --data "{}" 7 Display all of the roles assigned to a user with the identity service. Use the following command to list all the roles that are assigned to tony@example.mycompany.com. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/identity/api/authorization/tenants/development/principals/ tony@example.mycompany.com/roles What to do next Syntax for Displaying Your Current Tenants You can use the REST API identity service to list of all the vRealize Automation tenants in your system. Input Use the supported input parameters to control the command output. VMware, Inc. 20 Programming Guide Parameter Description URL https://$host/identity/api/tenants $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. Output The command output contains property names and values based on the command input parameters. VMware, Inc. 21 Programming Guide Parameter Description Links Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n Self refers to the object that was returned or requested. This parameter does not appear when you query a single profile. n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. Content Specifies an array of data rows, each of which represents one of the tenant objects returned in a pageable list. Each tenant object can contain the following information: n Id: Specifies the unique tenant identifier. n urlName: n Name: Specifies the name of the tenant as it appears in URLs. Specifies the name of the tenant for display purposes. n description: Specifies the long description of the tenant. n contactEmail: n Password: Specifies the primary contact email address. Unused n defaultTenant: Is set to True if the corresponding tenant is the default tenant (vsphere.local). Metadata VMware, Inc. Specifies the following paging-related data: n Size: Specifies the maximum number of rows per page. n totalElement: Specifies the number of rows returned. This parameter is not output when you query for a single profile. n totalPages: Specifies the total number of pages of data available. n Number: Specifies the current page number. n Offset: Specifies the number of rows skipped. 22 Programming Guide Example: curl Command The following example command displays all available tenants. curl --insecure -H "Accept:text/xml" -H "Authorization: Bearer $token" https://$host/identity/api/tenants Format the XML output to improve its readability. For information about formatting output, see Chapter 5 Filtering and Formatting REST API Information. Example: JSON Output The following JSON output is returned based on the command input. { "links" : [ ], "content" : [ { "@type" : "Tenant", "id" : "vsphere.local", "urlName" : "vsphere.local", "name" : "vsphere.local", "description" : null, "contactEmail" : null, "password" : null, "defaultTenant" : true }, { "@type" : "Tenant", "id" : "MYCOMPANY", "urlName" : "MYCOMPANY", "name" : "QETenant", "description" : "Test tenant", "contactEmail" : null, "password" : "defaultPwd#1", "defaultTenant" : false } ], "metadata" : { "size" : 19, "totalElements" : 2, "totalPages" : 1, "number" : 1, "offset" : 0 } } Syntax for Requesting a New Tenant You can use the REST API identity service to submit a request for a tenant. You can specify request parameters using JSON command line input or by calling an existing JSON file from the command line. VMware, Inc. 23 Programming Guide Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/identity/api/tenants/$tenantId --data @ $inputFileName.json $token Specifies a valid HTTP bearer token with necessary credentials. $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $tenantId Specifies the ID of the tenant. $tenantURL Specifies the URL of the tenant. $tenantName Specifies the name of the tenant. $description Specifies a description of the tenant. $emailAddress Specifies the contact email address for the tenant. JSON Input File Template To simplify command line input, create a JSON file and call that file from the command line. To create a JSON file, copy the following template to a new text file. To maintain formatting, use an XML editor. Replace the italicized variables in the template with your specific values. { "@type" : "Tenant", "id" : "$tenantId", "urlName" : "$tenantURL", "name" : "$tenantName", "description" : "$description", "contactEmail" : "$emailAddress", "defaultTenant" : false } Output The command output contains property names and values based on the command input parameters. VMware, Inc. 24 Programming Guide Parameter Description Links Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n Self refers to the object that was returned or requested. This parameter does not appear when you query a single profile. n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. Content Specifies an array of data rows, each of which represents one of the tenant objects returned in a pageable list. Each tenant object can contain the following information: n Id: Specifies the unique tenant identifier. n urlName: n Name: Specifies the name of the tenant as it appears in URLs. Specifies the name of the tenant for display purposes. n description: Specifies the long description of the tenant. n contactEmail: n Password: Specifies the primary contact email address. Unused n defaultTenant: Is set to True if the corresponding tenant is the default tenant (vsphere.local). Metadata VMware, Inc. Specifies the following paging-related data: n Size: Specifies the maximum number of rows per page. n totalElement: Specifies the number of rows returned. This parameter is not output when you query for a single profile. n totalPages: Specifies the total number of pages of data available. n Number: Specifies the current page number. n Offset: Specifies the number of rows skipped. 25 Programming Guide Example: curl Command Submit a request for a new tenant and either call a JSON file that contains tenant request parameters or specify those parameters using inline text. The first example uses a JSON file as input. The second example uses inline text as input. The first example calls the following sample newTenant.json file. { "@type" : "Tenant", "id" : "development", "urlName" : "development", "name" : "DevelopmentTenant", "description" : "Tenant for all developers", "contactEmail" : "admin@mycompany.com", "defaultTenant" : false } Example 1: Use the following example to call the above newTenant.json file, which contains parameters for the tenant request. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/identity/api/tenants/development --data @C:\Temp\newTenant.json Example 2: Use the following example to specify parameters for the tenant request by using inline text. curl --insecure -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer $token" --data '{"@type":"Tenant","id":"development","urlName":"development","name": "DevelopmentTenant","description":"Tenant for all developers","contactEmail": "admin@mycompany.com","defaultTenant":false}' Syntax for Listing All Tenant Identity Stores You can use the REST API identity service to list all available identity stores for a named vRealize Automation tenant, such as the default tenant vsphere.local. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/identity/api/tenants/$tenantId/directories $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $tenantId Specifies the ID of the tenant. VMware, Inc. 26 Programming Guide Output The command output contains property names and values based on the command input parameters. Parameter Description Links Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n Self refers to the object that was returned or requested. This parameter does not appear when you query a single profile. n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. Content Specifies an array of data rows, each of which represents one of the tenant objects returned in a pageable list. Each tenant object can contain the following information: n Id: Specifies the unique tenant identifier. n urlName: n Name: Specifies the name of the tenant as it appears in URLs. Specifies the name of the tenant for display purposes. n description: Specifies the long description of the tenant. n contactEmail: n Password: Specifies the primary contact email address. Unused n defaultTenant: Is set to True if the corresponding tenant is the default tenant (vsphere.local). Metadata VMware, Inc. Specifies the following paging-related data: n Size: Specifies the maximum number of rows per page. n totalElement: Specifies the number of rows returned. This parameter is not output when you query for a single profile. n totalPages: Specifies the total number of pages of data available. n Number: Specifies the current page number. n Offset: Specifies the number of rows skipped. 27 Programming Guide Example: curl Command The following example command lists the identity stores by using variables, instead of the full token and host name.domain name. curl --insecure -H "Accept: application/json" -H 'Content-Type: application/json' -H "Authorization: Bearer $token” https://$host/identity/api/tenants/MYCOMPANY/directories Example: JSON Output The following JSON output is returned based on the command input. HTTP/1.1 200 OK Server: Apache-Beach/1.1 Cache-Control: no-cache, no-store Pragma: no-cache Expires: Wed, 31 Dec 1969 23:59:59 GMT Content-Type: application/json;charset=UTF-8 Content-Length: 830 Date: Sat, 01 Feb 2014 13:07:54 GMT {"links":[], "content":[ {"@type":"IdentityStore", "domain":"vcac.mycompany.com", "name":"openLDAPPromocom", "description":null, "alias":"promocom.com", "type":"LDAP", "userNameDn":"cn=promocomadmin,ou=promocom,dc=vcac,dc=mycompany,dc=com", "password":null, "url":"ldap://10.000.00.000:389", "groupBaseSearchDn":"ou=promocom,dc=vcac,dc=mycompany,dc=com", "userBaseSearchDn":"ou=promocom,dc=vcac,dc=mycompany,dc=com" }, {"@type":"IdentityStore", "domain":"example.mycompany.com", "name":"openLDAPDemo", "description":null, "alias":"example.com", "type":"LDAP", "userNameDn":"cn=demoadmin,ou=demo,dc=example,dc=mycompany,dc=com", "password":null, "url":"ldap://10.000.00.000:389", "groupBaseSearchDn":"ou=demo,dc=example,dc=mycompany,dc=com", "userBaseSearchDn":"ou=demo,dc=example,dc=mycompany,dc=com" }], "metadata":{ "size":20, "totalElements":2, "totalPages":1, VMware, Inc. 28 Programming Guide "number":1, "offset":0 } } Syntax for Linking an Identity Store to the Tenant You can use the REST API identity service to link an LDAP, Active Directory, or Native Active Directory identity store to the vRealize Automation tenant. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/identity/api/tenants/$tenantId/directories/$domainName --data @ $inputFileName.json $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $tenantId Specifies the ID of the tenant. userId Specifies the ID of the user in the form name@domain. $domainAlias Specifies the domain alias. $domainName Specifies the domain of the identity store. $grpBaseSearchDn Specifies the group search base Distinguished Name. $identityStoreName Specifies a description of the new tenant. $password Specifies the password. $identityStoreType Specifies the identity store type for the tenant. The following values are supported: n LDAP n AD n NATIVE_AD $identityServerUrl Specifies the URL of the identity server. $usrBaseSearchDn Specifies the user search base Distinguished Name. $usrNameDn Specifies the Distinguished Name for the login user. JSON Input File Template Use this template to create a JSON input file. Replace the variables in the template with actual values in the file. { "alias": "$domainAlias", "domain": "$domainName", "groupBaseSearchDn": "$grpBaseSearchDn", VMware, Inc. 29 Programming Guide "name": "$identityStoreName", "password": "$password", "type": "$identityStoreType", "url": "$identityServerUrl", "userBaseSearchDn": "$usrBaseSearchDn", "userNameDn": "$usrNameDn" } Output The command output contains property names and values based on the command input parameters. VMware, Inc. 30 Programming Guide Parameter Description Links Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n Self refers to the object that was returned or requested. This parameter does not appear when you query a single profile. n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. Content Specifies an array of data rows, each of which represents one of the tenant objects returned in a pageable list. Each tenant object can contain the following information: n Id: Specifies the unique tenant identifier. n urlName: n Name: Specifies the name of the tenant as it appears in URLs. Specifies the name of the tenant for display purposes. n description: Specifies the long description of the tenant. n contactEmail: n Password: Specifies the primary contact email address. Unused n defaultTenant: Is set to True if the corresponding tenant is the default tenant (vsphere.local). Metadata VMware, Inc. Specifies the following paging-related data: n Size: Specifies the maximum number of rows per page. n totalElement: Specifies the number of rows returned. This parameter is not output when you query for a single profile. n totalPages: Specifies the total number of pages of data available. n Number: Specifies the current page number. n Offset: Specifies the number of rows skipped. 31 Programming Guide Example JSON Input File Call the following sample ldap.json.txt input file from the command line to specify necessary parameters. { "alias": "example.com", "domain": "example.mycompany.com", "groupBaseSearchDn": "ou=demo,dc=example,dc=mycompany,dc=com", "name": "openLDAPDemo", "password": "password", "type": "LDAP", "url": "ldap://10.000.00.000:389", "userBaseSearchDn": "ou=demo,dc=example,dc=mycompany,dc=com", "userNameDn": "cn=demoadmin,ou=demo,dc=example,dc=mycompany,dc=com" } Example: curl Command The following example command calls the example JSON text file and links an identity store to a tenant. The command also tests that vRealize Automation can connect to the identity store successfully. If the command finishes successfully,vRealize Automation succeeded in connecting to the identity store. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/identity/api/tenants/development/directories/example.mycompany.com --data @C:\Temp\ldap.json.txt Example: JSON Output This output indicates that an identity store is successfully linked to the specified tenant. Request Headers { Content-Type Accept Content-Length Accept-Charset ibm-thai, ibm00858, = application/json = application/json = 413 = big5, big5-hkscs, euc-jp, euc-kr, gb18030, gb2312, gbk, ibm01140, ibm01141, ibm01142, ibm01143, ibm01144, ibm01145, ibm01146, ibm01147, ibm01148, ibm01149, ibm037, ibm1026, ibm1047, ibm273, ibm277, ibm278, ibm280, ibm284, ibm285, ibm290, ibm297, ibm420, ibm424, ibm437, ibm500, ibm775, ibm850, ibm852, ibm855, ibm857, ibm860, ibm861, ibm862, ibm863, ibm864, ibm865, ibm866, ibm868, ibm869, ibm870, ibm871, ibm918, iso-2022-cn, iso-2022-jp, iso-2022-jp-2, iso-2022-kr, iso-8859-1, iso-8859-13, iso-8859-15, iso-8859-2, iso-8859-3, iso-8859-4, iso-8859-5, iso-8859-6, iso-8859-7, iso-8859-8, iso-8859-9, jis_x0201, jis_x0212-1990, koi8-r, koi8-u, shift_jis, tis-620, us-ascii, utf-16, utf-16be, utf-16le, utf-32, utf-32be, utf-32le, utf-8, windows-1250, windows-1251, windows-1252, windows-1253, windows-1254, windows-1255, windows-1256, windows-1257, windows-1258, windows-31j, x-big5-hkscs-2001, x-big5-solaris, x-compound_text, x-euc-jp-linux, x-euc-tw, x-eucjp-open, x-ibm1006, x-ibm1025, x-ibm1046, x-ibm1097, x-ibm1098, x-ibm1112, x-ibm1122, x-ibm1123, x-ibm1124, x-ibm1364, x-ibm1381, VMware, Inc. 32 Programming Guide x-ibm1383, x-ibm300, x-ibm33722, x-ibm737, x-ibm833, x-ibm834, x-ibm856, x-ibm874, x-ibm875, x-ibm921, x-ibm922, x-ibm930, x-ibm933, x-ibm935, x-ibm937, x-ibm939, x-ibm942, x-ibm942c, x-ibm943, x-ibm943c, x-ibm948, x-ibm949, x-ibm949c, x-ibm950, x-ibm964, x-ibm970, x-iscii91, x-iso-2022-cn-cns, x-iso-2022-cn-gb, x-iso-8859-11, x-jis0208, x-jisautodetect, x-johab, x-macarabic, x-maccentraleurope, x-maccroatian, x-maccyrillic, x-macdingbat, x-macgreek, x-machebrew, x-maciceland, x-macroman, x-macromania, x-macsymbol, x-macthai, x-macturkish, x-macukraine, x-ms932_0213, x-ms950-hkscs, x-ms950-hkscs-xp, x-mswin-936, x-pck, x-sjis_0213, x-utf-16le-bom, x-utf-32be-bom, x-utf-32le-bom, x-windows-50220, x-windows-50221, x-windows-874, x-windows-949, x-windows-950, x-windows-iso2022jp } Response Headers { Date = Wed, 29 Oct 2014 22:41:57 GMT Content-Type = application/json;charset=UTF-8 Content-Length = 0 Vary = Accept-Encoding,User-Agent Keep-Alive = timeout=15, max=100 Connection = Keep-Alive } Successful Unlinked Identity Store Error The following output indicates that an identity store is not linked to the specified tenant. To resolve the problem, correct the identity store and connection details in the JSON input file and rerun the command. Command failed [Rest Error]: {Status code: 400}, {Error code: 90027} , {Error Source: null}, {Error Msg: Cannot connect to the directory service.}, {System Msg: 90027-Connection to directory service can’t be established} Syntax for Searching LDAP or Active Directory for a User You can use the vRealize Automation REST API identity service to search the configured LDAP directory, Active Directory, or Native Active Directory for a user. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/identity/api/tenants/$tenantId/principals/$userId $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $tenantId Specifies the ID of the tenant. $userId Specifies the ID of the user in the form name@domain. VMware, Inc. 33 Programming Guide Output The command output contains property names and values based on the command input parameters. Property Links Description Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n Self refers to the object that was returned or requested. This parameter does not appear when you query a single profile. n n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. @type Specifies the user name. firstName Specifies the first name of the user. lastName Specifies the last name of the user. description Specifies the description of the user. emailAddress Specifies the email address of the user. locked Specifies the Boolean flag indicating if the user is locked out. disabled Specifies the Boolean flag indicating if the user is disabled. principalId Specifies the principal ID of the user in username@domain format. tenantName Specifies the name of tenant to which user belongs. name Specifies the first and last name concatenated. Example: curl Command The following example command queries the configured LDAP directory for a specific user. curl --insecure -H "Accept:text/xml" -H "Authorization: Bearer $token" https://$host/identity/api/tenants/$tenantId/principals/$userId Example: JSON Output The following JSON output is returned based on the command input. { "links" : [ ], "content" : [ { "@type" : "User", "firstName" : "Tony", "lastName" : "Anteater", "emailAddress" : "tony@example.mycompany.com", VMware, Inc. 34 Programming Guide "locked" : false, "disabled" : false, "principalId" : { "domain" : "example.mycompany.com", "name" : "susan" }, "tenantName" : "MYCOMPANY1", "name" : "Tony Anteater" } ] } Syntax for Assigning a User to a Role You can use the REST API identity service to assign a user to a role. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/identity/api/authorization/tenants/$tenantId/principals/$principalId/rol es/roleId $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $tenantId Specifies the ID of the tenant. $principalId Specifies the ID of the user in name@domain format. $roleId Specifies the ID of the user role. Example: curl Command The following example command string submits a request to assign the user tony in the domain example.mycompany.com to the tenant administrator role. It provides empty braces for the required JSON payload. See Syntax for Searching LDAP or Active Directory for a User for more information about getting the user name and domain values. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token" "https://$host/identity/api/authorization/tenants/development/principals/ susan@example.mycompany.com/roles/CSP_TENANT_ADMIN/" --data "{}" Example: JSON Output If the command is successful, the HTTP response body is empty except for a 204 No Content status statement. VMware, Inc. 35 Programming Guide Syntax for Displaying all Roles Assigned to a User You can use the REST API identity service to display all of the roles assigned to a user. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/identity/api/authorization/tenants/$tenantId/principals/$principalId/ro les $token Specifies a valid HTTP bearer token with necessary credentials. $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $tenantId Specifies the ID of the tenant. principalId Specifies the ID of the user in the form name@domain. Output The command output contains property names and values based on the command input parameters. Property Description id Specifies the role ID. name Specifies the role name. description Specifies the role description. status Specifies the status of this role. assignedPermissions Specifies the set of permissions that are implied by this role assignment. Example: curl Command The following example command lists all the roles that are assigned to tony@example.mycompany.com. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/identity/api/authorization/tenants/development/principals/ tony@example.mycompany.com/roles Example: JSON Output The following JSON output is returned based on the command input. { "links" : [ ], "content" : [ { "@type" : "SystemRole", "id" : "ABX_TENANT_ADMIN", VMware, Inc. 36 Programming Guide "name" : "Tenant Administrator", "description" : "ABX Tenant Administrator", "assignedPermissions" : [ { "id" : "CATALOG_CONSUME_TENANT_MGMT", "name" : "Catalog Consume Tenant Management", "description" : "Consume services, resources and manage requests on behalf of any user within a Tenant", "prereqAdminPermissions" : null }, { "id" : "MY_TENANT_MANAGEMENT", "name" : "My Tenant Management", "description" : "Manage my tenant.", "prereqAdminPermissions" : null }, { "id" : "CATALOG_AUTHOR_TENANT", "name" : "Catalog Tenant-level Author", "description" : "Create, update and publish services, catalog items and actions shared across a Tenant.", "prereqAdminPermissions" : null }, { "id" : "GUI_MY_TENANT_MANAGEMENT", "name" : "My Tenant Administration User Interface", "description" : "Access my tenant administration GUI.", "prereqAdminPermissions" : null }, { "id" : "CATALOG_ENTITLE_TENANT", "name" : "Catalog Tenant-level Entitlement Management", "description" : "Entitle services, catalog items and actions to all users within a tenant.", "prereqAdminPermissions" : null }, { "id" : "FILE_EDIT_TENANT", "name" : "Manage Tenant Files", "description" : "Upload and delete files belonging to this tenant.", "prereqAdminPermissions" : null }, { "id" : "TENANT_USER_DATA_MANAGEMENT", "name" : "Manage user data (requests, items, tasks etc) within a tenant.", "description" : "Manage user created objects belonging to the tenant.", "prereqAdminPermissions" : null }, { "id" : "TENANT_ADMIN_ROLE_ASSIGNMENT", "name" : "Tenant Administrator Role Assignment", "description" : "Assign the tenant administrator role to other users.", "prereqAdminPermissions" : null }, { "id" : "GUI_MY_TENANT_TUG_MANAGEMENT", "name" : "My Tenant Identity Stores, Groups and Users Administration User Interfaces", "description" : "Access my tenant identity stores, groups and users administration GUIs.", "prereqAdminPermissions" : null } ] } ], "metadata" : { "size" : 20, VMware, Inc. 37 Programming Guide "totalElements" : 1, "totalPages" : 1, "number" : 1, "offset" : 0 Request a Machine You can use REST API catalog service commands to complete a variety of tasks related to requesting a machine. This procedure provides sample command line syntax for machine request tasks. Supporting information regarding available input and output parameters, command-line entry samples, and sample JSON output samples is available in the subsequent topics that explain syntax for the various tasks. The REST API catalog service includes Hypermedia as the Engine of Application State (HATEOAS) links that function as templates to assist users in completing common tasks that are supported by the API. They typical scenario for using a template is for the user to submit a template request for a given context. For example, catalog-service/api/consumer/entitledCatalogItems/ dc808d12-3786-4f7cb5a1-d5f997c8ad66/requests/template. Users can employ the returned template, either as is or modified, to create an appropriate request. The user then POSTs, or PUTs, the request to the target API. For example, catalog-service/api/consumer/entitledCatalogItems/dc808d12-3786-4f7cb5a1-d5f997c8ad66/requests. This procedure provides sample command line syntax for approving a machine request. Supporting information regarding available input and output parameters, command-line entry samples, and sample JSON output samples is available. Prerequisites n Log in to vRealize Automation as a consumer and current business group user. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Syntax for Listing Shared and Private Catalog Items You can use the REST API catalog service to retrieve a list of all shared viewable catalog items for the current user. Shared catalog items do not belong to a specific business group. Also, this service retrieves a list of all shared and private catalog items that can be viewed, including their business groups. n Syntax for Getting Information for a Catalog Item You can use the REST API catalog service to get information about a specific catalog item if desired. n Syntax for Getting a Template Request for a Catalog Item You can use the REST API catalog service to request catalog items. VMware supplies a number of templates to help you create different types of machine requests. VMware, Inc. 38 Programming Guide n Syntax for Requesting a Machine You can use the REST API catalog service to submit a machine request. n Syntax for Viewing Details of a Machine Request You can use the vRealize Automation REST API catalog service to view the details of a machine request. Procedure 1 List all shared catalog items in the catalog. You can browse the API and use HATEOAS links to navigate to additional API calls that are relevant to the current context. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalogservice/api/consumer/entitledCatalogItemViews Accept: application/json curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalog-service/api/consumer/entitledCatalogItems Alternatively, you can also search for a catalog item by name by substituting $catalogItemName with $catalogItemId. 2 Locate the details of a specific catalog item by name. Note that the vRealize Automation API supports OData filtering. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalogservice/api/consumer/entitledCatalogItemViews?$filter=name+eq+%27$catalogItemName%27 curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalog-service/api/consumer/entitledCatalogItems 3 Get a template request for a catalog item. This request uses a HATEOAS link for a template request for this catalog item. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalog-service/api/consumer/entitledCatalogItems/dc808d12-3786-4f7c-b5a1d5f997c8ad66/requests/template Accept: application/json 4 Review and edit the template request. The template request returned in preceding step is specific to the catalog item that corresponds to your template request. The fields and default values are populated based on the configuration of the underlying blueprint. VMware, Inc. 39 Programming Guide Review the contents of the template and edit the values if you want to change them from the default prior to submitting the request. For example, you can specify a value for the description field or change the values for the machine resources if the blueprint allows for a range. 5 Submit the request. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalog-service/api/consumer/entitledCatalogItems/dc808d12-3786-4f7c-b5a1d5f997c8ad66/requests --verbose --data @C:/Temp/requestMachine.json { $contentsOfTemplateFromPrecedingSections } 6 (Optional) View the details of your request. You can perform a GET on the URI in the Location header to retrieve the updated request details. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalog-service/api/consumer/requests/7aaf9bafaa4e-47c4-997b-edd7c7983a5b Accept: application/json The status information is particularly noteworthy in the request details. The phase field corresponds to the status that is displayed in the Requests tab in the user interface. Syntax for Listing Shared and Private Catalog Items You can use the REST API catalog service to retrieve a list of all shared viewable catalog items for the current user. Shared catalog items do not belong to a specific business group. Also, this service retrieves a list of all shared and private catalog items that can be viewed, including their business groups. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/catalog-service/api/consumer/catalogItems $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. page number The page number. Default is 1. limit The number of entries per page. The default is 20. VMware, Inc. 40 Programming Guide Parameter Description $orderby Multiple comma-separated properties sorted in ascending or descending order. Valid OData properties include the following: n name - filter based on catalog item name. n status - filter based on catalog item status. n service/id - filter based on catalog item service id. n service/name - filter based on catalog item service name. n organization/subTenant/id - filter based on catalog item business group ID, which you can find in the catalogItem payload under organization > subtenantRef n organization/subTenant/name - filter based on catalog item business group name, which you can find in catalogItem payload under organization >subtenantLabel n outputResourceType/id - filter based on catalog item output resource type ID, for example : Infrastructure.Virtual n outputResourceType/name - Filter based on catalog item output resource type name, for example: "VirtualMavhine". n catalogItemType/id - filter based on catalog item type ID, for example: "Infrastructure.Virtual". n catalogItemType/name - filter based on catalog item type name, for example: "VirtualMachine". n icon/id - filter based on catalog item icon ID. $top Sets the number of returned entries from the top of the response $skip Sets the number of entries to skip. $filter Boolean expression for whether a particular entry should be included in the response. Valid OData properties include the following: n name - filter based on catalog item name. n status - filter based on catalog item status. n service/id - filter based on catalog item service id. n service/name - filter based on catalog item service name. n organization/subTenant/id - filter based on catalog item business group ID, which you can find in the catalogItem payload under organization > subtenantRef n organization/subTenant/name - filter based on catalog item business group name, which you can find in catalogItem payload under organization >subtenantLabel n outputResourceType/id - filter based on catalog item output resource type ID, for example : Infrastructure.Virtual n outputResourceType/name - Filter based on catalog item output resource type name, for example: "VirtualMavhine". n catalogItemType/id - filter based on catalog item type ID, for example: "Infrastructure.Virtual". n catalogItemType/name - filter based on catalog item type name, for example: "VirtualMachine". n icon/id - filter based on catalog item icon ID. serviceId (Optional) Query parameter to filter the returned catalog items by one specific service. onBehalfOf (Optional) Query parameter that provides the value of the user ID when making a request on behalf of another user. VMware, Inc. 41 Programming Guide Output The command output contains property names and values based on the command input parameters. Property Description outputResourceTypeRef Specifies the type of the resource that results from requesting the catalog item. catalogItemId Specifies the catalog item identifier. name Specifies the user friendly name of the catalog item. Specifies the property type is string. description Specifies a short description of the catalog item. Specifies the property type is string. catalogItemTypeRef Specifies the type of the catalog item. serviceRef Specifies the catalog service that contains the catalog item. iconId Specifies the associated icon representing this item. isNoteworthy Specifies if the catalog item should be highlighted to users for a period of time. dateCreated Specifies the date that this item was created in the catalog. lastUpdatedDate Specifies the date that this item was last updated in the catalog. entitledOrganizations Specifies the organizations in which the catalog item can be consumed by the current user. Example Curl Command The following example command retrieves information about all the available shared catalog items of the type ConsumerEntitledCatalogItemView. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalog-service/api/consumer/entitledCatalogItemViews Example: JSON Output The following JSON output is returned based on the command input. { "links": [], "content": [ { "@type": "ConsumerEntitledCatalogItemView", "links": [ { "@type": "link", "rel": "GET: Request Template", "href": "https://$host/catalogservice/api/consumer/entitledCatalogItems/7c8275d6-1bd6-452a-97c4-d6c053e4baa4/requests/template" }, { "@type": "link", "rel": "POST: Submit Request", "href": "https://$host/catalogservice/api/consumer/entitledCatalogItems/7c8275d6-1bd6-452a-97c4-d6c053e4baa4/requests" VMware, Inc. 42 Programming Guide } ], "entitledOrganizations": [ { "tenantRef": "mycompany", "tenantLabel": "mycompany", "subtenantRef": "c0683388-6db2-4cb5-9033-b24d15ad3766", "subtenantLabel": "Demo Group" } ], "catalogItemId": "7c8275d6-1bd6-452a-97c4-d6c053e4baa4", "name": "Linux", "description": "Linux blueprint for API demo", "isNoteworthy": false, "dateCreated": "2015-07-29T03:54:28.141Z", "lastUpdatedDate": "2015-07-29T12:46:56.405Z", "iconId": "cafe_default_icon_genericCatalogItem", "catalogItemTypeRef": { "id": "com.vmware.csp.component.cafe.composition.blueprint", "label": "Composite Blueprint" }, "serviceRef": { "id": "057d4095-95f1-47da-b14b-641ac9010c97", "label": "Infrastructure Services" }, "outputResourceTypeRef": { "id": "composition.resource.type.deployment", "label": "Deployment" } } ], "metadata": { "size": 20, "totalElements": 1, "totalPages": 1, "number": 1, "offset": 0 } } Syntax for Getting Information for a Catalog Item You can use the REST API catalog service to get information about a specific catalog item if desired. REST API Catalog Service The REST API supports OData filtering. For more information about supported OData filters, refer to the vRealize Automation API Reference, particularly the REST API Tips page located at https://$host/component-registry/services/docs/odata.html. VMware, Inc. 43 Programming Guide For specific information about catalog service filters, see the "Important Notes About catalog-service and OData Queries" topic located at https://$host/catalog-service/api/docs/index.html. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/catalog-service/api/consumer/catalogItems $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. page number The page number. Default is 1. limit The number of entries per page. The default is 20. $orderby Multiple comma-separated properties sorted in ascending or descending order. Valid OData properties include the following: n name - filter based on catalog item name. n status - filter based on catalog item status. n service/id - filter based on catalog item service id. n service/name - filter based on catalog item service name. n organization/subTenant/id - filter based on catalog item business group ID, which you can find in the catalogItem payload under organization > subtenantRef n organization/subTenant/name - filter based on catalog item business group name, which you can find in catalogItem payload under organization >subtenantLabel n outputResourceType/id - filter based on catalog item output resource type ID, for example : Infrastructure.Virtual n outputResourceType/name - Filter based on catalog item output resource type name, for example: "VirtualMavhine". n catalogItemType/id - filter based on catalog item type ID, for example: "Infrastructure.Virtual". n catalogItemType/name - filter based on catalog item type name, for example: "VirtualMachine". n icon/id - filter based on catalog item icon ID. $top Sets the number of returned entries from the top of the response $skip Sets the number of entries to skip. VMware, Inc. 44 Programming Guide Parameter Description $filter Boolean expression for whether a particular entry should be included in the response. Valid OData properties include the following: n name - filter based on catalog item name. n status - filter based on catalog item status. n service/id - filter based on catalog item service id. n service/name - filter based on catalog item service name. n organization/subTenant/id - filter based on catalog item business group ID, which you can find in the catalogItem payload under organization > subtenantRef n organization/subTenant/name - filter based on catalog item business group name, which you can find in catalogItem payload under organization >subtenantLabel n outputResourceType/id - filter based on catalog item output resource type ID, for example : Infrastructure.Virtual n outputResourceType/name - Filter based on catalog item output resource type name, for example: "VirtualMavhine". n catalogItemType/id - filter based on catalog item type ID, for example: "Infrastructure.Virtual". n catalogItemType/name - filter based on catalog item type name, for example: "VirtualMachine". n icon/id - filter based on catalog item icon ID. serviceId (Optional) Query parameter to filter the returned catalog items by one specific service. onBehalfOf (Optional) Query parameter that provides the value of the user ID when making a request on behalf of another user. Output The command output contains property names and values based on the command input parameters. Property Description outputResourceTypeRef Specifies the type of the resource that results from requesting the catalog item. catalogItemId Specifies the catalog item identifier. name Specifies the user friendly name of the catalog item. Specifies the property type is string. description Specifies a short description of the catalog item. Specifies the property type is string. catalogItemTypeRef Specifies the type of the catalog item. serviceRef Specifies the catalog service that contains the catalog item. iconId Specifies the associated icon representing this item. isNoteworthy Specifies if the catalog item should be highlighted to users for a period of time. dateCreated Specifies the date that this item was created in the catalog. lastUpdatedDate Specifies the date that this item was last updated in the catalog. entitledOrganizations The list of organizations in which the current user can consume the catalog item. VMware, Inc. 45 Programming Guide Example Curl Command The following example command retrieves information about all the available shared catalog items of the type ConsumerEntitledCatalogItemView. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalog-service/api/consumer/entitledCatalogItemViews Example: JSON Output The following JSON output is returned based on the command input. { "links": [], "content": [ { "@type": "ConsumerEntitledCatalogItemView", "links": [ { "@type": "link", "rel": "GET: Request Template", "href": "https://$host/catalogservice/api/consumer/entitledCatalogItems/7c8275d6-1bd6-452a-97c4-d6c053e4baa4/requests/template" }, { "@type": "link", "rel": "POST: Submit Request", "href": "https://$host/catalogservice/api/consumer/entitledCatalogItems/7c8275d6-1bd6-452a-97c4-d6c053e4baa4/requests" } ], "entitledOrganizations": [ { "tenantRef": "mycompany", "tenantLabel": "mycompany", "subtenantRef": "c0683388-6db2-4cb5-9033-b24d15ad3766", "subtenantLabel": "Demo Group" } ], "catalogItemId": "7c8275d6-1bd6-452a-97c4-d6c053e4baa4", "name": "Linux", "description": "Linux blueprint for API demo", "isNoteworthy": false, "dateCreated": "2015-07-29T03:54:28.141Z", "lastUpdatedDate": "2015-07-29T12:46:56.405Z", "iconId": "cafe_default_icon_genericCatalogItem", "catalogItemTypeRef": { "id": "com.vmware.csp.component.cafe.composition.blueprint", "label": "Composite Blueprint" }, "serviceRef": { "id": "057d4095-95f1-47da-b14b-641ac9010c97", "label": "Infrastructure Services" VMware, Inc. 46 Programming Guide }, "outputResourceTypeRef": { "id": "composition.resource.type.deployment", "label": "Deployment" } } ], "metadata": { "size": 20, "totalElements": 1, "totalPages": 1, "number": 1, "offset": 0 } } Syntax for Getting a Template Request for a Catalog Item You can use the REST API catalog service to request catalog items. VMware supplies a number of templates to help you create different types of machine requests. Overview In the entitledCatalogItemViews response, there is a link field that contains a value similar to the following: { "@type":"link", "href":"https://$host/catalog-service/api/consumer/entitledCatalogItems/dc808d12-3786-4f7cb5a1-d5f997c8ad66/requests/template", "rel":"GET: Request Template" } This URL is a HATEOAS link for a template request for this catalog item. The rel field provides a description of the link (request template) and indicates the HTTP method to use with the URI in the href field (GET). By using these HATEOAS links, you can make follow-on API calls without having to consult the API documentation for the URI syntax or construct the links programmatically. Review and Edit the Template Request The returned template request is specific to the applicable catalog item. The fields and default values are populated based on the configuration of the underlying blueprint. You can review the contents of the template and optionally edit the values if you want to change them from the default prior to submitting the request. For example, you can specify a value for the description field or change the values for the machine resources if the blueprint allows for a range. VMware, Inc. 47 Programming Guide Input Use the supported input parameters to control the command output. Parameter Description id The UUID of the catalog item. Output The command output contains property names and values based on the command input parameters. Property Description entitledOrganizations The list of organizations in which the current user can consume the catalog item. catalogItemId Specifies the catalog item identifier. Example Curl Command The following example command retrieves the catalog item with an ID of dc808d12-3786-4f7c-b5a1d5f997c8ad66. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalogservice/api/consumer/entitledCatalogItems/dc808d12-3786-4f7c-b5a1-d5f997c8ad66/requests/template Example: JSON Output The following JSON output is returned based on the command input. { "type": "com.vmware.vcac.catalog.domain.request.CatalogItemProvisioningRequest", "catalogItemId": "7c8275d6-1bd6-452a-97c4-d6c053e4baa4", "requestedFor": "csummers@example.com", "businessGroupId": "c0683388-6db2-4cb5-9033-b24d15ad3766", "description": null, "reasons": null, "data": { "Existing_Network_1": { "componentTypeId": "com.vmware.csp.component.cafe.composition", "componentId": null, "classId": "Blueprint.Component.Declaration", "typeFilter": "LinuxDemo*Existing_Network_1", "data": { "_cluster": 1, "_hasChildren": false, "description": null, "name": "Existing Network", "networkname": "Existing Network", "subnetmask": "255.255.255.0" } }, VMware, Inc. 48 Programming Guide "vSphere-Linux": { "componentTypeId": "com.vmware.csp.component.cafe.composition", "componentId": null, "classId": "Blueprint.Component.Declaration", "typeFilter": "LinuxDemo*vSphere-Linux", "data": { "Cafe.Shim.VirtualMachine.MaxCost": 0, "Cafe.Shim.VirtualMachine.MinCost": 0, "_cluster": 1, "_hasChildren": false, "action": "FullClone", "allow_storage_policies": false, "archive_days": 0, "blueprint_type": "1", "cpu": 1, "custom_properties": [], "daily_cost": 0, "datacenter_location": null, "description": null, "disks": [ { "componentTypeId": "com.vmware.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Compute.Machine.MachineDisk", "typeFilter": null, "data": { "capacity": 6, "id": 0, "initial_location": "", "is_clone": false, "label": "", "storage_reservation_policy": "", "userCreated": true, "volumeId": 0 } } ], "display_location": false, "guest_customization_specification": null, "lease_days": 0, "machine_actions": [ "DESTROY", "POWER_ON", "CONNECT_RDP_SSH", "REPROVISION", "POWER_CYCLE", "EXPIRE", "SUSPEND", "CONNECT_REMOTE_CONSOLE", "CONNECT_USING_VDI" ], "machine_prefix": { "componentId": null, "classId": "Infrastructure.Compute.MachinePrefix", "id": "Use group default" VMware, Inc. 49 Programming Guide }, "max_network_adapters": 0, "max_per_user": 0, "max_volumes": 60, "memory": 4096, "nics": [ { "componentTypeId": "com.vmware.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Compute.Machine.Nic", "typeFilter": null, "data": { "address": "", "assignment_type": "DHCP", "custom_properties": null, "id": 0, "load_balancing": "", "network_profile": "Existing Network" } } ], "number_of_instances": 1, "os_arch": "x86_64", "os_distribution": null, "os_type": "Linux", "os_version": null, "platform_name": "vsphere", "platform_type": "virtual", "property_groups": [ null ], "provisioning_workflow": { "componentId": null, "classId": "Infrastructure.Compute.ProvisioningWorkflow", "id": "CloneWorkflow" }, "reservation_policy": { "componentId": null, "classId": "Infrastructure.Reservation.Policy.ComputeResource", "id": "None" }, "security_groups": [], "security_tags": [], "source_machine": null, "source_machine_external_snapshot": null, "source_machine_name": "cbpcentos_63_x86", "source_machine_vmsnapshot": null, "storage": 6 } } } } VMware, Inc. 50 Programming Guide Syntax for Requesting a Machine You can use the REST API catalog service to submit a machine request. Prepare you Request Going back to the entitledCatalogItemViews response, locate a link field that contains a value similar to the following: { "@type":"link", "href":"https://$host/catalog-service/api/consumer/entitledCatalogItems/dc808d12-3786-4f7cb5a1-d5f997c8ad66/requests", "rel":"POST: Submit Request" } Use the information in this response to edit the template construct the URI to request the desired catalog item using a POST command. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/catalog-service/api/consumer/requests/requestId $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. catalogItemId The identifier of a catalog item. Typically, this is provided by users via the REST URI when making an entitledCatalogItem provisioning request. requestedFor The user for whom this request is being made. Must be the fully qualified user ID. Typically this is provided by the REST URI when making an entitledCatalogItem provisioning request. businessGroupId The business group identifier associated with the request. Typically this is provided via the REST URI when making the request. description The catalog item description. reasons data Context-specific properties. Obtain the consumerEntitledCatalogItem template request to identify the properties available for a given context. Output The command output contains property names and values based on the command input parameters. VMware, Inc. 51 Programming Guide Property Description version Displays the object version number. state Specifies the item state, such as submitted. approvalStatus Specifies a status indicating whether this request has been approved, rejected, or is still pending some form of approval. waitingStatus Specifies a status indicating whether this request is waiting on any external users or services before it is able to progress. requestNumber Specifies a more user-friendly identifier for this request. executionStatus Specifies the current execution status of the request. stateName Specifies the localized state name. phase Specifies the current phase of the request, which is more coarse grained and easier for users to understand. id Specifies the unique identifier of this resource. iconId Specifies an icon for this request based on the requested object type. description Contains a brief description of this request. reasons Specifies the business reasons entered by the requestor or owner of this request. requestedFor Specifies the ID of the user for whom this request is logged. requestedBy Specifies the ID of the user who actually submitted the request organization Subtenant and/or tenant owner of this request. requestorEntitlementId Specified the value of the requestorEntitlement setting. preApprovalId Specifies the ID of the preApproval setting. postApprovalId Specifies the ID of the approval generated for the post-provisioning workflow step. dateCreated Specifies the date when this request was sent to the catalog. lastUpdated Specifies the date when this request was last updated. dateSubmitted Specifies the date when this request was first submitted. dateApproved Specifies the date when this request was approved. dateCompleted Specifies the date when this request was completed. quote Contains a quote made by the provider defining the estimated cost(s) associated with the request and/or any resources provisioned as a result of the request. requestCompletion Contains additional request completion information. requestData Contains a map of the provider-specific field-value pairs collected for this request. retriesRemaning Specifies the number of attempts remaining to move this request from its current state to the next state in the request workflow. Some state transitions require calls to external services. These calls may fail due to transient errors such as momentary network errors. In these cases, the catalog will retry the call a number of times before failing. This property defines the number of retries remaining for the current state transition. When it reaches 0, the catalog will stop retrying and mark the request as failed. This property is reset to the default number of retries for every new operation that is triggered. requestedItemName VMware, Inc. Specifies the item name. 52 Programming Guide Property Description requestedItemDescription Specifies the item description. components Returns the list of components associated with the request. The provider supplies this list of components after request initialization. Example: Curl Command To construct your request, refer to the entitledCatalogItemViews response received when you ran the request described in Syntax for Getting a Template Request for a Catalog Item, locate a link field that contains a value similar to the following: { "@type":"link", "href":"https://$host/catalog-service/api/consumer/entitledCatalogItems/dc808d12-3786-4f7cb5a1-d5f997c8ad66/requests", "rel":"POST: Submit Request" } The following example command submits a machine request using appropriately edited template content from the entitledCatalogItemViews response. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalog-service/api/consumer/entitledCatalogItems/dc808d12-3786-4f7c-b5a1d5f997c8ad66/requests { $contentsOfTemplateFromPrecedingSections } Example: Output with Request and Response Headers The following sample displays the request and response headers and the command output. Use the indicated JSON text file or inline text as input. { Accept = application/json Content-Type = application/json Content-Length = 2806 } Response Headers { Date = Wed, 03 Dec 2014 20:58:34 GMT ETag = "0" Location = https://$host/catalog-service/api/consumer/requests/7aaf9baf-aa4e-47c4-997b-edd7c7983a5b { $requestObjectDetails } Content-Type = application/json;charset=UTF-8 Content-Length = 0 VMware, Inc. 53 Programming Guide Vary = Accept-Encoding,User-Agent Keep-Alive = timeout=15, max=100 Connection = Keep-Alive } null Syntax for Viewing Details of a Machine Request You can use the vRealize Automation REST API catalog service to view the details of a machine request. Request Status Typically, the request status information is the most important part of request details. The phase field corresponds to the status displayed in the Requests tab in the interface. You can rerun this command multiple times to monitor the state of a machine request. Table 3‑1. Request Phase Status Phase Description End State? UNSUBMITTED Request was saved but not submitted. No PENDING_PRE_APPROVAL Request is subject to approval - pre-provisioning approval required. No IN_PROGRESS Request is in progress, machine is being provisioned. No PENDING_POST_APPROVAL Request is subject to approval, post-provisioning approval required. No SUCCESSFUL Request completed successfully. The machine is available under provisioned resources on the Items tab. Yes FAILED Request failed. Yes REJECTED Request approval was rejected and will not complete. Yes Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/catalog-service/api/consumer/requests/$requestId $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $requestId Specifies the request ID. See Syntax for Displaying Your Provisioned Resources to view all of your requests and search for a request ID. The required request ID is located at the end of the Location URL in the response header. The request ID is located in the Location field of the response header if you submitted the request with the –headers flag. Output The command output contains property names and values based on the command input parameters. VMware, Inc. 54 Programming Guide Property Description version Displays the object version number. state Specifies the item state, such as submitted. approvalStatus Specifies a status indicating whether this request has been approved, rejected, or is still pending some form of approval. waitingStatus Specifies a status indicating whether this request is waiting on any external users or services before it is able to progress. requestNumber Specifies a more user-friendly identifier for this request. executionStatus Specifies the current execution status of the request. stateName Specifies the localized state name. phase Specifies the current phase of the request, which is more coarse grained and easier for users to understand. id Specifies the unique identifier of this resource. iconId Specifies an icon for this request based on the requested object type. description Contains a brief description of this request. reasons Specifies the business reasons entered by the requestor or owner of this request. requestedFor Specifies the ID of the user for whom this request is logged. requestedBy Specifies the ID of the user who actually submitted the request organization Subtenant and/or tenant owner of this request. requestorEntitlementId Specified the value of the requestorEntitlement setting. preApprovalId Specifies the ID of the preApproval setting. postApprovalId Specifies the ID of the approval generated for the post-provisioning workflow step. dateCreated Specifies the date when this request was sent to the catalog. lastUpdated Specifies the date when this request was last updated. dateSubmitted Specifies the date when this request was first submitted. dateApproved Specifies the date when this request was approved. dateCompleted Specifies the date when this request was completed. quote Contains a quote made by the provider defining the estimated cost(s) associated with the request and/or any resources provisioned as a result of the request. requestCompletion Contains additional request completion information. requestData Contains a map of the provider-specific field-value pairs collected for this request. retriesRemaning Specifies the number of attempts remaining to move this request from its current state to the next state in the request workflow. Some state transitions require calls to external services. These calls may fail due to transient errors such as momentary network errors. In these cases, the catalog will retry the call a number of times before failing. This property defines the number of retries remaining for the current state transition. When it reaches 0, the catalog will stop retrying and mark the request as failed. This property is reset to the default number of retries for every new operation that is triggered. requestedItemName VMware, Inc. Specifies the item name. 55 Programming Guide Property Description requestedItemDescription Specifies the item description. components Returns the list of components associated with the request. The provider supplies this list of components after request initialization. Example: curl Command The following example command displays details of a request. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalog-service/api/consumer/requests/7aaf9baf-aa4e-47c4-997b-edd7c7983a5b Example: JSON Output The following sample output contains information about the catalog item request 7aaf9bafaa4e-47c4-997b-edd7c7983a5b. { "@type": "CatalogItemRequest", "id": "7aaf9baf-aa4e-47c4-997b-edd7c7983a5b", "iconId": "cafe_default_icon_genericCatalogItem", "version": 6, "requestNumber": 8, "state": "SUCCESSFUL", "description": "API test", "reasons": null, "requestedFor": "csummers@example.com", "requestedBy": "csummers@example.com", "organization": { "tenantRef": "mycompany", "tenantLabel": "mycompany", "subtenantRef": "c0683388-6db2-4cb5-9033-b24d15ad3766", "subtenantLabel": "Demo Group" }, "requestorEntitlementId": "1b409157-152c-43c4-b4cc-1cdef7f6adf8", "preApprovalId": null, "postApprovalId": null, "dateCreated": "2015-07-29T13:50:33.689Z", "lastUpdated": "2015-07-29T13:55:35.951Z", "dateSubmitted": "2015-07-29T13:50:33.689Z", "dateApproved": null, "dateCompleted": "2015-07-29T13:55:35.949Z", "quote": {}, "requestCompletion": { "requestCompletionState": "SUCCESSFUL", "completionDetails": null }, "requestData": { $detailsOfSubmittedRequest }, "retriesRemaining": 3, VMware, Inc. 56 Programming Guide "requestedItemName": "Linux", "requestedItemDescription": "Linux blueprint for API demo", "stateName": "Successful", "approvalStatus": "POST_APPROVED", "executionStatus": "STOPPED", "waitingStatus": "NOT_WAITING", "phase": "SUCCESSFUL", "catalogItemRef": { "id": "7c8275d6-1bd6-452a-97c4-d6c053e4baa4", "label": "Linux" } } Approve a Machine Request You can use a sequence of REST API workitem service commands to approve a machine request. Prerequisites n Log in to vRealize Automation as an approver with at least one of the following qualifications: n You are designated as an approver in an approval policy. n You belong to a group which has been designated as an approval group in an approval policy. n You are designated as a delegate for someone who is an approver. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Syntax for Listing Work Items You can use the vRealize Automation REST API workitem service to list the unique IDs of all available work items. n Syntax for Getting Work Item Details You can use the vRealize Automation REST API workitem service to display the details of a pending work item. You need these details to submit a completion request. n Syntax for Constructing a JSON File to Approve a Machine Request You can specify a JSON file in your vRealize Automation REST API command line input. For example, when you enter a command to approve a machine request, you can include the name of a JSON file that contains all the parameters required to approve the request and complete the work item. n Syntax for Approving a Submitted Machine Request You can approve a work item request to complete the request by using the vRealize Automation REST API. To construct the approval command, you add work item and work item form details to a JSON file, and call that JSON file from the command line. Use a template to correctly format the JSON file content. VMware, Inc. 57 Programming Guide n Syntax for Updating Cost Information You can use the composition service to update and display cost information for a deployment. The cost of a deployment is based on which blueprint you request plus details of the specific request. For example, if the blueprint allows for a range of CPU, memory, or storage values, the cost depends on the value requested. Procedure 1 List all available work item IDs. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/workitem-service/api/workitems 2 Get details for a specific work item ID. For example, get the details for work item 5e3e9519-78ea-4409-a52c-e4aa3bc56511. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/workitem-service/api/workitems/5e3e9519-78ea-4409-a52c-e4aa3bc56511 3 4 Construct a JSON file that contains the work item ID information that you need to approve a machine request. a Copy the appropriate JSON input file template to a new file in an XML editor that maintains formatting. b Substitute the input variables in the template with the values you obtained for your specific work item ID, for example 5e3e9519-78ea-4409-a52c-e4aa3bc56511. c Save the file with a new name, for example, approve.json. Approve the submitted machine request by specifying the work item ID and including the JSON file as part of the command line. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/workitem-service/api/workitems/5e3e9519-78ea-4409a52c-e4aa3bc56511/actions/com.mycompany.csp.core.approval.action.approve --d @approve.json If the command is successful, the HTTP status is 201 Created. If the command is not successful, the HTTP status is 204 No Content. Syntax for Listing Work Items You can use the vRealize Automation REST API workitem service to list the unique IDs of all available work items. VMware, Inc. 58 Programming Guide Inputs Use the supported input parameters to control the command output. Parameter Description URL https://$host/workitem-service/api/workitems $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. Output The command output contains property names and values based on the command input parameters. Property Links Description Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n Self refers to the object that was returned or requested. This property does not exist when you query for a single profile. n n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. work itemNumber Displays a reference number for the work item. id Specifies the unique identifier of this resource. version Displays the object version number. assignees Displays the list of work item assignees. subTenantId Optionally associates the work item with a specific business group granting users with management responsibilities over that business group permission to see the approval. tenantId Specifies the tenant ID for the work item. callbackEntityId Specifies the callback entity ID for the work item. work itemType Specifies the work item type for the work item. completedDate Specifies the date when the work item was completed. assignedDate Specifies the date when the work item was assigned. createdDate Specifies the created date of this instance. assignedOrCompletedDate Specifies the date to be displayed on UI. formUrl Specifies the URL from which the layout for this work item can be retrieved. serviceId Specifies the service ID that generated this work item instance. work itemRequest Specifies the corresponding work item request object. status Specifies the status of the work item. VMware, Inc. 59 Programming Guide Property Description completedBy Specifies the principal ID of user who completed the work item. availableActions Contains a list of relevant work item actions. Metadata Specifies the paging-related data: n Size: Specifies the maximum number of rows per page. n totalElement: Specifies the number of rows returned. n totalPages: Specifies the total number of pages of data available. n Number: Specifies the current page number. n Offset: Specifies the number of rows skipped. Example: curl Command The following example command retrieves all the available work item IDs. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/workitem-service/api/workitems Example: JSON Output The following JSON output is returned based on the command input. { "links" : [ ], "content" : [ { "@type" : "WorkItem", "id" : "1755ef1a-d6f0-4901-9ecd-d03352ae4a05", "version" : 1, "workItemNumber" : 1, "assignees" : [ { "principalId" : "tony@example.mycompany.com", "principalType" : "USER" } ], "tenantId" : "MYCOMPANY", "callbackEntityId" : "1", "workItemType" : { "id" : "com.mycompany.cafe.samples.travel.workItem", "name" : "Workspace Assignment", "pluralizedName" : "Workspace Assignments", "description" : "Location Specific Workspace Assignment", "serviceTypeId" : "com.mycompany.cafe.samples.travel.api", "actions" : [ { "id" : "com.mycompany.cafe.samples.travel.workItem.complete", "name" : "Reserve Workspace", "stateName" : "Completed", "icon" : { "id" : "baa623db-0ca0-4db7-af41-9a301bc9e152", "name" : "Complete Action Icon", "contentType" : "image/png", "image" : null VMware, Inc. 60 Programming Guide } }, { "id" : "com.mycompany.cafe.samples.travel.workItem.cancel", "name" : "Workspace Unavailable", "stateName" : "Cancelled", "icon" : { "id" : "b03f994a-e1ec-4aae-8fae-e747ed680a5e", "name" : "Cancel Action Icon", "contentType" : "image/png", "image" : null } } ], "completeByEmail" : true, "commentsField" : null, "listView" : { "columns" : [ { "id" : "duration", "label" : "Duration", "description" : "The length of stay, measured in days.", "dataType" : { "type" : "primitive", "typeId" : "INTEGER" }, "displayAdvice" : null, "state" : { "dependencies" : [ ], "facets" : [ ] }, "filterable" : false, "sortable" : false, "isMultiValued" : false }, { "id" : "location", "label" : "Destination", "description" : "The destination to which travel is being requested.", "dataType" : { "type" : "ref", "componentTypeId" : null, "componentId" : null, "classId" : "location", "typeFilter" : null, "label" : null }, "displayAdvice" : null, "state" : { "dependencies" : [ ], "facets" : [ ] }, "filterable" : false, "sortable" : false, "isMultiValued" : false }, { "id" : "arrivalDate", "label" : "Arrival Date", "description" : "The date of arrival at the destination", VMware, Inc. 61 Programming Guide "dataType" : { "type" : "primitive", "typeId" : "DATE_TIME" }, "displayAdvice" : null, "state" : { "dependencies" : [ ], "facets" : [ ] }, "filterable" : false, "sortable" : false, "isMultiValued" : false } ], "defaultSequence" : [ "location", "arrivalDate", "duration" ] }, "version" : 3, "forms" : { "workItemDetails" : { "type" : "external", "formId" : "travel.seating.task" }, "workItemSubmission" : { "type" : "external", "formId" : "travel.seating.task" }, "workItemNotification" : { "type" : "external", "formId" : "travel.itinerary.details" } } }, . . . "completedDate" : null, "assignedDate" : "2014-02-20T23:55:31.600Z", "createdDate" : "2014-02-20T23:55:31.600Z", "assignedOrCompletedDate" : "2014-02-20T23:55:31.600Z", "serviceId" : "2af18227-6a00-49e9-a76b-96de3ee767d2", "workItemRequest" : { "itemId" : "531660fd-b540-4946-9917-38c023b61c02", "itemName" : "test travel 1", "itemDescription" : "test travel 1", "itemRequestor" : "tony@example.mycompany.com", "itemCost" : 0.0, "itemData" : { "entries" : [ { "key" : "requestLeaseTotal", "value" : { "type" : "money", "currencyCode" : null, "amount" : 1065.0 VMware, Inc. 62 Programming Guide } }, { "key" : "approvalId", "value" : { "type" : "string", "value" : "7a8b6054-1922-4f82-9266-245dffaa957c" } }, { "key" : "requestClassId", "value" : { "type" : "string", "value" : "request" } }, { "key" : "requestedFor", "value" : { "type" : "string", "value" : "tony@example.mycompany.com" } }, { "key" : "requestReasons" }, { "key" : "requestedItemName", "value" : { "type" : "string", "value" : "test travel 1" } }, { "key" : "requestInstanceId", "value" : { "type" : "string", "value" : "1cfe7177-74e3-4d68-a559-ea17587022ca" } }, { "key" : "requestRef", "value" : { "type" : "string", "value" : "15" } }, { "key" : "requestedItemDescription", "value" : { "type" : "string", "value" : "test travel 1" } }, { "key" : "requestLeaseRate", "value" : { "type" : "moneyTimeRate", "cost" : { "type" : "money", "currencyCode" : null, "amount" : 213.0 }, "basis" : { VMware, Inc. 63 Programming Guide "type" : "timeSpan", "unit" : "DAYS", "amount" : 1 } } }, { "key" : "requestingServiceId", "value" : { "type" : "string", "value" : "f91d044a-04f9-4b96-8542-375e3e4e1dc1" } }, { "key" : "policy", "value" : { "type" : "string", "value" : "test travel approval policy" } }, { "key" : "phase", "value" : { "type" : "string", "value" : "Pre Approval" } }, { "key" : "requestDescription", "value" : { "type" : "string", "value" : "t" } }, { "key" : "requestLease", "value" : { "type" : "timeSpan", "unit" : "DAYS", "amount" : 5 } }, { "key" : "requestedBy", "value" : { "type" : "string", "value" : "tony@example.mycompany.com" } } ] } }, "status" : "Active", "availableActions" : [ ] } ], "metadata" : { "size" : 20, "totalElements" : 7, "totalPages" : 1, "number" : 1, VMware, Inc. 64 Programming Guide "offset" : 0 } } Syntax for Getting Work Item Details You can use the vRealize Automation REST API workitem service to display the details of a pending work item. You need these details to submit a completion request. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/workitem-service/api/workitems/workitem_ID $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. workitem_ID Specifies the unique identifier of a work item. See Syntax for Listing Work Items. Output The command output contains property names and values based on the command input parameters. Property Description Links Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n Self refers to the object that was returned or requested. This property does not exist when you query for a single profile. n n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. work itemNumber Displays a reference number for the work item. id Specifies the unique identifier of this resource. version Displays the object version number. assignees Displays the list of work item assignees. subTenantId Optionally associates the work item with a specific business group granting users with management responsibilities over that business group permission to see the approval. tenantId Specifies the tenant ID for the work item. callbackEntityId Specifies the callback entity ID for the work item. work itemType Specifies the work item type for the work item. VMware, Inc. 65 Programming Guide Property Description completedDate Specifies the date when the work item was completed. assignedDate Specifies the date when the work item was assigned. createdDate Specifies the created date of this instance. assignedOrCompletedDate Specifies the date to be displayed on UI. formUrl Specifies the URL from which the layout for this work item can be retrieved. serviceId Specifies the service ID that generated this work item instance. work itemRequest Specifies the corresponding work item request object. status Specifies the status of the work item. completedBy Specifies the principal ID of user who completed the work item. availableActions Contains a list of relevant work item actions. Metadata Specifies the paging-related data: n Size: Specifies the maximum number of rows per page. n totalElement: Specifies the number of rows returned. n totalPages: Specifies the total number of pages of data available. n Number: Specifies the current page number. n Offset: Specifies the number of rows skipped. Example: curl Command The following example command retrieves the necessary details for the specified work item. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/workitem-service/api/workitems/5e3e9519-78ea-4409-a52c-e4aa3bc56511 Example: JSON Output The following JSON output is returned based on the command input. To view the contents of a JSON output file, for example workItemDetails.json, use the ! command with more in UNIX or type in Windows. n (UNIX) vcac-shell>! more workItemDetails.json n (Windows) vcac-shell> ! CMD /C type workItemDetails.json vcac-shell> ! more workItemDetails.json { "id" : "5e3e9519-78ea-4409-a52c-e4aa3bc56511", "version" : 0, "workItemNumber" : 8, "assignees" : [ { "principalId" : "tony@example.mycompany.com", "principalType" : "USER" } ], "subTenantId" : "eab762cb-6e75-4379-83ef-171a71c9f00e", VMware, Inc. 66 Programming Guide "tenantId" : "MYCOMPANY", "callbackEntityId" : "069dc3ce-a260-4d6a-b191-683141c994c0", "workItemType" : { "id" : "com.mycompany.csp.core.approval.workitem.request", "name" : "Approval", "pluralizedName" : "Approvals", "description" : "", "serviceTypeId" : "com.mycompany.csp.core.cafe.approvals", "actions" : [ { "id" : "com.mycompany.csp.core.approval.action.approve", "name" : "Approve", "stateName" : "Approved", "icon" : { "id" : "c192b6a7-5b35-4a3b-8593-107ffcf8c3a8", "name" : "approved.png", "contentType" : "image/png", "image" : null } }, { "id" : "com.mycompany.csp.core.approval.action.reject", "name" : "Reject", "stateName" : "Rejected", "icon" : { "id" : "61c6da67-1164-421d-b575-10a245c89e10", "name" : "rejected.png", "contentType" : "image/png", "image" : null } } ], "completeByEmail" : true, "commentsField" : "businessJustification", "listView" : { "columns" : [ { "id" : "requestedItemName", "label" : "Requested Item", "description" : "", "dataType" : { "type" : "primitive", "typeId" : "STRING" }, "displayAdvice" : null, "state" : { "dependencies" : [ ], "facets" : [ ] }, "filterable" : false, "sortable" : false, "isMultiValued" : false }, . . . { VMware, Inc. 67 Programming Guide "id" : "requestLease", "label" : "Lease", "description" : "", "dataType" : { "type" : "primitive", "typeId" : "TIME_SPAN" }, "displayAdvice" : null, "state" : { "dependencies" : [ ], "facets" : [ ] }, "filterable" : false, "sortable" : false, "isMultiValued" : false } ], "defaultSequence" : [ "requestRef", "requestedItemName", "requestedFor", "requestLease", "requestLeaseRate", "requestLeaseTotal" ] }, "version" : 1, "forms" : { "workItemDetails" : { "type" : "external", "formId" : "approval.details" }, "workItemSubmission" : { "type" : "external", "formId" : "approval.submission" }, "workItemNotification" : { "type" : "external", "formId" : "approval.notification" } } }, "completedDate" : null, "assignedDate" : "2014-02-25T01:26:07.153Z", "createdDate" : "2014-02-25T01:26:07.153Z", "assignedOrCompletedDate" : "2014-02-25T01:26:07.153Z", "serviceId" : "2af18227-6a00-49e9-a76b-96de3ee767d2", "workItemRequest" : { "itemId" : "069dc3ce-a260-4d6a-b191-683141c994c0", "itemName" : "test-blueprint", "itemDescription" : "", "itemRequestor" : "fritz@example.mycompany.com", "itemCost" : 0.0, "itemData" : { "entries" : [ { "key" : "requestLeaseTotal" }, { "key" : "approvalId", "value" : { "type" : "string", "value" : "469c11ae-ed27-4790-baf1-c6839f35d474" } VMware, Inc. 68 Programming Guide }, { "key" : "requestClassId", "value" : { "type" : "string", "value" : "request" } }, { "key" : "requestedFor", "value" : { "type" : "string", "value" : "fritz@example.mycompany.com" } }, { "key" : "requestReasons", "value" : { "type" : "string", "value" : "" } }, { "key" : "requestedItemName", "value" : { "type" : "string", "value" : "test-blueprint" } . . . }, { "key" : "requestLease" }, { "key" : "requestedBy", "value" : { "type" : "string", "value" : "fritz@example.mycompany.com" } } ] } }, "status" : "Active", "availableActions" : [ ] } Syntax for Constructing a JSON File to Approve a Machine Request You can specify a JSON file in your vRealize Automation REST API command line input. For example, when you enter a command to approve a machine request, you can include the name of a JSON file that contains all the parameters required to approve the request and complete the work item. VMware, Inc. 69 Programming Guide Template JSON File Values Copy the following template to start constructing a properly formatted JSON file in a text editor. Replace the highlighted values with your obtained work item details. After you create the JSON file, you can include it, or its contents, when you approve a submitted machine request. See Syntax for Approving a Submitted Machine Request. { "formData": { "entries": [ { "key": "source-source-provider-Cafe.Shim.VirtualMachine.NumberOfInstances", "value": { "type": "integer", "value": 1 } }, { "key": "source-source-provider-VirtualMachine.Memory.Size", "value": { "type": "integer", "value": 512 } }, { "key": "source-source-provider-VirtualMachine.CPU.Count", "value": { "type": "integer", "value": 1 } }, { "key": "source-businessJustification", "value": { "type": "string", "value": "solves abx request" } }, { "key": "source-source-provider-VirtualMachine.LeaseDays", "value": { "type": "integer", "value": 0 } } ] }, "workItemId": "5e3e9519-78ea-4409-a52c-e4aa3bc56511", "workItemActionId": "com.mycompany.csp.core.approval.action.approve" } Certain parameters are available to use in the JSON template. VMware, Inc. 70 Programming Guide Table 3‑2. JSON Template Value Table JSON File Parameter Name Description of Value workItemId Specifies the value of the corresponding work item ID obtained from the work item list. source-source-providerCafe.Shim.VirtualMachine.NumberOfInstances value Specifies the number of instances requested. source-source-provider-VirtualMachine.Memory.Size Specifies the amount of memory requested in GB. source-source-provider-VirtualMachine.CPU.Count Specifies the number of CPUs requested. source-businessJustification Specifies the text description of reason for request. source-source-provider-VirtualMachine.LeaseDays Specifies the number of days to lease. workItemActionId To approve a request, include the approve statement, for example com.mycompany.csp.core.approval.action.approve.. To reject a request, include the reject statement, for example com.mycompany.csp.core.approval.action.reject. Example: JSON Input File Use the following JSON input file sample when constructing a file. { "@type": "CatalogItemRequest", "catalogItemRef": { "id": "65fbca06-a28e-46f3-bced-c6e5fb3a66f9" }, "organization": { "tenantRef": "MYCOMPANY", "subtenantRef": "cccd7a7e-5283-416b-beb0-45eb4e924dcb" }, "requestedFor": "fritz@example.mycompany.com", "state": "SUBMITTED", "requestNumber": 0, "requestData": { "entries": [{ "key": "provider-blueprintId", "value": { "type": "string", "value": "e16edcf9-6a10-4bc7-98e2-a33361aeb857" } }, { "key": "provider-provisioningGroupId", "value": { "type": "string", "value": "cccd7a7e-5283-416b-beb0-45eb4e924dcb" } }, { "key": "requestedFor", "value": { "type": "string", VMware, Inc. 71 Programming Guide "value": "fritz@example.mycompany.com" } }, { "key": "provider-VirtualMachine.CPU.Count", "value": { "type": "integer", "value": 1 } }, { "key": "provider-VirtualMachine.Memory.Size", "value": { "type": "integer", "value": 1024 } }, { "key": "provider-VirtualMachine.LeaseDays", "value": { "type": "integer", "value": 30 } }, { "key": "provider-__Notes", "value": { "type": "string", "value": "MYCOMPANY machine" } }, { "key": "provider-VirtualMachine.Disk0.Size", "value": { "type": "string", "value": "1" } }, { "key": "provider-VirtualMachine.Disk0.Letter", "value": { "type": "string", "value": "C" } }, { "key": "provider-VirtualMachine.Disk0.Label", "value": { "type": "string", "value": "main" } }] } } VMware, Inc. 72 Programming Guide Syntax for Approving a Submitted Machine Request You can approve a work item request to complete the request by using the vRealize Automation REST API. To construct the approval command, you add work item and work item form details to a JSON file, and call that JSON file from the command line. Use a template to correctly format the JSON file content. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/workitem-service/api/workitems/workitem_ID $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. workitem_ID Specifies the unique identifier of a work item. See Syntax for Listing Work Items. Output The command output contains property names and values based on the command input parameters. Property Links Description Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n Self refers to the object that was returned or requested. This property does not exist when you query for a single profile. n n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. work itemNumber Displays a reference number for the work item. id Specifies the unique identifier of this resource. version Displays the object version number. assignees Displays the list of work item assignees. subTenantId Optionally associates the work item with a specific business group granting users with management responsibilities over that business group permission to see the approval. tenantId Specifies the tenant ID for the work item. callbackEntityId Specifies the callback entity ID for the work item. work itemType Specifies the work item type for the work item. completedDate Specifies the date when the work item was completed. VMware, Inc. 73 Programming Guide Property Description assignedDate Specifies the date when the work item was assigned. createdDate Specifies the created date of this instance. assignedOrCompletedDate Specifies the date to be displayed on UI. formUrl Specifies the URL from which the layout for this work item can be retrieved. serviceId Specifies the service ID that generated this work item instance. work itemRequest Specifies the corresponding work item request object. status Specifies the status of the work item. completedBy Specifies the principal ID of user who completed the work item. availableActions Contains a list of relevant work item actions. Metadata Specifies the paging-related data: n Size: Specifies the maximum number of rows per page. n totalElement: Specifies the number of rows returned. n totalPages: Specifies the total number of pages of data available. n Number: Specifies the current page number. n Offset: Specifies the number of rows skipped. Example: Example: curl Command Approve a submitted machine request by specifying its work item ID and using a JSON file named approve.json to pass arguments to the command line. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/workitem-service/api/workitems/5e3e9519-78ea-4409a52c-e4aa3bc56511/actions/com.mycompany.csp.core.approval.action.approve --d @approve.json Error Conditions If the same request is submitted a second time, the following error response is received: Command failed [Rest Error]: {Status code: 400}, {Error code: 12005} , {Error Source: null}, {Error Msg: Work item 5e3e9519-78ea-4409-a52c-e4aa3bc56511 is in COMPLETED state. Requested operation cannot be performed.}, {System Msg: Work item 5e3e9519-78ea-4409-a52c-e4aa3bc56511 is in COMPLETED state. Requested operation cannot be performed.} VMware, Inc. 74 Programming Guide If a user who is not authorized to approve the request submits the request, the following error response is received: Command failed [Rest Error]: {Status code: 400}, {Error code: 12017} , {Error Source: null}, {Error Msg: User fritz@example.mycompany.com not authorized to complete work item with ID 5e3e9519-78ea-4409-a52c-e4aa3bc56511.}, {System Msg: User fritz@example.mycompany.com not authorized to complete Work item with id 5e3e9519-78ea-4409-a52c-e4aa3bc56511.} Syntax for Updating Cost Information You can use the composition service to update and display cost information for a deployment. The cost of a deployment is based on which blueprint you request plus details of the specific request. For example, if the blueprint allows for a range of CPU, memory, or storage values, the cost depends on the value requested. Input Use the supported input parameters to control the command output. Parameter Description URL //$host/compositionservice/api/blueprints/$BlueprintId/costs/upfront Method Post $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. VMware, Inc. 75 Programming Guide Parameter Description $token Specifies a valid HTTP bearer token with necessary credentials. HTTP Body Specifies the blueprint ID for the blueprint for which you are requesting cost information and other information. n Blueprint ID: Specifies the blueprint ID. n requestedFor: The user for whom this request is being made. Must be the fully qualified user ID. n subTenantId: Specifies the subtenant ID associated with the blueprint n requestData: Specifies data that identifies the blueprint further. n entries n Key: The name of the machine on which the blueprint resides. n value: Specifies key-value pairs that further identify the blueprint, such as the type of the value, the componentType ID for the item, the classID of the value, and where the blueprint resides. In turn, each entry contains an array of key-value pairs that identify the type of data used to compute the cost that is to be displayed. n Values: Specifies an array of type filters. n Entries: Specifies a list of key-value pairs that specify the values to be used in computing the cost. For example, the cluster, CPU, and allocated memory to use. Output The command output contains property names and values based on the command input parameters. Property Description setupFee Specifies the one time setup fee associated with the component. totalLeasePriceInfo Specifies the minimum cost and maximum cost for the lease period. averageDailyPriceInfo Specifies the average daily price, which depends on the reservation available for the component. count Specifies the instance count of the component. memory Specifies memory requested for this component. additional Specifies the additional cost, if any, associated with the component. cpu Specifies the cpu requested for the component. storage Specifies the storage requested for the component. componentId Specifies the component ID, or total cost of the deployment. VMware, Inc. 76 Programming Guide Example: curl Command The following sample command updates and displays the cost of a sample blueprint with one node. The HTTP body is included as part of the command line input. curl -- insecure -H “Content Type: application/json” -H "Authorization: Bearer $token" https://$host/composition-service/api/blueprints/$BlueprintId/costs/upfront" { "blueprintId": "myblueprintId", "requestedFor": "fritz@coke.sqa-horizon.local", "subTenantId": "7a961949-13c4-4f3d-9010-66db8da6c51e", "requestData": { "entries": [ { "key": "vSphere_Machine_1", "value": { "type": "complex", "componentTypeId": "com.vmware.csp.iaas.blueprint.service", "classId": "Blueprint.Node", "typeFilter": "phanisimple*vSphere_Machine_1", "values": { "entries": [ { "key": "_cluster", "value": { "type": "integer", "value": 3 } }, { "key": "cpu", "value": { "type": "integer", "value": 2 } }, { "key": "memory", "value": { "type": "integer", "value": 2048 } } ] } } } ] } } VMware, Inc. 77 Programming Guide Example: JSON Output for a Blueprint Cost Update [{"componentId":"vSphere_Machine_1", "setupFee":"$0.00", "totalLeasePriceInfo":{"min":50.0543225806451601,"max":50.0543225806451601,"displayString":"$50.05"}, "averageDailyPriceInfo":{"min":16.6847741935483867,"max":16.6847741935483867,"displayString":"$16.68"}, "count":3 "fieldMap":{"setup_fee":{"min":0,"max":0,"displayString":"$0.00"}, "memory":{"min":8.00,"max":8.00,"displayString":"$8.00"}, "additional":{"min":8.6847741935483867,"max":8.6847741935483867,"displayString":"$8.68"}, "cpu":{"min":0.0,"max":0.0,"displayString":"$0.00"}, "storage":{"min":0,"max":0,"displayString":"$0.00"}}}, {"componentId":"Total","setupFee":"","totalLeasePriceInfo": {"min":50.0543225806451601,"max":50.0543225806451601,"displayString":"$50.05"}, "averageDailyPriceInfo":{"min":16.6847741935483867,"max":16.6847741935483867,"displayString":"$16.68"}, "count":3,"fieldMap":{}}] List Provisioned Resources You can use the REST API catalog service to log in to vRealize Automation and display a full or filtered list of your provisioned resources . Prerequisites n Log in to vRealize Automation as a business group manager. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Obtain the business group subtenant ID values to specify on the command line. See Syntax for Displaying Your Provisioned Resources. n Syntax for Displaying Your Provisioned Resources You can use the REST API catalog service to display a list of all the provisioned resources that you own. n Syntax for Displaying Provisioned Resources by Resource Type You can use the REST API catalog service to display a list of the provisioned resources that you own filtered by machine resource type. n Syntax for Displaying All Available Resource Types You can use the REST API catalog service to display all the resource types that are available on the system. n Syntax for Displaying Provisioned Resources by Business Groups You Manage You can use the REST API catalog service to display all of the provisioned resources that are owned by the business groups that you manage. You can optionally filter the list by business group name. VMware, Inc. 78 Programming Guide n Syntax for Viewing Machine Details You can use the vRealize Automation REST API catalog service to display the machine details for a provisioned machine. Procedure 1 Display a list of all the provisioned resources. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/catalog-service/api/consumer/resources/?page=n&limit=n 2 Display a list of the provisioned resources filtered by machine resource type. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalog-service/api/consumer/resourceTypes/Infrastructure.Machine/?page=1&limit=1 3 Display all the resource types that are available on the system. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/catalog-service/api/consumer/resourceTypes 4 Display all of the provisioned resources that are owned by the business groups. Optionally, filter the list by business group name. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/catalog-service/api/consumer/resources/types/Infrastructure.Machine/?page=1&limit=2& $orderby=dateCreated desc&$filter=((organization/subTenant/id eq 'subtenantID_group1') or (organization/subTenant/id eq ''subtenantID_group2') … )" 5 Display the machine details for a provisioned machine. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalog-service/api/consumer/resources/resourceID/ Syntax for Displaying Your Provisioned Resources You can use the REST API catalog service to display a list of all the provisioned resources that you own. Input Use the supported input parameters to control the command output. VMware, Inc. 79 Programming Guide Parameter Description URL https://$host/catalog-service/api/consumer/resources $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. Output The command output contains property names and values based on the command input parameters. Property Description id Specifies the unique identifier of this resource. iconId Specifies an icon for this request based on the requested object type. resourceTypeRef Specifies the resource type. name Specifies the resource name. description Specifies the resource description. status Specifies the resource status. catalogItem Specifies the catalog item that defines the service this resource is based on. requestId Specifies the request ID that provisioned this resource. providerBinding Specifies the provider binding. owners Species the owners of this resource. organization Specifies the subtenant or tenant that owns this resource. dateCreated Specifies the data and time at which the resource was created. lastUpdated Specifies the date and time at which the resource was most recently modified. hasLease Returns true if the resource is subject to a lease. lease Displays the resource's current lease as start and end time stamps. leaseForDisplay Specifies the resource's current lease, #getLease, with time units synchronized with #getCosts. hasCosts Returns true if the resource is subject to per-time costs. costs Displays an optional rate of the cost charges for the resource. costToDate Displays an optional rate of the current cost charges for the resource. totalCost Displays an optional rate of the cost charges for the entire lease period. parentResourceRef Displays the parent of this resource. childResources Displays the children of this resource. operations Specifies the sequence of available operations that can be performed on this resource. forms Specifies the forms used to render this resource. resourceData Displays the extended provider-defined properties of the resource. VMware, Inc. 80 Programming Guide Example: curl Command The following example command displays all applicable provisioned resources. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/catalog-service/api/consumer/resources/?page=n&limit=n Example: JSON Output The following JSON output is returned based on the command input. { "links" : [ { "@type" : "link", "rel" : "next", "href" : "https://vra152-009-067.mycompany.com/catalog-service/api/consumer/resources/? page=2&limit=1" } ], "content" : [ { "@type" : "ConsumerResource", "id" : "c24e8c75-c201-489c-b51c-8d7009c23563", "iconId" : "Travel_100.png", "resourceTypeRef" : { "id" : "com.mycompany.mystuff.samples.travel.packageType", "label" : "Reservation" }, "name" : "example", "description" : "asd", "status" : "ACTIVE", "catalogResource" : { "id" : "6fddafcd-bc3d-4753-8a2a-5fa3f78a5a90", "label" : "example" }, "requestId" : "55e7fcf3-4c77-4b11-a442-1f282333ac91", "providerBinding" : { "bindingId" : "1", "providerRef" : { "id" : "f60f5d1e-d6e9-4d98-9c48-f70a3e405346", "label" : "travel-service" } }, … } Syntax for Displaying Provisioned Resources by Resource Type You can use the REST API catalog service to display a list of the provisioned resources that you own filtered by machine resource type. VMware, Inc. 81 Programming Guide Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/catalog-service/api/consumer/resourceType $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. Filter by the following resource types: n Infrastructure.Machine n Infrastructure.AppServic n Infrastructure.Cloud n Infrastructure.Physical n Infrastructure.vApp n Infrastructure.Virtual Output The command output contains property names and values based on the command input parameters. Property Description id Specifies the unique identifier of this resource. iconId Specifies an icon for this request based on the requested object type. resourceTypeRef Specifies the resource type. name Specifies the resource name. description Specifies the resource description. status Specifies the resource status. catalogItem Specifies the catalog item that defines the service this resource is based on. requestId Specifies the request ID that provisioned this resource. providerBinding Specifies the provider binding. owners Species the owners of this resource. organization Specifies the subtenant or tenant that owns this resource. dateCreated Specifies the data and time at which the resource was created. lastUpdated Specifies the date and time at which the resource was most recently modified. hasLease Returns true if the resource is subject to a lease. lease Displays the resource's current lease as start and end time stamps. leaseForDisplay Specifies the resource's current lease, #getLease, with time units synchronized with #getCosts. VMware, Inc. 82 Programming Guide Property Description hasCosts Returns true if the resource is subject to per-time costs. costs Displays an optional rate of the cost charges for the resource. costToDate Displays an optional rate of the current cost charges for the resource. totalCost Displays an optional rate of the cost charges for the entire lease period. parentResourceRef Displays the parent of this resource. childResources Displays the children of this resource. operations Specifies the sequence of available operations that can be performed on this resource. forms Specifies the forms used to render this resource. resourceData Displays the extended provider-defined properties of the resource. Example: curl Command The following example command displays the provisioned resources by resource type. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” https://$host/catalog-service/api/consumer/resourceTypes/Infrastructure.Machine/?page=1&limit=1 Example: JSON Output In this example, the highlighted resource ID (3bfde906-81b9-44c3-8c2d-07d2c9768168) corresponds to a provisioned machine owned by the logged-in user. The resource IDs are used in requests to retrieve the details for the corresponding machines. Also in this example, the subtenantRef ID (eab762cb-6e75-4379-83ef-171a71c9f00e) corresponds to the business group of the logged-in user. If the logged-in user is also the manager of the business group, the subtenantRef ID is used to get resources from all business groups that the user manages. The following JSON output is returned based on the command input. { "links" : [ ], "content" : [ { "@type" : "ConsumerResource", "id" : "3bfde906-81b9-44c3-8c2d-07d2c9768168", "iconId" : "cafe_default_icon_genericCatalogResource", "resourceTypeRef" : { "id" : "Infrastructure.Virtual", "label" : "Virtual Machine" }, "name" : "test2", "description" : null, "status" : "ACTIVE", "catalogResource" : { "id" : "e2f397be-72ad-4ec4-a688-c017560fa1a3", "label" : "test-blueprint" }, VMware, Inc. 83 Programming Guide "requestId" : "b013d2fa-4ba4-416c-b46b-98bb8cc7b076", "providerBinding" : { "bindingId" : "8a4581a0-84f9-4e80-9af6-75d79633e382", "providerRef" : { "id" : "6918cd49-b737-467f-94bf-d14d52c78fba", "label" : "iaas-service" } }, "owners" : [ { "tenantName" : "MYCOMPANY", "ref" : "fritz@example.mycompany.com", "type" : "USER", "value" : "Fritz Arbeiter" } ], "organization" : { "tenantRef" : "MYCOMPANY", "tenantLabel" : "QETenant", "subtenantRef" : "eab762cb-6e75-4379-83ef-171a71c9f00e", "subtenantLabel" : "MyTestAgentBusinessGroup" }, … } Syntax for Displaying All Available Resource Types You can use the REST API catalog service to display all the resource types that are available on the system. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/catalog-service/api/consumer/resourceType $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. Output The command output contains property names and values based on the command input parameters. Property Description id Specifies the unique identifier of this resource. iconId Specifies an icon for this request based on the requested object type. resourceTypeRef Specifies the resource type. name Specifies the resource name. description Specifies the resource description. VMware, Inc. 84 Programming Guide Property Description status Specifies the resource status. catalogItem Specifies the catalog item that defines the service this resource is based on. requestId Specifies the request ID that provisioned this resource. providerBinding Specifies the provider binding. owners Species the owners of this resource. organization Specifies the subtenant or tenant that owns this resource. dateCreated Specifies the data and time at which the resource was created. lastUpdated Specifies the date and time at which the resource was most recently modified. hasLease Returns true if the resource is subject to a lease. lease Displays the resource's current lease as start and end time stamps. leaseForDisplay Specifies the resource's current lease, #getLease, with time units synchronized with #getCosts. hasCosts Returns true if the resource is subject to per-time costs. costs Displays an optional rate of the cost charges for the resource. costToDate Displays an optional rate of the current cost charges for the resource. totalCost Displays an optional rate of the cost charges for the entire lease period. parentResourceRef Displays the parent of this resource. childResources Displays the children of this resource. operations Specifies the sequence of available operations that can be performed on this resource. forms Specifies the forms used to render this resource. resourceData Displays the extended provider-defined properties of the resource. Example: curl Command The following example command displays all available resource types. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/catalog-service/api/consumer/resourceTypes Example: JSON Output The following JSON output is returned based on the command input. { "links" : [ ], "content" : [ { "@type" : "ResourceType", "id" : "Infrastructure.Machine", "name" : "Machine", "pluralizedName" : "Machines", "description" : "The common parent type for all types of machines", VMware, Inc. 85 Programming Guide "primary" : true, "schema" : { "classId" : "Infrastructure.Machine.Schema", "typeFilter" : null }, "forms" : { "catalogResourceInfoHidden" : true, "details" : { "type" : "extension", "extensionId" : "csp.places.iaas.resource.details", "extensionPointId" : null } Syntax for Displaying Provisioned Resources by Business Groups You Manage You can use the REST API catalog service to display all of the provisioned resources that are owned by the business groups that you manage. You can optionally filter the list by business group name. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/catalog-service/api/consumer/resources/type $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. Output The command output contains property names and values based on the command input parameters. Property Description id Specifies the unique identifier of this resource. iconId Specifies an icon for this request based on the requested object type. resourceTypeRef Specifies the resource type. name Specifies the resource name. description Specifies the resource description. status Specifies the resource status. catalogItem Specifies the catalog item that defines the service this resource is based on. requestId Specifies the request ID that provisioned this resource. providerBinding Specifies the provider binding. owners Species the owners of this resource. organization Specifies the subtenant or tenant that owns this resource. VMware, Inc. 86 Programming Guide Property Description dateCreated Specifies the data and time at which the resource was created. lastUpdated Specifies the date and time at which the resource was most recently modified. hasLease Returns true if the resource is subject to a lease. lease Displays the resource's current lease as start and end time stamps. leaseForDisplay Specifies the resource's current lease, #getLease, with time units synchronized with #getCosts. hasCosts Returns true if the resource is subject to per-time costs. costs Displays an optional rate of the cost charges for the resource. costToDate Displays an optional rate of the current cost charges for the resource. totalCost Displays an optional rate of the cost charges for the entire lease period. parentResourceRef Displays the parent of this resource. childResources Displays the children of this resource. operations Specifies the sequence of available operations that can be performed on this resource. forms Specifies the forms used to render this resource. resourceData Displays the extended provider-defined properties of the resource. Example: curl Command The following example command displays the provisioned resources of one or more business groups. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/catalog-service/api/consumer/resources/types/Infrastructure.Machine/?page=1&limit=2& $orderby=dateCreated desc&$filter=((organization/subTenant/id eq 'subtenantID_group1') or (organization/subTenant/id eq ''subtenantID_group2') … )" Example: JSON Output The following JSON output is returned based on the command input. For the following command input, the specified subtenant IDs correspond to business groups that are managed by the logged-in user. rest get catalog-service --u "consumer/resources/types/Infrastructure.Machine/?page=1&limit=2& $orderby=dateCreated desc&$filter=((organization/subTenant/id eq 'eab762cb-6e75-4379-83ef-171a71c9f00e') or (organization/subTenant/id eq 'fa995528-e289-455e-a0e6c2da8b0e1bf9') or (organization/subTenant/id eq '699efe66-fe6e-4e34-96e8-52a34f338d20') or (organization/subTenant/id eq '4d949784-e93e-4538-accb-6a0a464e4a4b'))" The following JSON output is returned based on the command input. { "links" : [ ], "content" : [ { "@type" : "ConsumerResource", VMware, Inc. 87 Programming Guide "id" : "3bfde906-81b9-44c3-8c2d-07d2c9768168", "iconId" : "cafe_default_icon_genericCatalogResource", "resourceTypeRef" : { "id" : "Infrastructure.Virtual", "label" : "Virtual Machine" }, "name" : "test2", "description" : null, "status" : "ACTIVE", "catalogResource" : { "id" : "e2f397be-72ad-4ec4-a688-c017560fa1a3", "label" : "test-blueprint" }, "requestId" : "b013d2fa-4ba4-416c-b46b-98bb8cc7b076", "providerBinding" : { "bindingId" : "8a4581a0-84f9-4e80-9af6-75d79633e382", "providerRef" : { "id" : "6918cd49-b737-467f-94bf-d14d52c78fba", "label" : "iaas-service" } }, "owners" : [ { "tenantName" : "MYCOMPANY", "ref" : "fritz@example.mycompany.com", "type" : "USER", "value" : "Fritz Arbeiter" } ], "organization" : { "tenantRef" : "MYCOMPANY", "tenantLabel" : "QETenant", "subtenantRef" : "eab762cb-6e75-4379-83ef-171a71c9f00e", "subtenantLabel" : "MyTestAgentBusinessGroup" }, "dateCreated" : "2014-09-19T21:19:37.541Z", "lastUpdated" : "2014-09-19T21:19:40.888Z", "hasLease" : true, "lease" : { "start" : "2014-09-19T21:18:57.000Z" }, "leaseForDisplay" : null, "hasCosts" : true, "costs" : { "leaseRate" : { "type" : "moneyTimeRate", "cost" : { "type" : "money", "currencyCode" : "USD", "amount" : 0.0 }, "basis" : { "type" : "timeSpan", "unit" : "DAYS", "amount" : 1 } } VMware, Inc. 88 Programming Guide }, "costToDate" : { "type" : "money", "currencyCode" : "USD", "amount" : 0.0 }, "totalCost" : null, "childResources" : [ ], "operations" : [ { "name" : "Reprovision", "description" : "Reprovision a machine.", "iconId" : "machineReprovision.png", "type" : "ACTION", "id" : "a1caee9b-d67f-41e8-a7b3-131616a0f6ac", "extensionId" : null, "providerTypeId" : "com.mycompany.csp.iaas.blueprint.service", "bindingId" : "Infrastructure.Machine.Action.Reprovision", "hasForm" : false, "formScale" : null } ], "forms" : { "catalogResourceInfoHidden" : true, "details" : { "type" : "extension", "extensionId" : "csp.places.iaas.resource.details", "extensionPointId" : null } }, "resourceData" : { "entries" : [ { "key" : "Expire", "value" : { "type" : "boolean", "value" : true } }, { "key" : "MachineGroupName", "value" : { "type" : "string", "value" : "MyTestAgentBusinessGroup" } }, { "key" : "NETWORK_LIST", "value" : { "type" : "multiple", "elementTypeId" : "COMPLEX", "resources" : [ { "type" : "complex", "componentTypeId" : "com.mycompany.csp.component.iaas.proxy.provider", "componentId" : null, "classId" : "vra.api.model.NetworkViewModel", "typeFilter" : null, "values" : { "entries" : [ { "key" : "NETWORK_MAC_ADDRESS", VMware, Inc. 89 Programming Guide "value" : { "type" : "string", "value" : "56:52:4d:e7:46:d4" } }, { "key" : "NETWORK_NAME", "value" : { "type" : "string", "value" : "Test Agent-network-1" } } ] } } ] } }, { "key" : "SNAPSHOT_LIST", "value" : { "type" : "multiple", "elementTypeId" : "COMPLEX", "resources" : [ ] } }, { "key" : "ConnectViaRdp", "value" : { "type" : "boolean", "value" : true } }, { "key" : "MachineStatus", "value" : { "type" : "string", "value" : "On" } }, { "key" : "PowerOff", "value" : { "type" : "boolean", "value" : true } }, { "key" : "DISK_VOLUMES", "value" : { "type" : "multiple", "elementTypeId" : "COMPLEX", "resources" : [ { "type" : "complex", "componentTypeId" : "com.mycompany.csp.component.iaas.proxy.provider", "componentId" : null, "classId" : "vra.api.model.DiskInputModel", "typeFilter" : null, "values" : { "entries" : [ { "key" : "DISK_CAPACITY", "value" : { "type" : "integer", VMware, Inc. 90 Programming Guide "value" : 1 } }, { "key" : "DISK_DRIVE", "value" : { "type" : "string", "value" : "c" } }, { "key" : "DISK_INPUT_ID", "value" : { "type" : "string", "value" : "DISK_INPUT_ID1" } } ] } } ] } }, { "key" : "MachineBlueprintName", "value" : { "type" : "string", "value" : "test-blueprint" } }, { "key" : "Suspend", "value" : { "type" : "boolean", "value" : true } }, { "key" : "Reboot", "value" : { "type" : "boolean", "value" : true } }, { "key" : "Reprovision", "value" : { "type" : "boolean", "value" : true } }, { "key" : "MachineStorage", "value" : { "type" : "integer", "value" : 1 } }, { "key" : "MachineDailyCost", "value" : { "type" : "decimal", "value" : 0.0 } }, { VMware, Inc. 91 Programming Guide "key" : "Destroy", "value" : { "type" : "boolean", "value" : true } }, { "key" : "MachineType", "value" : { "type" : "string", "value" : "Virtual" } }, { "key" : "InstallTools", "value" : { "type" : "boolean", "value" : true } }, { "key" : "Shutdown", "value" : { "type" : "boolean", "value" : true } }, { "key" : "ChangeLease", "value" : { "type" : "boolean", "value" : true } }, { "key" : "machineId", "value" : { "type" : "string", "value" : "8a4581a0-84f9-4e80-9af6-75d79633e382" } }, { "key" : "MachineMemory", "value" : { "type" : "integer", "value" : 0 } }, { "key" : "MachineGuestOperatingSystem" }, { "key" : "MachineName", "value" : { "type" : "string", "value" : "test2" } }, { "key" : "MachineDestructionDate" }, { "key" : "MachineCPU", "value" : { "type" : "integer", VMware, Inc. 92 Programming Guide "value" : 1 } }, { "key" : "MachineInterfaceType", "value" : { "type" : "string", "value" : "Test" } }, { "key" : "MachineReservationName", "value" : { "type" : "string", "value" : "Test Agent-Res-1" } }, { "key" : "Reconfigure", "value" : { "type" : "boolean", "value" : true } }, { "key" : "EXTERNAL_REFERENCE_ID" }, { "key" : "MachineExpirationDate" }, { "key" : "Reset", "value" : { "type" : "boolean", "value" : true } } ] } } ], "metadata" : { "size" : 2, "totalElements" : 1, "totalPages" : 1, "number" : 1, "offset" : 0 } } Syntax for Viewing Machine Details You can use the vRealize Automation REST API catalog service to display the machine details for a provisioned machine. VMware, Inc. 93 Programming Guide Using the API to Get Deployment Details You can use the REST API to view deployed machine details by appending /resourceViews to the request details URI that you generated when you retrieved request details. So the syntax the GET statement would read as follows: http://$host/catalog-service/api/consumer/requests/$requestId/resourceViews See Syntax for Viewing Details of a Machine Request. In addition to general information about the provisioned deployment--such as its name, description, and ID--the response contains additional HATEOAS links that enable you to obtain additional details and information. Table 3‑3. HATEOAS Link Functions as Defined by rel Field Link Description GET: Catalog Item URI to get the catalog item details (as described in sections 3.2.1 and 3.2.2) from which this catalog item was provisioned. GET: Request URI to get the request details that provisioned this item. GET:Template URI to get a template request for a specific action that you can perform on this resource. Typically, on a deployment the action will be Delete. {com.vmware.csp.component.cafe.composition@reso urce.action.deployment.$actionName POST: {com.vmware.csp.component.cafe.composition@reso urce.action.deployment.$actionName GET: Child Resources URI to which to post the request to perform an action, based on the corresponding template. If the deployment contains child resources (nodes specified in the composite blueprint), this is the URI to get a list of the resourceViews for the children of this deployment. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/catalog-service/api/consumer/resources/$resourceId $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $resourceID Specifies a resource ID. See Syntax for Displaying Your Provisioned Resources to view all of your requests and search for a request ID. managedOnly If true, the returned requests are from the user's managed subtenants. page Specifies a page number. limit Specifies the number of entries to display on a page. VMware, Inc. 94 Programming Guide Parameter Description $orderby Specifies how to order multiple comma-separated properties sorted in ascending or descending order. $top Specifies the number of returned entries from the top of the response (total number per page in relation to skip). $skip Specifies the number of entries to skip. filter Contains a Boolean expression to determine if a particular entry is included in the response. Output The command output contains property names and values based on the command input parameters. Property Description id Specifies the unique identifier of this resource. iconId Specifies an icon for this request based on the requested object type. resourceTypeRef Specifies the resource type. name Specifies the resource name. description Specifies the resource description. status Specifies the resource status. catalogItem Specifies the catalog item that defines the service this resource is based on. requestId Specifies the request ID that provisioned this resource. providerBinding Specifies the provider binding. owners Species the owners of this resource. organization Specifies the subtenant or tenant that owns this resource. dateCreated Specifies the data and time at which the resource was created. lastUpdated Specifies the date and time at which the resource was most recently modified. hasLease Returns true if the resource is subject to a lease. lease Displays the resource's current lease as start and end time stamps. leaseForDisplay Specifies the resource's current lease, #getLease, with time units synchronized with #getCosts. hasCosts Returns true if the resource is subject to per-time costs. costs Displays an optional rate of the cost charges for the resource. costToDate Displays an optional rate of the current cost charges for the resource. totalCost Displays an optional rate of the cost charges for the entire lease period. parentResourceRef Displays the parent of this resource. childResources Displays the children of this resource. operations Specifies the sequence of available operations that can be performed on this resource. forms Specifies the forms used to render this resource. resourceData Displays the extended provider-defined properties of the resource. VMware, Inc. 95 Programming Guide Example: curl Command The following example command displays machine details for a provisioned machine, where the provisioned machine ID is 7aaf9baf-aa4e-47c4-997b-edd7c7983a5b. curl --insecure -H "Content-Type: application/json" -H "Authorization: Bearer $token” http://$host/catalog-service/api/consumer/requests/7aaf9baf-aa4e-47c4-997b-edd7c7983a5b/resourceViews Example: JSON Output In the following example, the provisioned machine resourceID value specified in the command line was 7aaf9baf-aa4e-47c4-997b-edd7c7983a5b. { "links": [], "content": [ { "@type": "CatalogResourceView", "links": [ { "@type": "link", "rel": "GET: Catalog Item", "href": "https://$host/catalogservice/api/consumer/entitledCatalogItemViews/7c8275d6-1bd6-452a-97c4-d6c053e4baa4" }, { "@type": "link", "rel": "GET: Request", "href": "https://$host/catalog-service/api/consumer/requests/7aaf9bafaa4e-47c4-997b-edd7c7983a5b" }, { "@type": "link", "rel": "GET Template: {com.vmware.csp.component.cafe.composition@resource.action.deployment.destroy.name}", "href": "https://$host/catalog-service/api/consumer/resources/c4d3db3e-e397-44ffa1c9-0ecebdba12f4/actions/416e6bb1-3357-448b-8396-e268d5f7343b/requests/template" }, { "@type": "link", "rel": "POST: {com.vmware.csp.component.cafe.composition@resource.action.deployment.destroy.name}", "href": "https://$host/catalog-service/api/consumer/resources/c4d3db3e-e397-44ffa1c9-0ecebdba12f4/actions/416e6bb1-3357-448b-8396-e268d5f7343b/requests" }, { "@type": "link", "rel": "GET: Child Resources", "href": "https://$host/catalog-service/api/consumer/resourceViews? managedOnly=false&withExtendedData=true&withOperations=true&%24filter=parentResource%20eq %20%27c4d3db3e-e397-44ff-a1c9-0ecebdba12f4%27" VMware, Inc. 96 Programming Guide } ], "resourceId": "c4d3db3e-e397-44ff-a1c9-0ecebdba12f4", "iconId": "cafe_default_icon_genericCatalogItem", "name": "Linux-80813151", "description": null, "status": null, "catalogItemId": "7c8275d6-1bd6-452a-97c4-d6c053e4baa4", "catalogItemLabel": "Linux", "requestId": "7aaf9baf-aa4e-47c4-997b-edd7c7983a5b", "resourceType": "{com.vmware.csp.component.cafe.composition@resource.type.deployment.name}", "owners": [ "Connie Summers" ], "businessGroupId": "c0683388-6db2-4cb5-9033-b24d15ad3766", "tenantId": "mycompany", "dateCreated": "2015-07-29T13:51:36.368Z", "lastUpdated": "2015-07-29T13:55:35.963Z", "lease": null, "costs": null, "costToDate": null, "totalCost": null, "parentResourceId": null, "hasChildren": true, "data": {} } ], "metadata": { "size": 20, "totalElements": 1, "totalPages": 1, "number": 1, "offset": 0 } } Manage Provisioned Deployments You can use the REST API catalog service to log in to vRealize Automation and view information about provisioned resources . Prerequisites Note The vRealize Automation REST API does not support custom resource actions template API calls. However, you can perform custom resource actions programmatically by using the vRealize Automation Cloud Client. n Log in to vRealize Automation as a business group manager. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. VMware, Inc. 97 Programming Guide n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Obtain the business group subtenant ID values to specify on the command line. See Syntax for Getting Deployment Details. n Syntax for Getting Deployment Details You can use the REST API catalog service to identify provisioned items from a given request. n Syntax for Navigating to the Children of a Deployed Resource Use the GET: Child Resources link to retrieve a list of the child nodes of a deployment, including virtual machines, networks, and other objects you may have configured on the blueprint canvas. n Perform a Day 2 Action: Power Off You can use the REST API catalog service to perform a power off action. For simple actions that require no user input, the process is straightforward. n Perform a Day 2 Action: Change Lease You can use the REST API catalog service to change a lease. For actions that require user input, you may need to edit the template prior to submitting the request. Procedure 1 Display a list of all provisioned resources. $curl --insecure -s -H" Content-Type: multipart/form-data" -H "Authorization: Bearer $token" http:// $host/catalog-service/api/consumer/requests/7aaf9baf-aa4e-47c4-997bedd7c7983a5b/resourceViews The output from this command includes HATEOAS links that enable you to quickly obtain additional information about specific deployed resources. 2 Use the GET: Child Resources HATEOAS link to retrieve a list of child nodes of a deployment. $curl --insecure -s -H" Content-Type: multipart/form-data" -H "Authorization: Bearer $token" https:// $host /catalog-service/api/consumer/resourceViews? managedOnly=false&withExtendedData=true&withOperations=true&%24filter=parentResource%20eq %20%27c4d3db3e-e397-44ff-a1c9-0ecebdba12f4%27 3 In addition, you can use the HATEOAS links to complete day 2 actions. n You can use a command like the following to get the template for the resource action request and use it to power off a machine. $curl --insecure -s -H" Content-Type: multipart/form-data" -H "Authorization: Bearer $token" https://$host/catalog-service/api/consumer/resources/dd37b7a1-829c-4773-b5beb229453eca4a/actions/02bad06d-f92b-4cf8-b964-37bb5d57be38/requests/template VMware, Inc. 98 Programming Guide Then POST the unmodified template to the corresponding URI. $curl --insecure -s -H" Content-Type: multipart/form-data" -H "Authorization: Bearer $token"https://$host/catalog-service/api/consumer/resources/dd37b7a1-829c-4773-b5beb229453eca4a/actions/02bad06d-f92b-4cf8-b964-37bb5d57be38/requests { "type": "com.vmware.vcac.catalog.domain.request.CatalogResourceRequest", "resourceId": "dd37b7a1-829c-4773-b5be-b229453eca4a", "actionId": "02bad06d-f92b-4cf8-b964-37bb5d57be38", "description": null, "data": { "description": null, "reasons": null } } n You can modify the HATEOAS links to complete more complex day 2 actions that require user input, such as changing a lease. Use a command like the following to get the template for the resource action request. $curl --insecure -s -H" Content-Type: multipart/form-data" -H "Authorization: Bearer $token" https://$host/catalog-service/api/consumer/resources/dd37b7a1-829c-4773-b5beb229453eca4a/actions/b5739e30-871d-48c7-9012-f2a7cf431dc1/requests/template After you edit the template as desired, you can POST it to the corresponding URI. HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Cache-Control: no-cache, no-store Pragma: no-cache Expires: Sat, 01 August 2015 23:04:50 GMT Content-Type: application/json;charset=UTF-8 Date: Sat, 01 August 2015 13:04:50 GMT { "type": "com.vmware.vcac.catalog.domain.request.CatalogResourceRequest", "resourceId": "dd37b7a1-829c-4773-b5be-b229453eca4a", "actionId": "b5739e30-871d-48c7-9012-f2a7cf431dc1", "description": null, "data": { "provider-ExpirationDate": "2015-07-29T16:44:13.846Z" } } Syntax for Getting Deployment Details You can use the REST API catalog service to identify provisioned items from a given request. VMware, Inc. 99 Programming Guide Accessing Links to Provisioned Items You can access links to provisioned items from a given request by appending /resourceViews to the request details URI. For instance, you can edit the example request URI from as follows: http://$host/catalog-service/api/consumer/requests/$requestId/resourceViews In addition to the general information about the provisioned deployment returned in the response, such as its name, description and ID, the response contains additional HATEOAS links. Table 3‑4. HATEOAS Link Deployment Details Functions Link Description GET: Catalog Item URI to get the catalog item details from which this catalog item was provisioned. See Syntax for Viewing Details of a Machine Request. GET: Request URI to get the request details that provisioned this item. GET:Template URI to get a template request for a specific action that you can perform on this resource. Typically, on a deployment, the action will be Delete. {com.vmware.csp.component.cafe.composition@resour ce.action.deployment.$actionName POST: {com.vmware.csp.component.cafe.composition@resour ce.action.deployment.$actionName GET: Child Resources URI to which to post the request to perform an action, based on the corresponding template. If the deployment contains child resources, such as nodes specified in the composite blueprint, this is the URI to get a list of the resourceViews for the children of this deployment. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/catalog-service/api/consumer/resources/$resourceId $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. id UUID of a request. page Specifies a page number. limit Specifies the number of entries to display on a page. $orderby Specifies how to order multiple comma-separated properties sorted in ascending or descending order. $top Specifies the number of returned entries from the top of the response (total number per page in relation to skip). $skip Specifies the number of entries to skip. filter Contains a Boolean expression to determine if a particular entry is included in the response. VMware, Inc. 100 Programming Guide Output The command output contains property names and values based on the command input parameters. Table 3‑5. Output Parameters Property Description resourceId The unique identifier of the resource. iconId Specifies an icon for this request based on the requested object type. name The user friendly name of the resource. description An extended user friendly description of the resource. status The status of the resource. For example, On, Off, etc. catalogItemId The identifier of the catalog item associated with this provisioned resource. catalogItemLabel The label of the catalog item associated with this provisioned resource. requestId The unique identifier of the request that created this provisioned resource. businessGroupId The unique identifier of the business group that owns this resource. tenantId The unique identifier of the tenant that owns this resource. owners The owner of this resource. resourceType The type identifier of this resource. For example, Virtual Machine. parentResourceId The unique identifier of the parent resource. Used for child resources of a multi-machine resource. hasChildren Returns trun if this resource has child resources. Used if this is a multi-machine resource. dateCreated The date and time at which the resource was created. lastUpdated The date and time at which the resource was most recently modified. lease The current lease of the resource. costs An optional rate card of the costs and charges levied against the resource. costToDate An optional rate card of the existing costs and charges levied against the resource. totalCost An optional rate card of the costs and charges levied for the entire lease period. data The extended, provider defined properties of the resource. Example Curl Command This example retrieves all children of the resource with an ID of 7aaf9baf-aa4e-47c4-997bedd7c7983a5b. $curl --insecure -s -H" Content-Type: multipart/form-data" -H "Authorization: Bearer $token" http:// $host/catalog-service/api/consumer/requests/7aaf9baf-aa4e-47c4-997bedd7c7983a5b/resourceViews VMware, Inc. 101 Programming Guide Example: JSON Output { "links": [], "content": [ { "@type": "CatalogResourceView", "links": [ { "@type": "link", "rel": "GET: Catalog Item", "href": "https://$host/catalogservice/api/consumer/entitledCatalogItemViews/7c8275d6-1bd6-452a-97c4-d6c053e4baa4" }, { "@type": "link", "rel": "GET: Request", "href": "https://$host/catalog-service/api/consumer/requests/7aaf9bafaa4e-47c4-997b-edd7c7983a5b" }, { "@type": "link", "rel": "GET Template: {com.vmware.csp.component.cafe.composition@resource.action.deployment.destroy.name}", "href": "https://$host/catalog-service/api/consumer/resources/c4d3db3e-e397-44ffa1c9-0ecebdba12f4/actions/416e6bb1-3357-448b-8396-e268d5f7343b/requests/template" }, { "@type": "link", "rel": "POST: {com.vmware.csp.component.cafe.composition@resource.action.deployment.destroy.name}", "href": "https://$host/catalog-service/api/consumer/resources/c4d3db3e-e397-44ffa1c9-0ecebdba12f4/actions/416e6bb1-3357-448b-8396-e268d5f7343b/requests" }, { "@type": "link", "rel": "GET: Child Resources", "href": "https://$host/catalog-service/api/consumer/resourceViews? managedOnly=false&withExtendedData=true&withOperations=true&%24filter=parentResource%20eq %20%27c4d3db3e-e397-44ff-a1c9-0ecebdba12f4%27" } ], "resourceId": "c4d3db3e-e397-44ff-a1c9-0ecebdba12f4", "iconId": "cafe_default_icon_genericCatalogItem", "name": "Linux-80813151", "description": null, "status": null, "catalogItemId": "7c8275d6-1bd6-452a-97c4-d6c053e4baa4", "catalogItemLabel": "Linux", "requestId": "7aaf9baf-aa4e-47c4-997b-edd7c7983a5b", "resourceType": "{com.vmware.csp.component.cafe.composition@resource.type.deployment.name}", "owners": [ VMware, Inc. 102 Programming Guide "Connie Summers" ], "businessGroupId": "c0683388-6db2-4cb5-9033-b24d15ad3766", "tenantId": "mycompany", "dateCreated": "2015-07-29T13:51:36.368Z", "lastUpdated": "2015-07-29T13:55:35.963Z", "lease": null, "costs": null, "costToDate": null, "totalCost": null, "parentResourceId": null, "hasChildren": true, "data": {} } ], "metadata": { "size": 20, "totalElements": 1, "totalPages": 1, "number": 1, "offset": 0 } } Syntax for Navigating to the Children of a Deployed Resource Use the GET: Child Resources link to retrieve a list of the child nodes of a deployment, including virtual machines, networks, and other objects you may have configured on the blueprint canvas. Using the REST API to Get Additional Deployment Information In addition to general information about the provisioned resource, the response contains additional HATEOAS links that enable you to obtain additional details and information about each returned child resource. Table 3‑6. HATEOAS Link Functions as Defined by rel Field Link Description GET: Parent Resource URI to get the resourceView for the parent item. See Syntax for Getting Deployment Details. GET:Template {com.vmware.csp.component.cafe.composition@resour ce.action.deployment.$actionName POST: {com.vmware.csp.component.cafe.composition@resour ce.action.deployment.$actionName URI to get a template request for a specific action that you can perform on this resource. URI to which to post the request to perform an action, based on the corresponding template. Input Use the supported input parameters to control the command output. VMware, Inc. 103 Programming Guide Parameter Description URL https://$host/catalog-service/api/consumer/resources/$resourceId $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $resourceID Specifies a resource ID. See Syntax for Getting Deployment Details to view all of your requests and search for a request ID. managedOnly If true, the returned requests are from the user's managed subtenants. page Specifies a page number. limit Specifies the number of entries to display on a page. $orderby Specifies how to order multiple comma-separated properties sorted in ascending or descending order. $top Specifies the number of returned entries from the top of the response (total number per page in relation to skip). $skip Specifies the number of entries to skip. filter Contains a Boolean expression to determine if a particular entry is included in the response. Output The command output contains property names and values based on the command input parameters. Table 3‑7. Output Parameters Property Description resourceId The unique identifier of the resource. iconId Specifies an icon for this request based on the requested object type. name The user friendly name of the resource. description An extended user friendly description of the resource. status The status of the resource. For example, On, Off, etc. catalogItemId The identifier of the catalog item associated with this provisioned resource. catalogItemLabel The label of the catalog item associated with this provisioned resource. requestId The unique identifier of the request that created this provisioned resource. businessGroupId The unique identifier of the business group that owns this resource. tenantId The unique identifier of the tenant that owns this resource. owners The owner of this resource. resourceType The type identifier of this resource. For example, Virtual Machine. parentResourceId The unique identifier of the parent resource. Used for child resources of a multi-machine resource. hasChildren Returns trun if this resource has child resources. Used if this is a multi-machine resource. dateCreated The date and time at which the resource was created. VMware, Inc. 104 Programming Guide Table 3‑7. Output Parameters (Continued) Property Description lastUpdated The date and time at which the resource was most recently modified. lease The current lease of the resource. costs An optional rate card of the costs and charges levied against the resource. costToDate An optional rate card of the existing costs and charges levied against the resource. totalCost An optional rate card of the costs and charges levied for the entire lease period. data The extended, provider defined properties of the resource. Example Curl Command This example retrieves all children of the resource with an ID of c4d3db3e-e397-44ffa1c9-0ecebdba12f4%27. $curl --insecure -s -H" Content-Type: multipart/form-data" -H "Authorization: Bearer $token" https:// $host /catalog-service/api/consumer/resourceViews? managedOnly=false&withExtendedData=true&withOperations=true&%24filter=parentResource %20eq%20%27c4d3db3e-e397-44ff-a1c9-0ecebdba12f4%27 Example: JSON Output The validation output displays the validation status of each content item within the package. { "links": [], "content": [ { "@type": "CatalogResourceView", "links": [ { "@type": "link", "rel": "GET: Parent Resource", "href": "https://$host/catalog-service/api/consumer/resourceViews/c4d3db3ee397-44ff-a1c9-0ecebdba12f4" }, { "@type": "link", "rel": "GET Template: {com.vmware.csp.component.iaas.proxy.provider@resource.action.name.machine.ChangeLease}", "href": "https://$host/catalog-service/api/consumer/resources/dd37b7a1-829c-4773b5be-b229453eca4a/actions/b5739e30-871d-48c7-9012-f2a7cf431dc1/requests/template" }, { "@type": "link", "rel": "POST: {com.vmware.csp.component.iaas.proxy.provider@resource.action.name.machine.ChangeLease}", "href": "https://$host/catalog-service/api/consumer/resources/dd37b7a1-829c-4773b5be-b229453eca4a/actions/b5739e30-871d-48c7-9012-f2a7cf431dc1/requests" }, VMware, Inc. 105 Programming Guide { "@type": "link", "rel": "GET Template: {com.vmware.csp.component.iaas.proxy.provider@resource.action.name.machine.PowerOff}", "href": "https://$host/catalog-service/api/consumer/resources/dd37b7a1-829c-4773b5be-b229453eca4a/actions/02bad06d-f92b-4cf8-b964-37bb5d57be38/requests/template" }, { "@type": "link", "rel": "POST: {com.vmware.csp.component.iaas.proxy.provider@resource.action.name.machine.PowerOff}", "href": "https://$host/catalog-service/api/consumer/resources/dd37b7a1-829c-4773b5be-b229453eca4a/actions/02bad06d-f92b-4cf8-b964-37bb5d57be38/requests" } ], "resourceId": "dd37b7a1-829c-4773-b5be-b229453eca4a", "iconId": "cafe_default_icon_genericCatalogItem", "name": "DEMO-002", "description": null, "status": "On", "catalogItemId": null, "catalogItemLabel": null, "requestId": null, "resourceType": "{com.vmware.csp.component.iaas.proxy.provider@resource.type.registration.name.Infrastructure.Virtual}" , "owners": [ "Connie Summers" ], "businessGroupId": "c0683388-6db2-4cb5-9033-b24d15ad3766", "tenantId": "mycompany", "dateCreated": "2015-07-29T13:54:58.804Z", "lastUpdated": "2015-07-29T13:55:01.371Z", "lease": { "start": "2015-07-29T13:51:33.000Z" }, "costs": { "leaseRate": { "type": "moneyTimeRate", "cost": { "type": "money", "currencyCode": "USD", "amount": 0 }, "basis": { "type": "timeSpan", "unit": "DAYS", "amount": 1 } } }, "costToDate": { "type": "money", "currencyCode": "USD", "amount": 0 VMware, Inc. 106 Programming Guide }, "totalCost": null, "parentResourceId": "c4d3db3e-e397-44ff-a1c9-0ecebdba12f4", "hasChildren": false, "data": { "ChangeLease": true, "ConnectViaRdp": true, "ConnectViaVmrc": true, "DISK_VOLUMES": [ { "componentTypeId": "com.vmware.csp.component.iaas.proxy.provider", "componentId": null, "classId": "dynamicops.api.model.DiskInputModel", "typeFilter": null, "data": { "DISK_CAPACITY": 6, "DISK_INPUT_ID": "DISK_INPUT_ID1" } }, { "componentTypeId": "com.vmware.csp.component.iaas.proxy.provider", "componentId": null, "classId": "dynamicops.api.model.DiskInputModel", "typeFilter": null, "data": { "DISK_CAPACITY": 6, "DISK_INPUT_ID": "DISK_INPUT_ID2" } } ], "Destroy": true, "EXTERNAL_REFERENCE_ID": "vm-38153", "Expire": true, "IS_COMPONENT_MACHINE": false, "MachineBlueprintName": "system_blueprint_vsphere", "MachineCPU": 1, "MachineDailyCost": 0, "MachineDestructionDate": null, "MachineExpirationDate": null, "MachineGroupName": "Demo Group", "MachineGuestOperatingSystem": null, "MachineInterfaceDisplayName": "vSphere (vCenter)", "MachineInterfaceType": "vSphere", "MachineMemory": 4096, "MachineName": "DEMO-002", "MachineReservationName": "vCenter55", "MachineStorage": 12, "MachineType": "Virtual", "NETWORK_LIST": [ { "componentTypeId": "com.vmware.csp.component.iaas.proxy.provider", "componentId": null, "classId": "dynamicops.api.model.NetworkViewModel", "typeFilter": null, "data": { VMware, Inc. 107 Programming Guide "NETWORK_MAC_ADDRESS": "00:50:56:ba:6b:85", "NETWORK_NAME": "VM Network SQA" } } ], "PowerOff": true, "Reboot": true, "Reconfigure": true, "Reprovision": true, "Reset": true, "SNAPSHOT_LIST": [], "Shutdown": true, "Suspend": true, "ip_address": "10.118.194.213", "machineId": "f3579990-a3c4-4e17-9593-1f8893636876" } }, { "@type": "CatalogResourceView", "links": [ { "@type": "link", "rel": "GET: Parent Resource", "href": "https://$host/catalog-service/api/consumer/resourceViews/c4d3db3ee397-44ff-a1c9-0ecebdba12f4" }, { "@type": "link", "rel": "GET Template: {com.vmware.csp.component.network.service@resource.action.destroy.name, [{{com.vmware.csp.component.iaas.proxy.provider@network.network.type.registration.name.Infrastructure.N etwork.Network.Existing}}]}", "href": "https://$host/catalog-service/api/consumer/resources/f735b57afe6f-4108-876f-1c1055ca2cec/actions/ec5c522d-7b5b-4d0b-b9f2-1aedf01a2f0c/requests/template" }, { "@type": "link", "rel": "POST: {com.vmware.csp.component.network.service@resource.action.destroy.name, [{{com.vmware.csp.component.iaas.proxy.provider@network.network.type.registration.name.Infrastructure.N etwork.Network.Existing}}]}", "href": "https://$host/catalog-service/api/consumer/resources/f735b57afe6f-4108-876f-1c1055ca2cec/actions/ec5c522d-7b5b-4d0b-b9f2-1aedf01a2f0c/requests" } ], "resourceId": "f735b57a-fe6f-4108-876f-1c1055ca2cec", "iconId": "cafe_default_icon_genericCatalogItem", "name": "Existing Network", "description": null, "status": null, "catalogItemId": null, "catalogItemLabel": null, "requestId": null, "resourceType": "{com.vmware.csp.component.iaas.proxy.provider@network.network.type.registration.name.Infrastructure.Ne VMware, Inc. 108 Programming Guide twork.Network.Existing}", "owners": [ "Connie Summers" ], "businessGroupId": "c0683388-6db2-4cb5-9033-b24d15ad3766", "tenantId": "mycompany", "dateCreated": "2015-07-29T13:55:14.095Z", "lastUpdated": "2015-07-29T13:55:17.315Z", "lease": null, "costs": null, "costToDate": null, "totalCost": null, "parentResourceId": "c4d3db3e-e397-44ff-a1c9-0ecebdba12f4", "hasChildren": false, "data": { "Description": " ", "Name": "Existing Network" } } ], "metadata": { "size": 20, "totalElements": 2, "totalPages": 1, "number": 1, "offset": 0 } } Perform a Day 2 Action: Power Off You can use the REST API catalog service to perform a power off action. For simple actions that require no user input, the process is straightforward. This command leverages the links for the power off action from the command used in the Syntax for Navigating to the Children of a Deployed Resource example. { "@type": "link", "rel": "GET Template: {com.vmware.csp.component.iaas.proxy.provider@resource.action.name.machine.PowerOff}", "href": "https://$host/api/consumer/resources/dd37b7a1-829c-4773-b5beb229453eca4a/actions/02bad06d-f92b-4cf8-b964-37bb5d57be38/requests/template" }, { "@type": "link", "rel": "POST: {com.vmware.csp.component.iaas.proxy.provider@resource.action.name.machine.PowerOff}", "href": "https://$host/api/consumer/resources/dd37b7a1-829c-4773-b5beb229453eca4a/actions/02bad06d-f92b-4cf8-b964-37bb5d57be38/requests" } VMware, Inc. 109 Programming Guide Procedure 1 Get the template for the resource action request. $curl --insecure -s -H" Content-Type: multipart/form-data" -H "Authorization: Bearer $token" https://$host/catalog-service/api/consumer/resources/dd37b7a1-829c-4773-b5beb229453eca4a/actions/02bad06d-f92b-4cf8-b964-37bb5d57be38/requests/template This example command returns a response. HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Cache-Control: no-cache, no-store Pragma: no-cache Expires: Sat, 01 August 2015 23:04:50 GMT Content-Type: application/json;charset=UTF-8 Date: Sat, 01 August 2015 13:04:50 GMT { "type": "com.vmware.vcac.catalog.domain.request.CatalogResourceRequest", "resourceId": "dd37b7a1-829c-4773-b5be-b229453eca4a", "actionId": "02bad06d-f92b-4cf8-b964-37bb5d57be38", "description": null, "data": { "description": null, "reasons": null } } 2 Use a POST command to send the template without modification to the corresponding URI. $curl --insecure -s -H" Content-Type: multipart/form-data" -H "Authorization: Bearer $token"https://$host/catalog-service/api/consumer/resources/dd37b7a1-829c-4773-b5beb229453eca4a/actions/02bad06d-f92b-4cf8-b964-37bb5d57be38/requests { "type": "com.vmware.vcac.catalog.domain.request.CatalogResourceRequest", "resourceId": "dd37b7a1-829c-4773-b5be-b229453eca4a", "actionId": "02bad06d-f92b-4cf8-b964-37bb5d57be38", "description": null, "data": { "description": null, "reasons": null } } This POST command returns a response indicating success or failure, such as HTTP/1.1 201 CREATED for success. VMware, Inc. 110 Programming Guide Perform a Day 2 Action: Change Lease You can use the REST API catalog service to change a lease. For actions that require user input, you may need to edit the template prior to submitting the request. This command leverages the links for the change lease action from the command used in the Syntax for Navigating to the Children of a Deployed Resource example. { "@type": "link", "rel": "GET Template: {com.vmware.csp.component.iaas.proxy.provider@resource.action.name.machine.ChangeLease}", "href": "https://$host/api/consumer/resources/dd37b7a1-829c-4773-b5beb229453eca4a/actions/b5739e30-871d-48c7-9012-f2a7cf431dc1/requests/template" }, { "@type": "link", "rel": "POST: {com.vmware.csp.component.iaas.proxy.provider@resource.action.name.machine.ChangeLease}", "href": "https://$host/api/consumer/resources/dd37b7a1-829c-4773-b5beb229453eca4a/actions/b5739e30-871d-48c7-9012-f2a7cf431dc1/requests" }, Procedure 1 Get the template for the resource action request. $curl --insecure -s -H" Content-Type: multipart/form-data" -H "Authorization: Bearer $token" https://$host/catalog-service/api/consumer/resources/dd37b7a1-829c-4773-b5beb229453eca4a/actions/b5739e30-871d-48c7-9012-f2a7cf431dc1/requests/template This example command returns a response. HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Cache-Control: no-cache, no-store Pragma: no-cache Expires: Sat, 01 August 2015 23:04:50 GMT Content-Type: application/json;charset=UTF-8 Date: Sat, 01 August 2015 13:04:50 GMT { "type": "com.vmware.vcac.catalog.domain.request.CatalogResourceRequest", "resourceId": "dd37b7a1-829c-4773-b5be-b229453eca4a", "actionId": "b5739e30-871d-48c7-9012-f2a7cf431dc1", "description": null, "data": { "provider-ExpirationDate": "2015-07-29T16:44:13.846Z" } } VMware, Inc. 111 Programming Guide 2 Edit the template as desired. The template is populated with default values. In this example, the value of provider-ExpirationDate is set to the time at which the template was requested in UTC. Edit this value (for example, to change the expiration to a month from now). 3 Use a POST command to send the template without modification to the corresponding URI. $curl --insecure -s -H" Content-Type: multipart/form-data" -H "Authorization: Bearer $token" https://$hosts/catalog-service/api/consumer/resources/dd37b7a1-829c-4773-b5beb229453eca4a/actions/b5739e30-871d-48c7-9012-f2a7cf431dc1/requests Accept: application/json Content-Type: application/json Authorization: Bearer $token { "type": "com.vmware.vcac.catalog.domain.request.CatalogResourceRequest", "resourceId": "dd37b7a1-829c-4773-b5be-b229453eca4a", "actionId": "b5739e30-871d-48c7-9012-f2a7cf431dc1", "description": null, "data": { "provider-ExpirationDate": "2015-08-29T16:44:13.846Z" } } This POST command returns a response indicating success or failure, such as HTTP/1.1 201 CREATED for success. Working with Reservations You can work with the REST API reservation service to perform a variety of functions, such as creating and updating reservations. The vRealize Automation REST API reservation service supports the following reservation types: n vSphere (except for FlexClone in vSphere) n vCloud Air n vCloud Director n Amazon n Hyper-V n KVM n Xen The following reservation types are not supported: n OpenStack n Physical reservation The reservation service is extensible, which allows you to add new reservation types. VMware, Inc. 112 Programming Guide A reservation must belong to a business group, also referred to as a subtenant. A business group can have multiple reservations on the same resources or on different resources. Note The Reservation API now returns compute resource endpoint names within parentheses. You may need to update any client code which contains logic that uses compute resource names to account for this change. Create a Reservation You can use the vRealize Automation REST API reservation service to create a reservation. You can use the following procedure to create a vSphere, vCloud Air, or Amazon reservation. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Obtain the schema class ID of the reservation type to create. See Display a List of Supported Reservation Types. n Display a list of the reservation types that are supported in the vRealize Automation server. See Display a List of Supported Reservation Types. n Obtain the permissible value field information required to create a new reservation. After you retrieve all permissible value field information, you have the input information required to create a reservation. See Get Resources Schema for a vSphere Reservation. n Get the required compute resource ID. See Get a Compute Resource for the Reservation. n Finish creating a new reservation. Obtain the reservation ID from the output URL. See Syntax for Creating a vSphere Reservation. n Get the reservation ID if you do not already know it. See Display a List of Reservations. Procedure 1 Display a list of supported vRealize Automation reservation types by using the reservation service. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/types VMware, Inc. 113 Programming Guide 2 Display a schema definition for a reservation. a Display a schema definition for a vSphere reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Virtual.vSphere/default b Display a schema definition for an Amazon reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.Amazon/default c Display a schema definition for a vCloud Air reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.vCloudAir/default 3 Get the business group ID for a vRealize Automation reservation by using the reservation service. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/identity/api/tenants/qe/subtenants VMware, Inc. 114 Programming Guide 4 Obtain a compute resource for the vRealize Automation reservation by using the reservation service. Use the following command to get a compute resource for a vSphere reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Virtual.vSphere/default/computeResource/values Example: curl Command for an Amazon EC2 reservation -d “{}” Use the following command to get a compute resource for an Amazon reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.Amazon/default/computeResource/values -d “{}” Use the following command to get a compute resource for a vCloud Air reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.vCloudAir/default/computeResource/values VMware, Inc. -d “{}” 115 Programming Guide 5 Use the vRealize Automation REST API reservation service to get a resources schema for any supported reservation type, including a vSphere, Amazon, or vCloud Air reservation. a Display information about available resources, such as storage and network information, for a vSphere reservation by using the reservation service. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Virtual.vSphere/default/resourcePool/values "text": "", "dependencyValues": { "entries": [{ "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": " cc254a84-95b8-434a-874d-bdfef8e8ad2c " } }] } } b -d “{ Display resource schema, such as storage and network information, for an Amazon reservation by using the data and schema service. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.Amazon/default/securityGroups/values { "text": "", "dependencyValues": { "entries": [{ "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "9d1a3b5a-7162-4a5a-85b7-ec1b2824f554" -d “ } VMware, Inc. 116 Programming Guide }] } } ” c Display information about available resources, such as storage and network information, for a vCloud Air reservation by using the reservation service. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.vCloudAir/default/reservationStorages/values d “ VMware, Inc. - 117 Programming Guide 6 Use the vRealize Automation REST API to create any supported reservation type, including a vSphere, Amazon, or vCloud Air reservation. a Create a vSphere reservation by using the vRealize Automation reservation service. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations -d “ { "name": "TestCreateReservation", "reservationTypeId": "Infrastructure.Reservation.Virtual.vSphere", "tenantId": "qe", "subTenantId": "ef58f604-528d-4441-a219-4725bead629b", "enabled": true, "priority": 3, "reservationPolicyId": "b71c3a5f-087a-4d9e-9a56-fab785a3d128", "alertPolicy": { "enabled": true, "frequencyReminder": 20, "emailBgMgr": false, "recipients": ["test1@mycompany.com", "test2@mycompany.com"], "alerts": [{ "alertPercentLevel": 10, "referenceResourceId": "storage", "id": "storage" }, { "alertPercentLevel": 20, "referenceResourceId": "memory", "id": "memory" }, { "alertPercentLevel": 30, "referenceResourceId": "cpu", "id": "cpu" }, { "alertPercentLevel": 40, "referenceResourceId": "machine", "id": "machine" }] }, "extensionData": { "entries": [{ "key": "reservationNetworks", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationNetwork", VMware, Inc. 118 Programming Guide "typeFilter": null, "values": { "entries": [{ "key": "reservationNetworkPath", "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "44cb65d5-b321-43dd-a2ab-8ecf387bff8f", "label": "VM Network SQA" } }] } }] } }, { "key": "custom-Properties-key0", "value": { "type": "string", "value": "custom-property-value0" } }, { "key": "custom-Properties-key2", "value": { "type": "string", "value": "custom-property-value2" } }, { "key": "reservationMemory", "value": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationMemory", "typeFilter": null, "values": { "entries": [{ "key": "hostMemoryTotalSizeMB", "value": { "type": "integer", "value": 57187 } }, { "key": "memoryReservedSizeMb", "value": { "type": "integer", "value": 15872 } }] } } VMware, Inc. 119 Programming Guide }, { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "cc254a84-95b8-434a-874d-bdfef8e8ad2c", "label": "NSX61-RC-ComputeClusterA" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 2 } }, { "key": "reservationStorages", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationStorage", "typeFilter": null, "values": { "entries": [{ "key": "storageTotalSizeGB", "value": { "type": "integer", "value": 394 } }, { "key": "storageReservedSizeGB", "value": { "type": "integer", "value": 32 } }, { "key": "storageEnabled", "value": { "type": "boolean", "value": true } }, { "key": "reservationStoragePath", "value": { "type": "entityRef", VMware, Inc. 120 Programming Guide "componentId": null, "classId": "StoragePath", "id": "f48a527b-30a6-4d54-8829-f549bc195b69", "label": "VNXe:qe-vnxe-nfs-1" } }, { "key": "storageFreeSizeGB", "value": { "type": "integer", "value": 120 } }, { "key": "storagePriority", "value": { "type": "integer", "value": 1 } }] } }] } }, { "key": "resourcePool", "value": { "type": "entityRef", "componentId": null, "classId": "ResourcePools", "id": "4e51fabc-19e8-4e79-b413-d52309b3bb62", "label": "CoreDev" } { "text": "", "dependencyValues": { "entries": [{ "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "9d1a3b5a-7162-4a5a-85b7-ec1b2824f554" } }] } }" VMware, Inc. 121 Programming Guide }] } } ” b Create a vCloud Air reservation by using the vRealize Automation reservation service. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations -d “ { "id": "bf922450-d495-460d-9dbf-1c09b0692db2", "name": "TestvAppReservation", "reservationTypeId": "Infrastructure.Reservation.Cloud.vCloudAir", "tenantId": "qe", "subTenantId": "a5d056be-3aa2-4fdd-ba1e-a3805f26f0e0", "enabled": true, "priority": 1, "reservationPolicyId": null, "alertPolicy": { "enabled": false, "frequencyReminder": 0, "emailBgMgr": true, "recipients": [ ], "alerts": [ { "alertPercentLevel": 80, "referenceResourceId": "storage", "id": "storage" }, { "alertPercentLevel": 80, "referenceResourceId": "memory", "id": "memory" }, { "alertPercentLevel": 80, "referenceResourceId": "cpu", "id": "cpu" }, { "alertPercentLevel": 80, "referenceResourceId": "machine", "id": "machine" } ] }, "extensionData": { "entries": [ { "key": "computeResource", "value": { VMware, Inc. 122 Programming Guide "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "c527a0f5-b1ae-4b61-8145-ad9d5c434dc7", "label": "Engineering Allocation VDC" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 0 } }, { "key": "allocationModel", "value": { "type": "integer", "value": 0 } }, { "key": "reservationNetworks", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [ { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Network", "typeFilter": null, "values": { "entries": [ { "key": "networkPath", "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "42c5063c-5422-448f-aac7-22ebe941ac8e", "label": "VM Network SQA" } } ] } } ] } }, { "key": "reservationStorages", "value": { "type": "multiple", VMware, Inc. 123 Programming Guide "elementTypeId": "COMPLEX", "items": [ { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Storage", "typeFilter": null, "values": { "entries": [ { "key": "computeResourceStorageTotalSizeGB", "value": { "type": "integer", "value": 1000 } }, { "key": "storagePath", "value": { "type": "entityRef", "componentId": null, "classId": "Storage", "id": "e655aa78-e5fb-4722-9e8a-0cd4139248cf", "label": "High Performance Storage" } }, { "key": "storageReservationPriority", "value": { "type": "integer", "value": 1 } }, { "key": "storageReservedSizeGB", "value": { "type": "integer", "value": 100 } }, { "key": "storageEnabled", "value": { "type": "boolean", "value": true } }, { "key": "computeResourceStorageFreeSizeGB", "value": { "type": "integer", "value": 691 } } VMware, Inc. 124 Programming Guide ] } } ] } }, { "key": "reservationMemory", "value": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Memory", "typeFilter": null, "values": { "entries": [ { "key": "computeResourceMemoryTotalSizeMB", "value": { "type": "integer", "value": 13312 } }, { "key": "memoryReservedSizeMb", "value": { "type": "integer", "value": 4096 } } ] } } } ] } } “ c Create an Amazon reservation by using the vRealize Automation reservation service. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations -d “ { "name": "TestEC2Reservation", "reservationTypeId": "Infrastructure.Reservation.Cloud.Amazon", "tenantId": "qe", "subTenantId": "a5d056be-3aa2-4fdd-ba1e-a3805f26f0e0", "enabled": true, "priority": 1, "reservationPolicyId": "34d2a612-718e-4814-96c5-225f7f5615a6", "alertPolicy": { "enabled": false, VMware, Inc. 125 Programming Guide "frequencyReminder": 0, "emailBgMgr": true, "recipients": [ ], "alerts": [ { "alertPercentLevel": 80, "referenceResourceId": "machine", "id": "machine" } ] }, "extensionData": { "entries": [ { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "9d1a3b5a-7162-4a5a-85b7-ec1b2824f554", "label": "EC2 841 Endpoint-us-east-1" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 0 } }, { "key": "securityGroups", "value": { "type": "multiple", "elementTypeId": "ENTITY_REFERENCE", "items": [ { "type": "entityRef", "componentId": null, "classId": "AmazonSecurityGroup", "id": "10", "label": "default" } ] } }, { "key": "loadBalancers", "value": { "type": "multiple", "elementTypeId": "ENTITY_REFERENCE", "items": [ { VMware, Inc. 126 Programming Guide "type": "entityRef", "componentId": null, "classId": "ElasticLoadBalancer", "id": "3", "label": "test1" } ] } }, { "key": "locations", "value": { "type": "multiple", "elementTypeId": "ENTITY_REFERENCE", "items": [ { "type": "entityRef", "componentId": null, "classId": "AvailabilityZone", "id": "10", "label": "us-east-1a" } ] } }, { "key": "keyPairs", "value": { "type": "string", "value": "Per Provisioning Group" } } ] } }” 7 Use the reservation ID to verify that the reservation exists. Also use the ID to get information about the reservation in preparation for updating or deleting it. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/94d74105-831a-4598-8f42-efd590fea15c Display a List of Supported Reservation Types You can use the vRealize Automation REST API reservation service to display a list of supported reservation types. Prerequisites n Log in to vRealize Automation as a fabric group administrator. VMware, Inc. 127 Programming Guide n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. Procedure u Display a list of supported vRealize Automation reservation types by using the reservation service. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/types JSON Output for a vSphere Reservation { "links": [], "content": [{ "@type": "ReservationType", "createdDate": "2015-10-13T04:44:32.008Z", "lastUpdated": "2015-10-13T04:44:32.009Z", "version": 1, "id": "Infrastructure.Reservation.Virtual.vSphere", "name": "vSphere", "description": "vSphere Reservation", "category": "Virtual", "serviceTypeId": "com.mycompany.csp.iaas.blueprint.service", "tenantId": null, "formReference": { "type": "external", "formId": "Infrastructure.Reservation.Virtual.vSphere.form.new" }, "schemaClassId": "Infrastructure.Reservation.Virtual.vSphere", "alertTypes": [{ "createdDate": "2015-10-13T04:44:32.008Z", "lastUpdated": "2015-10-13T04:44:32.008Z", "version": 0, "id": "d248eeee-238c-4e87-9e95-f263b04d113f", "name": "storage", "description": null, "referenceResourceId": "storage" },//Omit 7 reservation types here ], "metadata": { "size": 20, "totalElements": 8, "totalPages": 1, "number": 1, "offset": 0 } } VMware, Inc. 128 Programming Guide JSON Output for a vCloud Air Reservation { "links": [], "content": [{ { "@type": "ReservationType", "createdDate": "2015-11-06T10:21:06.010Z", "lastUpdated": "2015-11-06T10:21:06.011Z", "version": 1, "id": "Infrastructure.Reservation.Cloud.vCloudAir", "name": "vCloud", "description": "vCloud Air Reservation", "category": "Cloud", "serviceTypeId": "com.mycompany.csp.iaas.blueprint.service", "tenantId": null, "formReference": { "type": "external", "formId": "Infrastructure.Reservation.Cloud.vCloudAir.form.new" }, "schemaClassId": "Infrastructure.Reservation.Cloud.vCloudAir", "alertTypes": [ { "createdDate": "2015-11-06T10:21:06.010Z", "lastUpdated": "2015-11-06T10:21:06.010Z", "version": 0, "id": "cd707ad2-d504-43e2-8002-11ee670dcf41", "name": "storage", "description": null, "referenceResourceId": "storage" }, { "createdDate": "2015-11-06T10:21:06.010Z", "lastUpdated": "2015-11-06T10:21:06.010Z", "version": 0, "id": "ef96fec4-a607-4944-a0af-fbe7df862ee2", "name": "memory", "description": null, "referenceResourceId": "memory" }, { "createdDate": "2015-11-06T10:21:06.011Z", "lastUpdated": "2015-11-06T10:21:06.011Z", "version": 0, "id": "043e0815-9f02-4876-b5ce-ddbedabb8ff6", "name": "cpu", "description": null, "referenceResourceId": "cpu" }, { "createdDate": "2015-11-06T10:21:06.011Z", "lastUpdated": "2015-11-06T10:21:06.011Z", "version": 0, "id": "77e90acd-93ab-4bbe-853a-b74923dae70a", "name": "machine", VMware, Inc. 129 Programming Guide "description": null, "referenceResourceId": "machine" } ] }, //Omit 7 reservation types here ], "metadata": { "size": 20, "totalElements": 8, "totalPages": 1, "number": 1, "offset": 0 } } JSON Output for an Amazon Reservation { "links": [], "content": [{ { "@type": "ReservationType", "createdDate": "2015-10-13T04:44:32.074Z", "lastUpdated": "2015-10-13T04:44:32.075Z", "version": 1, "id": "Infrastructure.Cloud.Amazon", "name": "Amazon", "description": "Amazon Reservation", "category": "Cloud", "serviceTypeId": "com.mycompany.csp.iaas.blueprint.service", "tenantId": null, "formReference": { "type": "external", "formId": "Infrastructure.Cloud.Amazon.form.new" }, "schemaClassId": "Infrastructure.Cloud.Amazon", "alertTypes": [{ "createdDate": "2015-10-13T04:44:32.075Z", "lastUpdated": "2015-10-13T04:44:32.075Z", "version": 0, "id": "2ef8f47c-045c-4ee4-821d-7b1543ea5f11", "name": "machine", "description": null, "referenceResourceId": "machine" }] },//Omit 7 reservation types here ], "metadata": { "size": 20, "totalElements": 8, "totalPages": 1, VMware, Inc. 130 Programming Guide "number": 1, "offset": 0 } } Syntax for Displaying a List of Supported Reservation Types You can use the REST API reservation service to display a list of supported vRealize Automation reservation types. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/reservations/types Method Get $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. Output The command output contains property names and values based on the command input parameters. Property Description Links Species an array of link objects, each of which contains the following parts: rel Specifies the name of the link. n href Content Self refers to the object that was returned or requested. n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n Specifies the application or service that determines the other names. Specifies the URL that produces the result. Specifies an array of data rows, each of which represents one of the objects returned in a pageable list. Each object contains the following information: @type Contains the ReservationType string. createdDate Specifies the create date. lastUpdated Specifies the last update date. version Displays the object version number. Id Specifies the unique identifier of this resource. name Specifies the reservation type name. description Specifies the reservation type description. category Specifies the reservation category of Virtual, Cloud or Physical. serviceTypeId Specifies the vRealize Automation service ID. tenantId This contains a null value. VMware, Inc. 131 Programming Guide Property FormReference SchemaClassId alertTypes Description Specifies the user interface form reference. This field is valid for user interface elements only. n type -- user interface form type n formId -- user interface form ID Specifies the schema class ID of the reservation type. Each supported reservation type contains specific fields. The supported fields are defined in the schema. For details, see the reservation service schema definitions in the vRealize Automation API Reference in the vRealize Automation Documentation Center. Contains the alert type list defined in the reservation type: n Metadata createdDate -- Alert type created date n lastUpdated -- Alert type last updated date n version -- Alert type version n id -- Unique identifier of alert type n name -- Name of alert type n description -- Long description of alert type n referenceResourceId -- Unique identifier of reference resource Specifies the paging-related data: n Size: n totalElements: Specifies the maximum number of rows per page. Specifies the number of rows returned. n totalPages: Specifies the total number of pages of data available. n Number: n Offset: Specifies the current page number. Specifies the number of rows skipped. Example: curl Command curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/types The following command contains the example bearer token from Syntax for Requesting an HTTP Bearer Token. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer MTQxMTY5OTkxODQyNTpkYmZmYjkzZTgzNjdmOGU0NThjZTp0ZW5hbnQ6cWV1c2VybmFtZTpmcml0ekBjb2tlLnZtd2 FyZS5jb206NDhmNGViNzQ3ZjYxY2YxMzdhNDAxOGY2MDAwOTFlZTJiZWI4MmJmZWU5ZTQ0MTI0YWI1M2U4NGNiOTk0 OTJjZjEwNjdhMzdmZTQ5YWMyMzA2NTA5M2UyNzlhMzI2ZGYxZDhlYTgxYmNkNjM5ZTNiNjIyYmEwYTRhOWJiMGE2ZTI=" https://myVRA.eng.mycompany.com/reservation-service/api/reservations/types VMware, Inc. 132 Programming Guide Example: JSON Output for a vSphere Reservation In the following response, there are 8 reservation types. For the vSphere reservation, the reservation type ID is Infrastructure.Reservation.Virtual.vSphere, and its schema class ID is Infrastructure.Reservation.Virtual.vSphere. { "links": [], "content": [{ "@type": "ReservationType", "createdDate": "2015-10-13T04:44:32.008Z", "lastUpdated": "2015-10-13T04:44:32.009Z", "version": 1, "id": "Infrastructure.Reservation.Virtual.vSphere", "name": "vSphere", "description": "vSphere Reservation", "category": "Virtual", "serviceTypeId": "com.mycompany.csp.iaas.blueprint.service", "tenantId": null, "formReference": { "type": "external", "formId": "Infrastructure.Reservation.Virtual.vSphere.form.new" }, "schemaClassId": "Infrastructure.Reservation.Virtual.vSphere", "alertTypes": [{ "createdDate": "2015-10-13T04:44:32.008Z", "lastUpdated": "2015-10-13T04:44:32.008Z", "version": 0, "id": "d248eeee-238c-4e87-9e95-f263b04d113f", "name": "storage", "description": null, "referenceResourceId": "storage" },//Omit 7 reservation types here ], "metadata": { "size": 20, "totalElements": 8, "totalPages": 1, "number": 1, "offset": 0 } } Example: JSON Output for a vCloud Air Reservation In the following response, there are 8 reservation types. For the vCloud Air reservation, the reservation type ID is Infrastructure.Reservation.Cloud.vCloudAir and its schema class ID is Infrastructure.Reservation.Cloud.vCloudAir. { "links": [], "content": [{ { VMware, Inc. 133 Programming Guide "@type": "ReservationType", "createdDate": "2015-11-06T10:21:06.010Z", "lastUpdated": "2015-11-06T10:21:06.011Z", "version": 1, "id": "Infrastructure.Reservation.Cloud.vCloudAir", "name": "vCloud", "description": "vCloud Reservation", "category": "Cloud", "serviceTypeId": "com.mycompany.csp.iaas.blueprint.service", "tenantId": null, "formReference": { "type": "external", "formId": "Infrastructure.Reservation.Cloud.vCloudAir.form.new" }, "schemaClassId": "Infrastructure.Reservation.Cloud.vCloudAir", "alertTypes": [ { "createdDate": "2015-11-06T10:21:06.010Z", "lastUpdated": "2015-11-06T10:21:06.010Z", "version": 0, "id": "cd707ad2-d504-43e2-8002-11ee670dcf41", "name": "storage", "description": null, "referenceResourceId": "storage" }, { "createdDate": "2015-11-06T10:21:06.010Z", "lastUpdated": "2015-11-06T10:21:06.010Z", "version": 0, "id": "ef96fec4-a607-4944-a0af-fbe7df862ee2", "name": "memory", "description": null, "referenceResourceId": "memory" }, { "createdDate": "2015-11-06T10:21:06.011Z", "lastUpdated": "2015-11-06T10:21:06.011Z", "version": 0, "id": "043e0815-9f02-4876-b5ce-ddbedabb8ff6", "name": "cpu", "description": null, "referenceResourceId": "cpu" }, { "createdDate": "2015-11-06T10:21:06.011Z", "lastUpdated": "2015-11-06T10:21:06.011Z", "version": 0, "id": "77e90acd-93ab-4bbe-853a-b74923dae70a", "name": "machine", "description": null, "referenceResourceId": "machine" } ] }, //Omit 7 reservation types here ], VMware, Inc. 134 Programming Guide "metadata": { "size": 20, "totalElements": 8, "totalPages": 1, "number": 1, "offset": 0 } } Example: JSON Output for an Amazon Reservation In the following response, there are 8 reservation types. For the Amazon reservation, the reservation type ID is Infrastructure.Reservation.Cloud.Amazon and its schema class ID is Infrastructure.Reservation.Cloud.Amazon. { "links": [], "content": [{ { "@type": "ReservationType", "createdDate": "2015-10-13T04:44:32.074Z", "lastUpdated": "2015-10-13T04:44:32.075Z", "version": 1, "id": "Infrastructure.Cloud.Amazon", "name": "Amazon", "description": "Amazon Reservation", "category": "Cloud", "serviceTypeId": "com.mycompany.csp.iaas.blueprint.service", "tenantId": null, "formReference": { "type": "external", "formId": "Infrastructure.Cloud.Amazon.form.new" }, "schemaClassId": "Infrastructure.Cloud.Amazon", "alertTypes": [{ "createdDate": "2015-10-13T04:44:32.075Z", "lastUpdated": "2015-10-13T04:44:32.075Z", "version": 0, "id": "2ef8f47c-045c-4ee4-821d-7b1543ea5f11", "name": "machine", "description": null, "referenceResourceId": "machine" }] },//Omit 7 reservation types here ], "metadata": { "size": 20, "totalElements": 8, "totalPages": 1, "number": 1, "offset": 0 } } VMware, Inc. 135 Programming Guide Displaying a Schema Definition for a Reservation You can use the vRealize Automation REST API to display a schema definition for any supported reservation type, including a vSphere, Amazon EC2, or vCloud reservation. Display a Schema Definition for a vSphere Reservation You can use the REST API reservation service to display a schema definition for a specific vRealize Automation reservation type, for example a vSphere reservation. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Obtain the schema class ID of the reservation type to create. See Display a List of Supported Reservation Types. Procedure u Display a schema definition for a specific vRealize Automation vSphere reservation type. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Virtual.vSphere/default The schema definition in this example includes 9 extension fields that are supported for the vSphere type reservation. { "fields": [{ "id": "reservationNetworks", "label": "Network", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationNetwork", "typeFilter": null, "label": "Network" }, "displayAdvice": "DATA_TABLE", "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": ["computeResource"] }, VMware, Inc. 136 Programming Guide "state": { "dependencies": [], "facets": [{ "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } }] }, "isMultiValued": true }, { "id": "reservationVCNSTransportZone", "label": "Transport Zone", "description": "Transport zone of the vCNS settings", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "NetworkScopes", "typeFilter": null, "label": "Transport Zone" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": ["computeResource"] }, "state": { "dependencies": [], "facets": [] }, "isMultiValued": false }, { "id": "reservationVCNSSecurityGroups", "label": "Security Groups", "description": "Security groups of the vCNS settings", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "SecurityGroups", "typeFilter": null, "label": "Security Group" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, VMware, Inc. 137 Programming Guide "dependencies": ["computeResource"] }, "state": { "dependencies": [], "facets": [] }, "isMultiValued": true }, { "id": "reservationMemory", "label": "Memory", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationMemory", "typeFilter": null, "label": "Memory" }, "displayAdvice": "DATA_TABLE", "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": ["computeResource"] }, "state": { "dependencies": [], "facets": [{ "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } }] }, "isMultiValued": false }, { "id": "computeResource", "label": "Compute Resource", "description": "The compute resource for the reservation", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "ComputeResource", "typeFilter": "InterfaceTypeId", "label": "Compute Resource" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", VMware, Inc. 138 Programming Guide "customAllowed": false, "dependencies": [] }, "state": { "dependencies": [], "facets": [{ "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } }] }, "isMultiValued": false }, { "id": "machineQuota", "label": "Machine Quota", "description": "The machine quota for the reservation", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [], "facets": [] }, "isMultiValued": false }, { "id": "reservationStorages", "label": "Storage", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationStorage", "typeFilter": null, "label": "Storage" }, "displayAdvice": "DATA_TABLE", "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": ["computeResource"] }, "state": { "dependencies": [], "facets": [{ "type": "mandatory", "value": { VMware, Inc. 139 Programming Guide "type": "constantClause", "value": { "type": "boolean", "value": true } } }] }, "isMultiValued": true }, { "id": "resourcePool", "label": "Resource Pool", "description": "The resource pool for the reservation", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "ResourcePools", "typeFilter": null, "label": "Resource Pool" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": ["computeResource"] }, "state": { "dependencies": [], "facets": [] }, "isMultiValued": false }, { "id": "reservationVCNSRoutedGateways", "label": "Routed Gateways", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationVCNSRoutedGateway", "typeFilter": null, "label": "Routed Gateways" }, "displayAdvice": "DATA_TABLE", "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": ["computeResource"] }, "state": { "dependencies": [], "facets": [] VMware, Inc. 140 Programming Guide }, "isMultiValued": true }] } Syntax for Displaying a Schema Definition for a vSphere Reservation You can use the REST API reservation service to display a schema definition for a specific vRealize Automation reservation type, for example a vSphere reservation. Overview Each reservation contains several fields. Some fields are common to all reservation types and some are type-specific. The list of type-specific fields is defined in a schema. Call a data and schema service to get schema definition information. The data and schema service combines fetch data and fetch schema REST API calls. Table 3‑8. Fields Common To All Reservation Types Parameter Description Parameter Type Id Specifies the reservation ID. GUID name Specifies the reservation name. String reservationTypeId Specifies the reservation type, for example Infrastructure.Reservation.Virtual.vSpher e or Infrastructure.Reservation.Virtual.Amazo n. String tenantId Specifies the tenant ID that contains the reservation. String subTenantId Specifies the subtenant ID that contains the reservation. GUID enabled Specifies whether the reservation is enabled. Boolean priority Specifies the priority of the reservation during VM provisioning. Integer reservationPolicyId Specifies the reservation policy ID to bind to this reservation. GUID alertPolicy Specifies the alert policy of the reservation. The detail schema of this field refers to the alert policy. JSON extensionData Contains type-specific fields. The detail schema of this field is retrieved by the data and schema service. JSON The following table describes the vSphere reservation types field IDs that appear in the output schema definitions. VMware, Inc. 141 Programming Guide Table 3‑9. Extension Fields Supported in vSphere Reservations Field ID Data Type Type Class Permissible Value Depends on Field reservationNetworks Complex Type reservationNetwork Yes computeResource reservationVCNSTransportZ one Entity Reference NetworkScopes Yes computeResource reservationVCNSSecurityGr oups Entity Reference SecurityGroups Yes computeResource reservationMemory Complex Type reservationMemory Yes computeResource computeResource Entity Reference ComputeResource Yes NA machineQuota Integer N/A No NA reservationStorages Complex Type reservationStorage Yes computeResource resourcePool Entity Reference ResourcePools Yes computeResource reservationVCNSRoutedGat eways Complex Type reservationVCNSRoutedGat eway Yes computeResource Note The information in the table is subject to change. Call the data and schema service to retrieve the latest field information. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/data-service/schema/$schemaclassid/default Method Get $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $schemaclassid Specifies the schema class of the reservation type. The schema class ID for a vSphere reservation is Infrastructure.Reservation.Virtual.vSphere. Each supported reservation type contains specific fields. The supported fields are defined in the schema. For details, see the reservation service schema definitions in the vRealize Automation API Reference in the vRealize Automation documentation center. Output The command output contains property names and values based on the command input parameters. Each field contains an array of data rows. Each data row represents one of the fields defined in the schema. VMware, Inc. 142 Programming Guide Property Description Id Specifies the unique identifier of this resource. label Specifies the field label. dataType Specifies the dataType field value: n type: Specifies the field value type: n Self refers to the object that was returned or requested. n First, Previous, Next, and Last refer to corresponding pages of a pageable list. n Specifies the application or service that determines the other names. n componentTypeid: n component: Specifies the type ID of the component. Specifies the unique identifier of the component. n classId: Specifies the schema class of the field This property is valid for complex and ref field types only. n label: Specifies the label of the field data type. displayAdvice Contains display advice for the field. This property is valid for a user interface element only. permissibleValues Optional field. If this field is a permissible value list field, define the meta info for the permissible value by using the following options: n type: n customAllowed: n dependencies: Specifies if the permissible value list is dynamic or static. Specifies if a custom value is allowed during user input in this field. Specifies the list of fields that the current field depends on. VMware, Inc. 143 Programming Guide Property Description state Provides a structure for defining the state of a content construct, for example {@link LayoutSection}. The element state identifies the field paths in the client data context upon which that element state depends. For example, the callback facet result indicates that facet evaluation must be delegated to the server of the object. This evaluation may be dependent on data collected in the client data context. For example, for a unique machine name, the evaluation requires the proposed name entered by the user. dependencies Contains the set of field paths on which the server-side evaluation of the facets depends: n facets: Provides a higher level view of an {@link Constraint} collection and its current values. All rendering code should use this class to provide a common place to get the current state of the field. If a field is considered in need of server-side evaluation, its facets setting is callback. If a field is considered mandatory, its facets setting is mandatory. n isMultiValued: Specifies if the field is a multi-value field, such as a list field. The state provides a higher level view of an {@link Constraint} collection and its current values. Rendering code should use this class to provide a common place to get the current state of the field. Example: curl Command curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Virtual.vSphere/default Example: JSON Output The schema definition in this example includes 9 extension fields that are supported for the vSphere type reservation. { "fields": [{ "id": "reservationNetworks", "label": "Network", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationNetwork", "typeFilter": null, "label": "Network" }, "displayAdvice": "DATA_TABLE", "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": ["computeResource"] VMware, Inc. 144 Programming Guide }, "state": { "dependencies": [], "facets": [{ "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } }] }, "isMultiValued": true }, { "id": "reservationVCNSTransportZone", "label": "Transport Zone", "description": "Transport zone of the vCNS settings", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "NetworkScopes", "typeFilter": null, "label": "Transport Zone" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": ["computeResource"] }, "state": { "dependencies": [], "facets": [] }, "isMultiValued": false }, { "id": "reservationVCNSSecurityGroups", "label": "Security Groups", "description": "Security groups of the vCNS settings", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "SecurityGroups", "typeFilter": null, "label": "Security Group" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", VMware, Inc. 145 Programming Guide "customAllowed": false, "dependencies": ["computeResource"] }, "state": { "dependencies": [], "facets": [] }, "isMultiValued": true }, { "id": "reservationMemory", "label": "Memory", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationMemory", "typeFilter": null, "label": "Memory" }, "displayAdvice": "DATA_TABLE", "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": ["computeResource"] }, "state": { "dependencies": [], "facets": [{ "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } }] }, "isMultiValued": false }, { "id": "computeResource", "label": "Compute Resource", "description": "The compute resource for the reservation", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "ComputeResource", "typeFilter": "InterfaceTypeId", "label": "Compute Resource" }, "displayAdvice": null, "permissibleValues": { VMware, Inc. 146 Programming Guide "type": "dynamic", "customAllowed": false, "dependencies": [] }, "state": { "dependencies": [], "facets": [{ "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } }] }, "isMultiValued": false }, { "id": "machineQuota", "label": "Machine Quota", "description": "The machine quota for the reservation", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [], "facets": [] }, "isMultiValued": false }, { "id": "reservationStorages", "label": "Storage", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationStorage", "typeFilter": null, "label": "Storage" }, "displayAdvice": "DATA_TABLE", "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": ["computeResource"] }, "state": { "dependencies": [], "facets": [{ "type": "mandatory", VMware, Inc. 147 Programming Guide "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } }] }, "isMultiValued": true }, { "id": "resourcePool", "label": "Resource Pool", "description": "The resource pool for the reservation", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "ResourcePools", "typeFilter": null, "label": "Resource Pool" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": ["computeResource"] }, "state": { "dependencies": [], "facets": [] }, "isMultiValued": false }, { "id": "reservationVCNSRoutedGateways", "label": "Routed Gateways", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationVCNSRoutedGateway", "typeFilter": null, "label": "Routed Gateways" }, "displayAdvice": "DATA_TABLE", "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": ["computeResource"] }, "state": { "dependencies": [], "facets": [] VMware, Inc. 148 Programming Guide }, "isMultiValued": true }] } Display a Schema Definition for an Amazon Reservation You can use the REST API reservation service to display a schema definition for a specific vRealize Automation reservation type, for example an Amazon reservation. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Obtain the schema class ID of the reservation type to create. See Display a List of Supported Reservation Types. Procedure u Display a schema definition for an Amazon reservation type. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.Amazon/default The schema definition in this example includes 9 extension fields. { "fields": [ { "id": "securityGroups", "label": "Security groups", "description": "The security groups", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "AmazonSecurityGroup", "typeFilter": null, "label": "Amazon Security Group" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ "computeResource" VMware, Inc. 149 Programming Guide ] }, "state": { "dependencies": [ ], "facets": [ { "type": "visible", "value": { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "VPC" } } } }, { "type": "mandatory", "value": { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "VPC" } } } } ] }, "isMultiValued": true }, { "id": "locations", "label": "Locations", "description": "The locations", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "AvailabilityZone", "typeFilter": null, "label": "Availability Zone" }, VMware, Inc. 150 Programming Guide "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ "computeResource" ] }, "state": { "dependencies": [ ], "facets": [ { "type": "visible", "value": { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "VPC" } } } }, { "type": "mandatory", "value": { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "VPC" } } } } ] }, "isMultiValued": true }, { "id": "loadBalancers", "label": "Load balancers", "description": "The load balancers", "dataType": { "type": "ref", VMware, Inc. 151 Programming Guide "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "ElasticLoadBalancer", "typeFilter": null, "label": "Elastic Load Balancer" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ "locations", "computeResource" ] }, "state": { "dependencies": [ ], "facets": [ { "type": "visible", "value": { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "VPC" } } } } ] }, "isMultiValued": true }, { "id": "specificKeyPairs", "label": "Specific key pair", "description": "The specific key pair", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "KeyPair", "typeFilter": null, "label": "Key Pair" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", VMware, Inc. 152 Programming Guide "customAllowed": false, "dependencies": [ "computeResource", "keyPairs" ] }, "state": { "dependencies": [ ], "facets": [ { "type": "visible", "value": { "type": "and", "subClauses": [ { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "keyPairs" } }, { "type": "expression", "operator": { "type": "equals" }, "leftOperand": { "type": "constant", "value": { "type": "string", "value": "Specific Key Pair" } }, "rightOperand": { "type": "path", "path": "keyPairs" } } ] } }, { "type": "mandatory", "value": { "type": "and", "subClauses": [ { "type": "expression", "operator": { "type": "isDefined" VMware, Inc. 153 Programming Guide }, "leftOperand": { "type": "path", "path": "keyPairs" } }, { "type": "expression", "operator": { "type": "equals" }, "leftOperand": { "type": "constant", "value": { "type": "string", "value": "Specific Key Pair" } }, "rightOperand": { "type": "path", "path": "keyPairs" } } ] } } ] }, "isMultiValued": false }, { "id": "computeResource", "label": "Compute Resource", "description": "The compute resource for the reservation", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "ComputeResource", "typeFilter": "ReservationTypeId", "label": "Compute Resource" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ ] }, "state": { "dependencies": [ ], "facets": [ VMware, Inc. 154 Programming Guide { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "VPC", "label": "VPC", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Cloud.Amazon.VPC", "typeFilter": null, "label": "VPC", "schema": { "fields": [ { "id": "VPCSubnets", "label": "Subnets", "description": "The subnets.", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Subnet", "typeFilter": null, "label": "Subnet" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ ] }, "state": { "dependencies": [ ], "facets": [ { "type": "minCardinality", "value": { "type": "constant", VMware, Inc. 155 Programming Guide "value": { "type": "integer", "value": 1 } } }, { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": true }, { "id": "VPCSecurityGroups", "label": "Security groups", "description": "The security groups", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "AmazonSecurityGroup", "typeFilter": null, "label": "Amazon Security Group" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ ] }, "state": { "dependencies": [ ], "facets": [ { "type": "minCardinality", "value": { "type": "constant", "value": { "type": "integer", "value": 1 } } }, VMware, Inc. 156 Programming Guide { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": true }, { "id": "VPCName", "label": "VPC Name", "description": "The virtual private cloud.", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "VirtualPrivateCloud", "typeFilter": null, "label": "Virtual Private Cloud" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "readOnly", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "VPCLoadBalancers", "label": "Load balancers", "description": "The load balancers.", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "ElasticLoadBalancer", VMware, Inc. 157 Programming Guide "typeFilter": null, "label": "Elastic Load Balancer" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ "VPCSubnets" ] }, "state": { "dependencies": [ ], "facets": [ ] }, "isMultiValued": true } ] } }, "displayAdvice": "DATA_TABLE", "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ "computeResource" ] }, "state": { "dependencies": [ ], "facets": [ { "type": "visible", "value": { "type": "or", "subClauses": [ { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "locations" } } }, VMware, Inc. 158 Programming Guide { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "securityGroups" } } } ] } }, { "type": "mandatory", "value": { "type": "or", "subClauses": [ { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "locations" } } }, { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "securityGroups" } } } ] } } ] }, "isMultiValued": true }, { VMware, Inc. 159 Programming Guide "id": "machineQuota", "label": "Machine Quota", "description": "The machine quota for the reservation", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ ] }, "isMultiValued": false }, { "id": "keyPairs", "label": "Key pair", "description": "The key pair", "dataType": { "type": "primitive", "typeId": "STRING" }, "displayAdvice": null, "permissibleValues": { "type": "static", "customAllowed": false, "values": [ { "underlyingValue": { "type": "string", "value": "Not Specified" }, "label": null }, { "underlyingValue": { "type": "string", "value": "Per Provisioning Group" }, "label": null }, { "underlyingValue": { "type": "string", "value": "Per Machine" }, "label": null }, { "underlyingValue": { "type": "string", VMware, Inc. 160 Programming Guide "value": "Specific Key Pair" }, "label": null } ] }, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false } ] Syntax for Displaying a Schema Definition for an Amazon Reservation You can use the REST API reservation service to display a schema definition for a specific vRealize Automation reservation type, for example an Amazon reservation. Overview Each reservation contains several fields. Some fields are common to all reservation types and some are type-specific. The list of type-specific fields is defined in a schema. Call a data and schema service to get schema definition information. The data and schema service combines fetch data and fetch schema REST API calls. Table 3‑10. Fields Common To All Reservation Types Parameter Description Parameter Type Id Specifies the reservation ID. GUID name Specifies the reservation name. String reservationTypeId Specifies the reservation type, for example Infrastructure.Reservation.Virtual.vSpher e or Infrastructure.Reservation.Virtual.Amazo n. String tenantId Specifies the tenant ID that contains the reservation. String VMware, Inc. 161 Programming Guide Table 3‑10. Fields Common To All Reservation Types (Continued) Parameter Description Parameter Type subTenantId Specifies the subtenant ID that contains the reservation. GUID enabled Specifies whether the reservation is enabled. Boolean priority Specifies the priority of the reservation during VM provisioning. Integer reservationPolicyId Specifies the reservation policy ID to bind to this reservation. GUID alertPolicy Specifies the alert policy of the reservation. The detail schema of this field refers to the alert policy. JSON extensionData Contains type-specific fields. The detail schema of this field is retrieved by the data and schema service. JSON The following table describes the Amazon EC2 reservation types field IDs that appear in the output schema definitions. Table 3‑11. Extension Fields Supported in Amazon Reservations Field ID Data Type Type Class Permissible Value Depends on Field securityGroups Entity Reference AmazonSecurityGroup Yes computeResource locations Entity Reference AvailabilityZone Yes computeResource loadBalancers Entity Reference ElasticLoadBalancer Yes computeResource and locations specificKeyPairs Entity Reference KeyPair Yes computeResource and keyPairs computeResource Entity Reference ComputeResource Yes NA VPC Complex Type Infrastructure.Reservation.Cl oud.Amazon.VPC Yes computeResource machineQuota Integer NA No NA keyPairs String ResourcePools Yes computeResource Note The information in the table is subject to change. Call the data and schema service to retrieve the latest field information. Input Use the supported input parameters to control the command output. VMware, Inc. 162 Programming Guide Parameter Description URL https://$host/reservation-service/api/data-service/schema/$schemaclassid/default Method Get $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $schemaclassid Specifies the schema class of the reservation type. The schema class ID for an Amazon reservation is Infrastructure.Reservation.Cloud.Amazon. Each supported reservation type contains specific fields. The supported fields are defined in the schema. For details, see the reservation service schema definitions in the vRealize Automation API Reference in vRealize Automation documentation. Output The command output contains property names and values based on the command input parameters. Each field contains an array of data rows. Each data row represents one of the fields defined in the schema. Property Description Id Specifies the unique identifier of this resource. label Specifies the field label. dataType Specifies the dataType field value: n n type: Specifies the field value type: n Self refers to the object that was returned or requested. n First, Previous, Next, and Last refer to corresponding pages of a pageable list. n Specifies the application or service that determines the other names. componentTypeid: Specifies the type ID of the component. n component: Specifies the unique identifier of the component. n classId: Specifies the schema class of the field This property is valid for complex and ref field types only. n label: Specifies the label of the field data type. displayAdvice VMware, Inc. Contains display advice for the field. This property is valid for a user interface element only. 163 Programming Guide Property Description permissibleValues Optional field. If this field is a permissible value list field, define the meta info for the permissible value by using the following options: n type: n customAllowed: n dependencies: Specifies if the permissible value list is dynamic or static. Specifies if a custom value is allowed during user input in this field. Specifies the list of fields that the current field depends on. state Provides a structure for defining the state of a content construct, for example {@link LayoutSection}. The element state identifies the field paths in the client data context upon which that element state depends. For example, the callback facet result indicates that facet evaluation must be delegated to the server of the object. This evaluation may be dependent on data collected in the client data context. For example, for a unique machine name, the evaluation requires the proposed name entered by the user. dependencies Contains the set of field paths on which the server-side evaluation of the facets depends: n facets: Provides a higher level view of an {@link Constraint} collection and its current values. All rendering code should use this class to provide a common place to get the current state of the field. If a field is considered in need of server-side evaluation, its facets setting is callback. If a field is considered mandatory, its facets setting is mandatory. n isMultiValued: Specifies if the field is a multi-value field, such as a list field. The state provides a higher level view of an {@link Constraint} collection and its current values. Rendering code should use this class to provide a common place to get the current state of the field. Example: curl Command The following example command retrieves schema definition information for an Amazon type reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.Amazon/default Example: JSON Output The following JSON output is returned based on the command input. VMware, Inc. 164 Programming Guide The schema definition in this example includes 8 extension fields that are supported for the Amazon EC2 type reservation. { "fields": [ { "id": "securityGroups", "label": "Security groups", "description": "The security groups", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "AmazonSecurityGroup", "typeFilter": null, "label": "Amazon Security Group" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ "computeResource" ] }, "state": { "dependencies": [ ], "facets": [ { "type": "visible", "value": { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "VPC" } } } }, { "type": "mandatory", "value": { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" VMware, Inc. 165 Programming Guide }, "leftOperand": { "type": "path", "path": "VPC" } } } } ] }, "isMultiValued": true }, { "id": "locations", "label": "Locations", "description": "The locations", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "AvailabilityZone", "typeFilter": null, "label": "Availability Zone" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ "computeResource" ] }, "state": { "dependencies": [ ], "facets": [ { "type": "visible", "value": { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "VPC" } } } }, { "type": "mandatory", VMware, Inc. 166 Programming Guide "value": { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "VPC" } } } } ] }, "isMultiValued": true }, { "id": "loadBalancers", "label": "Load balancers", "description": "The load balancers", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "ElasticLoadBalancer", "typeFilter": null, "label": "Elastic Load Balancer" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ "locations", "computeResource" ] }, "state": { "dependencies": [ ], "facets": [ { "type": "visible", "value": { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", VMware, Inc. 167 Programming Guide "path": "VPC" } } } } ] }, "isMultiValued": true }, { "id": "specificKeyPairs", "label": "Specific key pair", "description": "The specific key pair", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "KeyPair", "typeFilter": null, "label": "Key Pair" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ "computeResource", "keyPairs" ] }, "state": { "dependencies": [ ], "facets": [ { "type": "visible", "value": { "type": "and", "subClauses": [ { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "keyPairs" } }, { "type": "expression", "operator": { "type": "equals" }, VMware, Inc. 168 Programming Guide "leftOperand": { "type": "constant", "value": { "type": "string", "value": "Specific Key Pair" } }, "rightOperand": { "type": "path", "path": "keyPairs" } } ] } }, { "type": "mandatory", "value": { "type": "and", "subClauses": [ { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "keyPairs" } }, { "type": "expression", "operator": { "type": "equals" }, "leftOperand": { "type": "constant", "value": { "type": "string", "value": "Specific Key Pair" } }, "rightOperand": { "type": "path", "path": "keyPairs" } } ] } } ] }, "isMultiValued": false }, { VMware, Inc. 169 Programming Guide "id": "computeResource", "label": "Compute Resource", "description": "The compute resource for the reservation", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "ComputeResource", "typeFilter": "ReservationTypeId", "label": "Compute Resource" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ ] }, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "VPC", "label": "VPC", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Cloud.Amazon.VPC", "typeFilter": null, "label": "VPC", "schema": { "fields": [ { "id": "VPCSubnets", "label": "Subnets", "description": "The subnets.", "dataType": { VMware, Inc. 170 Programming Guide "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Subnet", "typeFilter": null, "label": "Subnet" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ ] }, "state": { "dependencies": [ ], "facets": [ { "type": "minCardinality", "value": { "type": "constant", "value": { "type": "integer", "value": 1 } } }, { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": true }, { "id": "VPCSecurityGroups", "label": "Security groups", "description": "The security groups", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "AmazonSecurityGroup", "typeFilter": null, "label": "Amazon Security Group" VMware, Inc. 171 Programming Guide }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ ] }, "state": { "dependencies": [ ], "facets": [ { "type": "minCardinality", "value": { "type": "constant", "value": { "type": "integer", "value": 1 } } }, { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": true }, { "id": "VPCName", "label": "VPC Name", "description": "The virtual private cloud.", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "VirtualPrivateCloud", "typeFilter": null, "label": "Virtual Private Cloud" }, "displayAdvice": null, "state": { "dependencies": [ ], VMware, Inc. 172 Programming Guide "facets": [ { "type": "readOnly", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "VPCLoadBalancers", "label": "Load balancers", "description": "The load balancers.", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "ElasticLoadBalancer", "typeFilter": null, "label": "Elastic Load Balancer" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ "VPCSubnets" ] }, "state": { "dependencies": [ ], "facets": [ ] }, "isMultiValued": true } ] } }, "displayAdvice": "DATA_TABLE", "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ "computeResource" ] VMware, Inc. 173 Programming Guide }, "state": { "dependencies": [ ], "facets": [ { "type": "visible", "value": { "type": "or", "subClauses": [ { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "locations" } } }, { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "securityGroups" } } } ] } }, { "type": "mandatory", "value": { "type": "or", "subClauses": [ { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "locations" VMware, Inc. 174 Programming Guide } } }, { "type": "not", "subClause": { "type": "expression", "operator": { "type": "isDefined" }, "leftOperand": { "type": "path", "path": "securityGroups" } } } ] } } ] }, "isMultiValued": true }, { "id": "machineQuota", "label": "Machine Quota", "description": "The machine quota for the reservation", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ ] }, "isMultiValued": false }, { "id": "keyPairs", "label": "Key pair", "description": "The key pair", "dataType": { "type": "primitive", "typeId": "STRING" }, "displayAdvice": null, "permissibleValues": { "type": "static", "customAllowed": false, "values": [ VMware, Inc. 175 Programming Guide { "underlyingValue": { "type": "string", "value": "Not Specified" }, "label": null }, { "underlyingValue": { "type": "string", "value": "Per Provisioning Group" }, "label": null }, { "underlyingValue": { "type": "string", "value": "Per Machine" }, "label": null }, { "underlyingValue": { "type": "string", "value": "Specific Key Pair" }, "label": null } ] }, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false } ] Display a Schema Definition for a vCloud Air Reservation You can use the vRealize Automation REST API reservation service to display a schema definition for a specific reservation type, for example a vCloud Air reservation. VMware, Inc. 176 Programming Guide Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Obtain the schema class ID of the reservation type to create. See Display a List of Supported Reservation Types. Procedure u Display a schema definition for a specific vCloud Air reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.vCloudAir/default The schema definition in this example includes 6 extension fields that are supported for the vCloud Air type reservation. { "fields": [ { "id": "reservationNetworks", "label": "Network", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Network", "typeFilter": null, "label": "Network", "schema": { "fields": [ { "id": "networkPath", "label": "Network Path", "description": "Network path of the reservation", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Network", "typeFilter": null, "label": "Network" }, "displayAdvice": null, "state": { "dependencies": [ VMware, Inc. 177 Programming Guide ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "networkProfile", "label": "Network Profile", "description": "The Network Profile", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "NetworkProfile", "typeFilter": null, "label": "Network Profile" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ ] }, "state": { "dependencies": [ ], "facets": [ ] }, "isMultiValued": false } ] } }, "displayAdvice": "DATA_TABLE", "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ VMware, Inc. 178 Programming Guide "computeResource" ] }, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": true }, { "id": "allocationModel", "label": "Allocation Model", "description": "The allocation model for the reservation", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "readOnly", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "reservationMemory", "label": "Memory", "dataType": { "type": "complex", VMware, Inc. 179 Programming Guide "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Memory", "typeFilter": null, "label": "Memory", "schema": { "fields": [ { "id": "computeResourceMemoryTotalSizeMB", "label": "Physical Memory (MB)", "description": "The physical capacity (MB) for the memory", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "readOnly", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "memoryReservedSizeMb", "label": "Memory Reservation (MB)", "description": "The reserved capacity (MB) for the memory", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ ] }, "isMultiValued": false } ] VMware, Inc. 180 Programming Guide } }, "displayAdvice": "DATA_TABLE", "state": { "dependencies": [ ], "facets": [ ] }, "isMultiValued": false }, { "id": "computeResource", "label": "Compute Resource", "description": "The compute resource for the reservation", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "ComputeResource", "typeFilter": "ReservationTypeId", "label": "Compute Resource" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ ] }, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "machineQuota", "label": "Machine Quota", VMware, Inc. 181 Programming Guide "description": "The machine quota for the reservation", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ ] }, "isMultiValued": false }, { "id": "reservationStorages", "label": "Storage", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Storage", "typeFilter": null, "label": "Storage", "schema": { "fields": [ { "id": "storagePath", "label": "Storage Path", "description": "The storage path of the storage", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Storage", "typeFilter": null, "label": "Storage Path" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } VMware, Inc. 182 Programming Guide } ] }, "isMultiValued": false }, { "id": "storageReservationPriority", "label": "Priority", "description": "The reservation priority for the storage", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "computeResourceStorageTotalSizeGB", "label": "Total (GB)", "description": "The total physical capacity (GB) for the storage", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "readOnly", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } VMware, Inc. 183 Programming Guide } } ] }, "isMultiValued": false }, { "id": "storageReservedSizeGB", "label": "This reservation reserved (GB)", "description": "The reserved capacity size (GB) for the storage", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ ] }, "isMultiValued": false }, { "id": "storageEnabled", "label": "Enabled", "description": "Whether the storage is enabled to reserve", "dataType": { "type": "primitive", "typeId": "BOOLEAN" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "computeResourceStorageFreeSizeGB", VMware, Inc. 184 Programming Guide "label": "Free (GB)", "description": "The free capacity (GB) for the storage", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "readOnly", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false } ] } }, "displayAdvice": "DATA_TABLE", "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ "computeResource" ] }, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, VMware, Inc. 185 Programming Guide "isMultiValued": true } ] } Syntax for Displaying a Schema Definition for a vCloud Air Reservation You can use the REST API reservation service to display a schema definition for a specific vRealize Automation reservation type, for example a vCloud Air reservation. Overview SomevRealize Automation reservation fields are common to all reservation types and some are typespecific. The list of type-specific fields is defined in a schema. You can call a data and schema service to get schema definition information. The data and schema service combines fetch data and fetch schema REST API calls. Table 3‑12. Fields Common To All Reservation Types Parameter Description Parameter Type Id Specifies the reservation ID. GUID name Specifies the reservation name. String reservationTypeId Specifies the reservation type, for example Infrastructure.Reservation.Virtual.vSpher e or Infrastructure.Reservation.Virtual.Amazo n. String tenantId Specifies the tenant ID that contains the reservation. String subTenantId Specifies the subtenant ID that contains the reservation. GUID enabled Specifies whether the reservation is enabled. Boolean priority Specifies the priority of the reservation during VM provisioning. Integer reservationPolicyId Specifies the reservation policy ID to bind to this reservation. GUID alertPolicy Specifies the alert policy of the reservation. The detail schema of this field refers to the alert policy. JSON extensionData Contains type-specific fields. The detail schema of this field is retrieved by the data and schema service. JSON The following table describes the vCloud Air reservation types field IDs that appear in the output schema definitions. VMware, Inc. 186 Programming Guide Table 3‑13. Extension Fields Supported in vCloud Reservations Permissible Value Depends on Field Infrastructure.Reservation.N etwork Yes computeResource Integer NA No NA reservationMemory Complex Type Infrastructure.Reservation.M emory No NA computeResource Entity Reference ComputeResource Yes NA machineQuota Integer NA No NA reservationStorages Complex Type Infrastructure.Reservation.St orage Yes computeResource Field ID Data Type Type Class reservationNetworks Complex Type allocationModel Note The information in the table is subject to change. Call the data and schema service to retrieve the latest field information. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/data-service/schema/$schemaclassid/default Method Get $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $schemaclassid Specifies the schema class of the reservation type. The schema class ID for a vCloud Air reservation is Infrastructure.Reservation.Cloud.vCloudAir. Each supported reservation type contains specific fields. The supported fields are defined in the schema. For details, see the reservation service schema definitions in the vRealize Automation API Reference in vRealize Automation documentation. Output The command output contains property names and values based on the command input parameters. Each field contains an array of data rows. Each data row represents one of the fields defined in the schema. Property Description Id Specifies the unique identifier of this resource. label Specifies the field label. VMware, Inc. 187 Programming Guide Property Description dataType Specifies the dataType field value: n type: Specifies the field value type: n Self refers to the object that was returned or requested. n First, Previous, Next, and Last refer to corresponding pages of a pageable list. n Specifies the application or service that determines the other names. n componentTypeid: n component: Specifies the type ID of the component. Specifies the unique identifier of the component. n classId: Specifies the schema class of the field This property is valid for complex and ref field types only. n label: Specifies the label of the field data type. displayAdvice Contains display advice for the field. This property is valid for a user interface element only. permissibleValues Optional field. If this field is a permissible value list field, define the meta info for the permissible value by using the following options: n type: Specifies if the permissible value list is dynamic or static. n customAllowed: Specifies if a custom value is allowed during user input in this field. n dependencies: Specifies the list of fields that the current field depends on. state Provides a structure for defining the state of a content construct, for example {@link LayoutSection}. The element state identifies the field paths in the client data context upon which that element state depends. For example, the callback facet result indicates that facet evaluation must be delegated to the server of the object. This evaluation may be dependent on data collected in the client data context. For example, for a unique machine name, the evaluation requires the proposed name entered by the user. dependencies Contains the set of field paths on which the server-side evaluation of the facets depends: n facets: Provides a higher level view of an {@link Constraint} collection and its current values. All rendering code should use this class to provide a common place to get the current state of the field. If a field is considered in need of server-side evaluation, its facets setting is callback. If a field is considered mandatory, its facets setting is mandatory. n isMultiValued: Specifies if the field is a multi-value field, such as a list field. The state provides a higher level view of an {@link Constraint} collection and its current values. Rendering code should use this class to provide a common place to get the current state of the field. VMware, Inc. 188 Programming Guide Example: curl Command The following example command retrieves schema definition information for a vCloud Air reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.vCloudAir/default Example: JSON Output The schema definition in this example includes 6 extension fields that are supported for the vCloud Air type reservation. { "fields": [ { "id": "reservationNetworks", "label": "Network", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Network", "typeFilter": null, "label": "Network", "schema": { "fields": [ { "id": "networkPath", "label": "Network Path", "description": "Network path of the reservation", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Network", "typeFilter": null, "label": "Network" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } VMware, Inc. 189 Programming Guide } } ] }, "isMultiValued": false }, { "id": "networkProfile", "label": "Network Profile", "description": "The Network Profile", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "NetworkProfile", "typeFilter": null, "label": "Network Profile" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ ] }, "state": { "dependencies": [ ], "facets": [ ] }, "isMultiValued": false } ] } }, "displayAdvice": "DATA_TABLE", "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ "computeResource" ] }, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { VMware, Inc. 190 Programming Guide "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": true }, { "id": "allocationModel", "label": "Allocation Model", "description": "The allocation model for the reservation", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "readOnly", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "reservationMemory", "label": "Memory", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Memory", "typeFilter": null, "label": "Memory", "schema": { "fields": [ { "id": "computeResourceMemoryTotalSizeMB", "label": "Physical Memory (MB)", "description": "The physical capacity (MB) for the memory", VMware, Inc. 191 Programming Guide "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "readOnly", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "memoryReservedSizeMb", "label": "Memory Reservation (MB)", "description": "The reserved capacity (MB) for the memory", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ ] }, "isMultiValued": false } ] } }, "displayAdvice": "DATA_TABLE", "state": { "dependencies": [ ], "facets": [ ] }, VMware, Inc. 192 Programming Guide "isMultiValued": false }, { "id": "computeResource", "label": "Compute Resource", "description": "The compute resource for the reservation", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "ComputeResource", "typeFilter": "ReservationTypeId", "label": "Compute Resource" }, "displayAdvice": null, "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ ] }, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "machineQuota", "label": "Machine Quota", "description": "The machine quota for the reservation", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ VMware, Inc. 193 Programming Guide ] }, "isMultiValued": false }, { "id": "reservationStorages", "label": "Storage", "dataType": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Storage", "typeFilter": null, "label": "Storage", "schema": { "fields": [ { "id": "storagePath", "label": "Storage Path", "description": "The storage path of the storage", "dataType": { "type": "ref", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Storage", "typeFilter": null, "label": "Storage Path" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "storageReservationPriority", "label": "Priority", "description": "The reservation priority for the storage", "dataType": { "type": "primitive", VMware, Inc. 194 Programming Guide "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "computeResourceStorageTotalSizeGB", "label": "Total (GB)", "description": "The total physical capacity (GB) for the storage", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "readOnly", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "storageReservedSizeGB", "label": "This reservation reserved (GB)", "description": "The reserved capacity size (GB) for the storage", "dataType": { VMware, Inc. 195 Programming Guide "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ ] }, "isMultiValued": false }, { "id": "storageEnabled", "label": "Enabled", "description": "Whether the storage is enabled to reserve", "dataType": { "type": "primitive", "typeId": "BOOLEAN" }, "displayAdvice": null, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false }, { "id": "computeResourceStorageFreeSizeGB", "label": "Free (GB)", "description": "The free capacity (GB) for the storage", "dataType": { "type": "primitive", "typeId": "INTEGER" }, "displayAdvice": null, "state": { "dependencies": [ ], VMware, Inc. 196 Programming Guide "facets": [ { "type": "readOnly", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": false } ] } }, "displayAdvice": "DATA_TABLE", "permissibleValues": { "type": "dynamic", "customAllowed": false, "dependencies": [ "computeResource" ] }, "state": { "dependencies": [ ], "facets": [ { "type": "mandatory", "value": { "type": "constantClause", "value": { "type": "boolean", "value": true } } } ] }, "isMultiValued": true } ] } Get the Business Group ID for a Reservation You can use REST API reservation service to get the business group ID for a vRealize Automation reservation. The business group is also referred to as the subtenant in the API. When you create a reservation, you must supply the business group ID, also referred to as the subtenant ID, in the REST command line. Use this procedure to obtain the subTenantId value. VMware, Inc. 197 Programming Guide Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. Procedure u Get business group ID for a vRealize Automation reservation with the reservation service. insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/identity/api/tenants/qe/subtenants The following JSON output is returned based on the command input. { "links": [], "content": [{ "@type": "Subtenant", "id": "7d7dbb19-d2dc-44a3-9fc2-7435552c8a05", "name": "Development", "description": " Development ", "subtenantRoles": null, "extensionData": { "entries": [{ "key": "iaas-manager-emails", "value": { "type": "string", "value": "user1@mycompany.com" } }] }, "tenant": "qe" }, { "@type": "Subtenant", "id": "ade5b8d3-decf-405e-bd0b-297f976ef721", "name": "Finance", "description": "Finance", "subtenantRoles": null, "extensionData": { "entries": [{ "key": "iaas-manager-emails", "value": { "type": "string", "value": " user1@mycompany.com " } }] }, "tenant": "qe" VMware, Inc. 198 Programming Guide }, { "@type": "Subtenant", "id": "ef58f604-528d-4441-a219-4725bead629b", "name": "Test Sub Tenant", "description": "VMPS", "subtenantRoles": null, "extensionData": { "entries": [] }, "tenant": "qe" }, { "@type": "Subtenant", "id": "92926c91-37de-4647-9aee-70b8d557ce8d", "name": "Quality Engineering", "description": "created by demo content", "subtenantRoles": null, "extensionData": { "entries": [{ "key": "iaas-manager-emails", "value": { "type": "string", "value": " user1@mycompany.com " } }] }, "tenant": "qe" }], "metadata": { "size": 20, "totalElements": 4, "totalPages": 1, "number": 1, "offset": 0 } } Syntax for Getting the Business Group ID for a Reservation You can use the REST API identity service to get the business group ID for a vRealize Automation reservation. The business group is also referred to as the subtenant in the API. When you create a reservation, you must supply the business group ID, also referred to as the subtenant ID, in the REST command line. Use this procedure to obtain the subTenantId value. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/identity/api/tenants/$tenantId/subtenants Method Get VMware, Inc. 199 Programming Guide Parameter Description $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $tenantId Specifies the ID of the tenant. Use to indicate the tenant ID to be queried. Each subtenant, or business group, must belong to a tenant. Output The command output contains property names and values based on the command input parameters. Property Description Links Species an array of link objects, each of which contains the following parts: rel Specifies the name of the link. n href Content Self refers to the object that was returned or requested. n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n Specifies the application or service determines the other names. Specifies the URL which produces the result. Specifies an array of data rows, each of which represents one of the tenant objects returned in a pageable list. Each tenant object contains the following information: @type Constants the ReservationType string. Id Specifies the unique reservation type identifier. name Specifies the reservation type name. description Specifies the reservation type description. subtenantRoles Specifies the business group roles. extensionData Specifies the extension data of the business group. For example, the email address of the vRealize Automation business group manager is user1@mycompany.com. Metadata Specifies the paging-related data. Size Specifies the maximum number of rows per page. totalElements Specifies the number of rows returned. totalPages Specifies the total number of pages of data available. Number Specifies the current page number. Offset Specifies the number of rows skipped. VMware, Inc. 200 Programming Guide Example: curl Command The following example command retrieves all available business group, or subtenant, IDs. insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/identity/api/tenants/qe/subtenants Example: JSON Output In this example, all available business group, or subtenant, IDs are displayed. For related information about the subtenant ID ef58f604-528d-4441-a219-4725bead629b, see Create a Reservation. The following JSON output is returned based on the command input. { "links": [], "content": [{ "@type": "Subtenant", "id": "7d7dbb19-d2dc-44a3-9fc2-7435552c8a05", "name": "Development", "description": " Development ", "subtenantRoles": null, "extensionData": { "entries": [{ "key": "iaas-manager-emails", "value": { "type": "string", "value": "user1@mycompany.com" } }] }, "tenant": "qe" }, { "@type": "Subtenant", "id": "ade5b8d3-decf-405e-bd0b-297f976ef721", "name": "Finance", "description": "Finance", "subtenantRoles": null, "extensionData": { "entries": [{ "key": "iaas-manager-emails", "value": { "type": "string", "value": " user1@mycompany.com " } }] }, "tenant": "qe" }, { "@type": "Subtenant", "id": "ef58f604-528d-4441-a219-4725bead629b", VMware, Inc. 201 Programming Guide "name": "Test Sub Tenant", "description": "VMPS", "subtenantRoles": null, "extensionData": { "entries": [] }, "tenant": "qe" }, { "@type": "Subtenant", "id": "92926c91-37de-4647-9aee-70b8d557ce8d", "name": "Quality Engineering", "description": "created by demo content", "subtenantRoles": null, "extensionData": { "entries": [{ "key": "iaas-manager-emails", "value": { "type": "string", "value": " user1@mycompany.com " } }] }, "tenant": "qe" }], "metadata": { "size": 20, "totalElements": 4, "totalPages": 1, "number": 1, "offset": 0 } } Get a Compute Resource for the Reservation You can use the REST API reservation service to obtain compute resources for vRealize Automation reservations. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. When you create a reservation, you must provide compute resource information that corresponds to the computeResource parameter. VMware, Inc. 202 Programming Guide For example, for a vSphere, Amazon EC2, or vCloud reservation type schema definition, the following permissibleValues field in the compute resource output indicates if the compute resource is available and if it has any dependencies. “permissibleValues": {"type": "dynamic","customAllowed": false, "dependencies": []} Procedure u Use the following command to get a compute resource. Command to get a compute resource for vSphere reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Virtual.vSphere/default/computeResource/values -d “{}” Command to get a compute resource for an Amazon EC2 reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.Amazon/default/computeResource/values Example: curl Command for a vCloud reservation -d “{}” Command to get a compute resource for a vCloud reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.vCloud/default/computeResource/values -d “{}” The following JSON output is returned based on the command input. JSON Output for a vSphere Reservation { "values": [{ "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "047e00f5-5424-4ed2-a751-4a334aeaff54", "label": "VC51-Cluster" }, "label": "VC51-Cluster" }, { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", VMware, Inc. 203 Programming Guide "id": "a4349488-9a56-4906-83a5-7d8b33c9d435", "label": "NSX61-RC-ManagementCluster" }, "label": "NSX61-RC-ManagementCluster" }, { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "40b151ce-e409-4d2a-8dae-bb456139a660", "label": "NSX61-RC-ComputeClusterB" }, "label": "NSX61-RC-ComputeClusterB" }, { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "cc254a84-95b8-434a-874d-bdfef8e8ad2c", "label": "NSX61-RC-ComputeClusterA" }, "label": "NSX61-RC-ComputeClusterA" }] } JSON output for an Amazon EC2 Reservation { "values": [ { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "fdfa4b95-9476-4c18-81c5-1c0e5cb1131f", "label": "EC2 841 Endpoint-us-west-1" }, "label": "EC2 841 Endpoint-us-west-1" }, { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "4e362590-b634-4269-9da4-548260148fa3", "label": "EC2 841 Endpoint-us-west-2" }, "label": "EC2 841 Endpoint-us-west-2" }, { "underlyingValue": { "type": "entityRef", VMware, Inc. 204 Programming Guide "componentId": null, "classId": "ComputeResource", "id": "9d1a3b5a-7162-4a5a-85b7-ec1b2824f554", "label": "EC2 841 Endpoint-us-east-1" }, "label": "EC2 841 Endpoint-us-east-1" } ] } JSON output for a vCloud Reservation { "values": [ { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "c527a0f5-b1ae-4b61-8145-ad9d5c434dc7", "label": "Engineering Allocation VDC" }, "label": "Engineering Allocation VDC" } ] } Syntax for Getting a Compute Resource for a Reservation You can use the REST API reservation service to obtain a compute resource for a vRealize Automation reservation. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/dataservice/schema/$schemaclassid/default/$fieldid/values Method Post $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. VMware, Inc. 205 Programming Guide Parameter Description $schemaclassid Specifies the schema class ID. For a vSphere reservation, specify Infrastructure.Reservation.Virtual.vSphere as the $schemaclassid value. For an Amazon EC2 reservation, specify Infrastructure.Reservation.Cloud.Amazon as the the $schemaclassid value. For a vCloud reservation, specify Infrastructure.Reservation.Cloud.vCloud as the the $schemaclassid value. From the schema definition, specifies the schemaclassid of the compute $fieldId resource field, which is is computeResource. Enter computeResource for the $fieldId value. HTTP body Because the dependencies entry for this permissible value field is an empty string, provide an empty JSON string "{}" in the HTTP body. Output The command output contains property names and values based on the command input parameters. The values section contains an array of data rows, each of which represents one of the compute resource objects, returned in a pageable list. Each compute resource object contains the following information. Property Description underlyingValue Contains a JSON string representing one permissible value of field. n type Specifies one of the following permissible value data types. n entityRef - Indicates that the object references a vRealize Automation entity. n complexRef - Indicates that the object is a user-defined complex structure, for example struct in C or Pojo in Java. n n primary - Indicates the entity type such as string, integer, and so on. componentId Specifies the component ID. n classId Specifies the schema class ID of the current data type. n Id Specifies the unique compute resource identifier. label VMware, Inc. Contains the compute resource label. This value matches the underlyingValue.label. 206 Programming Guide Example: curl Command for a vSphere reservation The following command retrieves a compute resource for a vSphere reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Virtual.vSphere/default/computeResource/values -d “{}” Example: curl Command for an Amazon EC2 reservation The following command retrieves a compute resource for an Amazon EC2 reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.Amazon/default/computeResource/values -d “{}” Example: curl Command for a vCloud reservation The following command retrieves a compute resource for a vCloud reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.vCloud/default/computeResource/values -d “{}” Example: JSON Output for a vSphere Reservation In this example, there are 4 available compute resources that you can use to create a vSphere reservation, for example cc254a84-95b8-434a-874d-bdfef8e8ad2c. Save a copy of the underlyingValue section of the compute resource that you want to an XML editor and use the section content later to create a reservation request. The following JSON output is returned based on the command input. { "values": [{ "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "047e00f5-5424-4ed2-a751-4a334aeaff54", "label": "VC51-Cluster" }, "label": "VC51-Cluster" }, { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", VMware, Inc. 207 Programming Guide "id": "a4349488-9a56-4906-83a5-7d8b33c9d435", "label": "NSX61-RC-ManagementCluster" }, "label": "NSX61-RC-ManagementCluster" }, { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "40b151ce-e409-4d2a-8dae-bb456139a660", "label": "NSX61-RC-ComputeClusterB" }, "label": "NSX61-RC-ComputeClusterB" }, { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "cc254a84-95b8-434a-874d-bdfef8e8ad2c", "label": "NSX61-RC-ComputeClusterA" }, "label": "NSX61-RC-ComputeClusterA" }] } Example: JSON Output for an Amazon Reservation In this example, there are 3 available compute resources that you can use to create an Amazon EC2 reservation. Save a copy of the underlyingValue section of the compute resource that you want to an XML editor and use the section content later to create a reservation request. { "values": [ { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "fdfa4b95-9476-4c18-81c5-1c0e5cb1131f", "label": "EC2 841 Endpoint-us-west-1" }, "label": "EC2 841 Endpoint-us-west-1" }, { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "4e362590-b634-4269-9da4-548260148fa3", "label": "EC2 841 Endpoint-us-west-2" }, "label": "EC2 841 Endpoint-us-west-2" VMware, Inc. 208 Programming Guide }, { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "9d1a3b5a-7162-4a5a-85b7-ec1b2824f554", "label": "EC2 841 Endpoint-us-east-1" }, "label": "EC2 841 Endpoint-us-east-1" } ] } Example: Output for a vCloud Reservation In this example, there is 1 available compute resource that you can use to create a vCloud reservation. Save a copy of the underlyingValue section of the compute resource that you want to an XML editor and use the section content later to create a reservation request. { "values": [ { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "c527a0f5-b1ae-4b61-8145-ad9d5c434dc7", "label": "Engineering Allocation VDC" }, "label": "Engineering Allocation VDC" } ] } Getting a Resources Schema by Reservation Type You can use the vRealize Automation REST API to get a resources schema for any supported reservation type, including a vSphere, Amazon EC2, or vCloud reservation. Get Resources Schema for a vSphere Reservation You can use the REST API reservation service to display information about available resources, such as storage and network information, for a vSphere reservation. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Get the required compute resource ID. See Get a Compute Resource for the Reservation. VMware, Inc. 209 Programming Guide Procedure u Display information about available resources. The following example command queries resource pool information for the compute resource cc254a84-95b8-434a-874d-bdfef8e8ad2c. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Virtual.vSphere/default/resourcePool/values "text": "", "dependencyValues": { "entries": [{ "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": " cc254a84-95b8-434a-874d-bdfef8e8ad2c " } }] } }” -d “{ The following JSON output is returned based on the command input. { "values": [{ "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ResourcePools", "id": " 4e51fabc-19e8-4e79-b413-d52309b3bb62", "label": " CoreDev" }, "label": " CoreDev" }, { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ResourcePools", "id": "1186b5cc-cdef-4afb-8653-0ad41a36c194", "label": "Documentation" }, "label": "Documentation" }, //Omit other resource pool list ] } VMware, Inc. 210 Programming Guide Syntax for Getting Resources Schema for a vSphere Reservation You can use the REST API reservation service to display information about available resources for a vSphere reservation, such as storage and network information. Overview This example illustrates how to get a permissible value list for the resourcePool field. You can use the generated output as input for creating or updating a vSphere reservation. Table 3‑14. Extension Fields Supported in vSphere Reservations Field ID Data Type Type Class Permissible Value Depends on Field reservationNetworks Complex Type reservationNetwork Yes computeResource reservationVCNSTransportZ one Entity Reference NetworkScopes Yes computeResource reservationVCNSSecurityGr oups Entity Reference SecurityGroups Yes computeResource reservationMemory Complex Type reservationMemory Yes computeResource computeResource Entity Reference ComputeResource Yes NA machineQuota Integer N/A No NA reservationStorages Complex Type reservationStorage Yes computeResource resourcePool Entity Reference ResourcePools Yes computeResource reservationVCNSRoutedGat eways Complex Type reservationVCNSRoutedGat eway Yes computeResource Note The information in the table is subject to change. Call the data and schema service to retrieve the latest field information. For related information, see Syntax for Displaying a Schema Definition for a vSphere Reservation. Input Use the supported input parameters to control the command output. Input Description URL https://$host/reservation-service/api/dataservice/schema/$schemaclassid/default/$fieldid/values Method Post $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. VMware, Inc. 211 Programming Guide Input Description $schemaclassid Specifies the schema class ID. This example illustrates how to use the resourcePool field of a vSphere reservation type as an example. The schema class ID of a vSphere reservation is Infrastructure.Reservation.Virtual.vSphere. For this example, the input value for $schemaclassid is Infrastructure.Reservation.Virtual.vSphere. $fieldId Specifies the field ID of the resource. For example, the field ID for the resource pool is resourcePool. For this example, the input value for $fieldId is resourcePool. HTTP body Contains information about dependencies. Because the dependency of this permissible value field is computeResource, you must provide a dependency definition in the HTTP body. Output The command output contains property names and values based on the command input parameters. Property Description values An array of data rows, each of which represents one of the resource pool objects returned in a pageable list. Each resource pool object contains an underlyingValue and label entry. underlyingValue label JSON string representing one permissible value for a field: n type -- data type of entityRef, complexRef, or primary n component ID -- componentID n classId -- schema class ID of current data type n id -- unique resource pool ID n label -- resource pool label Specifies the resource pool label. This value matches the underlyingValue value. Example: curl Command The following example command returns vSphere reservation storage information. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Virtual.vSphere/default/resourcePool/values "text": "", -d “{ "dependencyValues": { "entries": [{ "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": " cc254a84-95b8-434a-874d-bdfef8e8ad2c " VMware, Inc. 212 Programming Guide } }] } }” Example: JSON Output The following JSON output is returned based on the command input. In the following example output, the CoreDev resource pool is shown. Copy the output underlyingValue section into an XML editor and use it as input to create or update a reservation. Note that other REST calls can be used such as reservationNetworks and reservationStorages to get other resources for the reservation. { "values": [{ "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ResourcePools", "id": " 4e51fabc-19e8-4e79-b413-d52309b3bb62", "label": " CoreDev" }, "label": " CoreDev" }, { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "ResourcePools", "id": "1186b5cc-cdef-4afb-8653-0ad41a36c194", "label": "Documentation" }, "label": "Documentation" }, //Omit other resource pool list ] } Get Resources Schema for an Amazon Reservation You can use the vRealize Automation REST API reservation service to display resource schema, such as storage and network information, for an Amazon reservation. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Get the required compute resource ID. See Get a Compute Resource for the Reservation. VMware, Inc. 213 Programming Guide Procedure u Use the reservation service to display resource schema information for an Amazon reservation. The following example command displays storage and network information for the compute resource with an ID of 9d1a3b5a-7162-4a5a-85b7-ec1b2824f554. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.Amazon/default/securityGroups/values { "text": "", "dependencyValues": { "entries": [{ "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "9d1a3b5a-7162-4a5a-85b7-ec1b2824f554" } }] } } ” -d “ The following JSON output is returned based on the command input. { "values": [ { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "AmazonSecurityGroup", "id": "9", "label": "test1" }, "label": "test1" }, { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "AmazonSecurityGroup", "id": "10", "label": "default" }, "label": "default" } ] } VMware, Inc. 214 Programming Guide Syntax for Getting Resources Schema for an Amazon Reservation You can use the REST API reservation service data and schema service to display resource schema information, such as storage and network data, for an Amazon reservation. Overview This example illustrates how to get a permissible value list for the securityGroups field. You can use the generated output as input for creating or updating an Amazon reservation. Table 3‑15. Extension Fields Supported in Amazon Reservations Field ID Data Type Type Class Permissible Value Depends on Field securityGroups Entity Reference AmazonSecurityGroup Yes computeResource locations Entity Reference AvailabilityZone Yes computeResource loadBalancers Entity Reference ElasticLoadBalancer Yes computeResource and locations specificKeyPairs Entity Reference KeyPair Yes computeResource and keyPairs computeResource Entity Reference ComputeResource Yes NA VPC Complex Type Infrastructure.Reservation.Cl oud.Amazon.VPC Yes computeResource machineQuota Integer NA No NA keyPairs String ResourcePools Yes computeResource Note The information in the table is subject to change. Call the data and schema service to retrieve the latest field information. For related information, see Syntax for Displaying a Schema Definition for an Amazon Reservation. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/dataservice/schema/$schemaclassid/default/$fieldid/values Method Post $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. VMware, Inc. 215 Programming Guide Parameter Description $schemaclassid Specifies the schema class ID. This example illustrates how to use the securityGroups field of an Amazon reservation type as an example. The schema class ID of an Amazon reservation is Infrastructure.Reservation.Cloud.Amazon. For this example, the input value for $schemaclassid is Infrastructure.Reservation.Cloud.Amazon. $fieldId Specifies the field ID of the resource. For example, the field ID for the resource pool is securityGroups. For this example, the input value for $fieldId is securityGroups. HTTP body Contains information about dependencies. Because the dependency of this permissible value field is computeResource, you must provide a dependency definition in the HTTP body. Output The command output contains property names and values based on the command input parameters. Property Description values An array of data rows, each of which represents one of the security group objects returned in a pageable list. Each security group object contains an underlyingValue and label entry. underlyingValue label JSON string representing one permissible value for a field: n type -- data type of entityRef, complexRef, or primary n component ID -- componentID n classId -- schema class ID of current data type n id -- unique security group ID n label -- security group label Specifies the security groups label. This value matches the underlyingValue value. Example: curl Command The following example command displays resource schema security group information. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.Amazon/default/securityGroups/values { "text": "", "dependencyValues": { "entries": [{ "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "9d1a3b5a-7162-4a5a-85b7-ec1b2824f554" } VMware, Inc. -d “ 216 Programming Guide }] } } ” Example: JSON Output The following JSON output is returned based on the command input. Copy the output from an underlyingValue section into an XML editor and use it as input to create or update a reservation. { "values": [ { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "AmazonSecurityGroup", "id": "9", "label": "test1" }, "label": "test1" }, { "underlyingValue": { "type": "entityRef", "componentId": null, "classId": "AmazonSecurityGroup", "id": "10", "label": "default" }, "label": "default" } ] } Get Resources Schema for a vCloud Air Reservation You can use the REST API reservation service to display information about available resources, such as storage and network information, for a vCloud Air reservation. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Get the required compute resource ID. See Get a Compute Resource for the Reservation. VMware, Inc. 217 Programming Guide Procedure u Use the reservation service to display information about available resources. The following example command displays storage and network information. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.vCloudAir/default/reservationStorages/values -d “ The following JSON output is returned based on the command input. { "values": [ { "underlyingValue": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Storage", "typeFilter": null, "values": { "entries": [ { "key": "computeResourceStorageTotalSizeGB", "value": { "type": "integer", "value": 1000 } }, { "key": "storagePath", "value": { "type": "entityRef", "componentId": null, "classId": "Storage", "id": "f4df029b-d475-4f85-ab42-05bddde3f667", "label": "Low Performance Storage" } }, { "key": "computeResourceStorageFreeSizeGB", "value": { "type": "integer", "value": 954 } } ] } }, "label": "Low Performance Storage" }, { "underlyingValue": { VMware, Inc. 218 Programming Guide "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Storage", "typeFilter": null, "values": { "entries": [ { "key": "computeResourceStorageTotalSizeGB", "value": { "type": "integer", "value": 1000 } }, { "key": "storagePath", "value": { "type": "entityRef", "componentId": null, "classId": "Storage", "id": "e655aa78-e5fb-4722-9e8a-0cd4139248cf", "label": "High Performance Storage" } }, { "key": "computeResourceStorageFreeSizeGB", "value": { "type": "integer", "value": 691 } } ] } }, "label": "High Performance Storage" } ] } Syntax for Getting Resources Schema for a vCloud Air Reservation You can use the vRealize Automation REST API reservation service to display information about available resources, such as storage and network information, for a vCloud Air reservation. Overview This example illustrates how to get a permissible value list for the reservationStorages field. Use the generated output as input for creating or updating a vCloud Air reservation. VMware, Inc. 219 Programming Guide Table 3‑16. Extension Fields Supported in vCloud Reservations Permissible Value Depends on Field Infrastructure.Reservation.N etwork Yes computeResource Integer NA No NA reservationMemory Complex Type Infrastructure.Reservation.M emory No NA computeResource Entity Reference ComputeResource Yes NA machineQuota Integer NA No NA reservationStorages Complex Type Infrastructure.Reservation.St orage Yes computeResource Field ID Data Type Type Class reservationNetworks Complex Type allocationModel Note The information in the table is subject to change. Call the data and schema service to retrieve the latest field information. For related information, see Syntax for Displaying a Schema Definition for a vCloud Air Reservation. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/dataservice/schema/$schemaclassid/default/$fieldid/values Method Post $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $schemaclassid Specifies the schema class ID. This example illustrates how to use the reservationStorages field of a reservation type as an example. The schema class ID of a vCloud Air reservation is Infrastructure.Reservation.Cloud.vCloudAir. For this example, the input value for $schemaclassid is Infrastructure.Reservation.Cloud.vCloudAir. $fieldId Specifies the field ID of the resource. For example, the field ID for the reservation storage is reservationStorages. For this example, the input value for $fieldId is reservationStorages. HTTP body Contains information about dependencies. Because the dependency of the permissible value field reservationStorages is computeResource, you must include a dependency definition in the HTTP body. text VMware, Inc. Empty 220 Programming Guide Parameter Description dependencyValues JSON string that defines the dependency values entries key -- Specifies the field ID of dependent field. For this example, enter computeResource. value -- Specifies the value of the dependent field. For this example, copy and paste the vCloud HTTP response obtained by using the Get Compute Resource task. See Syntax for Getting Resources Schema for a vCloud Air Reservation. Output The command output contains property names and values based on the command input parameters. Property Description values An array of data rows, each of which represents one of the reservation storage objects returned in a pageable list. Each reservation storage object contains an underlyingValue and label entry. underlyingValue label JSON string representing one permissible value for a field: n type -- data type of entityRef, complexRef, or primary n component ID -- componentID n classId -- schema class ID of current data type n id -- unique reservation storage ID n label --reservation storage label Specifies the reservation storage label. This value matches the underlyingValue value. Example: curl Command The following example command returns vCloud Air reservation storage information. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/dataservice/schema/Infrastructure.Reservation.Cloud.vCloudAir/default/reservationStorages/values -d “ Example: JSON Output The following JSON output is returned based on the command input. Copy the output from an underlyingValue section into an XML editor and use it as input to create or update a reservation. { "values": [ { "underlyingValue": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Storage", "typeFilter": null, VMware, Inc. 221 Programming Guide "values": { "entries": [ { "key": "computeResourceStorageTotalSizeGB", "value": { "type": "integer", "value": 1000 } }, { "key": "storagePath", "value": { "type": "entityRef", "componentId": null, "classId": "Storage", "id": "f4df029b-d475-4f85-ab42-05bddde3f667", "label": "Low Performance Storage" } }, { "key": "computeResourceStorageFreeSizeGB", "value": { "type": "integer", "value": 954 } } ] } }, "label": "Low Performance Storage" }, { "underlyingValue": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Storage", "typeFilter": null, "values": { "entries": [ { "key": "computeResourceStorageTotalSizeGB", "value": { "type": "integer", "value": 1000 } }, { "key": "storagePath", "value": { "type": "entityRef", "componentId": null, "classId": "Storage", "id": "e655aa78-e5fb-4722-9e8a-0cd4139248cf", "label": "High Performance Storage" VMware, Inc. 222 Programming Guide } }, { "key": "computeResourceStorageFreeSizeGB", "value": { "type": "integer", "value": 691 } } ] } }, "label": "High Performance Storage" } ] } Creating a Reservation By Type You can use the vRealize Automation REST API to create any supported reservation type, including a vSphere, Amazon EC2, or vCloud reservation. Create a vSphere Reservation You can use the vRealize Automation REST API reservation service to create a vSphere reservation. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Display a list of the reservation types that are supported in the vRealize Automation server. See Display a List of Supported Reservation Types. n Obtain the permissible value field information required to create a new reservation. After you retrieve all permissible value field information, you have the input information required to create a reservation. See Get Resources Schema for a vSphere Reservation. For the full list of tasks that you can perform before you create a reservation, see Create a Reservation. Procedure u Create a vSphere reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations -d “ { VMware, Inc. 223 Programming Guide "name": "TestCreateReservation", "reservationTypeId": "Infrastructure.Reservation.Virtual.vSphere", "tenantId": "qe", "subTenantId": "ef58f604-528d-4441-a219-4725bead629b", "enabled": true, "priority": 3, "reservationPolicyId": "b71c3a5f-087a-4d9e-9a56-fab785a3d128", "alertPolicy": { "enabled": true, "frequencyReminder": 20, "emailBgMgr": false, "recipients": ["test1@mycompany.com", "test2@mycompany.com"], "alerts": [{ "alertPercentLevel": 10, "referenceResourceId": "storage", "id": "storage" }, { "alertPercentLevel": 20, "referenceResourceId": "memory", "id": "memory" }, { "alertPercentLevel": 30, "referenceResourceId": "cpu", "id": "cpu" }, { "alertPercentLevel": 40, "referenceResourceId": "machine", "id": "machine" }] }, "extensionData": { "entries": [{ "key": "reservationNetworks", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationNetwork", "typeFilter": null, "values": { "entries": [{ "key": "reservationNetworkPath", "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "44cb65d5-b321-43dd-a2ab-8ecf387bff8f", "label": "VM Network SQA" VMware, Inc. 224 Programming Guide } }] } }] } }, { "key": "custom-Properties-key0", "value": { "type": "string", "value": "custom-property-value0" } }, { "key": "custom-Properties-key2", "value": { "type": "string", "value": "custom-property-value2" } }, { "key": "reservationMemory", "value": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationMemory", "typeFilter": null, "values": { "entries": [{ "key": "hostMemoryTotalSizeMB", "value": { "type": "integer", "value": 57187 } }, { "key": "memoryReservedSizeMb", "value": { "type": "integer", "value": 15872 } }] } } }, { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "cc254a84-95b8-434a-874d-bdfef8e8ad2c", "label": "NSX61-RC-ComputeClusterA" } VMware, Inc. 225 Programming Guide }, { "key": "machineQuota", "value": { "type": "integer", "value": 2 } }, { "key": "reservationStorages", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationStorage", "typeFilter": null, "values": { "entries": [{ "key": "storageTotalSizeGB", "value": { "type": "integer", "value": 394 } }, { "key": "storageReservedSizeGB", "value": { "type": "integer", "value": 32 } }, { "key": "storageEnabled", "value": { "type": "boolean", "value": true } }, { "key": "reservationStoragePath", "value": { "type": "entityRef", "componentId": null, "classId": "StoragePath", "id": "f48a527b-30a6-4d54-8829-f549bc195b69", "label": "VNXe:qe-vnxe-nfs-1" } }, { "key": "storageFreeSizeGB", "value": { "type": "integer", VMware, Inc. 226 Programming Guide "value": 120 } }, { "key": "storagePriority", "value": { "type": "integer", "value": 1 } }] } }] } }, { "key": "resourcePool", "value": { "type": "entityRef", "componentId": null, "classId": "ResourcePools", "id": "4e51fabc-19e8-4e79-b413-d52309b3bb62", "label": "CoreDev" } }] } } ” The command output is a URL that includes the new reservation ID, for example https://$host/reservation-service/api/reservations/94d74105-831a-4598-8f42efd590fea15c. Syntax for Creating a vSphere Reservation You can use the REST API reservation service to create a vSphere reservation. Input Use the supported input parameters to control the command output. Input Description URL https://$host/reservation-service/api/reservations Method Post $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. VMware, Inc. 227 Programming Guide Input Description $token Specifies a valid HTTP bearer token with necessary credentials. HTTP body The HTTP body describes the reservation to create and calls the REST API used to create the reservation. Compose the HTTP body using one of the following methods: n Copy the HTTP body from the JSON output from this example and edit the applicable field values to compose the HTTP body input for the command line. n Use the API commands in Syntax for Verifying a Reservation and Getting Reservation Details, remove the appropriate ID field from the HTTP response, and edit the field values to compose the HTTP body input for the command line. Output The output URL contains the new reservation ID. Property Description status When the reservation is successfully created, the HTTP response status is 201 created. Header.Location The HTTP response contains a Location attribute that is formatted as https://$host /reservation-service/api/reservations/$reservationId. $reservationId Specifies the new reservation ID. Example: curl Command The following sample command creates a vSphere reservation. The HTTP body is included as part of the command line input. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations -d “ { "name": "TestCreateReservation", "reservationTypeId": "Infrastructure.Reservation.Virtual.vSphere", "tenantId": "qe", "subTenantId": "ef58f604-528d-4441-a219-4725bead629b", "enabled": true, "priority": 3, "reservationPolicyId": "b71c3a5f-087a-4d9e-9a56-fab785a3d128", "alertPolicy": { "enabled": true, "frequencyReminder": 20, "emailBgMgr": false, "recipients": ["test1@mycompany.com", "test2@mycompany.com"], "alerts": [{ "alertPercentLevel": 10, "referenceResourceId": "storage", VMware, Inc. 228 Programming Guide "id": "storage" }, { "alertPercentLevel": 20, "referenceResourceId": "memory", "id": "memory" }, { "alertPercentLevel": 30, "referenceResourceId": "cpu", "id": "cpu" }, { "alertPercentLevel": 40, "referenceResourceId": "machine", "id": "machine" }] }, "extensionData": { "entries": [{ "key": "reservationNetworks", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationNetwork", "typeFilter": null, "values": { "entries": [{ "key": "reservationNetworkPath", "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "44cb65d5-b321-43dd-a2ab-8ecf387bff8f", "label": "VM Network SQA" } }] } }] } }, { "key": "custom-Properties-key0", "value": { "type": "string", "value": "custom-property-value0" } }, { "key": "custom-Properties-key2", "value": { VMware, Inc. 229 Programming Guide "type": "string", "value": "custom-property-value2" } }, { "key": "reservationMemory", "value": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationMemory", "typeFilter": null, "values": { "entries": [{ "key": "hostMemoryTotalSizeMB", "value": { "type": "integer", "value": 57187 } }, { "key": "memoryReservedSizeMb", "value": { "type": "integer", "value": 15872 } }] } } }, { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "cc254a84-95b8-434a-874d-bdfef8e8ad2c", "label": "NSX61-RC-ComputeClusterA" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 2 } }, { "key": "reservationStorages", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", VMware, Inc. 230 Programming Guide "componentId": null, "classId": "reservationStorage", "typeFilter": null, "values": { "entries": [{ "key": "storageTotalSizeGB", "value": { "type": "integer", "value": 394 } }, { "key": "storageReservedSizeGB", "value": { "type": "integer", "value": 32 } }, { "key": "storageEnabled", "value": { "type": "boolean", "value": true } }, { "key": "reservationStoragePath", "value": { "type": "entityRef", "componentId": null, "classId": "StoragePath", "id": "f48a527b-30a6-4d54-8829-f549bc195b69", "label": "VNXe:qe-vnxe-nfs-1" } }, { "key": "storageFreeSizeGB", "value": { "type": "integer", "value": 120 } }, { "key": "storagePriority", "value": { "type": "integer", "value": 1 } }] } }] } }, { "key": "resourcePool", VMware, Inc. 231 Programming Guide "value": { "type": "entityRef", "componentId": null, "classId": "ResourcePools", "id": "4e51fabc-19e8-4e79-b413-d52309b3bb62", "label": "CoreDev" } }] } } ” Example: JSON Output The following sample location URL is displayed, including the new vSphere reservation ID. Location: https://$host/reservation-service/api/reservations/94d74105-831a-4598-8f42-efd590fea15c Copy the output response into an XML editor for use in a future procedure, such as updating or deleting the reservation. Create a vCloud Air Reservation You can use the vRealize Automation REST API reservation service to create a vCloud Air reservation. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Display a list of the reservation types that are supported in the vRealize Automation server. See Display a List of Supported Reservation Types. n Obtain the permissible value field information required to create a new reservation. After you retrieve all permissible value field information, you have the input information required to create a reservation. See Get Resources Schema for a vSphere Reservation. For the full list of tasks that you can perform before you create a reservation, see Create a Reservation. Procedure u Create a vCloud Air reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations -d “ { "name": "TestvAppReservation", VMware, Inc. 232 Programming Guide "reservationTypeId": "Infrastructure.Reservation.Cloud.vCloudAir", "tenantId": "qe", "subTenantId": "a5d056be-3aa2-4fdd-ba1e-a3805f26f0e0", "enabled": true, "priority": 1, "reservationPolicyId": null, "alertPolicy": { "enabled": false, "frequencyReminder": 0, "emailBgMgr": true, "recipients": [ ], "alerts": [ { "alertPercentLevel": 80, "referenceResourceId": "storage", "id": "storage" }, { "alertPercentLevel": 80, "referenceResourceId": "memory", "id": "memory" }, { "alertPercentLevel": 80, "referenceResourceId": "cpu", "id": "cpu" }, { "alertPercentLevel": 80, "referenceResourceId": "machine", "id": "machine" } ] }, "extensionData": { "entries": [ { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "c527a0f5-b1ae-4b61-8145-ad9d5c434dc7", "label": "Engineering Allocation VDC" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 0 } }, VMware, Inc. 233 Programming Guide { "key": "allocationModel", "value": { "type": "integer", "value": 0 } }, { "key": "reservationNetworks", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [ { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Network", "typeFilter": null, "values": { "entries": [ { "key": "networkPath", "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "42c5063c-5422-448f-aac7-22ebe941ac8e", "label": "VM Network SQA" } } ] } } ] } }, { "key": "reservationStorages", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [ { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Storage", "typeFilter": null, "values": { "entries": [ { "key": "computeResourceStorageTotalSizeGB", "value": { "type": "integer", VMware, Inc. 234 Programming Guide "value": 1000 } }, { "key": "storagePath", "value": { "type": "entityRef", "componentId": null, "classId": "Storage", "id": "e655aa78-e5fb-4722-9e8a-0cd4139248cf", "label": "High Performance Storage" } }, { "key": "storagePriority", "value": { "type": "integer", "value": 1 } }, { "key": "storageReservedSizeGB", "value": { "type": "integer", "value": 100 } }, { "key": "storageEnabled", "value": { "type": "boolean", "value": true } }, { "key": "computeResourceStorageFreeSizeGB", "value": { "type": "integer", "value": 691 } } ] } } ] } }, { "key": "reservationMemory", "value": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Memory", "typeFilter": null, VMware, Inc. 235 Programming Guide "values": { "entries": [ { "key": "computeResourceMemoryTotalSizeMB", "value": { "type": "integer", "value": 13312 } }, { "key": "memoryReservedSizeMb", "value": { "type": "integer", "value": 4096 } } ] } } } ] } } “ The output is a location URL, including the new vCloud Air reservation ID. Location: https://$host/reservation-service/api/reservations/3289b039-2a11-4ab4-a0bc-b583e4c6d085 Syntax for Creating a vCloud Air Reservation You can use the REST API reservation service to create a vCloud Air reservation. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/reservations Method Post $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. VMware, Inc. 236 Programming Guide Parameter Description $token Specifies a valid HTTP bearer token with necessary credentials. HTTP body The HTTP body describes the reservation to create and calls the REST API used to create the reservation. Compose the HTTP body using one of the following methods: n Copy the HTTP body from the JSON output from this example and edit the applicable field values to compose the HTTP body input for the command line. n Update the formatted reservation information to specify the new information: n remove the appropriate ID field from the HTTP response n edit the field values to compose the HTTP body input for the command line For information, see Syntax for Verifying a Reservation and Getting Reservation Details. Output The output URL contains the new reservation ID. Property Description status When the reservation is successfully created, the HTTP response status is 201 created. Header.Location The HTTP response contains a Location attribute that is formatted as https://$host /reservation-service/api/reservations/$reservationId. $reservationId Specifies the new reservation ID. Example: curl Command The following sample command creates a vCloud Air reservation. The HTTP body is included as part of the command line input. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations -d “ { "name": "TestvAppReservation", "reservationTypeId": "Infrastructure.Reservation.Cloud.vCloudAir", "tenantId": "qe", "subTenantId": "a5d056be-3aa2-4fdd-ba1e-a3805f26f0e0", "enabled": true, "priority": 1, "reservationPolicyId": null, "alertPolicy": { "enabled": false, "frequencyReminder": 0, "emailBgMgr": true, "recipients": [ VMware, Inc. 237 Programming Guide ], "alerts": [ { "alertPercentLevel": 80, "referenceResourceId": "storage", "id": "storage" }, { "alertPercentLevel": 80, "referenceResourceId": "memory", "id": "memory" }, { "alertPercentLevel": 80, "referenceResourceId": "cpu", "id": "cpu" }, { "alertPercentLevel": 80, "referenceResourceId": "machine", "id": "machine" } ] }, "extensionData": { "entries": [ { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "c527a0f5-b1ae-4b61-8145-ad9d5c434dc7", "label": "Engineering Allocation VDC" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 0 } }, { "key": "allocationModel", "value": { "type": "integer", "value": 0 } }, { "key": "reservationNetworks", "value": { "type": "multiple", "elementTypeId": "COMPLEX", VMware, Inc. 238 Programming Guide "items": [ { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Network", "typeFilter": null, "values": { "entries": [ { "key": "networkPath", "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "42c5063c-5422-448f-aac7-22ebe941ac8e", "label": "VM Network SQA" } } ] } } ] } }, { "key": "reservationStorages", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [ { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Storage", "typeFilter": null, "values": { "entries": [ { "key": "computeResourceStorageTotalSizeGB", "value": { "type": "integer", "value": 1000 } }, { "key": "storagePath", "value": { "type": "entityRef", "componentId": null, "classId": "Storage", "id": "e655aa78-e5fb-4722-9e8a-0cd4139248cf", "label": "High Performance Storage" } VMware, Inc. 239 Programming Guide }, { "key": "storageReservationPriority", "value": { "type": "integer", "value": 1 } }, { "key": "storageReservedSizeGB", "value": { "type": "integer", "value": 100 } }, { "key": "storageEnabled", "value": { "type": "boolean", "value": true } }, { "key": "computeResourceStorageFreeSizeGB", "value": { "type": "integer", "value": 691 } } ] } } ] } }, { "key": "reservationMemory", "value": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Memory", "typeFilter": null, "values": { "entries": [ { "key": "computeResourceMemoryTotalSizeMB", "value": { "type": "integer", "value": 13312 } }, { "key": "memoryReservedSizeMb", "value": { VMware, Inc. 240 Programming Guide "type": "integer", "value": 4096 } } ] } } } ] } } “ Example: JSON Output The output response displays the location URL, including the new vCloud reservation ID. Location: https://$host/reservation-service/api/reservations/3289b039-2a11-4ab4-a0bc-b583e4c6d085 Copy the output response into an XML editor for use in a future procedure, such as updating or deleting the reservation. Create an Amazon Reservation You can use the vRealize Automation REST API reservation service to create an Amazon reservation. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Display a list of the reservation types that are supported in the vRealize Automation server. See Display a List of Supported Reservation Types. n Obtain the permissible value field information required to create a new reservation. After you retrieve all permissible value field information, you have the input information required to create a reservation. See Get Resources Schema for a vSphere Reservation. For the full list of tasks that you can perform before you create a reservation, see Create a Reservation. Procedure u Create an Amazon reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations -d “ { "name": "TestEC2Reservation", VMware, Inc. 241 Programming Guide "reservationTypeId": "Infrastructure.Reservation.Cloud.Amazon", "tenantId": "qe", "subTenantId": "a5d056be-3aa2-4fdd-ba1e-a3805f26f0e0", "enabled": true, "priority": 1, "reservationPolicyId": "34d2a612-718e-4814-96c5-225f7f5615a6", "alertPolicy": { "enabled": false, "frequencyReminder": 0, "emailBgMgr": true, "recipients": [ ], "alerts": [ { "alertPercentLevel": 80, "referenceResourceId": "machine", "id": "machine" } ] }, "extensionData": { "entries": [ { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "9d1a3b5a-7162-4a5a-85b7-ec1b2824f554", "label": "EC2 841 Endpoint-us-east-1" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 0 } }, { "key": "securityGroups", "value": { "type": "multiple", "elementTypeId": "ENTITY_REFERENCE", "items": [ { "type": "entityRef", "componentId": null, "classId": "AmazonSecurityGroup", "id": "10", "label": "default" } ] } VMware, Inc. 242 Programming Guide }, { "key": "loadBalancers", "value": { "type": "multiple", "elementTypeId": "ENTITY_REFERENCE", "items": [ { "type": "entityRef", "componentId": null, "classId": "ElasticLoadBalancer", "id": "3", "label": "test1" } ] } }, { "key": "locations", "value": { "type": "multiple", "elementTypeId": "ENTITY_REFERENCE", "items": [ { "type": "entityRef", "componentId": null, "classId": "AvailabilityZone", "id": "10", "label": "us-east-1a" } ] } }, { "key": "keyPairs", "value": { "type": "string", "value": "Per Provisioning Group" } } ] } }” The output is a sample location URL, including the new Amazon reservation ID. Location: https://$host/reservation-service/api/reservations/3289b039-2a11-4ab4-a0bc-b583e4c6d085 Syntax for Creating an Amazon Reservation You can use the REST API reservation service to create an Amazon reservation. VMware, Inc. 243 Programming Guide Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/reservations Method Post $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. HTTP body The HTTP body describes the reservation to create and calls the REST API used to create the reservation. Compose the HTTP body using one of the following methods: n Copy the HTTP body from the JSON output from this example and edit the applicable field values to compose the HTTP body input for the command line. n Use the API commands in Syntax for Verifying a Reservation and Getting Reservation Details, remove the appropriate ID field from the HTTP response, and edit the field values to compose the HTTP body input for the command line. Output The output URL contains the new reservation ID. Property Description status When the reservation is successfully created, the HTTP response status is 201 created. Header.Location The HTTP response contains a Location attribute that is formatted as https://$host /reservation-service/api/reservations/$reservationId. $reservationId Specifies the new reservation ID. Example: curl Command The following example command creates an Amazon reservation. The HTTP body is included as part of the command line input. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations -d “ { "name": "TestEC2Reservation", "reservationTypeId": "Infrastructure.Reservation.Cloud.Amazon", "tenantId": "qe", "subTenantId": "a5d056be-3aa2-4fdd-ba1e-a3805f26f0e0", "enabled": true, "priority": 1, "reservationPolicyId": "34d2a612-718e-4814-96c5-225f7f5615a6", "alertPolicy": { VMware, Inc. 244 Programming Guide "enabled": false, "frequencyReminder": 0, "emailBgMgr": true, "recipients": [ ], "alerts": [ { "alertPercentLevel": 80, "referenceResourceId": "machine", "id": "machine" } ] }, "extensionData": { "entries": [ { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "9d1a3b5a-7162-4a5a-85b7-ec1b2824f554", "label": "EC2 841 Endpoint-us-east-1" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 0 } }, { "key": "securityGroups", "value": { "type": "multiple", "elementTypeId": "ENTITY_REFERENCE", "items": [ { "type": "entityRef", "componentId": null, "classId": "AmazonSecurityGroup", "id": "10", "label": "default" } ] } }, { "key": "loadBalancers", "value": { "type": "multiple", "elementTypeId": "ENTITY_REFERENCE", "items": [ VMware, Inc. 245 Programming Guide { "type": "entityRef", "componentId": null, "classId": "ElasticLoadBalancer", "id": "3", "label": "test1" } ] } }, { "key": "locations", "value": { "type": "multiple", "elementTypeId": "ENTITY_REFERENCE", "items": [ { "type": "entityRef", "componentId": null, "classId": "AvailabilityZone", "id": "10", "label": "us-east-1a" } ] } }, { "key": "keyPairs", "value": { "type": "string", "value": "Per Provisioning Group" } } ] } }” Example: JSON Output The following sample location URL is displayed, including the new Amazon reservation ID. Location: https://$host/reservation-service/api/reservations/3289b039-2a11-4ab4-a0bc-b583e4c6d085 Copy the output response into an XML editor for use in a future procedure, such as updating or deleting the reservation. Verify a Reservation and Get Reservation Details After you create a vRealize Automation reservation, you can use the REST API reservation service along with reservation ID to verify that the reservation exists. You can also use the ID to get information about the reservation in preparation for updating or deleting it. VMware, Inc. 246 Programming Guide Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Finish creating a new reservation. Obtain the reservation ID from the output URL. See Syntax for Creating a vSphere Reservation. n Get the reservation ID if you do not already know it. See Display a List of Reservations. Procedure u Use the reservation service to verify that a reservation exists by using the verification ID. The following example command verifies the existence of a reservation with an ID of 94d74105-831a-4598-8f42-efd590fea15c and returns reservation details. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/94d74105-831a-4598-8f42-efd590fea15c The following JSON output is returned based on the command input. { "id": "94d74105-831a-4598-8f42-efd590fea15c ", "name": "TestReservation", "reservationTypeId": "Infrastructure.Reservation.Virtual.vSphere", "tenantId": "qe", "subTenantId": "ef58f604-528d-4441-a219-4725bead629b", "enabled": true, "priority": 3, "reservationPolicyId": "b71c3a5f-087a-4d9e-9a56-fab785a3d128", "alertPolicy": { "enabled": true, "frequencyReminder": 20, "emailBgMgr": false, "recipients": ["user1@mycompany.com", "user2@mycompany.com"], "alerts": [{ "alertPercentLevel": 10, "referenceResourceId": "storage", "id": "storage" }, { "alertPercentLevel": 20, "referenceResourceId": "memory", "id": "memory" }, { "alertPercentLevel": 30, VMware, Inc. 247 Programming Guide "referenceResourceId": "cpu", "id": "cpu" }, { "alertPercentLevel": 40, "referenceResourceId": "machine", "id": "machine" }] }, "extensionData": { "entries": [{ "key": "key4", "value": { "type": "string", "value": "custom-property-value4" } }, { "key": "key3", "value": { "type": "string", "value": "custom-property-value3" } }, { "key": "reservationNetworks", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationNetwork", "typeFilter": null, "values": { "entries": [{ "key": "reservationNetworkProfile", "value": { "type": "entityRef", "componentId": null, "classId": "NetworkProfile", "id": "ed5d1503-08ac-42ca-804d-9167834a63a5", "label": "ETEDoNotDelete2014-10-13 13:10:56" } }, { "key": "reservationNetworkPath", "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "44cb65d5-b321-43dd-a2ab-8ecf387bff8f", "label": "VM Network SQA" } VMware, Inc. 248 Programming Guide }] } }] } }, { "key": "key0", "value": { "type": "string", "value": "custom-property-value0" } }, { "key": "key2", "value": { "type": "string", "value": "custom-property-value2" } }, { "key": "reservationMemory", "value": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationMemory", "typeFilter": null, "values": { "entries": [{ "key": "hostMemoryTotalSizeMB", "value": { "type": "integer", "value": 57187 } }, { "key": "reservationMemoryReservedSizeMb", "value": { "type": "integer", "value": 15888 } }] } } }, { "key": "key1", "value": { "type": "string", "value": "custom-property-value-Updated" } }, { "key": "computeResource", "value": { VMware, Inc. 249 Programming Guide "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "047e00f5-5424-4ed2-a751-4a334aeaff54", "label": "VC51-Cluster" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 2 } }, { "key": "reservationStorages", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationStorage", "typeFilter": null, "values": { "entries": [{ "key": "storageTotalSizeGB", "value": { "type": "integer", "value": 394 } }, { "key": "reservationStorageReservedSizeGB", "value": { "type": "integer", "value": 31 } }, { "key": "reservationStorageEnabled", "value": { "type": "boolean", "value": true } }, { "key": "reservationStoragePath", "value": { "type": "entityRef", "componentId": null, "classId": "StoragePath", "id": "f48a527b-30a6-4d54-8829-f549bc195b69", "label": "VNXe:qe-vnxe-nfs-1" VMware, Inc. 250 Programming Guide } }, { "key": "storageFreeSizeGB", "value": { "type": "integer", "value": 120 } }, { "key": "reservationStorageReservationPriority", "value": { "type": "integer", "value": 1 } }] } }] } }, { "key": "resourcePool", "value": { "type": "entityRef", "componentId": null, "classId": "ResourcePools", "id": "4e51fabc-19e8-4e79-b413-d52309b3bb62", "label": "CoreDev" } }] } } Example Output for a vCloud Reservation { "id": "bf922450-d495-460d-9dbf-1c09b0692db2", "name": "TestvAppReservation", "reservationTypeId": "Infrastructure.Reservation.Cloud.vCloud", "tenantId": "qe", "subTenantId": "a5d056be-3aa2-4fdd-ba1e-a3805f26f0e0", "enabled": true, "priority": 1, "reservationPolicyId": null, "alertPolicy": { "enabled": false, "frequencyReminder": 0, "emailBgMgr": true, "recipients": [ ], "alerts": [ { "alertPercentLevel": 80, "referenceResourceId": "storage", "id": "storage" }, VMware, Inc. 251 Programming Guide { "alertPercentLevel": 80, "referenceResourceId": "memory", "id": "memory" }, { "alertPercentLevel": 80, "referenceResourceId": "cpu", "id": "cpu" }, { "alertPercentLevel": 80, "referenceResourceId": "machine", "id": "machine" } ] }, "extensionData": { "entries": [ { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "c527a0f5-b1ae-4b61-8145-ad9d5c434dc7", "label": "Engineering Allocation VDC" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 0 } }, { "key": "allocationModel", "value": { "type": "integer", "value": 0 } }, { "key": "reservationNetworks", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [ { "type": "complex", "componentTypeId": "com.vmware.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Network", "typeFilter": null, VMware, Inc. 252 Programming Guide "values": { "entries": [ { "key": "networkPath", "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "42c5063c-5422-448f-aac7-22ebe941ac8e", "label": "VM Network SQA" } } ] } } ] } }, { "key": "reservationStorages", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [ { "type": "complex", "componentTypeId": "com.vmware.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Storage", "typeFilter": null, "values": { "entries": [ { "key": "computeResourceStorageTotalSizeGB", "value": { "type": "integer", "value": 1000 } }, { "key": "storagePath", "value": { "type": "entityRef", "componentId": null, "classId": "Storage", "id": "e655aa78-e5fb-4722-9e8a-0cd4139248cf", "label": "High Performance Storage" } }, { "key": "storageReservationPriority", "value": { "type": "integer", "value": 1 } VMware, Inc. 253 Programming Guide }, { "key": "storageReservedSizeGB", "value": { "type": "integer", "value": 100 } }, { "key": "storageEnabled", "value": { "type": "boolean", "value": true } }, { "key": "computeResourceStorageFreeSizeGB", "value": { "type": "integer", "value": 691 } } ] } } ] } }, { "key": "reservationMemory", "value": { "type": "complex", "componentTypeId": "com.vmware.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Memory", "typeFilter": null, "values": { "entries": [ { "key": "computeResourceMemoryTotalSizeMB", "value": { "type": "integer", "value": 13312 } }, { "key": "memoryReservedSizeMb", "value": { "type": "integer", "value": 4096 } } ] } } VMware, Inc. 254 Programming Guide } ] } } Syntax for Verifying a Reservation and Getting Reservation Details After you create a vRealize Automation reservation, you can use the REST API reservation service and the reservation ID to verify that the reservation exists. You can also use the ID to get information about the reservation in preparation for updating or deleting it. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/reservations/$reservationId This is the URL that is generated when you create a reservation using the REST API. See Syntax for Creating a vSphere Reservation. Method Get $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $reservationId Specifies the unique identifier of the reservation to verify. Obtain the value from the output generated when you created the reservation. See Create a Reservation. Output The command output contains property names and values based on the command input parameters. Property Description status The HTTP response status is 201 created to indicate that the reservation exists. Header.Location The HTTP response should contain a location attribute, format as https://$host /reservationservice/api/reservations/$reservationId. $reservationId The HTTP response should contain a location attribute, formatted as https://$host /reservationservice/api/reservations/$reservationId. Example: curl Command In the following example, the reservation ID of 94d74105-831a-4598-8f42-efd590fea15c is the value you obtained when you created the reservation. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/94d74105-831a-4598-8f42-efd590fea15c VMware, Inc. 255 Programming Guide Example: JSON Output for a vSphere Reservation The following JSON output is returned based on the command input. Copy the output response into an XML editor for future step usage. { "id": "94d74105-831a-4598-8f42-efd590fea15c ", "name": "TestReservation", "reservationTypeId": "Infrastructure.Reservation.Virtual.vSphere", "tenantId": "qe", "subTenantId": "ef58f604-528d-4441-a219-4725bead629b", "enabled": true, "priority": 3, "reservationPolicyId": "b71c3a5f-087a-4d9e-9a56-fab785a3d128", "alertPolicy": { "enabled": true, "frequencyReminder": 20, "emailBgMgr": false, "recipients": ["user1@mycompany.com", "user2@mycompany.com"], "alerts": [{ "alertPercentLevel": 10, "referenceResourceId": "storage", "id": "storage" }, { "alertPercentLevel": 20, "referenceResourceId": "memory", "id": "memory" }, { "alertPercentLevel": 30, "referenceResourceId": "cpu", "id": "cpu" }, { "alertPercentLevel": 40, "referenceResourceId": "machine", "id": "machine" }] }, "extensionData": { "entries": [{ "key": "key4", "value": { "type": "string", "value": "custom-property-value4" } }, { "key": "key3", "value": { "type": "string", "value": "custom-property-value3" VMware, Inc. 256 Programming Guide } }, { "key": "reservationNetworks", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationNetwork", "typeFilter": null, "values": { "entries": [{ "key": "reservationNetworkProfile", "value": { "type": "entityRef", "componentId": null, "classId": "NetworkProfile", "id": "ed5d1503-08ac-42ca-804d-9167834a63a5", "label": "ETEDoNotDelete2014-10-13 13:10:56" } }, { "key": "reservationNetworkPath", "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "44cb65d5-b321-43dd-a2ab-8ecf387bff8f", "label": "VM Network SQA" } }] } }] } }, { "key": "key0", "value": { "type": "string", "value": "custom-property-value0" } }, { "key": "key2", "value": { "type": "string", "value": "custom-property-value2" } }, { "key": "reservationMemory", "value": { VMware, Inc. 257 Programming Guide "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationMemory", "typeFilter": null, "values": { "entries": [{ "key": "hostMemoryTotalSizeMB", "value": { "type": "integer", "value": 57187 } }, { "key": "reservationMemoryReservedSizeMb", "value": { "type": "integer", "value": 15888 } }] } } }, { "key": "key1", "value": { "type": "string", "value": "custom-property-value-Updated" } }, { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "047e00f5-5424-4ed2-a751-4a334aeaff54", "label": "VC51-Cluster" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 2 } }, { "key": "reservationStorages", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", VMware, Inc. 258 Programming Guide "componentId": null, "classId": "reservationStorage", "typeFilter": null, "values": { "entries": [{ "key": "storageTotalSizeGB", "value": { "type": "integer", "value": 394 } }, { "key": "reservationStorageReservedSizeGB", "value": { "type": "integer", "value": 31 } }, { "key": "reservationStorageEnabled", "value": { "type": "boolean", "value": true } }, { "key": "reservationStoragePath", "value": { "type": "entityRef", "componentId": null, "classId": "StoragePath", "id": "f48a527b-30a6-4d54-8829-f549bc195b69", "label": "VNXe:qe-vnxe-nfs-1" } }, { "key": "storageFreeSizeGB", "value": { "type": "integer", "value": 120 } }, { "key": "reservationStorageReservationPriority", "value": { "type": "integer", "value": 1 } }] } }] } }, { "key": "resourcePool", VMware, Inc. 259 Programming Guide "value": { "type": "entityRef", "componentId": null, "classId": "ResourcePools", "id": "4e51fabc-19e8-4e79-b413-d52309b3bb62", "label": "CoreDev" } }] } } Example: Example Output for a vCloud Reservation { "id": "bf922450-d495-460d-9dbf-1c09b0692db2", "name": "TestvAppReservation", "reservationTypeId": "Infrastructure.Reservation.Cloud.vCloud", "tenantId": "qe", "subTenantId": "a5d056be-3aa2-4fdd-ba1e-a3805f26f0e0", "enabled": true, "priority": 1, "reservationPolicyId": null, "alertPolicy": { "enabled": false, "frequencyReminder": 0, "emailBgMgr": true, "recipients": [ ], "alerts": [ { "alertPercentLevel": 80, "referenceResourceId": "storage", "id": "storage" }, { "alertPercentLevel": 80, "referenceResourceId": "memory", "id": "memory" }, { "alertPercentLevel": 80, "referenceResourceId": "cpu", "id": "cpu" }, { "alertPercentLevel": 80, "referenceResourceId": "machine", "id": "machine" } ] }, "extensionData": { "entries": [ VMware, Inc. 260 Programming Guide { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "c527a0f5-b1ae-4b61-8145-ad9d5c434dc7", "label": "Engineering Allocation VDC" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 0 } }, { "key": "allocationModel", "value": { "type": "integer", "value": 0 } }, { "key": "reservationNetworks", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [ { "type": "complex", "componentTypeId": "com.vmware.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Network", "typeFilter": null, "values": { "entries": [ { "key": "networkPath", "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "42c5063c-5422-448f-aac7-22ebe941ac8e", "label": "VM Network SQA" } } ] } } ] } }, { VMware, Inc. 261 Programming Guide "key": "reservationStorages", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [ { "type": "complex", "componentTypeId": "com.vmware.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Storage", "typeFilter": null, "values": { "entries": [ { "key": "computeResourceStorageTotalSizeGB", "value": { "type": "integer", "value": 1000 } }, { "key": "storagePath", "value": { "type": "entityRef", "componentId": null, "classId": "Storage", "id": "e655aa78-e5fb-4722-9e8a-0cd4139248cf", "label": "High Performance Storage" } }, { "key": "storageReservationPriority", "value": { "type": "integer", "value": 1 } }, { "key": "storageReservedSizeGB", "value": { "type": "integer", "value": 100 } }, { "key": "storageEnabled", "value": { "type": "boolean", "value": true } }, { "key": "computeResourceStorageFreeSizeGB", "value": { "type": "integer", VMware, Inc. 262 Programming Guide "value": 691 } } ] } } ] } }, { "key": "reservationMemory", "value": { "type": "complex", "componentTypeId": "com.vmware.csp.iaas.blueprint.service", "componentId": null, "classId": "Infrastructure.Reservation.Memory", "typeFilter": null, "values": { "entries": [ { "key": "computeResourceMemoryTotalSizeMB", "value": { "type": "integer", "value": 13312 } }, { "key": "memoryReservedSizeMb", "value": { "type": "integer", "value": 4096 } } ] } } } ] } } Display a List of Reservations You can use the vRealize Automation REST API reservation service to obtain and display a list of existing reservations to obtain the required reservation ID value in preparation for updating or deleting a reservation. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. VMware, Inc. 263 Programming Guide n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. Procedure u Display a list of existing vRealize Automation reservations. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations The following sample output lists two vSphere reservations, named MyTestReservation1 and MyTestReservation2 . { "links": [], "content": [{ "id": "94d74105-831a-4598-8f42-efd590fea15c ", "name": "TestReservation", "reservationTypeId": "Infrastructure.Reservation.Virtual.vSphere", "tenantId": "qe", "subTenantId": "ef58f604-528d-4441-a219-4725bead629b", "enabled": true, "priority": 3, "reservationPolicyId": "b71c3a5f-087a-4d9e-9a56-fab785a3d128", "alertPolicy": { "enabled": true, "frequencyReminder": 20, "emailBgMgr": false, "recipients": ["user1@mycompany.com", "user2@mycompany.com"], "alerts": [{ "alertPercentLevel": 10, "referenceResourceId": "storage", "id": "storage" }, { "alertPercentLevel": 20, "referenceResourceId": "memory", "id": "memory" }, { "alertPercentLevel": 30, "referenceResourceId": "cpu", "id": "cpu" }, { "alertPercentLevel": 40, "referenceResourceId": "machine", "id": "machine" }] }, "extensionData": { "entries": [{ VMware, Inc. 264 Programming Guide "key": "key4", "value": { "type": "string", "value": "custom-property-value4" } }, { "key": "key3", "value": { "type": "string", "value": "custom-property-value3" } }, { "key": "reservationNetworks", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationNetwork", "typeFilter": null, "values": { "entries": [{ "key": "reservationNetworkProfile", "value": { "type": "entityRef", "componentId": null, "classId": "NetworkProfile", "id": "ed5d1503-08ac-42ca-804d-9167834a63a5", "label": "ETEDoNotDelete2014-10-13 13:10:56" } }, { "key": "reservationNetworkPath", "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "44cb65d5-b321-43dd-a2ab-8ecf387bff8f", "label": "VM Network SQA" } }] } }] } }, { "key": "key0", "value": { "type": "string", "value": "custom-property-value0" } VMware, Inc. 265 Programming Guide }, { "key": "key2", "value": { "type": "string", "value": "custom-property-value2" } }, { "key": "reservationMemory", "value": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationMemory", "typeFilter": null, "values": { "entries": [{ "key": "hostMemoryTotalSizeMB", "value": { "type": "integer", "value": 57187 } }, { "key": "reservationMemoryReservedSizeMb", "value": { "type": "integer", "value": 15888 } }] } } }, { "key": "key1", "value": { "type": "string", "value": "custom-property-value-Updated" } }, { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "047e00f5-5424-4ed2-a751-4a334aeaff54", "label": "VC51-Cluster" } }, { "key": "machineQuota", "value": { "type": "integer", VMware, Inc. 266 Programming Guide "value": 2 } }, { "key": "reservationStorages", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationStorage", "typeFilter": null, "values": { "entries": [{ "key": "storageTotalSizeGB", "value": { "type": "integer", "value": 394 } }, { "key": "reservationStorageReservedSizeGB", "value": { "type": "integer", "value": 31 } }, { "key": "reservationStorageEnabled", "value": { "type": "boolean", "value": true } }, { "key": "reservationStoragePath", "value": { "type": "entityRef", "componentId": null, "classId": "StoragePath", "id": "f48a527b-30a6-4d54-8829-f549bc195b69", "label": "VNXe:qe-vnxe-nfs-1" } }, { "key": "storageFreeSizeGB", "value": { "type": "integer", "value": 120 } }, { "key": "reservationStorageReservationPriority", VMware, Inc. 267 Programming Guide "value": { "type": "integer", "value": 1 } }] } }] } }, { "key": "resourcePool", "value": { "type": "entityRef", "componentId": null, "classId": "ResourcePools", "id": "4e51fabc-19e8-4e79-b413-d52309b3bb62", "label": "CoreDev" } }], "metadata": { "size": 0, "totalElements": 1, "totalPages": 1, "number": 1, "offset": 0 } } Syntax for Displaying a List of Reservations You can use the REST API reservation service to display a list of existing vRealize Automation reservations. You can use this list to obtain the required reservation ID value in preparation for updating or deleting a reservation. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/reservations Method Get $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. Output The command output contains property names and values based on the command input parameters. VMware, Inc. 268 Programming Guide Property Description Links Species an array of link objects, each of which contains the following parts: rel href Specifies the name of the link. n Self refers to the object which was returned or requested. n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n Specifies the application or service that determines the other names. Specifies the URL that produces the result. Content Specifies an array of data rows, each of which represents one of the tenant objects returned in a pageable list. Metadata Specifies the paging-related data. Size Specifies the maximum number of rows per page. totalElements Specifies the number of rows returned. totalPages Specifies the total number of pages of data available. Number Specifies the current page number. Offset Specifies the number of rows skipped. Example: curl Command The following example command displays a list of reservations. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations Example: JSON Output The following sample output lists two vSphere reservations, named MyTestReservation1 and MyTestReservation2. For related information, see Syntax for Verifying a Reservation and Getting Reservation Details. You can use the id value for each reservation to update or delete them. For related information, see Syntax for Updating a Reservation or Syntax for Deleting a Reservation. { "links": [], "content": [{ "id": "94d74105-831a-4598-8f42-efd590fea15c ", "name": "TestReservation", "reservationTypeId": "Infrastructure.Reservation.Virtual.vSphere", "tenantId": "qe", "subTenantId": "ef58f604-528d-4441-a219-4725bead629b", "enabled": true, "priority": 3, "reservationPolicyId": "b71c3a5f-087a-4d9e-9a56-fab785a3d128", "alertPolicy": { "enabled": true, "frequencyReminder": 20, VMware, Inc. 269 Programming Guide "emailBgMgr": false, "recipients": ["user1@mycompany.com", "user2@mycompany.com"], "alerts": [{ "alertPercentLevel": 10, "referenceResourceId": "storage", "id": "storage" }, { "alertPercentLevel": 20, "referenceResourceId": "memory", "id": "memory" }, { "alertPercentLevel": 30, "referenceResourceId": "cpu", "id": "cpu" }, { "alertPercentLevel": 40, "referenceResourceId": "machine", "id": "machine" }] }, "extensionData": { "entries": [{ "key": "key4", "value": { "type": "string", "value": "custom-property-value4" } }, { "key": "key3", "value": { "type": "string", "value": "custom-property-value3" } }, { "key": "reservationNetworks", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationNetwork", "typeFilter": null, "values": { "entries": [{ "key": "reservationNetworkProfile", "value": { "type": "entityRef", VMware, Inc. 270 Programming Guide "componentId": null, "classId": "NetworkProfile", "id": "ed5d1503-08ac-42ca-804d-9167834a63a5", "label": "ETEDoNotDelete2014-10-13 13:10:56" } }, { "key": "reservationNetworkPath", "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "44cb65d5-b321-43dd-a2ab-8ecf387bff8f", "label": "VM Network SQA" } }] } }] } }, { "key": "key0", "value": { "type": "string", "value": "custom-property-value0" } }, { "key": "key2", "value": { "type": "string", "value": "custom-property-value2" } }, { "key": "reservationMemory", "value": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationMemory", "typeFilter": null, "values": { "entries": [{ "key": "hostMemoryTotalSizeMB", "value": { "type": "integer", "value": 57187 } }, { "key": "reservationMemoryReservedSizeMb", "value": { "type": "integer", "value": 15888 VMware, Inc. 271 Programming Guide } }] } } }, { "key": "key1", "value": { "type": "string", "value": "custom-property-value-Updated" } }, { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "047e00f5-5424-4ed2-a751-4a334aeaff54", "label": "VC51-Cluster" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 2 } }, { "key": "reservationStorages", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationStorage", "typeFilter": null, "values": { "entries": [{ "key": "storageTotalSizeGB", "value": { "type": "integer", "value": 394 } }, { "key": "reservationStorageReservedSizeGB", "value": { "type": "integer", "value": 31 } }, VMware, Inc. 272 Programming Guide { "key": "reservationStorageEnabled", "value": { "type": "boolean", "value": true } }, { "key": "reservationStoragePath", "value": { "type": "entityRef", "componentId": null, "classId": "StoragePath", "id": "f48a527b-30a6-4d54-8829-f549bc195b69", "label": "VNXe:qe-vnxe-nfs-1" } }, { "key": "storageFreeSizeGB", "value": { "type": "integer", "value": 120 } }, { "key": "reservationStorageReservationPriority", "value": { "type": "integer", "value": 1 } }] } }] } }, { "key": "resourcePool", "value": { "type": "entityRef", "componentId": null, "classId": "ResourcePools", "id": "4e51fabc-19e8-4e79-b413-d52309b3bb62", "label": "CoreDev" } }], "metadata": { "size": 0, "totalElements": 1, "totalPages": 1, "number": 1, "offset": 0 } } VMware, Inc. 273 Programming Guide Update a Reservation You can use the REST API reservation service to update an existing vRealize Automation reservation. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Obtain the reservation ID of the reservation that you want to update. This information is required API command input. See Syntax for Displaying a List of Reservations. n Obtain the reservation field information for the reservation that you want to update. For example, if you want to change from one compute resource to another, you must obtain the new compute resource ID and its associated JSON section output. This information is required API command input. See Syntax for Getting a Compute Resource for a Reservation. Procedure u Use the reservation service to update an existing reservation. The following example command updates a reservation with an ID of 94d74105-831a-4598-8f42efd590fea15c. curl –X PUT--insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/94d74105-831a-4598-8f42-efd590fea15c –d “ { "id": "94d74105-831a-4598-8f42-efd590fea15c", "name": "TestReservation", "reservationTypeId": "Infrastructure.Reservation.Virtual.vSphere", "tenantId": "qe", "subTenantId": "ef58f604-528d-4441-a219-4725bead629b", "enabled": true, "priority": 3, "reservationPolicyId": "b71c3a5f-087a-4d9e-9a56-fab785a3d128", "alertPolicy": { "enabled": true, "frequencyReminder": 20, "emailBgMgr": false, "recipients": ["user1@mycompany.com", "user2@mycompany.com"], "alerts": [{ "alertPercentLevel": 10, "referenceResourceId": "storage", "id": "storage" }, VMware, Inc. 274 Programming Guide { "alertPercentLevel": 20, "referenceResourceId": "memory", "id": "memory" }, { "alertPercentLevel": 30, "referenceResourceId": "cpu", "id": "cpu" }, { "alertPercentLevel": 40, "referenceResourceId": "machine", "id": "machine" }] }, "extensionData": { "entries": [{ "key": "key4", "value": { "type": "string", "value": "custom-property-value4" } }, { "key": "key3", "value": { "type": "string", "value": "custom-property-value3" } }, { "key": "reservationNetworks", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationNetwork", "typeFilter": null, "values": { "entries": [{ "key": "reservationNetworkProfile", "value": { "type": "entityRef", "componentId": null, "classId": "NetworkProfile", "id": "ed5d1503-08ac-42ca-804d-9167834a63a5", "label": "TestNetworkProfile" } }, { "key": "reservationNetworkPath", VMware, Inc. 275 Programming Guide "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "44cb65d5-b321-43dd-a2ab-8ecf387bff8f", "label": "VM Network SQA" } }] } }] } }, { "key": "key0", "value": { "type": "string", "value": "custom-property-value0" } }, { "key": "key2", "value": { "type": "string", "value": "custom-property-value2" } }, { "key": "reservationMemory", "value": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationMemory", "typeFilter": null, "values": { "entries": [{ "key": "hostMemoryTotalSizeMB", "value": { "type": "integer", "value": 57187 } }, { "key": "reservationMemoryReservedSizeMb", "value": { "type": "integer", "value": 15888 } }] } } }, { "key": "key1", VMware, Inc. 276 Programming Guide "value": { "type": "string", "value": "custom-property-value-Updated" } }, { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "047e00f5-5424-4ed2-a751-4a334aeaff54", "label": "VC51-Cluster" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 2 } }, { "key": "reservationStorages", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationStorage", "typeFilter": null, "values": { "entries": [{ "key": "storageTotalSizeGB", "value": { "type": "integer", "value": 394 } }, { "key": "reservationStorageReservedSizeGB", "value": { "type": "integer", "value": 31 } }, { "key": "reservationStorageEnabled", "value": { "type": "boolean", "value": true } }, VMware, Inc. 277 Programming Guide { "key": "reservationStoragePath", "value": { "type": "entityRef", "componentId": null, "classId": "StoragePath", "id": "f48a527b-30a6-4d54-8829-f549bc195b69", "label": "VNXe:qe-vnxe-nfs-1" } }, { "key": "storageFreeSizeGB", "value": { "type": "integer", "value": 120 } }, { "key": "reservationStorageReservationPriority", "value": { "type": "integer", "value": 1 } }] } }] } }, { "key": "resourcePool", "value": { "type": "entityRef", "componentId": null, "classId": "ResourcePools", "id": "4e51fabc-19e8-4e79-b413-d52309b3bb62", "label": "CoreDev" } }] } } ” The following output is returned based on the command input. If the command is successful, the HTTP response body is empty except for a 204 No Content status statement. Syntax for Updating a Reservation You can use the vRealize Automation REST API reservation service to update an existing reservation. Input Use the supported input parameters to control the command output. VMware, Inc. 278 Programming Guide Parameter Description URL https://$host/reservation-service/api/reservations/$reservationId Method Put $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $reservationId Specifies the unique identifier of the reservation to update. For information about how to obtain the reservation ID, see Syntax for Displaying a List of Reservations. HTTP body Contains the JSON information for the reservation, including the updated data for the parameters that you want to update. Most of this JSON string information is obtained by displaying the existing details of the $reservationId. See Syntax for Verifying a Reservation and Getting Reservation Details. The rest of the JSON string information is obtained by using an API command to get the ID of the parameter you want to update. For example, to update the reservation to use a different compute resource than the one currently specified, replace the computeResource value of the exiting reservation with a new computeResource value in the command's HTTP input. Output If the command is successful, the HTTP response body is empty except for a 204 No Content status statement. Example: curl Command The following example command updates the reservation with an ID of 94d74105-831a-4598-8f42efd590fea15c to use compute resource ID 047e00f5-5424-4ed2-a751-4a334aeaff54. curl –X PUT--insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/94d74105-831a-4598-8f42-efd590fea15c –d “ { "name": "TestReservation", "reservationTypeId": "Infrastructure.Reservation.Virtual.vSphere", "tenantId": "qe", "subTenantId": "ef58f604-528d-4441-a219-4725bead629b", "enabled": true, "priority": 3, "reservationPolicyId": "b71c3a5f-087a-4d9e-9a56-fab785a3d128", "alertPolicy": { "enabled": true, "frequencyReminder": 20, "emailBgMgr": false, "recipients": ["user1@mycompany.com", "user2@mycompany.com"], "alerts": [{ VMware, Inc. 279 Programming Guide "alertPercentLevel": 10, "referenceResourceId": "storage", "id": "storage" }, { "alertPercentLevel": 20, "referenceResourceId": "memory", "id": "memory" }, { "alertPercentLevel": 30, "referenceResourceId": "cpu", "id": "cpu" }, { "alertPercentLevel": 40, "referenceResourceId": "machine", "id": "machine" }] }, "extensionData": { "entries": [{ "key": "key4", "value": { "type": "string", "value": "custom-property-value4" } }, { "key": "key3", "value": { "type": "string", "value": "custom-property-value3" } }, { "key": "reservationNetworks", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationNetwork", "typeFilter": null, "values": { "entries": [{ "key": "reservationNetworkProfile", "value": { "type": "entityRef", "componentId": null, "classId": "NetworkProfile", "id": "ed5d1503-08ac-42ca-804d-9167834a63a5", "label": "TestNetworkProfile" VMware, Inc. 280 Programming Guide } }, { "key": "reservationNetworkPath", "value": { "type": "entityRef", "componentId": null, "classId": "Network", "id": "44cb65d5-b321-43dd-a2ab-8ecf387bff8f", "label": "VM Network SQA" } }] } }] } }, { "key": "key0", "value": { "type": "string", "value": "custom-property-value0" } }, { "key": "key2", "value": { "type": "string", "value": "custom-property-value2" } }, { "key": "reservationMemory", "value": { "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationMemory", "typeFilter": null, "values": { "entries": [{ "key": "hostMemoryTotalSizeMB", "value": { "type": "integer", "value": 57187 } }, { "key": "reservationMemoryReservedSizeMb", "value": { "type": "integer", "value": 15888 } }] } VMware, Inc. 281 Programming Guide } }, { "key": "key1", "value": { "type": "string", "value": "custom-property-value-Updated" } }, { "key": "computeResource", "value": { "type": "entityRef", "componentId": null, "classId": "ComputeResource", "id": "047e00f5-5424-4ed2-a751-4a334aeaff54", "label": "VC51-Cluster" } }, { "key": "machineQuota", "value": { "type": "integer", "value": 2 } }, { "key": "reservationStorages", "value": { "type": "multiple", "elementTypeId": "COMPLEX", "items": [{ "type": "complex", "componentTypeId": "com.mycompany.csp.iaas.blueprint.service", "componentId": null, "classId": "reservationStorage", "typeFilter": null, "values": { "entries": [{ "key": "storageTotalSizeGB", "value": { "type": "integer", "value": 394 } }, { "key": "reservationStorageReservedSizeGB", "value": { "type": "integer", "value": 31 } }, { "key": "reservationStorageEnabled", "value": { VMware, Inc. 282 Programming Guide "type": "boolean", "value": true } }, { "key": "reservationStoragePath", "value": { "type": "entityRef", "componentId": null, "classId": "StoragePath", "id": "f48a527b-30a6-4d54-8829-f549bc195b69", "label": "VNXe:qe-vnxe-nfs-1" } }, { "key": "storageFreeSizeGB", "value": { "type": "integer", "value": 120 } }, { "key": "reservationStorageReservationPriority", "value": { "type": "integer", "value": 1 } }] } }] } }, { "key": "resourcePool", "value": { "type": "entityRef", "componentId": null, "classId": "ResourcePools", "id": "4e51fabc-19e8-4e79-b413-d52309b3bb62", "label": "CoreDev" } }] } } ” Example: JSON Output If the command is successful, the HTTP response body is empty except for a 204 No Content status statement. Delete a Reservation You can use the vRealize Automation REST API reservation service to delete an existing reservation. VMware, Inc. 283 Programming Guide Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Obtain the reservation ID of the reservation that you want to delete. This information is required API command input. See Syntax for Displaying a List of Reservations. Procedure u Use the reservation service to delete the existing reservation. The following example command deletes a reservation with the ID of 94d74105-831a-4598-8f42efd590fea15c. curl –X “Delete” --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/94d74105-831a-4598-8f42-efd590fea15c The following output is returned based on the command input. If the command is successful, the HTTP response body is empty except for a 204 No Content status statement. Syntax for Deleting a Reservation You can use the vRealize Automation REST API reservation service to delete an existing reservation. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/reservations/$reservationId Method Delete $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $reservationId Specifies the unique identifier of the reservation to delete. For information about how to obtain the reservation ID, see Syntax for Displaying a List of Reservations. Output If the command is successful, the HTTP response body is empty except for a 204 No Content status statement. VMware, Inc. 284 Programming Guide Example: curl Command The following example command deletes a reservation with an ID of 94d74105-831a-4598-8f42efd590fea15c. curl –X “Delete” --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/94d74105-831a-4598-8f42-efd590fea15c Example: JSON Output If the command is successful, the HTTP response body is empty except for a 204 No Content status statement. Working with Reservation Policies You can use the vRealize Automation REST API to work with the reservation service to perform a variety of functions, such as creating and updating reservation policies. While many functions are stand-alone, some functions rely on the output of others. For example, to delete a reservation ID, you must first obtain the ID of the reservation to delete. List Reservation Policies You can use the REST API reservation service to list existing reservation policies. Use this information to obtain a reservation policy ID in preparation for updating or deleting the reservation policy. For information about available command input and output parameters, see Syntax for Listing Reservation Policies. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. VMware, Inc. 285 Programming Guide Procedure u Run the following example command to list all available reservation policies. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/policies The following example output lists two reservation policies, named reservationPolicyTest and reservationPolicyTest2. You can use the ID value for each reservation policy to update or delete them. See Syntax for Updating a Reservation Policyand Syntax for Deleting a Reservation Policy Syntax. { "links": [], "content": [{ "@type": "ReservationPolicy", "id": "8adafb54-4c85-4478-86f0-b6ae80ab5ca4", "name": "reservationPolicyTest", "description": "reservationPolicyDescTest", "reservationPolicyTypeId": "Infrastructure.Reservation.Policy.ComputeResource" }, { "@type": "reservationPolicy", "id": "fdd9854b-012e-41d7-ad17-fc73d4395714", "name": "reservationPolicyTest2", "description": "reservationPolicyDescTest2", "reservationPolicyTypeId": "Infrastructure.Reservation.Policy.Storage" }], "metadata": { "size": 0, "totalElements": 2, "totalPages": 1, "number": 1, "offset": 0 } } Syntax for Listing Reservation Policies You can use the vRealize Automation REST API to list existing reservation policies. Use this information to obtain a reservation policy ID in preparation for updating or deleting the reservation policy. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/reservations/policies Method Get VMware, Inc. 286 Programming Guide Parameter Description $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. Output The command output contains property names and values based on the command input parameters. Property Description Links Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n n Self refers to the object which was returned or requested. n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. Content reservationPolicyTypeId Metadata Specifies an array of data rows, each of which represents one of the tenant objects returned in a pageable list. Each tenant object contains the following information: n @type. Contains the ReservationPolicy string. n id. Specifies the unique reservation policy ID. n name. Specifies the reservation policy name. n description. Specifies the reservation policy description. Specifies the type of reservation policy. Supported vRealize Automation reservation policy types are Reservation.Policy.ComputeResource and Reservation.Policy.Storage. Specifies the paging-related data: n Size. Specifies the maximum number of rows per page. n totalElements. Specifies the number of rows returned. n totalPages. Specifies the total number of pages of data available. n Number. Specifies the current page number. n Offset. Specifies the number of rows skipped. Example: curl Command List all available reservation policies. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/policies VMware, Inc. 287 Programming Guide Example: JSON Output The following example output lists two reservation policies, named reservationPolicyTest and reservationPolicyTest2. Use the id value for each reservation policy to update or delete them. See Syntax for Updating a Reservation Policyand Syntax for Deleting a Reservation Policy Syntax. { "links": [], "content": [{ "@type": "ReservationPolicy", "id": "8adafb54-4c85-4478-86f0-b6ae80ab5ca4", "name": "reservationPolicyTest", "description": "reservationPolicyDescTest", "reservationPolicyTypeId": "Infrastructure.Reservation.Policy.ComputeResource" }, { "@type": "reservationPolicy", "id": "fdd9854b-012e-41d7-ad17-fc73d4395714", "name": "reservationPolicyTest2", "description": "reservationPolicyDescTest2", "reservationPolicyTypeId": "Infrastructure.Reservation.Policy.Storage" }], "metadata": { "size": 0, "totalElements": 2, "totalPages": 1, "number": 1, "offset": 0 } } Create a Reservation Policy You can use the REST API reservation service to create a reservation policy. For information about available command input and output parameters, see Syntax for Creating a Reservation Policy. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n List existing reservation policies to create the sample output required for creating a new reservation policy. See List Reservation Policies. VMware, Inc. 288 Programming Guide Procedure u Use the reservation service to create a reservation policy as shown in the following sample command. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/policies -d “ { "name": "ABXReservationPolicyTest", "description": "ABXReservationPolicyDescTest", "reservationPolicyTypeId": "Infrastructure.Reservation.Policy.ComputeResource" } “ The command output contains the new reservation policy ID, for example 5fd2de36-659f-4beb-97af-77d683feb697. Location: https://$host/reservation-service/api/reservations/policies/5fd2de36-659f-4beb-97af-77d683feb697 Syntax for Creating a Reservation Policy You can use the REST API reservation service to create a reservation policy. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/reservations/policies Method Post $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. HTTP body Describes the reservation policy to create. $reservationPolicyTypeId n $name - reservation policy name n $description - reservation policy description Specifies the reservation policy type ID. The supported reservation policy types are Reservation.Policy.ComputeResource and Reservation.Policy.Storage. Output The command output contains property names and values based on the command input parameters. The output URL contains the new reservation policy ID. VMware, Inc. 289 Programming Guide Property Description status When the reservation policy is successfully created, the HTTP response status is 201 created. Header.Location The HTTP response contains a Location attribute that is format as https://$host /reservationservice/api/reservations/policies/$reservationPolicyId. $reservationPolicyId Specifies the new reservation policy ID. Obtain this ID by listing your available reservation policies. Example: curl Command The following example command uses the reservation service to create a new reservation policy. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/policies -d “ { "name": "ABXReservationPolicyTest", "description": "ABXReservationPolicyDescTest", "reservationPolicyTypeId": "Infrastructure.Reservation.Policy.ComputeResource" } “ Example: JSON Output The following example output contains the HTTP body and a location URL. The output URL contains the new reservation policy ID, for example 5fd2de36-659f-4beb-97af-77d683feb697. Location: https://$host/reservation-service/api/reservations/policies/5fd2de36-659f-4beb-97af-77d683feb697 Copy the location URL from this output to an editor for future use, for example for updating or deleting the reservation policy. Display a Reservation Policy by ID You can use the REST API reservation service with a reservation policy ID to display information about a specific reservation policy. For information about available command input and output parameters, see Syntax for Displaying a Reservation Policy by ID. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. VMware, Inc. 290 Programming Guide n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Obtain the reservation policy ID of the reservation policy to query. See Syntax for Listing Reservation Policies. Procedure u Display information about the reservation policy ID. The following example displays information about reservation policy 8adafb54-4c85-4478-86f0b6ae80ab5ca4. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/policies/8adafb54-4c85-4478-86f0-b6ae80ab5ca4 The following sample output is generated. { "id": "8adafb54-4c85-4478-86f0-b6ae80ab5ca4", "name": "reservationPolicyTest", "description": "reservationPolicyDescTest", "reservationPolicyTypeId": "Infrastructure.Reservation.Policy.ComputeResource" } Use the command output to make updates to the reservation policy. See Syntax for Updating a Reservation Policy. Syntax for Displaying a Reservation Policy by ID You can use the REST API reservation service with a reservation policy ID to display information about a specific reservation policy. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/reservations/policies/$id Method Get $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. Example: Output The command output contains property names and values based on the command input parameters. VMware, Inc. 291 Programming Guide Parameter Description $id Specifies the reservation policy ID. $name Specifies the reservation policy name. $description Specifies the reservation policy description. $reservationPolicyTypeId Specifies the reservation policy type ID. Example: Example: curl Command The following example command retrieves information for the reservation policy with an ID of 8adafb54-4c85-4478-86f0-b6ae80ab5ca4. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/policies/8adafb54-4c85-4478-86f0-b6ae80ab5ca4 Example: Example: JSON Output The following sample output displays information for the specified reservation policy ID 8adafb54-4c85-4478-86f0-b6ae80ab5ca4. { "id": "8adafb54-4c85-4478-86f0-b6ae80ab5ca4", "name": "reservationPolicyTest", "description": "reservationPolicyDescTest", "reservationPolicyTypeId": "Infrastructure.Reservation.Policy.ComputeResource" } Update a Reservation Policy You can use the REST API reservation service to update a vRealize Automation reservation policy. For information about available command input and output parameters, see Syntax for Updating a Reservation Policy. Prerequisites n Log in to vRealize Automation as a fabric group administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Get the required reservation policy ID. See Syntax for Listing Reservation Policies. n Query the reservation policy and copy the response output to an XML editor for use as the basis of your command input for this task. See Syntax for Displaying a Reservation Policy by ID. VMware, Inc. 292 Programming Guide Procedure 1 Query the reservation policy and copy the response output to an editor. 2 Change the following information to use as the basis of the command input for this task. 3 n Reservation policy name n Reservation policy description n Reservation policy type ID Update the name and description values for the reservation policy ID. The following example syntax updates the information for reservation policy ID 94d74105-831a-4598-8f42-efd590fea15c. curl –X PUT --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/policies/94d74105-831a-4598-8f42-efd590fea15c d “ { "id": "94d74105-831a-4598-8f42-efd590fea15c", "name": "ReservationPolicyTestRename", "description": "ReservationPolicyDescTestRename", "reservationPolicyTypeId": "Infrastructure.Reservation.Policy.ComputeResource" } “ If the command is successful, the HTTP response body is empty except for a 204 No Content status statement. Syntax for Updating a Reservation Policy You can use the vRealize Automation REST API reservation service to update a reservation policy. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/reservations/policies/$id Method Put $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. VMware, Inc. 293 Programming Guide Parameter Description $token Specifies a valid HTTP bearer token with necessary credentials. HTTP body Describes the reservation policy to update. To obtain the value, query the reservation policy and copy the response output to an editor for use as the basis of your command input. See Syntax for Displaying a Reservation Policy by ID. n $id - reservation policy ID n $name - reservation policy name n $description - reservation policy description n $reservationPolicyTypeId - reservation policy type ID The supported reservation policy types are Reservation.Policy.ComputeResource and Reservation.Policy.Storage. Output If the command is successful, the HTTP response body is empty except for a 204 No Content status statement. Example: curl Command The following example command updates the name and description values for the reservation policy with an ID of 94d74105-831a-4598-8f42-efd590fea15c. curl –X PUT --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/policies/94d74105-831a-4598-8f42-efd590fea15c -d “ { "id": "94d74105-831a-4598-8f42-efd590fea15c", "name": "ReservationPolicyTestRename", "description": "ReservationPolicyDescTestRename", "reservationPolicyTypeId": "Infrastructure.Reservation.Policy.ComputeResource" } “ Example: JSON Output If the command is successful, the HTTP response body is empty except for a 204 No Content status statement. Delete a Reservation Policy You can use the REST API reservation service to delete a vRealize Automation reservation policy. For information about available command input and output parameters, see Syntax for Deleting a Reservation Policy Syntax. Prerequisites n Log in to vRealize Automation as a fabric group administrator. VMware, Inc. 294 Programming Guide n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Get the required reservation policy ID. See Syntax for Listing Reservation Policies. Procedure u Delete the reservation policy ID. The following example syntax updates the information for reservation policy ID8adafb54-4c85-4478-86f0-b6ae80ab5ca4. curl –X “Delete” --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/policies/8adafb54-4c85-4478-86f0-b6ae80ab5ca4 If the command is successful, the HTTP response body is empty except for a 204 No Content status statement. Syntax for Deleting a Reservation Policy Syntax You can use the REST API reservation service to delete a vRealize Automation reservation policy. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/reservation-service/api/reservations/policies/$id Method Delete $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $id Specifies the reservation policy ID. To obtain the reservation policy ID to delete, see Syntax for Listing Reservation Policies. Output If the command is successful, the HTTP response body is empty except for a 204 No Content status statement. VMware, Inc. 295 Programming Guide Example: Example: curl Command The following example command deletes a reservation policy with an ID of 8adafb54-4c85-4478-86f0b6ae80ab5ca4. curl –X “Delete” --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/reservation-service/api/reservations/policies/8adafb54-4c85-4478-86f0-b6ae80ab5ca4 Example: Example: JSON Output If the command is successful, the HTTP response body is empty except for a 204 No Content status statement. Working with Key Pairs You can work with the keyValuePair data element of the REST API workitem service to list, create, and update key pairs. For information about using the vRealize Automation application user interface to work with key pairs, see the IaaS Configuration documentation. Get a Key Pair List You can use the vRealize Automation REST API to get a list of valid key pairs. Prerequisites n Log in to vRealize Automation as a tenant administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. Procedure u Use the following sample command to list all available reservation policies. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/iaas-proxy-provider/api/keyPairs The following JSON output is returned based on your command input. { "links": [ ], "content": [ { VMware, Inc. 296 Programming Guide "@type": "KeyPair", "id": 26, "name": "TestKeyPair", "computeResourceId": "ca4dcca0-85ce-49dd-8371-4ce7c8e2d5e6", "secretKey": "" }, { "@type": "KeyPair", "id": 27, "name": "EC2KeyPair", "computeResourceId": "ca4dcca0-85ce-49dd-8371-4ce7c8e2d5e6", "secretKey": "jmfhkPFLe1xF4LsgxyYDlBH65IjiKsNH3xgeUhNt6AyIcSA2eZsxH9FNFcDst1cRLQUmLYLUCN6ZlrVtD3C5CYAOEE9UplO +YKnAcqUSyXB6PQ3I/NuebdtGrx38fkTJsEpRqxLppWPJpVlHYRO2O7GhhWnE6F3bPwwg3dWwymqWHxBZlCcuEcztovbhN8r7/h KsXKbNSJz +J8DVhPB7PPdHJJ4E/6a9IXkNQs/T0NknCOyc0YcFVpgrc3PMGabi8vd/7v0nEtDARyA8WwAGgtedHGtBo2gciY1Bu/0SNr2yCz sZcqbVeg4ufkjlv0G1Ed1FfGHMh5kuVC7alk2aSI5YkWnS4d9YJYi7diYmc7GmrVW0XWNz4kEMdQBkK+CvMxiZ17jyQD +V4NuM4ydNPJJMqpvoAHtLrAmp/hXhInuf8j/l0mbawWSvUDUA3s4ZE55cFp546MJIrVCRyoMoKfxuHquIPdANRAVs7qo9DGxBi CzjvyBqof21y6dhGCd1q48Dkd72QCj6gGV84lHZ/zXWcz4+aKFRVolNqSZEtZ/9wzdjqYdn/ySl0S5GE2rG/xRsh6g +giB9j4VQOMvC/uvhkYUo3WfTgxi8SeipFIVcbvkkOI0ubPU1xnWdDErjji6UwEtmjajHuiA93GtiWIdeCvyKQWmo9jkkLUmQe4 XrmRt3P09FWm8Quwe5Hw6czK0dIODwcHE0Azl0TqLKl1wA39uhGrHoXNypFiOMmRbo1YnfIW23ggEnxRACY1jUZkTewhSbVY4S +XyzvFDcTRpSjWpRUOozYuMSsDnRzCJZQXhg4IYvwTvG+uEUu4+YR +WCrgC6Tk60i3cLSuHnV5k00AWXWwvnPnwYRFxxyzhcSDx4jyyCaysmBo9NHGwNkJU1F94SY5Vp6O0E9EJuViMohF1gc18Q6SXH BNlrp0L7bAMggpmystGIkBNkSRhcDAFflNoS/MTEW0uJoDfe6DczAt9B0YGtHdy3AH/U4ADOPkz5xlQ4EL/rQSSolcBfVhbejVp bktJo4YKB7dzSDcJTSw99Uve +BQjhigVcfxDXme3MrXPO4BeCU891DLaTJyeYYADyGUKZfKFC6iCO9SQfynwK6iE2eYKLpIMcf/C8+rLJVXcy7gkjT/17WCu7mQ XMevlIJlaApyytN1eCJcVDsr4N5LURZofnPArromhLy3JWiEJ4dtq+17KPiMff34e/kT +i0ns73Wdy1oblZAi5kwBFMgBjAMex5fGNR1q/wtY1beWaxVw1J5RViaXeXSKO5mttE/dzW6ONeJygjIlpgfwSLwr8JA4GanN1R WGeqRNjfOOGgdufIvDqmBB/klnuGTVgMVWc0caQMzFq07UcXlMsgNOROHBfkzelWB+v0kXHsQ4eSeYVhjnT3CPURr5UMZ8YQ7fm +DltRM1Nw3o9WAJjQJ5xyT2kxou4PHBzoq6JouwrCluig7GQ06lVu2C3nNpyfGKsmFyOlHMaVuRYX9/dJQyibZAg1yDqyI3sIL3 CeGr7ynhOTEEQiAOWqgIUyDvrvc2Ma4RjjI4b3eFfBMkLWqTqs33+/5QktQz +p5JrIb192STI/PwHY51MfkbDErpeNFY479P7yKlZGbB8WVBfFpJCoVTQoZNio1ZhA7nA+rkqNbM4mcHQ +ZaYfxCc1UKO1AYBGS9ARz5OtYQU64Ei7tpWUbsYDXIA9Ss4VRASHvA7M3s +N61TPQ9HZuof/c6TbzOWE0ojtxEyO3sDsBWumm13/61+JT3k0rIdmV25aVvxrUv1S3JLI/o/zGgR9yTOeADIXHWsF4lQyai9Mn mEaclHVWmK+LiVZSAfk6auEm +13a24+UM9Mg6ninfzeIq0cjdT3OUweXgDnK0BMGX0wfSIYIrpRrDr9QdVoHGtdqZvJ62F8aITjO8urIK +bXZzwgFQ2JE4SYxojNHPYwBjadFm0A2eVPtOivMYYYr8FCUYtfbjjIS1TyJaKIFhhqs6bA6/PH +NvBmbozpDkH9wg3mQ1SOP5iSMAMue6fx+b/SpOZ5MPnNjRo +VXG3qFl936AB4F1F2ObD27GyjibeYmhQkITtp/yGYCZ68PhCun0/eiEjmXiOUx/5jYGOUEZ1Ddojhc5M/PClR46vQ/3Iyv5pUG Pno +wkn34lk6s2PO2axrXvQqTwoiYC3f2p1gp0qYidIzKa2KHrUCOF4hnjQ3v3z93ORMCK3wN5uQ3xMFOd7+1XpetxvG9d7L1lU/sg CVmEhdOSnhLC5Jeq70MVwixPocnJR4nyotPE==" },//Omit 18 more key pairs ], "metadata": { "size": 0, "totalElements": 20, "totalPages": 1, "number": 1, "offset": 0 } } What to do next VMware, Inc. 297 Programming Guide Syntax for Getting a Key Pair List You can use the vRealize Automation REST API to get a list of valid key pairs. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/iaas-proxy-provider/api/keyPairs Method Get $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. Output The command output contains property names and values based on the command input parameters. VMware, Inc. 298 Programming Guide Parameter Description Links Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n Self refers to the object that was returned or requested. This parameter does not appear when you query a single profile. n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. Content Specifies an array of data rows, each of which represents one of the tenant objects returned in a pageable list. Each tenant object can contain the following information: n @type: n $id: Contains the KeyPair string. Specifies the unique identifier of the key pair. n $name: n $computeresourceId: Specifies the name of the key pair. Specifies the compute resource ID that is binded to the key pair. n $secretKey: Specifies the secret key for the key pair. Metadata Specifies the following paging-related data: n Size: Specifies the maximum number of rows per page. n totalElement: Specifies the number of rows returned. This parameter is not output when you query for a single profile. n totalPages: Specifies the total number of pages of data available. n Number: Specifies the current page number. n Offset: Specifies the number of rows skipped. Example: curl Command curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/iaas-proxy-provider/api/keyPairs VMware, Inc. 299 Programming Guide Example: JSON Output The following JSON output is returned based on the command input. { "links": [ ], "content": [ { "@type": "KeyPair", "id": 26, "name": "TestKeyPair", "computeResourceId": "ca4dcca0-85ce-49dd-8371-4ce7c8e2d5e6", "secretKey": "" }, { "@type": "KeyPair", "id": 27, "name": "EC2KeyPair", "computeResourceId": "ca4dcca0-85ce-49dd-8371-4ce7c8e2d5e6", "secretKey": "jmfhkPFLe1xF4LsgxyYDlBH65IjiKsNH3xgeUhNt6AyIcSA2eZsxH9FNFcDst1cRLQUmLYLUCN6ZlrVtD3C5CYAOEE9UplO +YKnAcqUSyXB6PQ3I/NuebdtGrx38fkTJsEpRqxLppWPJpVlHYRO2O7GhhWnE6F3bPwwg3dWwymqWHxBZlCcuEcztovbhN8r7/hKsXK bNSJz +J8DVhPB7PPdHJJ4E/6a9IXkNQs/T0NknCOyc0YcFVpgrc3PMGabi8vd/7v0nEtDARyA8WwAGgtedHGtBo2gciY1Bu/0SNr2yCzsZcq bVeg4ufkjlv0G1Ed1FfGHMh5kuVC7alk2aSI5YkWnS4d9YJYi7diYmc7GmrVW0XWNz4kEMdQBkK+CvMxiZ17jyQD +V4NuM4ydNPJJMqpvoAHtLrAmp/hXhInuf8j/l0mbawWSvUDUA3s4ZE55cFp546MJIrVCRyoMoKfxuHquIPdANRAVs7qo9DGxBiCzjv yBqof21y6dhGCd1q48Dkd72QCj6gGV84lHZ/zXWcz4+aKFRVolNqSZEtZ/9wzdjqYdn/ySl0S5GE2rG/xRsh6g +giB9j4VQOMvC/uvhkYUo3WfTgxi8SeipFIVcbvkkOI0ubPU1xnWdDErjji6UwEtmjajHuiA93GtiWIdeCvyKQWmo9jkkLUmQe4XrmR t3P09FWm8Quwe5Hw6czK0dIODwcHE0Azl0TqLKl1wA39uhGrHoXNypFiOMmRbo1YnfIW23ggEnxRACY1jUZkTewhSbVY4S +XyzvFDcTRpSjWpRUOozYuMSsDnRzCJZQXhg4IYvwTvG+uEUu4+YR +WCrgC6Tk60i3cLSuHnV5k00AWXWwvnPnwYRFxxyzhcSDx4jyyCaysmBo9NHGwNkJU1F94SY5Vp6O0E9EJuViMohF1gc18Q6SXHBNlr p0L7bAMggpmystGIkBNkSRhcDAFflNoS/MTEW0uJoDfe6DczAt9B0YGtHdy3AH/U4ADOPkz5xlQ4EL/rQSSolcBfVhbejVpbktJo4YK B7dzSDcJTSw99Uve +BQjhigVcfxDXme3MrXPO4BeCU891DLaTJyeYYADyGUKZfKFC6iCO9SQfynwK6iE2eYKLpIMcf/C8+rLJVXcy7gkjT/17WCu7mQXMev lIJlaApyytN1eCJcVDsr4N5LURZofnPArromhLy3JWiEJ4dtq+17KPiMff34e/kT +i0ns73Wdy1oblZAi5kwBFMgBjAMex5fGNR1q/wtY1beWaxVw1J5RViaXeXSKO5mttE/dzW6ONeJygjIlpgfwSLwr8JA4GanN1RWGeq RNjfOOGgdufIvDqmBB/klnuGTVgMVWc0caQMzFq07UcXlMsgNOROHBfkzelWB+v0kXHsQ4eSeYVhjnT3CPURr5UMZ8YQ7fm +DltRM1Nw3o9WAJjQJ5xyT2kxou4PHBzoq6JouwrCluig7GQ06lVu2C3nNpyfGKsmFyOlHMaVuRYX9/dJQyibZAg1yDqyI3sIL3CeGr 7ynhOTEEQiAOWqgIUyDvrvc2Ma4RjjI4b3eFfBMkLWqTqs33+/5QktQz +p5JrIb192STI/PwHY51MfkbDErpeNFY479P7yKlZGbB8WVBfFpJCoVTQoZNio1ZhA7nA+rkqNbM4mcHQ +ZaYfxCc1UKO1AYBGS9ARz5OtYQU64Ei7tpWUbsYDXIA9Ss4VRASHvA7M3s +N61TPQ9HZuof/c6TbzOWE0ojtxEyO3sDsBWumm13/61+JT3k0rIdmV25aVvxrUv1S3JLI/o/zGgR9yTOeADIXHWsF4lQyai9MnmEac lHVWmK+LiVZSAfk6auEm+13a24+UM9Mg6ninfzeIq0cjdT3OUweXgDnK0BMGX0wfSIYIrpRrDr9QdVoHGtdqZvJ62F8aITjO8urIK +bXZzwgFQ2JE4SYxojNHPYwBjadFm0A2eVPtOivMYYYr8FCUYtfbjjIS1TyJaKIFhhqs6bA6/PH +NvBmbozpDkH9wg3mQ1SOP5iSMAMue6fx+b/SpOZ5MPnNjRo +VXG3qFl936AB4F1F2ObD27GyjibeYmhQkITtp/yGYCZ68PhCun0/eiEjmXiOUx/5jYGOUEZ1Ddojhc5M/PClR46vQ/3Iyv5pUGPno +wkn34lk6s2PO2axrXvQqTwoiYC3f2p1gp0qYidIzKa2KHrUCOF4hnjQ3v3z93ORMCK3wN5uQ3xMFOd7+1XpetxvG9d7L1lU/sgCVmE hdOSnhLC5Jeq70MVwixPocnJR4nyotPE==" },//Omit 18 more key pairs ], "metadata": { "size": 0, "totalElements": 20, VMware, Inc. 300 Programming Guide "totalPages": 1, "number": 1, "offset": 0 } } Create a Key Pair You can use the vRealize Automation REST API to create a key pair. Prerequisites n Log in to vRealize Automation as a tenant administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Get the required compute resource ID. See Get a Compute Resource for the Reservation. Procedure 1 Obtain the compute resource ID of the target key pair that you want to create. 2 Use the following sample command to create a key pair. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/iaas-proxy-provider/api/keyPairs -d “ { "name": "TestKeyPair", "computeResourceId": "ca4dcca0-85ce-49dd-8371-4ce7c8e2d5e6", "secretKey": "jmfhkPFLe1xF4LsgxyYDlBH65IjiKsNH3xgeUhNt6AyIcSA2eZsxH9FNFcDst1cRLQUmLYLUCN6ZlrVtD3C5CYAOEE9UplO +YKnAcqUSyXB6PQ3I/NuebdtGrx38fkTJsEpRqxLppWPJpVlHYRO2O7GhhWnE6F3bPwwg3dWwymqWHxBZlCcuEcztovbhN8r7/h KsXKbNSJz +J8DVhPB7PPdHJJ4E/6a9IXkNQs/T0NknCOyc0YcFVpgrc3PMGabi8vd/7v0nEtDARyA8WwAGgtedHGtBo2gciY1Bu/0SNr2yCz sZcqbVeg4ufkjlv0G1Ed1FfGHMh5kuVC7alk2aSI5YkWnS4d9YJYi7diYmc7GmrVW0XWNz4kEMdQBkK+CvMxiZ17jyQD +V4NuM4ydNPJJMqpvoAHtLrAmp/hXhInuf8j/l0mbawWSvUDUA3s4ZE55cFp546MJIrVCRyoMoKfxuHquIPdANRAVs7qo9DGxBi CzjvyBqof21y6dhGCd1q48Dkd72QCj6gGV84lHZ/zXWcz4+aKFRVolNqSZEtZ/9wzdjqYdn/ySl0S5GE2rG/xRsh6g +giB9j4VQOMvC/uvhkYUo3WfTgxi8SeipFIVcbvkkOI0ubPU1xnWdDErjji6UwEtmjajHuiA93GtiWIdeCvyKQWmo9jkkLUmQe4 XrmRt3P09FWm8Quwe5Hw6czK0dIODwcHE0Azl0TqLKl1wA39uhGrHoXNypFiOMmRbo1YnfIW23ggEnxRACY1jUZkTewhSbVY4S +XyzvFDcTRpSjWpRUOozYuMSsDnRzCJZQXhg4IYvwTvG+uEUu4+YR +WCrgC6Tk60i3cLSuHnV5k00AWXWwvnPnwYRFxxyzhcSDx4jyyCaysmBo9NHGwNkJU1F94SY5Vp6O0E9EJuViMohF1gc18Q6SXH BNlrp0L7bAMggpmystGIkBNkSRhcDAFflNoS/MTEW0uJoDfe6DczAt9B0YGtHdy3AH/U4ADOPkz5xlQ4EL/rQSSolcBfVhbejVp bktJo4YKB7dzSDcJTSw99Uve +BQjhigVcfxDXme3MrXPO4BeCU891DLaTJyeYYADyGUKZfKFC6iCO9SQfynwK6iE2eYKLpIMcf/C8+rLJVXcy7gkjT/17WCu7mQ XMevlIJlaApyytN1eCJcVDsr4N5LURZofnPArromhLy3JWiEJ4dtq+17KPiMff34e/kT +i0ns73Wdy1oblZAi5kwBFMgBjAMex5fGNR1q/wtY1beWaxVw1J5RViaXeXSKO5mttE/dzW6ONeJygjIlpgfwSLwr8JA4GanN1R WGeqRNjfOOGgdufIvDqmBB/klnuGTVgMVWc0caQMzFq07UcXlMsgNOROHBfkzelWB+v0kXHsQ4eSeYVhjnT3CPURr5UMZ8YQ7fm +DltRM1Nw3o9WAJjQJ5xyT2kxou4PHBzoq6JouwrCluig7GQ06lVu2C3nNpyfGKsmFyOlHMaVuRYX9/dJQyibZAg1yDqyI3sIL3 VMware, Inc. 301 Programming Guide CeGr7ynhOTEEQiAOWqgIUyDvrvc2Ma4RjjI4b3eFfBMkLWqTqs33+/5QktQz +p5JrIb192STI/PwHY51MfkbDErpeNFY479P7yKlZGbB8WVBfFpJCoVTQoZNio1ZhA7nA+rkqNbM4mcHQ +ZaYfxCc1UKO1AYBGS9ARz5OtYQU64Ei7tpWUbsYDXIA9Ss4VRASHvA7M3s +N61TPQ9HZuof/c6TbzOWE0ojtxEyO3sDsBWumm13/61+JT3k0rIdmV25aVvxrUv1S3JLI/o/zGgR9yTOeADIXHWsF4lQyai9Mn mEaclHVWmK+LiVZSAfk6auEm +13a24+UM9Mg6ninfzeIq0cjdT3OUweXgDnK0BMGX0wfSIYIrpRrDr9QdVoHGtdqZvJ62F8aITjO8urIK +bXZzwgFQ2JE4SYxojNHPYwBjadFm0A2eVPtOivMYYYr8FCUYtfbjjIS1TyJaKIFhhqs6bA6/PH +NvBmbozpDkH9wg3mQ1SOP5iSMAMue6fx+b/SpOZ5MPnNjRo +VXG3qFl936AB4F1F2ObD27GyjibeYmhQkITtp/yGYCZ68PhCun0/eiEjmXiOUx/5jYGOUEZ1Ddojhc5M/PClR46vQ/3Iyv5pUG Pno +wkn34lk6s2PO2axrXvQqTwoiYC3f2p1gp0qYidIzKa2KHrUCOF4hnjQ3v3z93ORMCK3wN5uQ3xMFOd7+1XpetxvG9d7L1lU/sg CVmEhdOSnhLC5Jeq70MVwixPocnJR4nyotPE==" } “ Syntax for Creating a Key Pair You can use the vRealize Automation REST API to create a key pair. Input Use the supported input parameters to control the command output. Input Description URL https://$host/iaas-proxy-provider/api/keyPairs Method Post $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. HTTP Body Contains the HTTP body of the target key pair. n $id: Specifies the unique identifier of the key pair. n $name: n $computeResourceId: Specifies the name of the key pair. Specifies the compute resource ID that is binded to the key pair. n $secretKey: Specifies the secret key for the key pair. Output The command output contains property names and values based on the command input parameters. VMware, Inc. 302 Programming Guide Parameter Description status If the command is successful, the HTTP status is 201 Created. Header.Location The http response should contain a Location attribute that is formatted as https://$host/iaas-proxyprovider/api/keyPairs/$keypairID. $keypairID Specifies the unique identifier of the new key pair. Example: curl Command curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/iaas-proxy-provider/api/keyPairs -d “ { "name": "TestKeyPair", "computeResourceId": "ca4dcca0-85ce-49dd-8371-4ce7c8e2d5e6", "secretKey": "jmfhkPFLe1xF4LsgxyYDlBH65IjiKsNH3xgeUhNt6AyIcSA2eZsxH9FNFcDst1cRLQUmLYLUCN6ZlrVtD3C5CYAOEE9UplO +YKnAcqUSyXB6PQ3I/NuebdtGrx38fkTJsEpRqxLppWPJpVlHYRO2O7GhhWnE6F3bPwwg3dWwymqWHxBZlCcuEcztovbhN8r7/hKsXK bNSJz +J8DVhPB7PPdHJJ4E/6a9IXkNQs/T0NknCOyc0YcFVpgrc3PMGabi8vd/7v0nEtDARyA8WwAGgtedHGtBo2gciY1Bu/0SNr2yCzsZcq bVeg4ufkjlv0G1Ed1FfGHMh5kuVC7alk2aSI5YkWnS4d9YJYi7diYmc7GmrVW0XWNz4kEMdQBkK+CvMxiZ17jyQD +V4NuM4ydNPJJMqpvoAHtLrAmp/hXhInuf8j/l0mbawWSvUDUA3s4ZE55cFp546MJIrVCRyoMoKfxuHquIPdANRAVs7qo9DGxBiCzjv yBqof21y6dhGCd1q48Dkd72QCj6gGV84lHZ/zXWcz4+aKFRVolNqSZEtZ/9wzdjqYdn/ySl0S5GE2rG/xRsh6g +giB9j4VQOMvC/uvhkYUo3WfTgxi8SeipFIVcbvkkOI0ubPU1xnWdDErjji6UwEtmjajHuiA93GtiWIdeCvyKQWmo9jkkLUmQe4XrmR t3P09FWm8Quwe5Hw6czK0dIODwcHE0Azl0TqLKl1wA39uhGrHoXNypFiOMmRbo1YnfIW23ggEnxRACY1jUZkTewhSbVY4S +XyzvFDcTRpSjWpRUOozYuMSsDnRzCJZQXhg4IYvwTvG+uEUu4+YR +WCrgC6Tk60i3cLSuHnV5k00AWXWwvnPnwYRFxxyzhcSDx4jyyCaysmBo9NHGwNkJU1F94SY5Vp6O0E9EJuViMohF1gc18Q6SXHBNlr p0L7bAMggpmystGIkBNkSRhcDAFflNoS/MTEW0uJoDfe6DczAt9B0YGtHdy3AH/U4ADOPkz5xlQ4EL/rQSSolcBfVhbejVpbktJo4YK B7dzSDcJTSw99Uve +BQjhigVcfxDXme3MrXPO4BeCU891DLaTJyeYYADyGUKZfKFC6iCO9SQfynwK6iE2eYKLpIMcf/C8+rLJVXcy7gkjT/17WCu7mQXMev lIJlaApyytN1eCJcVDsr4N5LURZofnPArromhLy3JWiEJ4dtq+17KPiMff34e/kT +i0ns73Wdy1oblZAi5kwBFMgBjAMex5fGNR1q/wtY1beWaxVw1J5RViaXeXSKO5mttE/dzW6ONeJygjIlpgfwSLwr8JA4GanN1RWGeq RNjfOOGgdufIvDqmBB/klnuGTVgMVWc0caQMzFq07UcXlMsgNOROHBfkzelWB+v0kXHsQ4eSeYVhjnT3CPURr5UMZ8YQ7fm +DltRM1Nw3o9WAJjQJ5xyT2kxou4PHBzoq6JouwrCluig7GQ06lVu2C3nNpyfGKsmFyOlHMaVuRYX9/dJQyibZAg1yDqyI3sIL3CeGr 7ynhOTEEQiAOWqgIUyDvrvc2Ma4RjjI4b3eFfBMkLWqTqs33+/5QktQz +p5JrIb192STI/PwHY51MfkbDErpeNFY479P7yKlZGbB8WVBfFpJCoVTQoZNio1ZhA7nA+rkqNbM4mcHQ +ZaYfxCc1UKO1AYBGS9ARz5OtYQU64Ei7tpWUbsYDXIA9Ss4VRASHvA7M3s +N61TPQ9HZuof/c6TbzOWE0ojtxEyO3sDsBWumm13/61+JT3k0rIdmV25aVvxrUv1S3JLI/o/zGgR9yTOeADIXHWsF4lQyai9MnmEac lHVWmK+LiVZSAfk6auEm+13a24+UM9Mg6ninfzeIq0cjdT3OUweXgDnK0BMGX0wfSIYIrpRrDr9QdVoHGtdqZvJ62F8aITjO8urIK +bXZzwgFQ2JE4SYxojNHPYwBjadFm0A2eVPtOivMYYYr8FCUYtfbjjIS1TyJaKIFhhqs6bA6/PH +NvBmbozpDkH9wg3mQ1SOP5iSMAMue6fx+b/SpOZ5MPnNjRo +VXG3qFl936AB4F1F2ObD27GyjibeYmhQkITtp/yGYCZ68PhCun0/eiEjmXiOUx/5jYGOUEZ1Ddojhc5M/PClR46vQ/3Iyv5pUGPno +wkn34lk6s2PO2axrXvQqTwoiYC3f2p1gp0qYidIzKa2KHrUCOF4hnjQ3v3z93ORMCK3wN5uQ3xMFOd7+1XpetxvG9d7L1lU/sgCVmE hdOSnhLC5Jeq70MVwixPocnJR4nyotPE==" } “ VMware, Inc. 303 Programming Guide Example: JSON Output The output returns an empty HTTP response body and the host information and key pair ID in the header statement. Location: https://vcac148-084-241.eng.mycompany.com/iaas-proxy-provider/api/keyPairs/56 Copy the location URL into a text editor for future use. Query a Key Pair You can use the REST API to query a key pair that is available for the vRealize Automation tenant administrator. Prerequisites n Log in to vRealize Automation as a tenant administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. Procedure u Use the following sample command to query a key pair. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/iaas-proxy-provider/api/keyPairs/26 The following JSON output is returned based on the command input. { "id": 26, "name": "TestKeyPair", "computeResourceId": "ca4dcca0-85ce-49dd-8371-4ce7c8e2d5e6", "secretKey": "" } Syntax for Querying a Key Pair You can use the REST API to query a key pair that is available for the vRealize Automation tenant administrator. Input Use the supported input parameters to control the command output. VMware, Inc. 304 Programming Guide Parameters Description URL https://$host/iaas-proxy-provider/api/keyPairs/$ids Method Get $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $id: Specifies the unique identifier of the key pair. Output The command output contains property names and values based on the command input parameters. Parameters Description $id: Specifies the unique identifier of the key pair. $name: Specifies the name of the key pair. $computeResourceId: Specifies the compute resource ID that is binded to the key pair. $secretKey: Specifies the secret key for the key pair. Example: curl Command curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/iaas-proxy-provider/api/keyPairs/26 Example: JSON Output The following JSON output is returned based on the command input. { "id": 26, "name": "TestKeyPair", "computeResourceId": "ca4dcca0-85ce-49dd-8371-4ce7c8e2d5e6", "secretKey": "" } Update a Key Pair You can use the vRealize Automation REST API to update an existing key pair. Prerequisites n Log in to vRealize Automation as a tenant administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. VMware, Inc. 305 Programming Guide n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. Procedure u Use the following sample command to update a key pair. curl –X PUT --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/iaas-proxy-provider/api/keyPairs/26 -d “ { "id": 26, "name": "TestKeyPair", "computeResourceId": "ca4dcca0-85ce-49dd-8371-4ce7c8e2d5e6", "secretKey": "jmfhkPFLe1xF4LsgxyYDlBH65IjiKsNH3xgeUhNt6AyIcSA2eZsxH9FNFcDst1cRLQUmLYLUCN6ZlrVtD3C5CYAOEE9UplO +YKnAcqUSyXB6PQ3I/NuebdtGrx38fkTJsEpRqxLppWPJpVlHYRO2O7GhhWnE6F3bPwwg3dWwymqWHxBZlCcuEcztovbhN8r7/h KsXKbNSJz +J8DVhPB7PPdHJJ4E/6a9IXkNQs/T0NknCOyc0YcFVpgrc3PMGabi8vd/7v0nEtDARyA8WwAGgtedHGtBo2gciY1Bu/0SNr2yCz sZcqbVeg4ufkjlv0G1Ed1FfGHMh5kuVC7alk2aSI5YkWnS4d9YJYi7diYmc7GmrVW0XWNz4kEMdQBkK+CvMxiZ17jyQD +V4NuM4ydNPJJMqpvoAHtLrAmp/hXhInuf8j/l0mbawWSvUDUA3s4ZE55cFp546MJIrVCRyoMoKfxuHquIPdANRAVs7qo9DGxBi CzjvyBqof21y6dhGCd1q48Dkd72QCj6gGV84lHZ/zXWcz4+aKFRVolNqSZEtZ/9wzdjqYdn/ySl0S5GE2rG/xRsh6g +giB9j4VQOMvC/uvhkYUo3WfTgxi8SeipFIVcbvkkOI0ubPU1xnWdDErjji6UwEtmjajHuiA93GtiWIdeCvyKQWmo9jkkLUmQe4 XrmRt3P09FWm8Quwe5Hw6czK0dIODwcHE0Azl0TqLKl1wA39uhGrHoXNypFiOMmRbo1YnfIW23ggEnxRACY1jUZkTewhSbVY4S +XyzvFDcTRpSjWpRUOozYuMSsDnRzCJZQXhg4IYvwTvG+uEUu4+YR +WCrgC6Tk60i3cLSuHnV5k00AWXWwvnPnwYRFxxyzhcSDx4jyyCaysmBo9NHGwNkJU1F94SY5Vp6O0E9EJuViMohF1gc18Q6SXH BNlrp0L7bAMggpmystGIkBNkSRhcDAFflNoS/MTEW0uJoDfe6DczAt9B0YGtHdy3AH/U4ADOPkz5xlQ4EL/rQSSolcBfVhbejVp bktJo4YKB7dzSDcJTSw99Uve +BQjhigVcfxDXme3MrXPO4BeCU891DLaTJyeYYADyGUKZfKFC6iCO9SQfynwK6iE2eYKLpIMcf/C8+rLJVXcy7gkjT/17WCu7mQ XMevlIJlaApyytN1eCJcVDsr4N5LURZofnPArromhLy3JWiEJ4dtq+17KPiMff34e/kT +i0ns73Wdy1oblZAi5kwBFMgBjAMex5fGNR1q/wtY1beWaxVw1J5RViaXeXSKO5mttE/dzW6ONeJygjIlpgfwSLwr8JA4GanN1R WGeqRNjfOOGgdufIvDqmBB/klnuGTVgMVWc0caQMzFq07UcXlMsgNOROHBfkzelWB+v0kXHsQ4eSeYVhjnT3CPURr5UMZ8YQ7fm +DltRM1Nw3o9WAJjQJ5xyT2kxou4PHBzoq6JouwrCluig7GQ06lVu2C3nNpyfGKsmFyOlHMaVuRYX9/dJQyibZAg1yDqyI3sIL3 CeGr7ynhOTEEQiAOWqgIUyDvrvc2Ma4RjjI4b3eFfBMkLWqTqs33+/5QktQz +p5JrIb192STI/PwHY51MfkbDErpeNFY479P7yKlZGbB8WVBfFpJCoVTQoZNio1ZhA7nA+rkqNbM4mcHQ +ZaYfxCc1UKO1AYBGS9ARz5OtYQU64Ei7tpWUbsYDXIA9Ss4VRASHvA7M3s +N61TPQ9HZuof/c6TbzOWE0ojtxEyO3sDsBWumm13/61+JT3k0rIdmV25aVvxrUv1S3JLI/o/zGgR9yTOeADIXHWsF4lQyai9Mn mEaclHVWmK+LiVZSAfk6auEm +13a24+UM9Mg6ninfzeIq0cjdT3OUweXgDnK0BMGX0wfSIYIrpRrDr9QdVoHGtdqZvJ62F8aITjO8urIK +bXZzwgFQ2JE4SYxojNHPYwBjadFm0A2eVPtOivMYYYr8FCUYtfbjjIS1TyJaKIFhhqs6bA6/PH +NvBmbozpDkH9wg3mQ1SOP5iSMAMue6fx+b/SpOZ5MPnNjRo +VXG3qFl936AB4F1F2ObD27GyjibeYmhQkITtp/yGYCZ68PhCun0/eiEjmXiOUx/5jYGOUEZ1Ddojhc5M/PClR46vQ/3Iyv5pUG Pno +wkn34lk6s2PO2axrXvQqTwoiYC3f2p1gp0qYidIzKa2KHrUCOF4hnjQ3v3z93ORMCK3wN5uQ3xMFOd7+1XpetxvG9d7L1lU/sg CVmEhdOSnhLC5Jeq70MVwixPocnJR4nyotPE==" } “ The output contains an empty HTTP response body and the following status code. 204 No Content VMware, Inc. 306 Programming Guide Syntax for Updating a Key Pair You can update an existing key pair by using the vRealize Automation REST API. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/iaas-proxy-provider/api/keyPairs/$id Method Put $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. HTTP Body Contains the HTTP body that describes the key pair to update and what to update in the identified key pair. n $id: Specifies the unique identifier of the key pair. n $name: n $computeResourceId: Specifies the name of the key pair. Specifies the compute resource ID that is binded to the key pair. n $secretKey: Specifies the secret key for the key pair. Output The command output contains a status statement. Parameter Description status If the command is not successful, the HTTP status is 204 No Content. Example: curl Command curl –X PUT --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/iaas-proxy-provider/api/keyPairs/26 -d “ { "id": 26, "name": "TestKeyPair", "computeResourceId": "ca4dcca0-85ce-49dd-8371-4ce7c8e2d5e6", "secretKey": "jmfhkPFLe1xF4LsgxyYDlBH65IjiKsNH3xgeUhNt6AyIcSA2eZsxH9FNFcDst1cRLQUmLYLUCN6ZlrVtD3C5CYAOEE9UplO +YKnAcqUSyXB6PQ3I/NuebdtGrx38fkTJsEpRqxLppWPJpVlHYRO2O7GhhWnE6F3bPwwg3dWwymqWHxBZlCcuEcztovbhN8r7/hKsXK bNSJz VMware, Inc. 307 Programming Guide +J8DVhPB7PPdHJJ4E/6a9IXkNQs/T0NknCOyc0YcFVpgrc3PMGabi8vd/7v0nEtDARyA8WwAGgtedHGtBo2gciY1Bu/0SNr2yCzsZcq bVeg4ufkjlv0G1Ed1FfGHMh5kuVC7alk2aSI5YkWnS4d9YJYi7diYmc7GmrVW0XWNz4kEMdQBkK+CvMxiZ17jyQD +V4NuM4ydNPJJMqpvoAHtLrAmp/hXhInuf8j/l0mbawWSvUDUA3s4ZE55cFp546MJIrVCRyoMoKfxuHquIPdANRAVs7qo9DGxBiCzjv yBqof21y6dhGCd1q48Dkd72QCj6gGV84lHZ/zXWcz4+aKFRVolNqSZEtZ/9wzdjqYdn/ySl0S5GE2rG/xRsh6g +giB9j4VQOMvC/uvhkYUo3WfTgxi8SeipFIVcbvkkOI0ubPU1xnWdDErjji6UwEtmjajHuiA93GtiWIdeCvyKQWmo9jkkLUmQe4XrmR t3P09FWm8Quwe5Hw6czK0dIODwcHE0Azl0TqLKl1wA39uhGrHoXNypFiOMmRbo1YnfIW23ggEnxRACY1jUZkTewhSbVY4S +XyzvFDcTRpSjWpRUOozYuMSsDnRzCJZQXhg4IYvwTvG+uEUu4+YR +WCrgC6Tk60i3cLSuHnV5k00AWXWwvnPnwYRFxxyzhcSDx4jyyCaysmBo9NHGwNkJU1F94SY5Vp6O0E9EJuViMohF1gc18Q6SXHBNlr p0L7bAMggpmystGIkBNkSRhcDAFflNoS/MTEW0uJoDfe6DczAt9B0YGtHdy3AH/U4ADOPkz5xlQ4EL/rQSSolcBfVhbejVpbktJo4YK B7dzSDcJTSw99Uve +BQjhigVcfxDXme3MrXPO4BeCU891DLaTJyeYYADyGUKZfKFC6iCO9SQfynwK6iE2eYKLpIMcf/C8+rLJVXcy7gkjT/17WCu7mQXMev lIJlaApyytN1eCJcVDsr4N5LURZofnPArromhLy3JWiEJ4dtq+17KPiMff34e/kT +i0ns73Wdy1oblZAi5kwBFMgBjAMex5fGNR1q/wtY1beWaxVw1J5RViaXeXSKO5mttE/dzW6ONeJygjIlpgfwSLwr8JA4GanN1RWGeq RNjfOOGgdufIvDqmBB/klnuGTVgMVWc0caQMzFq07UcXlMsgNOROHBfkzelWB+v0kXHsQ4eSeYVhjnT3CPURr5UMZ8YQ7fm +DltRM1Nw3o9WAJjQJ5xyT2kxou4PHBzoq6JouwrCluig7GQ06lVu2C3nNpyfGKsmFyOlHMaVuRYX9/dJQyibZAg1yDqyI3sIL3CeGr 7ynhOTEEQiAOWqgIUyDvrvc2Ma4RjjI4b3eFfBMkLWqTqs33+/5QktQz +p5JrIb192STI/PwHY51MfkbDErpeNFY479P7yKlZGbB8WVBfFpJCoVTQoZNio1ZhA7nA+rkqNbM4mcHQ +ZaYfxCc1UKO1AYBGS9ARz5OtYQU64Ei7tpWUbsYDXIA9Ss4VRASHvA7M3s +N61TPQ9HZuof/c6TbzOWE0ojtxEyO3sDsBWumm13/61+JT3k0rIdmV25aVvxrUv1S3JLI/o/zGgR9yTOeADIXHWsF4lQyai9MnmEac lHVWmK+LiVZSAfk6auEm+13a24+UM9Mg6ninfzeIq0cjdT3OUweXgDnK0BMGX0wfSIYIrpRrDr9QdVoHGtdqZvJ62F8aITjO8urIK +bXZzwgFQ2JE4SYxojNHPYwBjadFm0A2eVPtOivMYYYr8FCUYtfbjjIS1TyJaKIFhhqs6bA6/PH +NvBmbozpDkH9wg3mQ1SOP5iSMAMue6fx+b/SpOZ5MPnNjRo +VXG3qFl936AB4F1F2ObD27GyjibeYmhQkITtp/yGYCZ68PhCun0/eiEjmXiOUx/5jYGOUEZ1Ddojhc5M/PClR46vQ/3Iyv5pUGPno +wkn34lk6s2PO2axrXvQqTwoiYC3f2p1gp0qYidIzKa2KHrUCOF4hnjQ3v3z93ORMCK3wN5uQ3xMFOd7+1XpetxvG9d7L1lU/sgCVmE hdOSnhLC5Jeq70MVwixPocnJR4nyotPE==" } “ Example: JSON Output The output contains an empty HTTP response body and the following status code. 204 No Content Delete a Key Pair You can use the vRealize Automation REST API to delete a key pair. Prerequisites n Log in to vRealize Automation as a tenant administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. VMware, Inc. 308 Programming Guide Procedure u Use the following sample command to delete a key pair. curl –X “Delete” --insecure -H "Accept:application/json" -H "Authorization: Bearere $token" https://$host/iaas-proxy-provider/api/keyPairs/26 The output contains an empty HTTP response body and the following status code. 204 No Content Syntax for Deleting a Key Pair You can use the vRealize Automation REST API to delete a key pair. Prerequisites n Log in to vRealize Automation as a tenant administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. Input Use the supported input parameters to control the command output. Input Description URL https://$host/iaas-proxy-provider/api/keyPairs/$id Method Delete $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $id: Specifies the unique identifier of the key pair. Output The command output contains a status statement. Parameter Description status If the command is not successful, the HTTP status is 204 No Content. VMware, Inc. 309 Programming Guide Example: curl Command The following example command deletes a key pair. curl –X “Delete” --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/iaas-proxy-provider/api/keyPairs/26 Example: JSON Output The output contains an empty HTTP response body and the following status code. 204 No Content Working with Network Profiles You can use the vRealize Automation IaaS proxy provider service and IPAM service REST API to create, list, and update network profiles. You can access the following types of network profile by using the same programming calls. Different types of network profiles contain different fields. VMware, Inc. 310 Programming Guide Network Profile Type External Description All network profiles use the elements in the object definition for external network. The network definition specifies the network address configuration for the network. The external network definition can specify: n Existing network addresses configured on the vSphere server. They are the external part of the NAT and routed networks types. An external network profile can define a range of static IP addresses available on the external network. n An endpoint that allows access to IP ranges obtained from the supplied VMware internal IPAM provider or an external IPAM provider solution that you have imported and registered in vRealize Orchestrator, such as Infoblox IPAM, and existing network address ranges configured by the IPAM provider software. n An endpoint that allows access to IP ranges obtained from the supplied VMware internal IPAM provider or an external IPAM provider solution that you have imported and registered in vRealize Orchestrator, such as Infoblox IPAM, and existing network address ranges configured by the IPAM provider software. An external network profile with a static IP range is a prerequisite for NAT and routed networks. When you specify a NAT network profile or a Routed network profile, the base object definition for the external network profile is used and additional definitions for the NAT or Routed network profiles are required to complete the profile. NAT An external network that uses network address translation (NAT) to enable one set of IP addresses for external communication and another set for internal communications. With one-to-one NAT networks, every virtual machine is assigned an external IP address from the external network profile and an internal IP address from the NAT network profile. With one-to-many NAT networks, all machines share a single IP address from the external network profile for external communication. A NAT network profile defines local and external networks that use a translation table for mutual communication. Routed A routed network represents a routable IP space divided across subnets that are linked together using Distributed Logical Router (DLR). Every new routed network has the next available subnet assigned to it and is associated with other routed networks that use the same network profile. The virtual machines that are provisioned with routed networks that have the same routed network profile can communicate with each other and the external network. A routed network profile defines a routable space and available subnets. For more information about Distributed Logical Router, see NSX Administration Guide. Get a Network Profile List You can use the vRealize Automation REST API to get a list of current network profiles. Prerequisites n Log in to vRealize Automation as a tenant administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. VMware, Inc. 311 Programming Guide Procedure u Use the following sample command to list all available network profiles. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/ iaas-proxy-provider/api/network/profiles The following JSON output is returned based on the command input. { "links": [ ], "content": [ { "@type": "NATNetworkProfile", "id": "599541aa-ffb0-4a37-9483-4353f3fc6be3", "name": "NATTest", "description": "", "createdDate": "2014-11-11T02:29:09.000Z", "lastModifiedDate": "2014-11-11T02:29:09.000Z", "isHidden": false, "definedRanges": [ { "id": "9f7d8025-bd4c-4560-9b41-9ce455ee49ae", "name": "range", "description": "", "beginIPv4Address": "10.118.190.110", "endIPv4Address": "10.118.190.115", "state": "UNALLOCATED", "createdDate": "2014-11-11T02:29:05.000Z", "lastModifiedDate": "2014-11-11T02:29:05.000Z", "definedAddresses": [ { "id": "6e7dc8c3-dc64-4ebd-a282-05852010310f", "name": null, "description": null, "IPv4Address": "10.118.190.111", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:29:05.000Z", "lastModifiedDate": "2014-11-11T02:29:05.000Z" }, { "id": "f6802100-1d7e-4f31-bdeb-1b27f7e77766", "name": null, "description": null, "IPv4Address": "10.118.190.115", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:29:05.000Z", VMware, Inc. 312 Programming Guide "lastModifiedDate": "2014-11-11T02:29:05.000Z" }, { "id": "f6deba8c-fbf4-4ea0-9d9c-325e9db2f13e", "name": null, "description": null, "IPv4Address": "10.118.190.114", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:29:05.000Z", "lastModifiedDate": "2014-11-11T02:29:05.000Z" }, { "id": "9d5a9d25-26d7-4ce3-93a2-61242a88c5b2", "name": null, "description": null, "IPv4Address": "10.118.190.110", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:29:05.000Z", "lastModifiedDate": "2014-11-11T02:29:05.000Z" }, { "id": "2b616f1a-dc35-4caa-8ee7-6494ca50db57", "name": null, "description": null, "IPv4Address": "10.118.190.113", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:29:05.000Z", "lastModifiedDate": "2014-11-11T02:29:05.000Z" }, { "id": "9dd5d265-ec23-42be-9bdb-734c11b1e315", "name": null, "description": null, "IPv4Address": "10.118.190.112", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:29:05.000Z", "lastModifiedDate": "2014-11-11T02:29:05.000Z" }, ] } ], "profileType": "NAT", "subnetMask": "255.255.255.0", "gatewayAddress": "10.118.190.230", "primaryDnsAddress": "10.110.182.45", "secondaryDnsAddress": "", VMware, Inc. 313 Programming Guide "dnsSuffix": "mycompany.com", "dnsSearchSuffix": "", "primaryWinsAddress": "10.0.0.1", "secondaryWinsAddress": "", "dhcpStartIPAddress": null, "dhcpEndIPAddress": null, "leaseTimeInSeconds": 0 }, { "@type": "PrivateNetworkProfile", "id": "594e4016-b067-4d19-aa81-63502675f925", "name": "privateTest", "description": "", "createdDate": "2014-11-11T02:26:44.000Z", "lastModifiedDate": "2014-11-11T02:26:44.000Z", "isHidden": false, "definedRanges": [ { "id": "8827193e-f1c3-493e-8bcd-1b153f2a5e74", "name": "range", "description": "", "beginIPv4Address": "10.118.190.110", "endIPv4Address": "10.118.190.112", "state": "UNALLOCATED", "createdDate": "2014-11-11T02:25:57.000Z", "lastModifiedDate": "2014-11-11T02:25:57.000Z", "definedAddresses": [ { "id": "262a4273-1e75-4c23-8fb8-088473521b19", "name": null, "description": null, "IPv4Address": "10.118.190.111", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:25:57.000Z", "lastModifiedDate": "2014-11-11T02:25:57.000Z" }, { "id": "7eebd0ad-0dde-4fa1-aad3-750498214caf", "name": null, "description": null, "IPv4Address": "10.118.190.110", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:25:57.000Z", "lastModifiedDate": "2014-11-11T02:25:57.000Z" }, { "id": "37ca8368-5d19-4d23-a6b8-7b233bb2320d", "name": null, "description": null, "IPv4Address": "10.118.190.112", "IPSortValue": 0, VMware, Inc. 314 Programming Guide "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:25:57.000Z", "lastModifiedDate": "2014-11-11T02:25:57.000Z" }, ] } ], "profileType": "PRIVATE", "subnetMask": "255.255.255.0", "gatewayAddress": "10.118.190.230", "dhcpStartIPAddress": null, "dhcpEndIPAddress": null, "leaseTimeInSeconds": 0 }, { "@type": "RoutedNetworkProfile", "id": "a3dbfc76-7eab-4c1f-8f59-8fcc0b50ec6c", "name": "routedTest", "description": "", "createdDate": "2014-11-11T02:31:11.000Z", "lastModifiedDate": "2014-11-11T02:31:11.000Z", "isHidden": false, "definedRanges": [ { "id": "4d9b291a-841f-4f62-b03e-83781133024c", "name": "Range 1", "description": "", "beginIPv4Address": "10.118.183.1", "endIPv4Address": "10.118.183.254", "state": "UNALLOCATED", "createdDate": "2014-11-11T02:30:34.000Z", "lastModifiedDate": "2014-11-11T02:30:34.000Z", "definedAddresses": [ ] } ], "profileType": "ROUTED", "subnetMask": "255.255.254.0", "primaryDnsAddress": "10.110.182.45", "secondaryDnsAddress": "", "dnsSuffix": "mycompany.com", "dnsSearchSuffix": "", "primaryWinsAddress": "10.0.0.1", "secondaryWinsAddress": "", "baseIP": "10.118.183.1" }, { "@type": "ExternalNetworkProfile", "id": "68b6a183-fc8a-4592-af23-92f8d410ee32", "name": "externalTest", "description": "", "createdDate": "2014-11-11T02:24:07.000Z", "lastModifiedDate": "2014-11-11T02:24:07.000Z", VMware, Inc. 315 Programming Guide "isHidden": false, "definedRanges": [ { "id": "3a85a049-522f-4b64-8f60-6e7b252ad204", "name": "range", "description": "", "beginIPv4Address": "10.110.183.200", "endIPv4Address": "10.110.183.201", "state": "UNALLOCATED", "createdDate": "2014-11-11T02:23:38.000Z", "lastModifiedDate": "2014-11-11T02:23:38.000Z", "definedAddresses": [ { "id": "f229ea1a-18de-4dae-ae7b-0cec7feaa99b", "name": null, "description": null, "IPv4Address": "10.110.183.201", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:23:38.000Z", "lastModifiedDate": "2014-11-11T02:23:38.000Z" }, { "id": "cd39e786-6490-4c95-8cf7-d6e3b6a0ba67", "name": null, "description": null, "IPv4Address": "10.110.183.200", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:23:38.000Z", "lastModifiedDate": "2014-11-11T02:23:38.000Z" }, ] }, { "id": "67acdc6f-d0b9-4f47-a74b-ea58ff9ce074", "name": "range2", "description": "", "beginIPv4Address": "10.110.183.180", "endIPv4Address": "10.110.183.183", "state": "UNALLOCATED", "createdDate": "2014-11-11T02:24:04.000Z", "lastModifiedDate": "2014-11-11T02:24:04.000Z", "definedAddresses": [ { "id": "37b5c7d1-b82f-4961-a7cc-0117d3610ed7", "name": null, "description": null, "IPv4Address": "10.110.183.182", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:24:04.000Z", VMware, Inc. 316 Programming Guide "lastModifiedDate": "2014-11-11T02:24:04.000Z" }, "id": "43d8bae4-7b78-40d2-a9ef-350d28901c24", "name": null, "description": null, "IPv4Address": "10.110.183.180", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:24:04.000Z", "lastModifiedDate": "2014-11-11T02:24:04.000Z" }, { "id": "c270ce8e-a418-4d02-89db-3b84f6816a75", "name": null, "description": null, "IPv4Address": "10.110.183.181", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:24:04.000Z", "lastModifiedDate": "2014-11-11T02:24:04.000Z" }, { "id": "684bbe43-29ce-4113-92c7-43921c943099", "name": null, "description": null, "IPv4Address": "10.110.183.183", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:24:04.000Z", "lastModifiedDate": "2014-11-11T02:24:04.000Z" }, ] } ], "profileType": "EXTERNAL", "IPAMEndpointId": null, "subnetMask": "255.255.255.0", "gatewayAddress": "10.110.183.253", "primaryDnsAddress": "10.110.182.45", "secondaryDnsAddress": "", "dnsSuffix": "mycompany.com", "dnsSearchSuffix": "", "primaryWinsAddress": "10.0.0.1", "secondaryWinsAddress": "" } ], "metadata": { "size": 0, "totalElements": 4, "totalPages": 1, VMware, Inc. 317 Programming Guide "number": 1, "offset": 0 } } Syntax for Getting a Network Profile List You can use the vRealize Automation IaaS proxy provider REST API to get a list of current network profiles. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/iaas-proxy-provider/api/network/profiles Method Get $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. Output The command output contains property names and values based on the command input parameters. VMware, Inc. 318 Programming Guide Parameter Description Links Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n Self refers to the object that was returned or requested. This parameter does not appear when you query a single profile. n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. Content Specifies an array of data rows, each of which represents one of the tenant objects returned in a pageable list. Each tenant object can contain the following information: n @type: Specifies one of the following network profile type values: n ExternalNetworkProfile n NATNetworkProfile n PrivateNetworkProfile n RoutedNetworkProfile n $id: n $name: Specifies the unique network profile identifier. Specifies the network profile name. n createdDate: Specifies the date and time that the network profile was created. n lastModifiedDate: Specifies the date and time that the network profile was last modified. n isHidden: Specifies if the network profile is hidden from the vRealize Automation user interface. n definedRanges: Specifies the IP range array that is defined for the network profile. n profileType: Specifies the network profile type as one of the following types: n n VMware, Inc. EXTERNAL n NAT n ROUTED IPAMEndpointId: 319 Programming Guide Parameter Description If you are creating or querying an external network profile that uses extrernal, IPAM , specifies the endpoint ID for the external IPAM provider. If you are creating a network profile and the profile does not use external IPAM, code null for this value. n subnetMask: n gatewayAddress: Specifies the subnet mask. Specifies the IP address of the network gateway. n primaryDnsAddress: Specifies the IP address of the primary DNS server. This parameter is only available for external, NAT, and routed network profiles. n secondaryDnsAddress: Specifies the IP address of a secondary DNS server. This parameter is only available for external, NAT, and routed network profiles. n dnsSuffix: Specifies the DNS suffix. This parameter is only available for external, NAT, and routed network profiles. n dnsSearchSuffix: Specifies the DNS search suffix. This parameter is only available for external, NAT, and routed network profiles. n primaryWinsAddress: Specifies the IP address of the primary Wins server. This parameter is only available for external, NAT, and routed network profiles. n secondaryWinsAddress: Specifies the IP address of secondary Wins server. This parameter is only available for external, NAT, and routed network profiles. n dhcpStartIPAddress: Specifies the start IP address of the DHCP server. This parameter is only supported by NAT and private network profiles. n dhcpEndIPAddress: Specifies the end IP address of the DHCP server. This parameter is only supported by NAT and private network profiles. n leaseTimeInSeconds: Specifies the lease time for the DHCP server. This parameter is only supported by NAT and private network profiles. VMware, Inc. 320 Programming Guide Parameter Description n baseIP: Specifies the base IP address. This parameter is only supported by routed network profiles. Metadata Specifies the following paging-related data: n Size: Specifies the maximum number of rows per page. n totalElement: Specifies the number of rows returned. This parameter is not output when you query for a single profile. n totalPages: Specifies the total number of pages of data available. n Number: Specifies the current page number. n Offset: Specifies the number of rows skipped. Example: curl Command The following example command returns a list of network profiles. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/ iaas-proxy-provider/api/network/profiles Example: JSON Output The following JSON output is returned based on the command input. { "links": [ ], "content": [ { "@type": "NATNetworkProfile", "id": "599541aa-ffb0-4a37-9483-4353f3fc6be3", "name": "NATTest", "description": "", "createdDate": "2014-11-11T02:29:09.000Z", "lastModifiedDate": "2014-11-11T02:29:09.000Z", "isHidden": false, "definedRanges": [ { "id": "9f7d8025-bd4c-4560-9b41-9ce455ee49ae", "name": "range", "description": "", "beginIPv4Address": "10.118.190.110", "endIPv4Address": "10.118.190.115", "state": "UNALLOCATED", "createdDate": "2014-11-11T02:29:05.000Z", "lastModifiedDate": "2014-11-11T02:29:05.000Z", "definedAddresses": [ { "id": "6e7dc8c3-dc64-4ebd-a282-05852010310f", VMware, Inc. 321 Programming Guide "name": null, "description": null, "IPv4Address": "10.118.190.111", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:29:05.000Z", "lastModifiedDate": "2014-11-11T02:29:05.000Z" }, { "id": "f6802100-1d7e-4f31-bdeb-1b27f7e77766", "name": null, "description": null, "IPv4Address": "10.118.190.115", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:29:05.000Z", "lastModifiedDate": "2014-11-11T02:29:05.000Z" }, { "id": "f6deba8c-fbf4-4ea0-9d9c-325e9db2f13e", "name": null, "description": null, "IPv4Address": "10.118.190.114", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:29:05.000Z", "lastModifiedDate": "2014-11-11T02:29:05.000Z" }, { "id": "9d5a9d25-26d7-4ce3-93a2-61242a88c5b2", "name": null, "description": null, "IPv4Address": "10.118.190.110", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:29:05.000Z", "lastModifiedDate": "2014-11-11T02:29:05.000Z" }, { "id": "2b616f1a-dc35-4caa-8ee7-6494ca50db57", "name": null, "description": null, "IPv4Address": "10.118.190.113", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:29:05.000Z", "lastModifiedDate": "2014-11-11T02:29:05.000Z" }, { "id": "9dd5d265-ec23-42be-9bdb-734c11b1e315", VMware, Inc. 322 Programming Guide "name": null, "description": null, "IPv4Address": "10.118.190.112", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:29:05.000Z", "lastModifiedDate": "2014-11-11T02:29:05.000Z" }, ] } ], "profileType": "NAT", "subnetMask": "255.255.255.0", "gatewayAddress": "10.118.190.230", "primaryDnsAddress": "10.110.182.45", "secondaryDnsAddress": "", "dnsSuffix": "mycompany.com", "dnsSearchSuffix": "", "primaryWinsAddress": "10.0.0.1", "secondaryWinsAddress": "", "dhcpStartIPAddress": null, "dhcpEndIPAddress": null, "leaseTimeInSeconds": 0 }, { "@type": "PrivateNetworkProfile", "id": "594e4016-b067-4d19-aa81-63502675f925", "name": "privateTest", "description": "", "createdDate": "2014-11-11T02:26:44.000Z", "lastModifiedDate": "2014-11-11T02:26:44.000Z", "isHidden": false, "definedRanges": [ { "id": "8827193e-f1c3-493e-8bcd-1b153f2a5e74", "name": "range", "description": "", "beginIPv4Address": "10.118.190.110", "endIPv4Address": "10.118.190.112", "state": "UNALLOCATED", "createdDate": "2014-11-11T02:25:57.000Z", "lastModifiedDate": "2014-11-11T02:25:57.000Z", "definedAddresses": [ { "id": "262a4273-1e75-4c23-8fb8-088473521b19", "name": null, "description": null, "IPv4Address": "10.118.190.111", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:25:57.000Z", "lastModifiedDate": "2014-11-11T02:25:57.000Z" VMware, Inc. 323 Programming Guide }, { "id": "7eebd0ad-0dde-4fa1-aad3-750498214caf", "name": null, "description": null, "IPv4Address": "10.118.190.110", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:25:57.000Z", "lastModifiedDate": "2014-11-11T02:25:57.000Z" }, { "id": "37ca8368-5d19-4d23-a6b8-7b233bb2320d", "name": null, "description": null, "IPv4Address": "10.118.190.112", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:25:57.000Z", "lastModifiedDate": "2014-11-11T02:25:57.000Z" }, ] } ], "profileType": "PRIVATE", "subnetMask": "255.255.255.0", "gatewayAddress": "10.118.190.230", "dhcpStartIPAddress": null, "dhcpEndIPAddress": null, "leaseTimeInSeconds": 0 }, { "@type": "RoutedNetworkProfile", "id": "a3dbfc76-7eab-4c1f-8f59-8fcc0b50ec6c", "name": "routedTest", "description": "", "createdDate": "2014-11-11T02:31:11.000Z", "lastModifiedDate": "2014-11-11T02:31:11.000Z", "isHidden": false, "definedRanges": [ { "id": "4d9b291a-841f-4f62-b03e-83781133024c", "name": "Range 1", "description": "", "beginIPv4Address": "10.118.183.1", "endIPv4Address": "10.118.183.254", "state": "UNALLOCATED", "createdDate": "2014-11-11T02:30:34.000Z", "lastModifiedDate": "2014-11-11T02:30:34.000Z", "definedAddresses": [ ] } VMware, Inc. 324 Programming Guide ], "profileType": "ROUTED", "subnetMask": "255.255.254.0", "primaryDnsAddress": "10.110.182.45", "secondaryDnsAddress": "", "dnsSuffix": "mycompany.com", "dnsSearchSuffix": "", "primaryWinsAddress": "10.0.0.1", "secondaryWinsAddress": "", "baseIP": "10.118.183.1" }, { "@type": "ExternalNetworkProfile", "id": "68b6a183-fc8a-4592-af23-92f8d410ee32", "name": "externalTest", "description": "", "createdDate": "2014-11-11T02:24:07.000Z", "lastModifiedDate": "2014-11-11T02:24:07.000Z", "isHidden": false, "definedRanges": [ { "id": "3a85a049-522f-4b64-8f60-6e7b252ad204", "name": "range", "description": "", "beginIPv4Address": "10.110.183.200", "endIPv4Address": "10.110.183.201", "state": "UNALLOCATED", "createdDate": "2014-11-11T02:23:38.000Z", "lastModifiedDate": "2014-11-11T02:23:38.000Z", "definedAddresses": [ { "id": "f229ea1a-18de-4dae-ae7b-0cec7feaa99b", "name": null, "description": null, "IPv4Address": "10.110.183.201", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:23:38.000Z", "lastModifiedDate": "2014-11-11T02:23:38.000Z" }, { "id": "cd39e786-6490-4c95-8cf7-d6e3b6a0ba67", "name": null, "description": null, "IPv4Address": "10.110.183.200", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:23:38.000Z", "lastModifiedDate": "2014-11-11T02:23:38.000Z" }, ] }, { VMware, Inc. 325 Programming Guide "id": "67acdc6f-d0b9-4f47-a74b-ea58ff9ce074", "name": "range2", "description": "", "beginIPv4Address": "10.110.183.180", "endIPv4Address": "10.110.183.183", "state": "UNALLOCATED", "createdDate": "2014-11-11T02:24:04.000Z", "lastModifiedDate": "2014-11-11T02:24:04.000Z", "definedAddresses": [ { "id": "37b5c7d1-b82f-4961-a7cc-0117d3610ed7", "name": null, "description": null, "IPv4Address": "10.110.183.182", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:24:04.000Z", "lastModifiedDate": "2014-11-11T02:24:04.000Z" }, "id": "43d8bae4-7b78-40d2-a9ef-350d28901c24", "name": null, "description": null, "IPv4Address": "10.110.183.180", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:24:04.000Z", "lastModifiedDate": "2014-11-11T02:24:04.000Z" }, { "id": "c270ce8e-a418-4d02-89db-3b84f6816a75", "name": null, "description": null, "IPv4Address": "10.110.183.181", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:24:04.000Z", "lastModifiedDate": "2014-11-11T02:24:04.000Z" }, { "id": "684bbe43-29ce-4113-92c7-43921c943099", "name": null, "description": null, "IPv4Address": "10.110.183.183", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:24:04.000Z", "lastModifiedDate": "2014-11-11T02:24:04.000Z" }, ] } VMware, Inc. 326 Programming Guide ], "profileType": "EXTERNAL", "IPAMEndpointId": null, "subnetMask": "255.255.255.0", "gatewayAddress": "10.110.183.253", "primaryDnsAddress": "10.110.182.45", "secondaryDnsAddress": "", "dnsSuffix": "mycompany.com", "dnsSearchSuffix": "", "primaryWinsAddress": "10.0.0.1", "secondaryWinsAddress": "" } ], "metadata": { "size": 0, "totalElements": 4, "totalPages": 1, "number": 1, "offset": 0 } } Create a Network Profile You can use the vRealize Automation IaaS proxy provider REST API to create an external, NAT, or routed network profile. Prerequisites n Log in to vRealize Automation as a tenant administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n If you are using an external IPAM provider solution, verify that you have access to an endpoint for the IPAM provider solution software. n If you are creating an network profile using external IPAM and are specifying definedRanges or definedAddresses as part of the profile that you are creating, make sure that you know what address ranges and TCP/IP addresses are actually configured on the external IPAM provider's device. VMware, Inc. 327 Programming Guide Procedure u Use the following sample command to create a network profile. You can create an external, NAT, or routed network profile. The code in the sample command creates an external network profile without IPAM. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/iaas-proxy-provider/api/$networkProfileID -d “ { "@type": "ExternalNetworkProfile", "name": "externalTestCreate", "description": "", "isHidden": false, "definedRanges": [ { "name": "range", "description": "", "beginIPv4Address": "10.110.183.221", "endIPv4Address": "10.110.183.240", "state": "UNALLOCATED" } ], "profileType": "EXTERNAL", "IPAMEndpointId": null, "subnetMask": "255.255.255.0", "gatewayAddress": "10.110.183.253", "primaryDnsAddress": "10.110.182.45", "secondaryDnsAddress": "", "dnsSuffix": "mycompany.com", "dnsSearchSuffix": "", "primaryWinsAddress": "10.0.0.1", "secondaryWinsAddress": "" } “ The JSON output consists of a location URL, which points to the newly created network profile. The output contains an empty HTTP response body and the following or similar header statement. Copy the location URL into a text editor for future use. Location: https://vcac148-084-241.eng.mycompany.com/iaas-proxy-provider/api/network/profiles/263b80f5d34f-47f2-b0b1-5a3db991c2e9 Syntax for Creating an External Network Profile Without IPAM You can use the vRealize Automation REST API to create an external, NAT, private, or routed network profile. Input Use the supported input parameters to control the command output. VMware, Inc. 328 Programming Guide Input Description URL https://$host/iaas-proxy-provider/api/network/profiles Method Post $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. HTTP Body The HTTP body describes the network profile to create. Sample HTTP body field values are presented in the JSON Output section of the Syntax for Getting a Network Profile List topic. Format your HTTP body using this content as reference. Output The command output contains property names and values based on the command input parameters. Property Description status If the command is successful, the HTTP status is 201 Created. Header.Location The HTTP response should contain a Location attribute that is formatted as https://$host/iaas-proxyprovider/api/network/profiles/$networkProfileID. $networkProfileID Specifies the unique identifier of the new network profile. Example: curl Command The following example command creates an external network profile without IPAM. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/iaas-proxy-provider/api/$networkProfileID -d “ { "@type": "ExternalNetworkProfile", "name": "externalTestCreate", "description": "", "isHidden": false, "definedRanges": [ { "name": "range", "description": "", "beginIPv4Address": "10.110.183.221", "endIPv4Address": "10.110.183.240", "state": "UNALLOCATED" } ], "profileType": "EXTERNAL", "IPAMEndpointId": null, "subnetMask": "255.255.255.0", "gatewayAddress": "10.110.183.253", "primaryDnsAddress": "10.110.182.45", "secondaryDnsAddress": "", VMware, Inc. 329 Programming Guide "dnsSuffix": "mycompany.com", "dnsSearchSuffix": "", "primaryWinsAddress": "10.0.0.1", "secondaryWinsAddress": "" } “ Example: JSON Output The JSON output consists of a location URL, which points to the newly created network profile. The output contains an empty HTTP response body and the following or similar header statement. Copy the location URL into a text editor for future use. Location: https://vcac148-084-241.eng.mycompany.com/iaas-proxy-provider/api/network/profiles/263b80f5-d34f-47f2b0b1-5a3db991c2e9 Copy the location URL into a text editor for future use. Syntax for Creating an External Network Profile Using External IPAM You can use the vRealize Automation REST API to create a external network profile using external IPAM. Input Use the supported input parameters to control the command output. Input Description URL https://$host/iaas-proxy-provider/api/network/profiles Method Post $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. VMware, Inc. 330 Programming Guide Input Description $token Specifies a valid HTTP bearer token with necessary credentials. HTTP Body The HTTP body specifies the information for creating an external IPAM profile. n profileType Specify EXTERNAL for this paramter. n id Specifies null. n name Specifies the name of the profile. n IPAMEndpointId Specifies the endpoint ID for an external IPAM provider. n addressSpaceExternalId Must specify the value that is chosen in the vRealize Automation UI for Address Space. n description Optionally, can specify a description for the profile. If you do not provide a description, code "null" for this parameter. n definedRanges Specifies parameters that set up defined address ranges: n externalId n name n description n state n beginIPv4Address Specify "UNALLOCATED" for this value. Specify "null" for this parameter. n endIPv4Address Specify "null" for this parameter. Output The command output contains property names and values based on the command input parameters. Property Description status The http response should contain a Location attribute that is formatted as https://$host/iaas-proxy-provider/api/keyPairs/$keypairID. Header.Location The HTTP response should contain a Location attribute that is formatted as https://$host/iaas-proxyprovider/api/network/profiles/$networkProfileID. $networkProfileID VMware, Inc. Specifies the unique identifier of the new network profile. 331 Programming Guide Example: curl Command The following example command creates an external IPAM profile. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/iaas-proxy-provider/api/$networkProfileID -d “ { "profileType" : "EXTERNAL", "id" : null, "@type" : "ExternalNetworkProfile", "name" : "External IPAM", "IPAMEndpointId" : "c20f305c-07a5-4ba7-88ac-35da7b9713e0", "addressSpaceExternalId" : "address-space-4", "description" : null, "definedRanges" : [{ "externalId" : "network-1", "name" : "192.168.1.0/24", "description" : "Created by vRO package stub workflow", "state" : "UNALLOCATED", "beginIPv4Address" : null, "endIPv4Address" : null } ] } Example: JSON Output The output contains an empty HTTP response body and the location and network profile ID in the header statement. Location: https://vcac148-084-241.eng.mycompany.com/iaas-proxy-provider/api/network/profiles/263b80f5-d34f-47f2b0b1-5a3db991c2e9 Copy the location URL into a text editor for future use. Query a Network Profile You can use the REST API to query and display an external, NAT, private, or routed network profile. For example, you can query an external network profile and use it as the basis for creating a different type of network profile. Prerequisites n Log in to vRealize Automation as a tenant administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. VMware, Inc. 332 Programming Guide n Obtain the network profile ID to query. See Get a Network Profile List. Procedure u Use the following command to query the existing network profile ID 68b6a183-fc8a-4592af23-92f8d410ee32. Note The output shown in the following example, shows profile for one address range. A network profile can also contain multiple ranges. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/ iaas-proxy-provider/api/network/profiles/68b6a183-fc8a-4592-af23-92f8d410ee32 The following JSON output is returned based on the command input. { "@type": "ExternalNetworkProfile", "id": "68b6a183-fc8a-4592-af23-92f8d410ee32", "name": "externalTest", "description": "", "createdDate": "2014-11-11T02:24:07.000Z", "lastModifiedDate": "2014-11-11T02:24:07.000Z", "isHidden": false, "definedRanges": [ { "id": "3a85a049-522f-4b64-8f60-6e7b252ad204", "name": "range", "description": "", "beginIPv4Address": "10.110.183.200", "endIPv4Address": "10.110.183.201", "state": "UNALLOCATED", "createdDate": "2014-11-11T02:23:38.000Z", "lastModifiedDate": "2014-11-11T02:23:38.000Z", "definedAddresses": [ { "id": "f229ea1a-18de-4dae-ae7b-0cec7feaa99b", "name": null, "description": null, "IPv4Address": "10.110.183.201", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:23:38.000Z", "lastModifiedDate": "2014-11-11T02:23:38.000Z" }, { "id": "cd39e786-6490-4c95-8cf7-d6e3b6a0ba67", "name": null, "description": null, "IPv4Address": "10.110.183.200", "IPSortValue": 0, "state": "UNALLOCATED", VMware, Inc. 333 Programming Guide "hostName": "", "createdDate": "2014-11-11T02:23:38.000Z", "lastModifiedDate": "2014-11-11T02:23:38.000Z" }, } ], "profileType": "EXTERNAL", "IPAMEndpointId": null, "subnetMask": "255.255.255.0", "gatewayAddress": "10.110.183.253", "primaryDnsAddress": "10.110.182.45", "secondaryDnsAddress": "", "dnsSuffix": "mycompany.com", "dnsSearchSuffix": "", "primaryWinsAddress": "10.0.0.1", "secondaryWinsAddress": "" } Syntax for Querying a Network Profile You can use the vRealize Automation REST API to query and display an external, NAT,or routed network profile. For example, you can query an external network profile and use it as the basis for creating a different type of network profile. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/iaas-proxy-provider/api/network/profiles/$id Method Get $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $id: Specifies the unique network profile identifier. Output The command output contains property names and values based on the command input parameters. VMware, Inc. 334 Programming Guide Parameter Description Links Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n Self refers to the object that was returned or requested. This property does not exist when you query for a single profile. n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. Content Specifies an array of data rows, each of which represents one of the objects returned in a pageable list. Each object contains the following information: n @type: Specifies one of the following network profile type values: n n ExternalNetworkProfile n NATNetworkProfile n RoutedNetworkProfile $id: Specifies the unique network profile identifier. n $name: Specifies the network profile name. n createdDate: Specifies the date and time that the network profile was created. n lastModifiedDate: Specifies the date and time that the network profile was last modified. n isHidden: Specifies if the network profile is hidden from the vRealize Automation user interface. n definedRanges: Specifies the IP range array that is defined for the network profile. n profileType: Specifies the network profile type as one of the following types: VMware, Inc. n EXTERNAL n NAT 335 Programming Guide Parameter Description n n ROUTED IPAMEndpointId If you are querying an external network profile that uses external IPAM, shows the endpoint ID for the external IPAM provider. n subnetMask: n gatewayAddress: Specifies the subnet mask. Specifies the IP address of the network gateway. n primaryDnsAddress: Specifies the IP address of the primary DNS server. This parameter is only available for external, NAT, and routed network profiles. n secondaryDnsAddress: Specifies the IP address of a secondary DNS server. This parameter is only available for external, NAT, and routed network profiles. n dnsSuffix: Specifies the DNS suffix. This parameter is only available for external, NAT, and routed network profiles. n dnsSearchSuffix: Specifies the DNS search suffix. This parameter is only available for external, NAT, and routed network profiles. n primaryWinsAddress: Specifies the IP address of the primary Wins server. This parameter is only available for external, NAT, and routed network profiles. n secondaryWinsAddress: Specifies the IP address of secondary Wins server. This parameter is only available for external, NAT, and routed network profiles. n dhcpStartIPAddress: Specifies the start IP address of the DHCP server. This parameter is only supported by NAT network profiles. n dhcpEndIPAddress: Specifies the end IP address of the DHCP server. This parameter is only supported by NAT network profiles. n leaseTimeInSeconds: Specifies the lease time for the DHCP server. This parameter is only supported by NAT network profiles. n baseIP: Specifies the base IP address. This parameter is only supported by routed network profiles. Metadata VMware, Inc. Specifies the following paging-related data: 336 Programming Guide Parameter Description n Size: Specifies the maximum number of rows per page. n totalElement: Specifies the number of rows returned. This parameter is not output when you query for a single profile. n totalPages: Specifies the total number of pages of data available. n Number: Specifies the current page number. n Offset: Specifies the number of rows skipped. Example: curl Command The following example command queries the existing network profile ID 68b6a183-fc8a-4592af23-92f8d410ee32. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/ iaas-proxy-provider/api/network/profiles/68b6a183-fc8a-4592-af23-92f8d410ee32 Example: JSON Output The following JSON output is returned based on the command input. { "@type": "ExternalNetworkProfile", "id": "68b6a183-fc8a-4592-af23-92f8d410ee32", "name": "externalTest", "description": "", "createdDate": "2014-11-11T02:24:07.000Z", "lastModifiedDate": "2014-11-11T02:24:07.000Z", "isHidden": false, "definedRanges": [ { "id": "3a85a049-522f-4b64-8f60-6e7b252ad204", "name": "range", "description": "", "beginIPv4Address": "10.110.183.200", "endIPv4Address": "10.110.183.201", "state": "UNALLOCATED", "createdDate": "2014-11-11T02:23:38.000Z", "lastModifiedDate": "2014-11-11T02:23:38.000Z", "definedAddresses": [ { "id": "f229ea1a-18de-4dae-ae7b-0cec7feaa99b", "name": null, "description": null, "IPv4Address": "10.110.183.201", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:23:38.000Z", "lastModifiedDate": "2014-11-11T02:23:38.000Z" }, VMware, Inc. 337 Programming Guide { "id": "cd39e786-6490-4c95-8cf7-d6e3b6a0ba67", "name": null, "description": null, "IPv4Address": "10.110.183.200", "IPSortValue": 0, "state": "UNALLOCATED", "hostName": "", "createdDate": "2014-11-11T02:23:38.000Z", "lastModifiedDate": "2014-11-11T02:23:38.000Z" }, } ], "profileType": "EXTERNAL", "IPAMEndpointId": null, "subnetMask": "255.255.255.0", "gatewayAddress": "10.110.183.253", "primaryDnsAddress": "10.110.182.45", "secondaryDnsAddress": "", "dnsSuffix": "mycompany.com", "dnsSearchSuffix": "", "primaryWinsAddress": "10.0.0.1", "secondaryWinsAddress": "" } Update a Network Profile You can use the vRealize Automation REST API to update an existing network profile. Prerequisites n Log in to vRealize Automation as a tenant administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Obtain the network profile ID to query. See Get a Network Profile List. Procedure u Update the network profile. The following example command updates the network profile 263b80f5-d34f-47f2b0b1-5a3db991c2e9. curl –X PUT --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/iaas-proxy-provider/api/network/profiles/263b80f5-d34f-47f2-b0b1-5a3db991c2e9 -d “ { "@type": "ExternalNetworkProfile", "id": "263b80f5-d34f-47f2-b0b1-5a3db991c2e9", VMware, Inc. 338 Programming Guide "name": "externalTestEdit", "description": "", "createdDate": "2014-11-16T09:11:55.000Z", "lastModifiedDate": "2014-11-16T09:11:55.000Z", "isHidden": false, "definedRanges": [ { "id": "ce266d4c-5fbb-47a9-a391-c77444c20b09", "name": "range", "description": "", "beginIPv4Address": "10.110.183.239", "endIPv4Address": "10.110.183.240", "state": "UNALLOCATED", "createdDate": "2014-11-16T09:11:55.000Z", "lastModifiedDate": "2014-11-16T09:11:55.000Z", "definedAddresses": [ ] } ], "profileType": "EXTERNAL", "IPAMEndpointId": null, "subnetMask": "255.255.255.0", "gatewayAddress": "10.110.183.253", "primaryDnsAddress": "10.110.182.45", "secondaryDnsAddress": "", "dnsSuffix": "mycompany.com", "dnsSearchSuffix": "", "primaryWinsAddress": "10.0.0.1", "secondaryWinsAddress": "" } “ The output contains an empty HTTP response body and the following status code. 204 No Content Syntax for Updating a Network Profile You can use the vRealize Automation IaaS proxy provider service REST API to update an existing network profile. Input Use the supported input parameters to control the command output. Parameter Description URL https://$host/iaas-proxy-provider/api/network/profiles/$id Method Put VMware, Inc. 339 Programming Guide Parameter Description $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. Output The command output contains a status statement. Parameter Description status If the command is not successful, the HTTP status is 204 No Content. Example: curl Command The following example command updates the network profile with an ID of 263b80f5-d34f-47f2b0b1-5a3db991c2e9. curl –X PUT --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/iaas-proxy-provider/api/network/profiles/263b80f5-d34f-47f2-b0b1-5a3db991c2e9 -d “ { "@type": "ExternalNetworkProfile", "id": "263b80f5-d34f-47f2-b0b1-5a3db991c2e9", "name": "externalTestEdit", "description": "", "createdDate": "2014-11-16T09:11:55.000Z", "lastModifiedDate": "2014-11-16T09:11:55.000Z", "isHidden": false, "definedRanges": [ { "id": "ce266d4c-5fbb-47a9-a391-c77444c20b09", "name": "range", "description": "", "beginIPv4Address": "10.110.183.239", "endIPv4Address": "10.110.183.240", "state": "UNALLOCATED", "createdDate": "2014-11-16T09:11:55.000Z", "lastModifiedDate": "2014-11-16T09:11:55.000Z", "definedAddresses": [ ] } ], "profileType": "EXTERNAL", "subnetMask": "255.255.255.0", "gatewayAddress": "10.110.183.253", "primaryDnsAddress": "10.110.182.45", "secondaryDnsAddress": "", "dnsSuffix": "mycompany.com", "dnsSearchSuffix": "", VMware, Inc. 340 Programming Guide "primaryWinsAddress": "10.0.0.1", "secondaryWinsAddress": "" } “ Example: JSON Output The output contains an empty HTTP response body and the following status code. 204 No Content Delete a Network Profile You can use the vRealize Automation REST API network service to delete an existing network profile. Prerequisites n Log in to vRealize Automation as a tenant administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Obtain the network profile ID to delete. See Get a Network Profile List. Procedure u Delete the network profile. The following example command deletes the network profile 263b80f5-d34f-47f2b0b1-5a3db991c2e9. curl –X “Delete” --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/network/profiles/263b80f5-d34f-47f2-b0b1-5a3db991c2e9 The output contains an empty HTTP response body and the following status code. 204 No Content Syntax for Deleting a Network Profile You can use the vRealize Automation REST API to delete an existing network profile. Input Use the supported input parameters to control the command output. VMware, Inc. 341 Programming Guide Parameter Description URL https://$host/iaas-proxy-provider/api/network/profiles/$id Method Delete $host Specifies the host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token Specifies a valid HTTP bearer token with necessary credentials. $id: Specifies the unique network profile identifier. Output The command output contains a status statement. Parameter Description status If the command is not successful, the HTTP status is 204 No Content. Example: curl Command The following example command deletes a network profile with an ID of 263b80f5-d34f-47f2b0b1-5a3db991c2e9. curl –X “Delete” --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/network/profiles/263b80f5-d34f-47f2-b0b1-5a3db991c2e9 Example: JSON Output The output contains an empty HTTP response body and the following status code. 204 No Content Get a List of Available IP Ranges for an IPAM Provider You can query a specified IPAM provider endpoint for a list of the available IP address ranges configured on the IPAM provider device. Prerequisites n Log in to vRealize Automation as a tenant administrator. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that you have a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. n Obtain the endpoint ID for the external IPAM provider device you want to query. VMware, Inc. 342 Programming Guide Procedure u Use the following command to query an IPAM endpoint for a list of configured IP address ranges. curl --insecure -H "Accept:application/json" -H "Authorization: Bearer $token" https://$host/ ipam-service/api/providers//ip-ranges where ENDPOINT_ID is the endpoint ID of the external IPAM service provider. The following JSON output is returned based on the command input. { "links": [], "content": [ { "@type": "IPRange", "id": null, "name": "192.168.0.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 0" } }, { "key": "City", "value": { "type": "string", "value": "Santa Clara" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.0.0", "subnetPrefixLength": 24, "externalId": "network-0", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", VMware, Inc. 343 Programming Guide "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.1.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 1" } }, { "key": "City", "value": { "type": "string", "value": "Boston" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.1.0", "subnetPrefixLength": 24, "externalId": "network-1", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.2.0/24", VMware, Inc. 344 Programming Guide "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 2" } }, { "key": "City", "value": { "type": "string", "value": "Santa Clara" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.2.0", "subnetPrefixLength": 24, "externalId": "network-2", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.3.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 3" } }, VMware, Inc. 345 Programming Guide { "key": "City", "value": { "type": "string", "value": "Boston" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.3.0", "subnetPrefixLength": 24, "externalId": "network-3", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.4.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 4" } }, { "key": "City", "value": { "type": "string", "value": "Santa Clara" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", VMware, Inc. 346 Programming Guide "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.4.0", "subnetPrefixLength": 24, "externalId": "network-4", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.5.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 5" } }, { "key": "City", "value": { "type": "string", "value": "Boston" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.5.0", "subnetPrefixLength": 24, "externalId": "network-5", "dnsInfo": { "@type": "DNSInfo", "id": null, VMware, Inc. 347 Programming Guide "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.6.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 6" } }, { "key": "City", "value": { "type": "string", "value": "Santa Clara" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.6.0", "subnetPrefixLength": 24, "externalId": "network-6", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" VMware, Inc. 348 Programming Guide }, { "@type": "IPRange", "id": null, "name": "192.168.7.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 7" } }, { "key": "City", "value": { "type": "string", "value": "Boston" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.7.0", "subnetPrefixLength": 24, "externalId": "network-7", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.8.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", VMware, Inc. 349 Programming Guide "value": { "type": "string", "value": "Building 8" } }, { "key": "City", "value": { "type": "string", "value": "Santa Clara" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.8.0", "subnetPrefixLength": 24, "externalId": "network-8", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.9.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 9" } }, { "key": "City", "value": { "type": "string", "value": "Boston" VMware, Inc. 350 Programming Guide } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.9.0", "subnetPrefixLength": 24, "externalId": "network-9", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.10.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 10" } }, { "key": "City", "value": { "type": "string", "value": "Santa Clara" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.10.0", VMware, Inc. 351 Programming Guide "subnetPrefixLength": 24, "externalId": "network-10", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.11.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 11" } }, { "key": "City", "value": { "type": "string", "value": "Boston" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.11.0", "subnetPrefixLength": 24, "externalId": "network-11", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", VMware, Inc. 352 Programming Guide "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.12.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 12" } }, { "key": "City", "value": { "type": "string", "value": "Santa Clara" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.12.0", "subnetPrefixLength": 24, "externalId": "network-12", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.13.0/24", VMware, Inc. 353 Programming Guide "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 13" } }, { "key": "City", "value": { "type": "string", "value": "Boston" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.13.0", "subnetPrefixLength": 24, "externalId": "network-13", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.14.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 14" } }, VMware, Inc. 354 Programming Guide { "key": "City", "value": { "type": "string", "value": "Santa Clara" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.14.0", "subnetPrefixLength": 24, "externalId": "network-14", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.15.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 15" } }, { "key": "City", "value": { "type": "string", "value": "Boston" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", VMware, Inc. 355 Programming Guide "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.15.0", "subnetPrefixLength": 24, "externalId": "network-15", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.16.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 16" } }, { "key": "City", "value": { "type": "string", "value": "Santa Clara" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.16.0", "subnetPrefixLength": 24, "externalId": "network-16", "dnsInfo": { "@type": "DNSInfo", "id": null, VMware, Inc. 356 Programming Guide "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.17.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 17" } }, { "key": "City", "value": { "type": "string", "value": "Boston" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.17.0", "subnetPrefixLength": 24, "externalId": "network-17", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" VMware, Inc. 357 Programming Guide }, { "@type": "IPRange", "id": null, "name": "192.168.18.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", "value": { "type": "string", "value": "Building 18" } }, { "key": "City", "value": { "type": "string", "value": "Santa Clara" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.18.0", "subnetPrefixLength": 24, "externalId": "network-18", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" }, { "@type": "IPRange", "id": null, "name": "192.168.19.0/24", "description": "Created by vRO package stub workflow", "extensionData": { "entries": [ { "key": "Building", VMware, Inc. 358 Programming Guide "value": { "type": "string", "value": "Building 19" } }, { "key": "City", "value": { "type": "string", "value": "Boston" } } ] }, "providerEndpointId": "C20F305C-07A5-4BA7-88AC-35DA7B9713E0", "providerEndpointURI": null, "start": null, "end": null, "ipVersion": "IPv4", "gateway": "192.168.19.0", "subnetPrefixLength": 24, "externalId": "network-19", "dnsInfo": { "@type": "DNSInfo", "id": null, "name": null, "description": null, "dnsSuffix": "sqa.local", "primaryDNS": "", "secondaryDNS": "", "dnsSearchSuffixes": "search.sqa.local,search2.sqa.local", "preferredWINS": "", "alternateWINS": "" }, "addressSpaceId": "default" } ], "metadata": { "size": 0, "totalElements": 20, "totalPages": 1, "number": 1, "offset": 0 } } Import and Export Content You can use the REST API content management service to import and export content, such as blueprints, between vRealize Automation systems. VMware, Inc. 359 Programming Guide vRealize Automation customers often experiment with system artifacts such as catalog items, XaaS services, resource actions, and IaaS blueprints in their development or staging environments. When appropriate, users need to move these artifacts to their production environments. Note You cannot import/export approval policies or entitlements. Also, you cannot import or export any content that is in a draft state. The examples herein are shown as Curl commands for consistency with other similar examples, though the REST API content management service provides a convenient mechanism for moving such artifacts between systems using the CloudClient interface. With CloudClient, there is no need to set heading values, including the Authorization header. The $host//$servicename/api is eliminated from the URL and the service name becomes a separate parameter. For example, consumer/entitled CatalogItems/{id}/request/template. See Using vRealize CloudClient. Some parameters on the API request are common to all content management service import and export commands. These parameters are listed below. Parameter Description $host The host name and fully qualified domain name or IP address of the vRealize Automation identity server. $token A valid HTTP bearer token that includes necessary credentials. Note When exporting content, values of secure strings and encrypted properties are excluded by default. You can add the --secure false parameter to commands to export these properties as plain text with your content. Secure strings and encrypted properties are typically used as property holders for passwords. The following examples illustrate the types of requests that you might use in typical import export situations. Prerequisites n Log in to vRealize Automation with an appropriate role. For example: Software Architect, Application Architect, Infrastructure Architecture or some combination of these depending on the need. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that there is a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. VMware, Inc. 360 Programming Guide Procedure 1 (Optional) Use the REST API content service to display a list of supported vRealize Automation content types. Typically, this step is required only if you are not familiar with the content on your system or if you need to verify the content. A content type describes the content that you can import or export using the content management service. $curl --insecure -s -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/content-management-service/api/provider/contenttypes 2 Display a list of available content in vRealize Automation. Content includes published artifacts such as blueprints, software, properties etc. $curl --insecure -s -H"Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/content-management-service/api/contents 3 If applicable, you can also apply filtering by content type. This example sets the contentTypeId to composite-blueprint. $curl --insecure -s -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/content-management-service/api/contents? %24filter=contentTypeId+eq+%27composite-blueprint%27 4 Create a package that contains the desired content. The following command creates a package named Demo Package with a content ID of 9b348c29-88ff-4fa8-b93e-f80bc7c3e723. $curl --insecure -s -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/content-management-service/api/packages-d'{"name" : "Demo Package", "description" : "Package for demo purposes", "contents" : [ "9b348c29-88ff-4fa8-b93e-f80bc7c3e723" ]}' 5 (Optional) List the packages within the content service. Use this step if you need to confirm the contents of the package you created. $curl --insecure -s -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/content-management-service/api/packages 6 Export the specified package as a .zip file. The example specifies the Accept header as application/zip and the output file as package.zip. $curl --insecure -s -H "Accept: application/zip"-H "Authorization: Bearer $token" https://$host/content-managementservice/api/packages/54f627bb-2277-48af-9fa0-7d7366b498f3-o package.zip VMware, Inc. 361 Programming Guide 7 Validate the package prior to importing it. The example uses the 'DukesBankApp.zip' which is out-of-box content provided on the vRealize Automation virtual appliance. You can copy the file from /usr/lib/vcac/tools/initialconfig/sample-oob-content/DukesBankApp.zip using WinSCP (Windows) or scp (Mac). $curl --insecure -s -H "Content-Type: multipart/form-data"-H "Authorization: Bearer $token" https://$host/content-management-service/api/packages/validate-F" file=@DukesBankApp.zip" The validation output shows the status of each content item within the package. 8 Import the package. This example imports the DukesBankApp.zip package. $curl --insecure -s -H "Content-Type: multipart/form-data"-H "Authorization: Bearer $token" https://$host/content-management-service/api/packages-F" file=@DukesBankApp.zip" Syntax for Listing Supported Content Types You can use the REST API content management service to display a list of supported content types. Supported Content Types A content type describes content that you can import or export using the content management service. Content types contain metadata about the content provider and the content itself, such as type information or service type ID. Usually the content provider supplies this information. The REST API supports import and export of the following registered content types: n composite-blueprint - the content type corresponding to the composite blueprint n software-component - the content type corresponding to the software component n property-group - the content type corresponding to the property groups n property-definition - the content type corresponding to the property definitions Everything as a Service (XaaS) content types: n XaaS-blueprint n XaaS-resource-action n XaaS-resource-type n XaaS-resource-mapping Input Use the supported input parameters with your query URL to control command output. . VMware, Inc. 362 Programming Guide Name Description Type page Page Number. Default is 1. Query limit Number of entries per page. Default is 20. Query $orderby Multiple comma-separated properties sorted in ascending or descending order. Query $top The number of returned entries from the top of the response (total number per page in relation to skip). Query $skip The number of entries to skip. Query $filter Boolean expression for whether a particular entry should be included in the response. Query Output The command output contains property names and values based on the command input parameters. Parameter Description Links Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n Self refers to the object that was returned or requested. This parameter does not appear when you query a single profile. n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. Content n id: The unique identifier for the content. This is also used as n name: The name of a given content type provided in localized message key form. n description: Additional information describing the content a folder name to group similar content artifacts. type. Metadata VMware, Inc. n classId: The class identifier associated with a content type. n serviceTypeId: The service ID for the given content type. Specifies the following paging-related data: n Size: Specifies the maximum number of rows per page. n totalElement: Specifies the number of rows returned. This parameter is not output when you query for a single profile. n totalPages: Specifies the total number of pages of data available. n Number: Specifies the current page number. n Offset: Specifies the number of rows skipped. 363 Programming Guide Example Curl Command The following example command returns a list of supported content types. $curl --insecure -s -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/content-management-service/api/provider/contenttypes Example: JSON Output The following JSON output is returned based on the command input. { "links": [ ], "content": [ { "@type": "ContentType", "id": "property-group", "name": "Property Group", "description": "Content type corresponding to the property groups.", "classId": "PropertyGroup", "serviceTypeId": "com.vmware.csp.core.properties.service" }, { "@type": "ContentType", "id": "property-definition", "name": "Property Definition", "description": "Content type corresponding to the property definitions.", "classId": "PropertyDefinition", "serviceTypeId": "com.vmware.csp.core.properties.service" }, { "@type": "ContentType", "id": "composite-blueprint", "name": "Composite Blueprint Content Type", "description": "The content type corresponding to the composite blueprint", "classId": "Composite.Blueprint", "serviceTypeId": "com.vmware.csp.component.cafe.composition" }, { "@type": "ContentType", "id": "asd-blueprint", "name": "{com.vmware.csp.core.designer.service@service.blueprint.content.type.name}", "description": "{com.vmware.csp.core.designer.service@service.blueprint.content.type.description}", "classId": "asdServiceBlueprint", "serviceTypeId": "com.vmware.csp.core.designer.service" }, { "@type": "ContentType", "id": "asd-resource-action", "name": "{com.vmware.csp.core.designer.service@resource.action.content.type.name}", "description": "{com.vmware.csp.core.designer.service@resource.action.content.type.description}", "classId": "asdResourceAction", VMware, Inc. 364 Programming Guide "serviceTypeId": "com.vmware.csp.core.designer.service" }, { "@type": "ContentType", "id": "asd-resource-type", "name": "{com.vmware.csp.core.designer.service@resource.type.content.type.name}", "description": "{com.vmware.csp.core.designer.service@resource.type.content.type.description}", "classId": "asdResourceType", "serviceTypeId": "com.vmware.csp.core.designer.service" }, { "@type": "ContentType", "id": "asd-resource-mapping", "name": "{com.vmware.csp.core.designer.service@resource.mapping.content.type.name}", "description": "{com.vmware.csp.core.designer.service@resource.mapping.content.type.description}", "classId": "asdResourceMapping", "serviceTypeId": "com.vmware.csp.core.designer.service" }, { "@type": "ContentType", "id": "software-component", "name": "Software Component Content Type", "description": "{com.vmware.csp.component.software.service@software.component.content.type.description}", "classId": "softwareComponentType", "serviceTypeId": "com.vmware.csp.component.software.service" } ], "metadata": { "size": 20, "totalElements": 9, "totalPages": 1, "number": 1, "offset": 0 } } Syntax for Listing Available Content You can use the REST API content management service to list the content that is available for export on your vRealize Automation deployment. Listing Available Content Content is some artifact, entity or information that provides value to a user in a specific context. Content can be represented in a file in different formats, such as XML, JSON, or a package of files. Input Use the supported input parameters with your query URL to control command output. VMware, Inc. 365 Programming Guide Name Description Type page Page Number. Default is 1. Query limit Number of entries per page. Default is 20. Query $orderby Multiple comma-separated properties sorted in ascending or descending order. Query $top The number of returned entries from the top of the response (total number per page in relation to skip). Query $skip The number of entries to skip. Query $filter Boolean expression for whether a particular entry should be included in the response. Query Output The command output contains property names and values based on the command input parameters. VMware, Inc. 366 Programming Guide Parameter Description Links Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n Self refers to the object that was returned or requested. This parameter does not appear when you query a single profile. n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. Content Metadata VMware, Inc. Specifies an array of data rows, each of which represents one of the objects returned in a pageable list. n id: Specifies the unique identifier for the content. This is also used as a folder name to group similar content artifacts. n contentId: The human readable immutable user or provider supplied content ID. n name: Specifies the name of a given content type provided in localized message key form. n description: Specifies additional information describing the package. n contentTypeId: Identifies the nature of the content. n mimeType: Identifies the mime type. n tenantId: The ID of the tenant associated with the package. Used to enforce ownership. n subtenantId: (Optional) The ID of the sub tenant or business group associated with the package. n dependencies: Represents the dependencies of the content unit in the form of content IDs. n createdDate: The creation date of the content. n lastUpdated: The date on which the content was last updated. n version: The version identifier of the content. Specifies the following paging-related data: n Size: Specifies the maximum number of rows per page. n totalElement: Specifies the number of rows returned. This parameter is not output when you query for a single profile. n totalPages: Specifies the total number of pages of data available. n Number: Specifies the current page number. n Offset: Specifies the number of rows skipped. 367 Programming Guide Example Curl Command $curl --insecure -s -H "Content-Type: application/json"-H "Authorization: Bearer $token" https://$host/content-management-service/api/contents Example: JSON Output { "links": [], "content": [ { "@type": "Content", "id": "6ba58cb4-257d-4833-b2dc-f090f92f86be", "contentId": "3482e3a7-c6c2-4372-b8e1-0db517b93406", "name": "Echo String", "description": null, "contentTypeId": "asd-blueprint", "mimeType": null, "tenantId": "qe", "subtenantId": null, "dependencies": [], "createdDate": "2015-08-18T19:14:54.899Z", "lastUpdated": "2015-08-18T19:14:54.899Z", "version": 0 }, { "@type": "Content", "id": "079cc912-b870-4f56-a1c3-91905526b09d", "contentId": "NicksBP", "name": "Nick's BP", "description": "Nick's BP", "contentTypeId": "composite-blueprint", "mimeType": null, "tenantId": "qe", "subtenantId": null, "dependencies": [], "createdDate": "2015-08-18T20:14:57.299Z", "lastUpdated": "2015-08-18T20:14:57.299Z", "version": 0 }, { "@type": "Content", "id": "9795e97f-7025-44f9-9a57-f59242a7775d", "contentId": "de81f329-cb72-4099-b831-309db708833b", "name": "TestMapping", "description": null, "contentTypeId": "asd-resource-mapping", "mimeType": null, "tenantId": "qe", "subtenantId": null, "dependencies": [], "createdDate": "2015-08-18T20:53:25.062Z", "lastUpdated": "2015-08-18T20:53:25.062Z", VMware, Inc. 368 Programming Guide "version": 0 }, { "@type": "Content", "id": "3922fda1-b5fd-4c51-997d-5f803ec6fb6e", "contentId": "e8ae6093-18a9-4ec9-a415-1ef850f243f9", "name": "CustomRes", "description": null, "contentTypeId": "asd-resource-type", "mimeType": null, "tenantId": "qe", "subtenantId": null, "dependencies": [], "createdDate": "2015-08-18T20:56:11.052Z", "lastUpdated": "2015-08-18T20:56:11.052Z", "version": 0 }, { "@type": "Content", "id": "4754ad69-a6a7-447f-96de-2ed6fa260f7c", "contentId": "Software.Apache_LB", "name": "Apache_LB", "description": "Apache 2.2 The Apache HTTP Server is an open-source HTTP server for modern operating systems including UNIX, Microsoft Windows, Mac OS/X and Netware. The goal of this project is to provide a secure, efficient and extensible server that provides HTTP services observing the current HTTP standards. Apache has been the most popular web server on the Internet since April of 1996.", "contentTypeId": "software-component", "mimeType": null, "tenantId": "qe", "subtenantId": null, "dependencies": [], "createdDate": "2015-08-18T21:31:43.094Z", "lastUpdated": "2015-08-18T21:31:44.133Z", "version": 1 }, { Syntax for Filtering Content by Content Type You can use the REST API content management service to filter a list of returned content type items. Input Output The command output contains property names and values based on the command input parameters. Example Curl Command $curl --insecure -s -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/content-management-service/api/contents? %24filter=contentTypeId+eq+%27composite-blueprint%27 VMware, Inc. 369 Programming Guide Example: JSON Output In this example the returned IDs correspond to composite blueprints that meet the filtering criteria. { "links": [], "content": [ { "@type": "Content", "id": "9b348c29-88ff-4fa8-b93e-f80bc7c3e723", "contentId": "vSphere", "name": "vSphere", "description": "vSphere", "contentTypeId": "composite-blueprint", "mimeType": null, "tenantId": "qe", "subtenantId": null, "dependencies": [], "createdDate": "2015-08-04T14:46:54.201Z", "lastUpdated": "2015-08-04T16:59:30.488Z", "version": 1 }, { "@type": "Content", "id": "968ae331-1ef2-44f8-bdc5-dfc2be78ca2f", "contentId": "Amazon", "name": "Amazon", "description": "Amazon", "contentTypeId": "composite-blueprint", "mimeType": null, "tenantId": "qe", "subtenantId": null, "dependencies": [ "9e2005c3-c56e-48d0-801c-be36851f2b08" ], "createdDate": "2015-08-04T20:47:20.308Z", "lastUpdated": "2015-08-04T20:47:20.308Z", "version": 0 } ], "metadata": { "size": 20, "totalElements": 2, "totalPages": 1, "number": 1, "offset": 0 } } VMware, Inc. 370 Programming Guide Syntax for Creating a Package for Export You can use the REST API content management service to create a package that contains content for export use. Creating a Package with Content n For import or export purposes you must create a package to contain the desired content. n The package is a logical unit that enables you to piece together different content elements. n You can add multiple content IDs to the package. A package represents an entity that you can export or import via the content management service. A set of references to the content instances can be bundled together as a package. Input Parameter Description createdDate The package creation date. lastUpdated The date when the package was last updated. version The package version identifier. tenantId The ID of the tenant associated with the package. Used to enforce ownership. subTenantId (Optional) The ID of the sub tenant or business group associated with the package id Specifies the unique identifier for the content. This is also used as a folder name to group similar content artifacts. name Specifies the name of a given content type provided in localized message key form. description Specifies additional information describing the package. contents Collection of references that form the contents of the package. Output The command output contains property names and values based on the command input parameters. Parameter Description createdDate The package creation date. lastUpdated The date when the package was last updated. version The package version identifier. tenantId The ID of the tenant associated with the package. Used to enforce ownership. subTenantId (Optional) The ID of the sub tenant or business group associated with the package VMware, Inc. 371 Programming Guide Parameter Description id Specifies the unique identifier for the content. This is also used as a folder name to group similar content artifacts. name Specifies the name of a given content type provided in localized message key form. description Specifies additional information describing the package. contents Collection of references that form the contents of the package. Example Curl Command The following command creates a package named "Demo Package" with a content ID of 9b348c29-88ff-4fa8-b93e-f80bc7c3e723. $curl --insecure -s -H "Content-Type: application/json" -H "Authorization: Bearer $token" https://$host/content-management-service/api/packages-d'{"name" : "Demo Package", "description" : "Package for demo purposes", "contents" : [ "9b348c29-88ff-4fa8-b93e-f80bc7c3e723" ]}' Example: JSON Output The JSON output is a URL for the created package. Syntax for Listing Packages in the Content Service You can use the REST API content management service to list the packages within the content service. Input You must provide the appropriate request parameters to list packages within the content service. Name Description Type page Page Number. Default is 1. Query limit Number of entries per page. Default is 20. Query $orderby Multiple comma-separated properties sorted in ascending or descending order. Query $top The number of returned entries from the top of the response (total number per page in relation to skip). Query $skip The number of entries to skip. Query $filter Boolean expression for whether a particular entry should be included in the response. Query Output The command output contains property names and values based on the command input parameters. VMware, Inc. 372 Programming Guide Parameter Description Links Specifies an array of link objects, each of which contains the following parts: n rel Specifies the name of the link. n Self refers to the object that was returned or requested. This parameter does not appear when you query a single profile. n First, Previous, Next, and Last refer to corresponding pages of pageable lists. n n Specifies the application or service that determines the other names. href Specifies the URL that produces the result. Content Metadata n createdDate: The creation date of the content. n lastUpdated: The date on which the content was last updated. n version: The version identifier of the content. n id: Specifies the unique identifier for the content. This is also used as a folder name to group similar content artifacts. n contentId: The human readable immutable user or provider supplied content ID. n name: Specifies the name of a given content type provided in localized message key form. n description: Specifies additional information describing the package. n contentTypeId: The unique identifier of the contentType. n mimeType: The mime type file identifier. n tenantId: The ID of the tenant associated with the package. Used to enforce ownership. n subtenantId: (Optional) The ID of the sub tenant or business group associated with the package. n dependencies: These represent the content unit dependencies in the form of content IDs. Specifies the following paging-related data: n Size: Specifies the maximum number of rows per page. n totalElement: Specifies the number of rows returned. This parameter is not output when you query for a single profile. n totalPages: Specifies the total number of pages of data available. n Number: Specifies the current page number. n Offset: Specifies the number of rows skipped. Example Curl Command $curl --insecure -s -H"Content-Type: application/json"-H"Authorization: Bearer $token"https://$host/content-management-service/api/packages VMware, Inc. 373 Programming Guide Example: JSON Output The following example lists all packages within the content service. { "links": [ ], "content": [ { "@type": "Package", "createdDate": "2015-08-04T22:22:53.490Z", "lastUpdated": "2015-08-04T22:22:53.490Z", "version": 0, "id": "54f627bb-2277-48af-9fa0-7d7366b498f3", "name": "Demo Package", "description": "Package for demo purposes", "contents": [ "9b348c29-88ff-4fa8-b93e-f80bc7c3e723" ], "tenantId": "qe", "subTenantId": null } ], "metadata": { "size": 20, "totalElements": 1, "totalPages": 1, "number": 1, "offset": 0 } } Syntax for Exporting a Package You can use the REST API content management service to export a package containing content as a .zip file. Input The query URL for the export command must specify the ID of the package to export. Table 3‑17. Export Query URL Parameters Name Description Type id The identifier of the package Path secureValueFormat The format in which secure values should be sent. This parameter is optional and defaults to "BLANKOUT". Query Output The output of this command is a .zip file. VMware, Inc. 374 Programming Guide Example Curl Command $curl --insecure -s -H "Accept: application/zip" -H "Authorization: Bearer $token" https://$host/content-managementservice/api/packages/54f627bb-2277-48af-9fa0-7d7366b498f3-o package.zip Example: Example: JSON Output The export command returns a message that indicates whether or not the package was exported. A successful export produces a package.zip exported to the specified location. The returned message is '200 - Successes' with the Package or 404 - 'Not Found' if it does not find a package with provided ID. Syntax for Validating a Content Bundle Before Importing You can use the REST API content management service to validate a content bundle before importing to a critical system. VMware recommends that you validate all packages before importing them to any system. Input You can use optional request parameters with your query URL to customize the returned content. Table 3‑18. Package Validation Parameters Name Description Type file The name of the package file to be validated query resolution mode The resolution mode to be used for performing validation when the same entity exists in the system. Valid values are SKIP, OVERWRITE. SKIP will not update the existing entity with the new content while OVERWRITE will update the old entity with the new data. In case the resolution mode is not explicitly provided the default mode OVERWRITE will be used for conflict resolution. query Output The package validation response body contains the following parameters. VMware, Inc. 375 Programming Guide Table 3‑19. Import and Export Response Body Parameters Parameter Description contentImportStatus Over all status of the import/validation operation, one failure in import/validation result guarantees failed status. Values are as follows: n contentImportResults Success - Denotes the successful import or validation status at a particular component or package level. n Failed - Denotes an import or validation failure at a particular component package level. n Warning - Denotes a scenario that warrants a system level warning. Alerts the user about a possible error condition that the proposed action may create. Set of collected content import/validation results populated by the provider. The Content import operation result collection is the set of content that passed or failed. If failed the errors are populated in ContentImportError. Properties are as follows: n contentId - (string) Unique content ID within the file system. n contentName - (anyType) Name of the content being imported. n contentTypeId - (string) The ID for the content type being exported. This matches the folder structure in the exported zip. n contentImportStatus - Track the failed or succeeded status of an entity. n messages - Information returned by the provider. n contentImportErrors - Set of errors returned by the provider. Example Curl Command This example uses the 'DukesBankApp.zip' - which is out-of-the-box content provided on the vRealize Automation virtual appliance. You can copy the file from /usr/lib/vcac/tools/initialconfig/sample-oob-content/DukesBankApp.zip using WinSCP (Windows) or scp (Mac). $curl --insecure -s -H" Content-Type: multipart/form-data" -H "Authorization: Bearer $token" https://$host/content-management-service/api/packages/validate -F "file=@DukesBankApp.zip" Example: JSON Output The validation output displays the validation status of each content item within the bundle. { "contentImportStatus": "SUCCESS", "contentImportResults": [ { "contentId": "Apache_LB", "contentName": "Apache_LB", "contentTypeId": "software-component", "contentImportStatus": "SUCCESS", "contentImportErrors": null }, { "contentId": "MySql", "contentName": "MySql", "contentTypeId": "software-component", "contentImportStatus": "SUCCESS", "contentImportErrors": null VMware, Inc. 376 Programming Guide }, { "contentId": "JBossAppServer", "contentName": "JBossAppServer", "contentTypeId": "software-component", "contentImportStatus": "SUCCESS", "contentImportErrors": null }, { "contentId": "Dukes-Bank-DB-setup", "contentName": "Dukes-Bank-DB-setup", "contentTypeId": "software-component", "contentImportStatus": "SUCCESS", "contentImportErrors": null }, { "contentId": "Dukes_Bank_App", "contentName": "Dukes_Bank_App", "contentTypeId": "software-component", "contentImportStatus": "SUCCESS", "contentImportErrors": null }, { "contentId": "DukesBankApplication", "contentName": "DukesBankApplication", "contentTypeId": "composite-blueprint", "contentImportStatus": "SUCCESS", "contentImportErrors": null } ] } Syntax for Importing a Package You can use the REST API content management service to import a package containing content as a .zip file. Import a Package To verify success of a package import, use vRealize Automation to view the imported items on the target system. Output The command output contains property names and values based on the command input parameters. VMware, Inc. 377 Programming Guide Table 3‑20. Import and Export Response Body Parameters Parameter Description contentImportStatus Over all status of the import/validation operation, one failure in import/validation result guarantees failed status. Values are as follows: n contentImportResults Success - Denotes the successful import or validation status at a particular component or package level. n Failed - Denotes an import or validation failure at a particular component package level. n Warning - Denotes a scenario that warrants a system level warning. Alerts the user about a possible error condition that the proposed action may create. Set of collected content import/validation results populated by the provider. The Content import operation result collection is the set of content that passed or failed. If failed the errors are populated in ContentImportError. Properties are as follows: n contentId - (string) Unique content ID within the file system. n contentName - (anyType) Name of the content being imported. n contentTypeId - (string) The ID for the content type being exported. This matches the folder structure in the exported zip. n contentImportStatus - Track the failed or succeeded status of an entity. n messages - Information returned by the provider. n contentImportErrors - Set of errors returned by the provider. Example Curl Command $curl --insecure -s -H "Content-Type: multipart/form-data" -H "Authorization: Bearer $token" https://$host/content-management-service/api/packages -F "file=@DukesBankApp.zip" Example: JSON Output { "contentImportStatus": "SUCCESS", "contentImportResults": [ { "contentId": "Apache_LB", "contentName": "Apache_LB", "contentTypeId": "software-component", "contentImportStatus": "SUCCESS", "contentImportErrors": null }, { "contentId": "MySql", "contentName": "MySql", "contentTypeId": "software-component", "contentImportStatus": "SUCCESS", "contentImportErrors": null }, { "contentId": "JBossAppServer", "contentName": "JBossAppServer", "contentTypeId": "software-component", "contentImportStatus": "SUCCESS", VMware, Inc. 378 Programming Guide "contentImportErrors": null }, { "contentId": "Dukes-Bank-DB-setup", "contentName": "Dukes-Bank-DB-setup", "contentTypeId": "software-component", "contentImportStatus": "SUCCESS", "contentImportErrors": null }, { "contentId": "Dukes_Bank_App", "contentName": "Dukes_Bank_App", "contentTypeId": "software-component", "contentImportStatus": "SUCCESS", "contentImportErrors": null }, { "contentId": "DukesBankApplication", "contentName": "DukesBankApplication", "contentTypeId": "composite-blueprint", "contentImportStatus": "SUCCESS", "contentImportErrors": null } ] } Understanding Blueprint Schema Users who wish to edit blueprints when exporting them to a deployment may need to understand the blueprint schema. Simple Blueprint Structure The following is an example of a simple blueprint. Note that this example includes line number that are referenced later in this topic. 1 2. 3. 4. 5. id: Blueprint.CentOSAndApache name: CentOSAndApache status: PUBLISHED components: web: 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. VMware, Inc. type: Infrastructure.CatalogItem.Machine.Virtual.vSphere data: cpu: 1 memory: min: 512 max: 8192 os_type: Linux os_distribution: rhel action: LinkedClone archive_days: 1 provisioning_workflow: {id: CloneWorkflow} lease_days: 3 379 Programming Guide 18. 19. 20. 21. 22. 23. 24. 25. source_machine_name: cbp_centos_63_x86 cost_center: sales _cluster: 2 apache: type: Software.Apache data: host: '${_resource~web}' http_port: 8080 Each of these lines plays an important role in the blueprint structure. n Lines 1 - 4 represent possible top level blueprint fields that provide identifying information. The only other possible field is description. The semantics of these fields is straightforward, but you can refer to java.classBlueprintDocument for more information. n Line 4 represents the blueprint components. Each key under components is the ID of the component that must be unique under the current blueprint. n Lines 5 - 19 correspond to the Web component. The following appear under any component data: n The key type is mandatory and must refer to the component type on which the current component is based. n The key dependsOn is optional and contains the list of component IDs current component depends on. Component dependencies are extracted automatically based on property binding expressions. In most cases, you do not need to explicitly specify component dependencies. n The key data defines the component configuration and appears under all component data. n n Key is the name of the property or field of that component. This can be a property defined in the corresponding component type. Property or field option Example A property defined in the corresponding component type cpu A reserved property _cluster Custom property cost_center The value of the field can be directly defined as in cpu: 2, or you can defines its constraints, as done for the memory field in the example. n Line 16 shows how to specify and entity reference field. The available sub-keys are id and label. n Line 24 depicts several things. n ${ } provides a way to express the value of a field to come from another field. n _resource is a reserved field ID that captures the output of entire blueprint. Output from each component is exposed under the same key as component ID. So in this case, host value is set to the output of the web component thus saying the apache component needs to be hosted on machine provisioned from the web component. n Whenever a property binding refers to output of some other component, it creates an implicit dependency between components. VMware, Inc. 380 Programming Guide Available Constraints To define constraints in any blueprint field. create a new hierarchy or level in YAML, and use any of the keys below to define constraints and their values. Table 3‑21. Blueprint Constraints ID or Key Corresponding CAFE Constraint Description default com.vmware.vcac.platform.content.facets.DefaultValueBehav ior Specifies the value for a field. fixed com.vmware.vcac.platform.content.facets.FixedValueConstrai nt Specifies the value for a field that cannot be overridden at request or reuse time. mandatory com.vmware.vcac.platform.content.facets.MandatoryConstrai nt Indicates that the field is mandatory. min com.vmware.vcac.platform.content.facets.MinValueConstraint Indicates the minimum value for a numeric field. max com.vmware.vcac.platform.content.facets.MaxValueConstrain t Indicates the maximum value for a numeric field. minLength com.vmware.vcac.platform.content.facets.MinLengthConstrai nt Indicates the minimum length for a string field. maxLength com.vmware.vcac.platform.content.facets.MaxLengthConstra int Indicates the maximum length for a string field. minCardinality com.vmware.vcac.platform.content.facets.MinLengthConstrai nt Indicates the minimum cardinality for an array field. maxCardinality com.vmware.vcac.platform.content.facets.MaxCardinalityCon straint Indicates the maximum cardinality for an array field. increment com.vmware.vcac.platform.content.facets.IncrementBehavior Indicates the step or increment for a numeric field. regex com.vmware.vcac.platform.content.facets.RegexpConstraint Indicates the valid regex for a string field. secured com.vmware.vcac.platform.content.facets.EncryptedBehavior Indicates whether the field is to be treated securely. valid_values com.vmware.vcac.platform.content.fields.PermissibleValueLis t Defines the valid values for a field. Manage XaaS Content with Import and Export You can use the content management service to import and export everything as a service (XaaS) content. XaaS is integrated with the API content management service, and all commands that work with other content types also work with XaaS content. Though the XaaS functionality is being deprecated in the vRealize Automation 7.0 release, it is still available for users to migrate XaaS content into vRealize Automation 7.0. VMware, Inc. 381 Programming Guide Prerequisites n Log in to vRealize Automation with an appropriate role. For example: Software Architect, Application Architect, Infrastructure Architecture or some combination of these depending on the need. n Verify that the host name and fully qualified domain name of the vRealize Automation instance are available. n Verify that there is a valid HTTP bearer token that matches your login credentials. See Chapter 2 REST API Authentication. Procedure 1 Use the following command to import a 6.2.x package into vRealize Automation 7.0. curl --insecure -X POST -H"Authorization: Bearer $token"-H"Content-Type: multipart/form-data"-F"file=@XaaSContent.zip"-F"prefix=prefix_"F"prefixOnlyConflicting=true"' https://$host/advanced-designerservice/api/content/bundles' 2 Use the following command to export an XaaS package as a .zip file. curl -X PUT -H"Authorization: Bearer $token"-H"Content-Type: application/json"d'{"jsonAccepted" : true, "tenantId" : "qe", "data" : [] }'' https://$host/advanced-designer-service/api/content/bundles/filters' Export XaaS Content You can use the REST API content management service to export a package containing content as a .zip file. Input Table 3‑22. XaaS Import Input Parameters Name Parameter tenantId Identifies the tenant associated with the export package. data Information about the export package. Includes the following: jsonAccepted n entityType n id Valid values are true or false. Output Example Curl Command The following command exports a package containing content as a .zip file at the specified location. curl -X PUT -H "Authorization: Bearer $token"-H"Content-Type: application/json"d'{"jsonAccepted" : true, "tenantId" : "qe", "data" : [] }'' https://$host/advanceddesigner-service/api/content/bundles/filters' VMware, Inc. 382 Programming Guide Example: JSON Output The output of a successful export command is a .zip file at the specified location. Import XaaS Content You can use the content management service to import an XaaS content bundle. Input Table 3‑23. XaaS Import Input Parameters Name Parameter file Identifies the .zip file that is the content bundle to import. prefix The prefix to use with imported objects. Ensures avoidance of a duplicate name failure. prefixOnlyConflicting Set to true to rename or prefix conflicting objects. Output The command output contains property names and values based on the command input parameters. Table 3‑24. Import and Export Response Body Parameters Parameter Description importStatus Over all status of the import/validation operation, one failure in import/validation result guarantees failed status. Values are as follows: data n Successful - Denotes the successful import or validation status at a particular component or package level. n Partial - Denotes a scenario that warrants a system level warning. Alerts the user about a possible error condition that the proposed action may create. n Failed - Denotes an import or validation failure at a particular component package level. Set of collected content import/validation results populated by the provider. The Content import operation result collection is the set of content that passed or failed: n entityType - (string) The ID for the entity being imported. n entitytId - (string) Unique content ID within the file system. n messageKey - (string) n logLevel - The logging level to use for any errors that occur. n message - Information returned by the provider. n entityName - (anyType) Name of the entity being imported. Example Curl Command The following command imports a file called XaaSContent.zip. curl --insecure -X POST -H"Authorization: Bearer $token"-H"Content-Type: multipart/form-data"-F"file=@XaaSContent.zip"-F"prefix=prefix_"F"prefixOnlyConflicting=true"' https://$host/advanced-designerservice/api/content/bundles' VMware, Inc. 383 Programming Guide Example: JSON Output The output of the command is a message indicating the status and details of the import operation. { "importStatus" : "SUCCESSFUL", "data" : [ { "logLevel" : "INFO", "entityType" : "com.vmware.vcac.designer.service.domain.ServiceBlueprint", "entityId" : "4740aa54-61e6-47d7-945f-0bb50ff153c8", "entityName" : "XaaSBlueprint", "messageKey" : "import.blueprint.success", "message" : "Success" } ] } VMware, Inc. 384 Related Tools and Documentation 4 In addition to the provided use case code snippets, you can expand your options for working with the vRealize Automation REST API by using related tools and documentation. You can use the vRealize CloudClient to simplify your interaction with the vRealize Automation REST API. You can also use third party tools such as Chrome Developer Tools or Firebug to further expand your vRealize Automation REST API programming options. For a complete list and description of available vRealize Automation REST API service calls and their usage, see the Swagger documentation for the product. This chapter includes the following topics: n Using the vRealize Automation API Reference n View Reference Information for an API n Using vRealize CloudClient n Using Third Party Tools Using the vRealize Automation API Reference The vRealize Automation API Reference describes all the available vRealize Automation REST API services calls that you can use to configure and manage vRealize Automation programmatically. To use the vRealize Automation REST API service reference documentation effectively, you must know which service and resource to use. See Chapter 1 Overview of the vRealize Automation REST API for a complete list of services and their descriptions. If you need more information, click one of the linked service topics for a detailed description of the service and a list of the tasks that you can perform with it. While the Programming Guide contains frequently used use cases, it does not document all the available service calls and tasks. For a complete description of all the available vRealize Automation REST API services, see the vRealize Automation API Reference, which contains a menu that lists the vRealize Automation services and allows you to select documentation for each service. The vRealize Automation API Reference is available at the following locations: n In your running vRealize Automation installation at the following URL: https://$host/component-registry/services/docs The $host denotes the host name of the machine where vRealize Automation is installed. VMware, Inc. 385 Programming Guide n As a zip file on the Product Documentation and Related Information page of the vRealize Automation Information Center. n In the Developer Resources section of the vRealize Automation Information Center. For information about requesting a bearer token, and about available pagination, sorting, and filtering options for any given command, see the Tips option on the vRealize Automation API landing page for the selected service API. View Reference Information for an API Using the vRealize Automation API Reference, you can view reference information for the REST APIs in each vRealize Automation service, including parameter values, return codes, and implementaton notes. You can choose the category for a specified REST API and view reference information about the APIs included in the category. Procedure 1 From the pull-down menu on the vRealize Automation API Reference start page, select a service. The Swagger documentation page for the service appears. The bottom of the page lists the API categories included in the service. 2 Scroll down to the bottom of the web page and select a category. The HTTP operations in the category appear. 3 Click an operation to view the reference information. Reference information for the selected API appears. 4 To display a list of the operations for a category , click List Operations next to a category name. 5 To show the complete reference information for all of the operations in a category, click Expand Operations next to a category name. Detailed reference information for all of the operations in the category appears. 6 To toggle on or off the display of reference information for the operations in a category, click Show/Hide. Using vRealize CloudClient vRealize CloudClient is a separate command-line utility that provides a unified interface for working with the vRealize Automation APIs. For information about vRealize CloudClient, see the VMware Developer site at https://developercenter.vmware.com/tool/cloudclient. VMware, Inc. 386 Programming Guide Using Third Party Tools You can use third party tools such as Chrome Developer Tools or Firebug to reveal the data that you can then use to construct a vRealize Automation REST API service call. You can adapt these steps to perform a different action, such as adding a tenant. Prerequisites This example shows how you might use the Chrome Developer Tools to perform a catalog service query. This option is not available for all vRealize Automation functions. n Open a Chrome browser session and log in to the vRealize Automation console as a business group user with access to catalog items. n Open a command prompt or a shell and log in to the vRealize Automation command line interface. Procedure 1 Click the Catalog tab in the vRealize Automation console. 2 Click the catalog Item you want to request. 3 Enter the request information for the catalog item, but do not submit your changes. 4 Press the Ctrl-Shift-I keys simultaneously to open the Chrome Developer Tools. For example: 5 a Click the Network tab. b Click Record Network Log. c Click Submit in the console. Verify that the network logs in the Chrome Developer Tools contain the relevant data. For example: a Locate a makeRequest POST in the network recordings. b Click makeRequest POST to view its details. c Scroll to view the Form Data url and postData sections. The url section shows the vRealize Automation service and URI for you to use. This example uses the catalog-service, under the uri consumer/requests. The postData section shows the JSON data passed in the HTTP POST call. You can insert the JSON data in a JSON file, for example request.json, and submit it with the POST method in the command line. Note Click Clear to purge the network logs if they become too large to navigate easily. VMware, Inc. 387 Programming Guide 6 Enter the following call in the vRealize Automation shell, where the request.json text file contains the JSON data from the postData section. rest post --headers --service catalog-service --uri consumer/requests --data request.json This call makes the same request that was submitted by using the console. VMware, Inc. 388 Filtering and Formatting REST API Information 5 You can filter and format your vRealize Automation REST API command line and command line output. You can use filters in your command line to limit JSON output to specific conditions. For example, you can use a filter in a catalog item request to display only catalog items that contain a specific catalog ID. Or you can use the requestID resource call to format the output of a command that displays request status. You can also use an Odata equivalent to format that same information For details, see Syntax for Getting Information for a Catalog Item. Note You must URL encode all filter parameters when using Curl commands. You can also reduce command line errors by using a JSON formatter to validate the JSON data and present it in an easy-to-read format. You can use command line options or JSON formatting tools, such as Open Data Protocol (OData), to control the JSON results of your vRealize Automation REST API commands. To simplify your JSON output, consider using command line options or a to filter out unnecessary data and display only the information that you are interested in, such as the following information categories: n Published catalog items n Request status n Provisioned machine identifiers For information about requesting a bearer token, and about available pagination, sorting, and filtering options for any given command, see the Tips option on the vRealize Automation API landing page for the selected service API. VMware, Inc. 389
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.5 Linearized : No Author : VMware, Inc. Create Date : 2018:02:09 12:44:35-08:00 Modify Date : 2018:02:09 12:44:35-08:00 Creator : AH XSL Formatter V6.3 MR1 for Windows (x64) : 6.3.2.23978 (2016/03/18 11:26JST) Producer : Antenna House PDF Output Library 6.3.762 (Windows (x64)) Title : Programming Guide - vRealize. Automation 7.1 Trapped : False Page Count : 389 Page Mode : UseOutlines Page Layout : SinglePage Language : ENEXIF Metadata provided by EXIF.tools