Simplify zuul_console port binding logic

Now that osic-cloud1 is providing IPv6 only, we need to update
zuul_console to also include ipv6 support.  Previously, our logic
would only bind to 1 address, even if the host supported both
ipv4/ipv6.

With help from fungi, we can simplify our logic binding to both ipv4
and ipv6 at the same time.

Change-Id: Ia0286e017f14eab77c5d60333ee092c87bb1a84b
Signed-off-by: Paul Belanger <pabelanger@redhat.com>
This commit is contained in:
Paul Belanger 2016-08-13 13:01:24 -04:00
parent 17262fd512
commit 1bfb002d70
No known key found for this signature in database
GPG Key ID: 611A80832067AF38
1 changed files with 7 additions and 22 deletions

View File

@ -60,28 +60,13 @@ class Console(object):
class Server(object):
def __init__(self, path, port):
self.path = path
s = None
for res in socket.getaddrinfo(None, port, socket.AF_UNSPEC,
socket.SOCK_STREAM, 0,
socket.AI_PASSIVE):
af, socktype, proto, canonname, sa = res
try:
s = socket.socket(af, socktype, proto)
s.setsockopt(socket.SOL_SOCKET,
socket.SO_REUSEADDR, 1)
except socket.error:
s = None
continue
try:
s.bind(sa)
s.listen(1)
except socket.error:
s.close()
s = None
continue
break
if s is None:
sys.exit(1)
s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,
socket.SO_REUSEADDR, 1)
s.bind(('::', port))
s.listen(1)
self.socket = s
def accept(self):