Importing an OVF Package

To import the virtual application OVF template, you follow a few basic steps. The steps are the same for an OVF package that contains a single virtual machines or an OVF package that contains a more complex virtual application.

Procedure

  1. Parse the OVF descriptor by calling OvfManager.parseDescriptor.
  2. Validate the target ESX/ESXi host by calling OvfManager.validateHost.
  3. Create the VirtualAppImportSpec by calling OvfManager.createImportSpec.

    This structure contains all the information needed to create the entities on the vCenter Server, including children. Clients do not have to read or modify VirtualAppImportSpec to perform basic OVF operations.

  4. Create the vCenter Server entities by calling ResourcePool.importVApp.
    The method uses a parsed OVF descriptor to create VirtualApp and VirtualMachine objects in the vSphere environment.

Results

The import process itself consists of two steps:

  • The server creates the virtual machines and virtual applications.

    You must wait for the server to create all inventory objects. During object creation, the server monitors the state property on the HttpNfcLease object returned from the ImportVApp call. When the server completes object creation, the server changes the lease to ready state and you can begin uploading virtual disk contents. If an error occurs while the server is creating inventory objects, the lease changes to the error state, and the import process is terminated.

  • The client application uploads virtual disk contents do an HTTP POST request with the content of the disk to the provided URLs. The disk is in the stream-optimized VMDK format (http://www.vmware.com/technical-resources/interfaces/vmdk.html). As an alternative, you can use the OVF tool, available at http://communities.vmware.com/community/developer/forums/ovf at VMware Communities.

    When all inventory objects have been created and the HttpNfcLease has changed to ready state, you can upload disk contents by using the URLs provided in the info property of the HttpNfcLease object. You must call the HttpNfcLeaseProgress method on the lease periodically to keep the lease alive and report progress to the server. Failure to do so causes the lease to time out, terminating the import process.

When you are done uploading disks, complete the lease by calling the HttpNfcLeaseComplete method. You can terminate the import process by calling the HttpNfcLeaseAbort method.

If the import process fails, is terminated, or times out, all created inventory objects are removed, including all virtual disks.