From: Frode Nordahl Date: Thu, 27 Mar 2014 08:20:52 +0000 (+0100) Subject: Support hostname that resolve to IPv6-only address X-Git-Tag: v1.5.0~12^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a09cf17583ca558d3e4c77a1682ed01c223f182d;p=ceph-deploy.git Support hostname that resolve to IPv6-only address The current hostname validation does not cope with IPv6-only hostnames. Use getaddrinfo instead of gethostbyname to fix this. getaddrinfo raises the same exceptions and should work like a drop-in-replacement in this scenario. We should also address the IPv4-only check for if then input is an IP-address but the use of split on ':' is problematic and prevents code to check for IPv6-addresses as input. I'm not sure what the thought behind allowing "name:host" is so leaving it untouched. I have proposed code to check and warn for both IPv4 and IPv6 address input that I can provide as soon as I understand the scope of parsing "name:host" input. --- diff --git a/ceph_deploy/util/arg_validators.py b/ceph_deploy/util/arg_validators.py index 422bba3..571a182 100644 --- a/ceph_deploy/util/arg_validators.py +++ b/ceph_deploy/util/arg_validators.py @@ -38,7 +38,7 @@ class Hostname(object): name = parts[0] host = parts[-1] try: - self.socket.gethostbyname(host) + self.socket.getaddrinfo(host, 0) except self.socket.gaierror: msg = "hostname: %s is not resolvable" % host raise argparse.ArgumentError(None, msg)