[libvirt] RFC: Enable Libvirt to handle OVA installation

Jim Fehlig jfehlig at suse.com
Thu Dec 6 17:20:08 UTC 2012


Daniel P. Berrange wrote:
> On Wed, Dec 05, 2012 at 01:50:05PM -0800, Ata Bohra wrote:
>   
>> This is a proposal to enhance Libvirt library to handle OVA package installation.  OVA:
>> OVA is one of the widely accepted and consortium defined/maintained format for 
>> Virtual Machine distros. Technically it is a tar file with three main components:
>> 1. VMX descriptor (XML file defining virtual machine specifics such as: virtual hardware etc.
>> 2. VMDKs in a compressed format. 
>> 3. Manifest file.  Proposal:
>> 1. Expose a public API method to allow an application to invoke OVA installation with 
>>    a file pointer to OVA file.  
>> 2. OVA util file:
>>    This file understands the OVA formats and rips out the given package to extract specific information:
>>    2.1. int get_vmx(char *vmx): 
>>         method can return VMX descriptor associated with a given OVA file. 
>>    2.2. int get_vmdks(struct ova_type *ova):
>>         method that seek the OVA file and populate ova_type struct which may look like;
>>   typedef struct disk_list_tag {
>>    char *file_name;
>>    off_t file_size;
>>    off_t file_offset;
>>    struct disk_list_tag *next;
>>   };
>>   
>>         typedef struct ova_type {
>>    int num_vmdks;
>>    ova_list *head;
>>   }
>> 2. Hypervisor specific changes:
>>    It can be done in more than one way:
>>    2.1: Enhance hypervisor driver function to implement hypervisor specific routines to
>>         perform OVA installations. 
>>    2.2.: Append a new driver to handle OVA installation such as virOvaDriver, main routines can be:
>>          open() : parse OVA using util functions.
>>    close()
>>    list_disk(): may display disk names
>>    install()   (Please suggest if there can be more routines to this driver, it can be enhanced later as well).
>>   It is possible to design this driver to handle OVA parsing as well, but I think keeping it in
>>   'util' may make that code available for all hypervisors given OVA format does not change per 
>>   hypervisor.   I'm inclined more towards 2.2 design as it is more generic and provides room for furture extensions.  Looking forward for comments/suggestions.  Thanks!Ata 		 	   		  
>>     
>
> I really don't want to see OVA support integrated into libvirt APIs.
> libvirt aims to only provide the mechanism for virt management. OVA,
> however, is a policy based approach to virt management. As such it
> should be done by a layer above libvirt, which simply makes use of
> the libvirt mechanism to accomplish its work.

Agreed.  The open-ovf project was an attempt at such a layer, but AFAIK
it is a dead project.  As I recall, the code was rather complex for the
task, and is likely lagging the current OVF specs, but it might be
useful for reference

https://gitorious.org/open-ovf

Regards,
Jim




More information about the libvir-list mailing list