]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-deploy.git/commitdiff
Update arg_validators.py
authorFrode Nordahl <frode@nordahl.net>
Sun, 13 Apr 2014 20:28:25 +0000 (22:28 +0200)
committerFrode Nordahl <frode@nordahl.net>
Sun, 13 Apr 2014 20:28:25 +0000 (22:28 +0200)
o Handle name:ip correctly for IPv6 address
o Handle hostnames that resolves to IPv6-only address
o Detect IPv6 address and raise error when hostname is expected

ceph_deploy/util/arg_validators.py

index 571a182904b6909b47316ecdaf4aa1de0a7b28fb..d350a9b712fd94f16e5ead87b06dd80e2e7f0e1f 100644 (file)
@@ -34,7 +34,7 @@ class Hostname(object):
         self.socket = _socket or socket  # just used for testing
 
     def __call__(self, string):
-        parts = string.split(':')
+        parts = string.split(':', 1)
         name = parts[0]
         host = parts[-1]
         try:
@@ -44,8 +44,8 @@ class Hostname(object):
             raise argparse.ArgumentError(None, msg)
 
         try:
-            self.socket.inet_aton(name)
-        except self.socket.error:
+            self.socket.getaddrinfo(name, 0, 0, 0, 0, self.socket.AI_NUMERICHOST)
+        except self.socket.gaierror:
             return string  # not an IP
         else:
             msg = '%s must be a hostname not an IP' % name