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