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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list