On Thu, Jan 25, 2007 at 04:07:57PM +0000, Mark McLoughlin wrote:
On Thu, 2007-01-25 at 16:02 +0000, Daniel P. Berrange wrote:
> That's an interesting idea - your description..
>
> "a virConnectPtr is a connection to a specific hypervisor
> *and* the virtual network supervisor"
>
> ..makes me thing of a slightly alternative impl. We currently have
> a single internal driver API 'virDriverPtr' which is just a list of
> function pointers for all the HV related calls. Rather than making that
> struct bigger to add in networking calls, how about we define two separate
> internal driver APIs
>
> virHypervisorDriver
> virNetworkDriver
>
> It strikes me that most of the different hypervisor backends will simply
> want to re-use the same network driver backend, so why not properly
> de-couple them. The virConnectOpen function would thus first lookup
> a hypervisor driver, and then lookup a networking driver. This avoids
> the somewhat nasty issue of having to figure out how to activate
> multiple non-conficting drivers to get the correct combo of HV & network
> stuff.
Yep, that'd be the best way to do it.
> The only small complication would be ensuring that the HV driver and
> network driver didn't need to open 2 separate TCP connections to the
> same place, but I'm sure we'd be able to figure that out.
Yep.
(Also, if we go with this approach, we should probably also do
s/qemud/libvirtd/ or something ... but we need to figure out what to do
wrt. the "other libvirtd" first :-)
Indeed - since Rich Jones is looking at a more general purpose libvirtd,
we can adapt QEMU impl to play nicely with the generic daemon.
I figure separate out the QEMU bits from qemud and turn them into a regular
libvirt driver. Then set it up so that this driver is only used when invoked
by the libvirtd, and not ever directly by the client lib - that way we still
ensure a single daemon managing QEMU per node, without coupling the QEMU
impl to the daemon itself.
Dan.
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules:
http://search.cpan.org/~danberr/ -=|
|=- Projects:
http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|