On Thu, Jul 01, 2010 at 10:16:22AM +0200, Manuel Franceschini wrote:
> On Wed, Jun 30, 2010 at 5:08 PM, Guido Trotter <[email protected]> wrote:
> > On Wed, Jun 30, 2010 at 2:57 PM, Manuel Franceschini
> > <[email protected]> wrote:
> >> On Wed, Jun 30, 2010 at 3:04 PM, Guido Trotter <[email protected]> 
> >> wrote:
> >>> On Wed, Jun 30, 2010 at 1:14 PM, Manuel Franceschini
> >>> <[email protected]> wrote:
> >>>
> >>>> +    daemon.AsyncUDPSocket.__init__(self, 
> >>>> utils.GetAddressFamily(bind_address))
> >>>
> >>> Are you sure this works? bind_address is '' by default and
> >>> GetAddressFamily fails on that.
> >>
> >> By default it is "0.0.0.0". Currently if an invalid address is passed
> >> we fail with 'socket.gaierror'. This improves that by raising a
> >> 'GenericError' that GetAddressFamily throws.
> >>
> >
> > Right... Mmm... the docstring still says that by default it's ''.
> > Wonder when that changed, and if we should fix the docstring. :)
> 
> I think an empty string should raise an exception (as it does with
> this patch). I removed that from the docstring. Allowed values are
> either a valid address or IP{4,6}_ADDRESS_ANY.
> 
> >>> Also, if bind_address is '' I'd say we should create two sockets, and
> >>> bind on both ip4 and ip6, if the hosts has addresses/supports either.
> >>
> >> The plan was to use a cluster-level parameter to determine whether
> >> IPv4 or IPv6 is preferred. Based on that information we could bind
> >> confd. What about doing that for now and see whether/how we support
> >> hybrid clusters?
> >
> > Well, for confd for example it's quite simple to support either, as
> > it's a quite standalone component. I wouldn't say "let's have 3 nodes
> > on v4 and 3 on v6" but for example having rapi and confd reachable by
> > either sounds worth it. And a good path to transition. We'd need to
> > save both the v4 and v6 ip in the config file for this to work, but I
> > guess that would be doable.
> 
> It is certainly doable and might be worth it. However, if the
> cluster-level preference is, say, IPv4 and not all nodes have IPv6
> enabled, we could end up with a hybrid setup. Do we want that? For
> consistency and error detection it is simpler and more robust to have
> a preference (either IPv4 or IPv6 or both) and then check whether all
> (affected) nodes comply to that. In other words, if the cluster
> preference is IPv4 we should not automagically accept IPv6
> connections.
> 
> In order to achieve that, we could introduce a IP_ADDRESS_ANY constant
> that would instruct a daemon to create sockets for both IPv4 and IPv6.
> What do you think?

Sounds good to me. As I said before: my preference is that we get IPv6
working in 'pure' environments, rather than supporting both (since
Ganeti is self contained app, more or less…).

iustin

Reply via email to