To configure your extension service to provide access control for the objects it creates, define a resource class for each of its object types.

A ResourceClass element contains the information needed to construct a URL that a client can use to access the resource in a specific context. It must contain the following child elements:

MimeType
The MIME content type of all instances of the resource class.
UrlTemplate
The value of href attribute value for resources of this class. This can be any URI, and can include the variables {baseUri} and {resourceId}. When constructing the href value, VMware Cloud Director replaces {baseUri} with the VMware Cloud Director Director REST API base URL, and replaces {resourceId} with the UUID portion of the id attribute value of the resource.
Nid
The Namespace Identifier for resources of this type, as specified in http://www.ietf.org/rfc/rfc2141.txt.
UrnPattern
The Namespace Specific String for resources of this type, as specified in http://www.ietf.org/rfc/rfc2141.txt. You can provide a string or a named regular expression, where (?<id>) matches the resource identifier.

Prerequisites

This operation is restricted to system administrators.

Procedure

  1. Retrieve the XML representation of the service.
    Use a request like this one:
    GET https://vcloud.example.com/api/admin/extension/service/45
  2. Examine the response to find the Link for adding resource classes.
    This Link has the following form:
    <vcloud:Link
          rel="add"
          type="application/vnd.vmware.admin.resourceClass+xml"
          href="https://vcloud.example.com/api/admin/extension/service/45/resourceclasses" />
  3. Construct a ResourceClass element.
    See the request portion of Create an Extension Service Resource Class for information about the contents of this element.
  4. POST the ResourceClass element to the URL described in Step 2.

Example: Create an Extension Service Resource Class

This request defines a resource class named Backup.
  • The MimeType is specified using the standard form for vnd type names.
  • The UrlTemplate uses the {baseUri} and {resourceId} variables, and could expand to a URL like https://vcloud.example.com/backup/27
  • The Nid and UrnPattern elements provide rules for constructing an URN of the form:
    urn:vcloud:backup:id
    as shown in the response.
Request:
POST https://vcloud.example.com/api/admin/extension/service/45/resourceclasses
Content-type:application/vnd.vmware.admin.resourceClass+xml
<?xml version="1.0" encoding="UTF-8"?>
<vmext:ResourceClass
   name="Backup"
   xmlns:vmext="http://www.vmware.com/vcloud/extension/v1.5"
   xmlns:vcloud="http://www.vmware.com/vcloud/v1.5">
   <vmext:MimeType>application/vnd.vmware.vcloud.backup+xml</vmext:MimeType>
   <vmext:UrlTemplate>{baseUri}backup/{resourceId}</vmext:UrlTemplate>
   <vmext:Nid>vcloud</vmext:Nid>
   <vmext:UrnPattern>^backup(?&lt;id&gt;[0-9]*)</vmext:UrnPattern>
</vmext:ResourceClass>
Response:
201 Created
Content-Type: application/vnd.vmware.admin.resourceClass+xml
...
<vmext:ResourceClass
   name="Backup"
   xmlns:vmext="http://www.vmware.com/vcloud/extension/v1.5"
   xmlns:vcloud="http://www.vmware.com/vcloud/v1.5"
   id="urn:vcloud:backup:83"
   type="application/vnd.vmware.admin.resourceClass+xml"
   href="https://vcloud.example.com/api/admin/extension/service/resourceclass/83"
   ...>
   <vcloud:Link
      rel="remove"
      href="https://vcloud.example.com/api/admin/extension/service/resourceclass/83" />
   <vcloud:Link
      rel="up"
      type="application/vnd.vmware.admin.service+xml"
      href="https://vcloud.example.com/api/admin/extension/service/45" />
   <vcloud:Link
      rel="down:resourceClassActions"
      type="application/vnd.vmware.vcloud.query.records+xml"
      href="https://vcloud.example.com/api/admin/extension/service/resourceclass/83/resourceclassactions" />
   <vcloud:Link
      rel="down:serviceResources"
      type="application/vnd.vmware.vcloud.query.records+xml"
      href="https://vcloud.example.com/api/admin/extension/service/resourceclass/83/serviceresources" />
   <vmext:MimeType>BackupType+xml</vmext:MimeType>
   <vmext:UrlTemplate>{baseUri}backup/{resourceId}</vmext:UrlTemplate>
   <vmext:Nid>nidBackup</vmext:Nid>
   <vmext:UrnPattern>^myNssBackup(?&lt;id&gt;[0-9]*)</vmext:UrnPattern>
</vmext:ResourceClass>