On Thu, Feb 17, 2011 at 12:50:12PM +0100, Rene Nussbaumer wrote:
> On Thu, Feb 17, 2011 at 12:46 PM, Iustin Pop <[email protected]> wrote:
> > On Thu, Feb 17, 2011 at 12:41:11PM +0100, René Nussbaumer wrote:
> >> The pydoc of TcpPing states: @param target: the IP or hostname to ping
> >> In fact if target is a hostname IPAddress.GetAddressFamily fails,
> >> because it expects a IP address. This patch fixes this by resolving the
> >> hostname first to a IP address before continue.
> >> ---
> >>  lib/netutils.py |    6 +++++-
> >>  1 files changed, 5 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/lib/netutils.py b/lib/netutils.py
> >> index 9dbf97b..878e1da 100644
> >> --- a/lib/netutils.py
> >> +++ b/lib/netutils.py
> >> @@ -202,7 +202,11 @@ def TcpPing(target, port, timeout=10, 
> >> live_port_needed=False, source=None):
> >>
> >>    """
> >>    try:
> >> -    family = IPAddress.GetAddressFamily(target)
> >> +    if IPAddress.IsValid(target):
> >> +      ip = target
> >> +    else:
> >> +      ip = GetHostname(target).ip
> >> +    family = IPAddress.GetAddressFamily(ip)
> >>    except errors.GenericError:
> >>      return False
> >
> > Do you actually need to be able to do this? I'd rather keep this
> > function to not do resolving (since we don't have hints here on what IP
> > we want), and leave the resolving to its callers.
> 
> Well for the epo I use TcpPing to see if a host is back alive again.
> Thought, I can also resolve the hostname in there and provide the IP.
> In any case another patch is coming then to update the misleading doc
> string.

Yes please. Note that you need to use the cluster family to decide
between ipv6/ipv4 when the host is dual home.

iustin

Reply via email to