| Cloud Admin | Enterprise Admin | User |
|---|---|---|
| |
|
|
Contents:
- OVF Package Instance Data Model
- OVF Package Instance Status Data Model
- Methods related to OVF Package Instance Resource
OVF Packages Instance are the materialization of an OVF Package on an Enterprise Repository.
OVF Packages Instances stores the OVF Envelop metadata document (.ovf) and all the required disk files on the Repository fileSystem.
(same restriction as OVF Package single VirtualSytem based on one VirtualDiskDescription)
OVF Package Instance Data Model
Identified by 'ovfUrl' OVF envelope source and 'idEnterprise'.
Contains Disk information, resource allocation requirements and optionally metadata present on the OVF Package.
| Field Name | Type | Occurs | Required | Description |
|---|---|---|---|---|
| ovfUrl | Link | 1 | true | Link to the source url of the .ovf file |
| idEnterprise | Integer | 1 | true | The Enterprise Repository identifier (match idEnterprise) |
| ovfPackageDiskFormatType | Enum | 1 | true | The virtual disk file format see ''Compatibilty Table'' |
| diskFilePath | String | 1 | true (false on 'upload' and 'bundle') | The path on the Repository file system (relative to the Repository Location ) containing the Disk File of the installed OVF Package |
| masterDiskFilePath | String | 1 | optional | If the OVF Package Instance is a bundle this path locate the 'diskFilePath' of its base OVF Package Instance |
| diskFileSize | Long | 1 | true (false on 'upload' and 'bundle') | Size of the file on 'diskFilePath' using Bytes |
| cpu | Integer | 1 | required | The required CPU resources by the target VirtualMachine (in terms of VirtualCore) |
| ram | Long | 1 | required | The required RAM resources by the target VirtualMachine |
| hd | Long | 1 | required | The required HardDrive resources by the target VirtualMachine |
| ramSizeUnit | Enum | 1 | optional (default 'byte') | The required RAM memory units |
| hdSizeUnit | Enum | 1 | optional (default 'byte') | The required HardDrive memory units |
| name | String | 1 | optional | The name of the product defined on the OVF Package |
| description | String | 1 | optional | The description for the OVF Package |
| iconPath | String | 1 | optional | The source icon url |
| categoryName | String | 1 | optional | The category tag for the OVF Package |
| edit | Link | 1 | true | Link to the url for edit the resource |
Media-Type of this representation is considered the standard.
"application/ovfpackageenvelope-xml" is used to require the complete OVF Envelope document format.
The document is modified from its original source (located on 'ovfUrl') to set the References FileType elements pointing to files relatives to the Repository Location .
OVF Package Instance Status Data Model
"application/ovfpackagestatus-xml" is the Media-Type provided to represent the OVF Package Instance status.
During the create operation all the files referenced on the package are downloaded from Internet (HTTP source) into the Repository file system, as disk files are usually very large the OVF Package installation can take some time.
| Field Name | Type | Occurs | Required | Description |
|---|---|---|---|---|
| ovUrl | Link | 1 | true | Link to the source url of the .ovf file |
| ovfPackageInstanceStatusType | Enum | 1 | true | The current life cycle state |
| progress | Double | 1 | true if DOWNLOAD | The average progress of the creation |
| errorCause | String | 1 | true if ERROR | The error description during the OVF Package Instance creation |
OVF Package Instance Status Type Data Model
| Enumeration | Description |
|---|---|
| DOWNLOAD | The OVF Package Instance is present on the Repository |
| DOWNLOADING | During the obtention of disk file from the source |
| NOT_DOWNLOAD | If the OVF Package Instance has been deleted |
| ERROR | Report any problem during the OVF Package Instance creation |
Methods related to OVF Package Instance Resource
Retrieve the list OVF Package Instances Status
List only accepted with Content-Type=application/ovfpackagestatus-xml.
Synopsis: GET http://example.com/api/datacenters/{$datacenterId}/remoteServices/{$type}/er/{$idEnterprise}/ovfpackageinstances
Request Headers: Accept, Content-Type=application/ovfpackagestatus-xml.
Request Message Body: N/A
Example Request: Retrieve the list with the status of all the OVF Package Instances on the repository of datacenter 1 available on enterprise 1
Response Headers: Content-Length, Content-Type, Location.
Response Message Body: N/A.
Response Status: 201, 400, 401, 403, 404
Example Response: 1 OVF Package Instance available, 1 on error and 1 currently being instantiated.
Retrieve an OVF Package Instance.
Retrieve an OVF Package Instance status.
Synopsis: GET http://example.com/api/admin/datacenters/{$datacenterId}/remoteServices/{$type}/ovfpackageinstances/{$ovfUrl}
Request Headers: Accept="application/ovfpackagestatus-xml", Content-Type.
Request Parameters: N/A.
Request Message Body: N/A.
Example Request: Retrieve the status of an OVF Package Instance
Response Headers: Content-Length, Content-Type="application/ovfpackagestatus-xml".
Response Message Body: OVF Package Instance Status
Response Status: 200, 401, 403.
Example Response: A being instantiated OVF Package Instance
Retrieve an OVF Package Instance information
An OVFPackagInstance can be represented as its OVF Envelope document or by its simplified OVF Package Instance Data Model with the information extracted form the OVF envelope actually used on the Abiquo platform.
Using the Content-Type header can specify the desired representation:
- application/ovfpackageenvelope-xml for the complet OVF envelope document.
- application/xml for the OVF Package Instance Data Model document.
Both description representations Response Status is 201 for DOWNLOAD OVF Package Instance, otherwise 404 is returned.
Synopsis: GET http://example.com/api/datacenters/{$datacenterId}/remoteServices/{$type}/er/{$idEnterprise}/ovfpackageinstances/{$ovfUrl}
Request Headers: Accept, Content-Type=application/xml, application/ovfpackageenvelope-xml.
Request Message Body: N/A
Example Request: Retrieve the list with the status of all the OVF Package Instances on the repository of datacenter 1 available on enterprise 1
Response Headers: Content-Length, Content-Type, Location.
Response Message Body: N/A.
Response Status: 201, 400, 401, 403, 404
Example Response: single OVF Package Instance description.
XXX example OVF Envelope
Get the disk file of an OVF Package Instance
Single disk support for OVF Package templates means every OVF Package Instance have a single disk file that can be downloaded using "application/ovfpackage-octet-stream" as the Content-Type of the request.
As this file can be very large (usually more than 1Gb) this operation response with a 301 Moved Permanently Response Status including the download URL.
The current resource is a proxy to the Datacenter Remote Service, the download URL is specific to the Appliance Manager of the specific datacenter, so direct communication with this remote service is required.
Synopsis: GET http://example.com/api/datacenters/{$datacenterId}/remoteServices/{$type}/er/{$idEnterprise}/ovfpackageinstances/{$ovfUrl}
Request Headers: Accept, Content-Type=application/ovfpackage-octet-stream.
Request Message Body: N/A
Example Request: Retrieve the disk file being used on the 'abiquo-repository.abiquo.com/s3direct/ubuntu/description.ovf' OVF Package Instance
Response Headers: Content-Length, Content-Type, Location.
Response Message Body: N/A.
Response Status: 301, 400, 401, 403, 404
Example Response: Location to download the disk file.
Create a new OVF Package Instance
Download an OVF Package Instance from an OVF URL source.
"url/ovf" Media-Type indicate the OVF Package is available from an external repositories of virtual appliances templates accessible using HTTP.
OVF Packages are located by the URL of its OVF Envelop file ''.ovf'' .
OVF Package Resource are organized on an Apps Library.
Requires to download all the referenced files of the OVF envelope on the enterprise repository
Synopsis: POST http://example.com/api/datacenters/{$datacenterId}/remoteServices/{$type}/er/{$enterpriseID}/ovfpackageinstances
Request Headers: Accept, Content-Type=url/ovf.
Request Parameters: N/A
Request Message Body: The OVF package source URL
Example Request: Require the instantiation of the OVF Package located at http://abiquo-repository.abiquo.com/s3direct/debian-5-lenny/description.ovf
Response Headers: Content-Length, Content-Type, Location.
Response Message Body: N/A.
Response Status: 201, 400, 401, 403, 404
Example Response: Response of the OVF Package Instance creation
Upload an OVF Package Instance from the client file system.
Creates a new OVF Package Instance from a disk file on the client file system.
As # Get the disk file of an OVF Package Instance operation requires direct communication with the Appliance Manager on the datacenter.
The Multipart request contains two attachments:
- OVF Package Instance with the required information:
- ovfUrl if OVF Package compatibility is desired you should use the appliance manager target host address to publish the OVF description file.
- http://{$amAddress}/er/{$idEnterprise}/ovfpackages/upload/packageName.ovf
- diskFilePath is not specified, it is generated from the ovfUrl.
- diskFileSize is not specified, is is the size of the file being upload.
- ovfUrl if OVF Package compatibility is desired you should use the appliance manager target host address to publish the OVF description file.
- Virtual disk binary file.
Note: the created OVF Package Instance do not have any associated OVF Package so it is not visible from the Apps Library Resource
TODO curl example
Bundle an existing OVF Package Instance.
Creates a new OVF Package Instance based on an already existing OVF Package on the repository.
A bundle OVF Package Instances are snapshots of OVF Package Instances.
This operations should be called before the bundle is complet (the new snapshot disk file is present on the Repository file system) otherwise return 404.
Request body message:
OVF Package Instance with the required information:
- ovfUrl of a bundle should be the ovfUrl of its parent ended with -snapshot-bundleUUID.ovf
- diskFilePath is not specified, it is inferred from the ovfUrl.
- diskFileSize is not specified, is the size of the inferred ''diskFilePath''.
- masterDiskFilePath is not specified, it is extracted form the ovfUrl of the master (codified on the ovfUrl of the bundle)
TODO curl example

