To initiate the OVF upload, a client makes a POST request to an action/upload link in the target catalog. The type of this link is application/vnd.vmware.vcloud.uploadVAppTemplateParams+xml. The request body is an UploadVAppTemplateParams element.
The first step in uploading an OVF package is to request vCloud Director to create a catalog item in the target catalog and a corresponding vAppTemplate object to represent the template that will be constructed from the upload.
Verify that the following are true:
1 | Find the action/upload link for vApp templates in the target catalog. Retrieve the XML representation of the catalog using a request like the one shown in the request portion of Example: Deployment Information in a VDC. The response contains an action/upload link, which has the following form: <Link rel="add" type="application/vnd.vmware.vcloud.uploadVAppTemplateParams+xml" href="https://vcloud.example.com/api/catalog/32/action/upload" /> |
2 | Create an UploadVAppTemplateParams element that specifies the parameters for the vApp template that this request creates. See the request portion of Example: Initiating the Upload. |
3 | (Optional) If the OVF package includes a manifest, include a manifestRequired="true" attribute in the UploadVAppTemplateParams element. Some OVF packages include a manifest document, which provides a checksum for each file in the package. When the UploadVAppTemplateParams element includes a manifestRequired="true" attribute, the set of File elements returned after you upload the OVF descriptor includes one for the manifest itself. |
4 | Make an HTTP POST request to the upload link that you retrieved in Step 1, supplying the UploadVAppTemplateParams element in the request body. See the request portion of Example: Initiating the Upload. |
5 |
The response, a CatalogITem element, contains an Entity element that contains a reference to the vApp template that will be constructed from the uploaded OVF. See the response portion of Example: Initiating the Upload. |
The server creates a VAppTemplate object and a corresponding CatalogItem in the target catalog, and returns an XML representation of the CatalogItem. See the response portion of Example: Initiating the Upload.
This example assumes an OVF package that has no manifest.
POST https://vcloud.example.com/api/catalog/32/action/upload Content-Type: application/vnd.vmware.vcloud.uploadVAppTemplateParams+xml ... <?xml version="1.0" encoding="UTF-8"?> <UploadVAppTemplateParams name="Ubuntu Template" xmlns="http://www.vmware.com/vcloud/v1.5" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"> <Description>Ubuntu vApp Template</Description> </UploadVAppTemplateParams>
201 Created Content-Type: application/vnd.vmware.vcloud.catalogItem+xml ... <CatalogItem xmlns="http://www.vmware.com/vcloud/v1.5" name="Ubuntu Template" id="urn:vcloud:catalogitem:221" href="https://vcloud.example.com/api/catalogItem/221" ... > <Link rel="up" type="application/vnd.vmware.vcloud.catalog+xml" href="https://vcloud.example.com/api/catalog/32" /> <Link rel="down" type="application/vnd.vmware.vcloud.metadata+xml" href="https://vcloud.example.com/api/catalogItem/221/metadata" /> <Link rel="edit" type="application/vnd.vmware.vcloud.catalogItem+xml" href="https://vcloud.example.com/api/catalogItem/221" /> <Link rel="remove" href="https://vcloud.example.com/api/catalogItem/221" /> <Description>Approved template for public FTP sites</Description> <Entity href="https://vcloud.example.com/api/vAppTemplate/vappTemplate-111" type="application/vnd.vmware.vcloud.vAppTemplate+xml" name="Ubuntu vApp Template"/> </CatalogItem>