Thanks Doug for your suggestions.
I believe you are correct about the relation between OVA and OVF. But I am not
100 % possitive about your suggestion: "defining an appropriate domain in
libvirt". To understand better I am sharing more details about my plans:
1. Enhance libvirt interface code (libvirt.c) to provide a domain-independent
routine: virDomainCreateOVA, an alternate API to create domain.
To make client code real simple, this routine can take ova path as input
and internally strip the OVA to extract required details. (planning to define a
struct to hold all essential
information).
2. Second, to enhance ESX driver to perform ESX specfic calls.
Given OVA is a tar file, the parsing is just another file open/read operation;
it would be simple to perform it inside domain_conf.c (infact I have written a
parser to strip information off OVA already).
Hope to get some comments/suggestions on above steps.
Thanks!
Ata
CC: [email protected]
From: [email protected]
Subject: Re: [libvirt] Intend to add OVA installation API
Date: Sun, 24 Jun 2012 15:31:43 -0500
To: [email protected]
On Jun 24, 2012, at 2:30 PM, Ata Bohra <[email protected]> wrote:
Hi Everyone,
I am relatively new to libvirt community; have worked on it from last half year
mostly towards adding few missing APIs especially for ESX driver. One of the
features I worked was installing a domain (VM) using OVAs. It is been a long
time OVA became defacto standard for distributing and installing Virtual
Machines, but surprisingly libvirt does not provide support for it. I wanted to
perform a quick sanity int the community so that I am not stepping on anyone
feet here. So far, I have working code, but to contribute upstream would
require a bit of a cleanup work.
One of the concern that I intend to get inputs on:
OVA is a tar format archive, the first pre-requisite is to parse OVA and get
following information:
1. XML descriptor.
2. VMDKs for transfer after domain is created on the hypervisor. (in ESX world
that is done by getting a lease object and then transmitting the disk bits to
hypervisor)
I am wondering, where should I put the common code to parse OVA? My initial
thought is to enhance conf/domain_conf.* file, given it already provides
parsing routines for XML descriptor. Waiting for your feedback on this one.
As I am familiar with ESX libvirt interaction, so the immediate plan is to
enhance ESX driver, hopefully in near future will contribute the same feature
to KVM/Xen etc.
Thanks!
Ata
Going off of pure memory here but I believe OVA and OVF are related somehow
(one is a sub or super set or one can have multiple machines) but there is
already some lifting being done by open-ovf. One of our guys at work used it to
convert some VMWare OVA/OVF VMs to qemu VMs and got them into libvirt. I know
there were some really rough edges but it's worth looking at their code as an
option.
Basically this would involve not teaching libvirt to read OVA format but
unpacking that format and defining an appropriate domain in libvirt. Similiar
to what virtinst does now. The added flexibility is that you could migrate from
VMWare to qemu or Xen at the same time.
I'll try to dig up some scripts on Monday.
--Doug
--
libvir-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list