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
