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:
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, vCloud Director replaces {baseUri} with the vCloud Director REST API base URL, and replaces {resourceId} with the UUID portion of the id attribute value of the resource. | |
The Namespace Identifier for resources of this type, as specified in http://www.ietf.org/rfc/rfc2141.txt. | |
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. |
1 | Retrieve the XML representation of the service. 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 Example: 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. |
This request defines a resource class named Backup.
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>
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>