[Libguestfs] [libvirt] [PATCH libguestfs 0/4] Add a libvirt backend to libguestfs.
Richard W.M. Jones
rjones at redhat.com
Mon Jul 23 12:50:30 UTC 2012
On Mon, Jul 23, 2012 at 11:21:37AM +0100, Daniel P. Berrange wrote:
> On Mon, Jul 23, 2012 at 11:02:41AM +0100, Richard W.M. Jones wrote:
> > It's using NULL and expecting libvirt to choose the appropriate
> > connection URI, which does appear to work.
>
> Apps should only rely on NULL, if they are able to work with any
> possible hypervisor. If you have specific requirements for QEMU
> you should always request QEMU explicitly. A local sysadmin may
> well have set a different default URI using an env variable or
> $HOME/.libvirt/libvirt.conf which will give you an unexpected
> choice.
Currently the administrator can set the attach-method to one of:
"appliance" (default): run qemu directly
"libvirt": run libvirt with conn URI = NULL
"libvirt:URI": run libvirt with conn URI = "URI"
We could make "libvirt" mean "choose qemu:///session or
qemu:///system".
Then if they want NULL, we could have "libvirt:" (colon followed by
empty string) or "libvirt:NULL" or something else.
> Alternatively you could just say to hell with it, and require
> the application to pass in a pre-opened virConnectPtr that
> you use. This is actually quite desirable, since it will avoid
> the user having to authenticate multiple times, when the app
> already has an open connection
Unfortunately this is hard to implement. Specifically we cannot
generally convert a language-specific object (eg. a Perl Sys::Virt
object) into a virConnectPtr. Been discussed before a few years back
when we wanted to pass virDomainPtr to a libguestfs call. There is
even non-working support in the generator for this ...
In true garbage-collected languages it's even harder to get it right.
How would you stop the connection object 'conn' from getting collected
and closed too early in OCaml code such as:
conn = Libvirt.Connect.connect_readonly ()
g#attach_libvirt conn;
(* as far as OCaml is concerned, conn is unreferenced from here onwards *)
g#launch ();
g#do_lots_of_stuff ();
g#close ()
The language bindings would have to model the lifetime of every object
that could potentially be attached to the libguestfs handle.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://et.redhat.com/~rjones/virt-top
More information about the Libguestfs
mailing list