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 thehref
value, VMware Cloud Director replaces{baseUri}
with the VMware Cloud Director Director REST API base URL, and replaces{resourceId}
with the UUID portion of theid
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
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 likehttps://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(?<id>[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(?<id>[0-9]*)</vmext:UrnPattern> </vmext:ResourceClass>