On Thu, Jan 25, 2007 at 03:49:41PM +0000, Mark McLoughlin wrote:
On Mon, 2007-01-15 at 20:06 +0000, Mark McLoughlin wrote:
> * Since virConnect is supposed to be a connection to a specific
> hypervisor, does it make sense to create networks (which should
> be hypervisor agnostic) through virConnect?
Okay, here's a suggestion - a virConnectPtr is a connection to a
specific hypervisor *and* the virtual network supervisor on that same
physical machine or user session.
What I like about this is that if a domain's description mentions a
virtual network, that name is scoped within the network supervisor
associated with the hypervisor on which the guest is being created.
Attached is a kind of a hacky patch to do something like that - if e.g.
you connect to xend, you also get a "network-only" connection to qemud
for managing networks.
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.
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.
Regards,
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 -=|