On Wed, Mar 25, 2009 at 10:01:22PM +0100, Radek Hladik wrote:
Hi,
I am developing wimple web application in PHP to monitor and control
VMs using libvirt. I hope it could become simple library for doing basic
things with VMs. And I would like to ask for your opinion about
different possibilities of calling libvirt.
Option 1) I am calling virsh via exec command now (one virsh for every
libvirt command). This can be used for local libvirt but it is very
inefficient. The overhead for remote libvirt would be unbearable. I
could run one virsh per page and use it "interactively" so the overhead
gets lower.
Particularly if you used the encryption & authentication for remote
connections, the overhead of running new virsh commands for every web
page would be prohibitive for this to work.
Option 2) The other option is to create Zend extension which should
be
able to call libvirt directly from C. However I've never done anything
like that so I do not know, whether it is reasonable or not.
This is the option we'd recommend. A few people have expressed interest in
this idea in the past, but unforatuntely I'm not aware of anyone having
written any code for this yet. We'd very much like to see a PHP binding
for libvirt developed & happy to give advice/support to anyone attempting
this. It is definitely doable, but I don't know how much of a hard learning
curve PHP C extensions have...
The libvirt API is quite large, but of course you would not need to suport
every single API in PHP. You could build it up incrementally focusing on
the APIs that you actually need in your applicaiton.
Option 3) I could also create some "wrapper daemon" in C or
other
language with libvirt binding. But I think that this is an ugly way :-)
Yeah, if you're going to write C, then you're better off doing a real
PHP binding to libvirt C API as per Option 2.
Option 4) I could "talk" directly to the libvirt socket.
But I am not
sure how the communication goes there and whether it is stable or
changes with every version. And I consider the socket to be internal
thing of libvirt...
Recommend against this option. We consider the wire RPC protocol to be
a private implementation detail. The C library is the only place where
we provide a guarentee of long term compatability. Or one of the language
bindings ontop of the C library (Perl, Python, OCaml, Ruby, Java, etc)
Regards,
Daniel
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|