
On Mon, Nov 03, 2008 at 08:32:54PM +0100, Ruben S. Montero wrote:
On Monday 03 November 2008 17:59:33 Daniel Veillard wrote:
This is a bit against the Node principle of libvirt, and could result in some fun in the hardware discovery mode, but in general the approach might work. Still we are looking at bits on the node to provide capabilities of the hypervisor, which may break in your case, and migration is defined as an operation between a domain in a given node and a connection to another node, so the migration within the OpenNebula cluster won't be expressable in a simple way with the normal libvirt API. Except that things should work conceptually I think.
You are totally right, this is putting the standard to the limit ;). There are some function calls that can not be implemented right away or, as you said, the semantics are slightly different. Maybe there is room to extend the API in the future, right now there is no standard way to interface a distributed VM Manager....
This is a really interesting problem to figure out. We might like to extend the node capabilities XML to provide information about the cluster as a whole - we currently have <guest> element describing what guest virt types are supported by a HV connection, and a <host> element describing a little about the host running the HV. It might make sense to say that the <host> info is optional and in its place provide some kind of 'cluster' / 'host group' information. I won't try to suggest what now - we'll likely learn about what would be useful through real world use of your initial driver functionality.
Basically the contributtion should be provided as a (set of) patch(es) agaisnt libvirt CVS head. Preferably the code should follow the existing coding guidelines of libvirt, reuse the existing infrastructure for error, memory allocations, etc ... If "make check syntax-check' compiles cleanly with your code applied that's a good first start :-) In general the inclusion takes a few iteration of reviews before being pushed, and splitting patches into smaller chunks helps the review process greatly. I didn't yet took the time to look at the patch online, so I have no idea a-priori of the work needed. Drivers are usually clean and separate, the problem is have them in the code base to minimize maintainance.
Ok. It sounds fine. We will update our implementation to CVS head (right now the patch is targeted for 0.4.4), update licenses to LGPL, and we will check if 'make check syntax-check' works. Also We'll try to split the patch in self- contained changes, so they are easy to review. I'll let you know when we are done...
When you update to work with latest CVS, I'd strongly recommend you make use of the brand new XML handling APIs we have in domain_conf.h. We have switched all drivers over to use these shared internal APIs for parsing the domain XML schema, so it would let you delete 90% of your one_conf.c file. 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 :|