Make meta.find_best_address() more generic
This function now can choose address family with socket.getaddrinfo() method and there is no need to pass address family as argument to it. Change-Id: I72b1c1263876f2d047e5e540b72f2550ec73b65c Story: 2001475 Task: 6213 (cherry picked from commit c4067e3baf7b14d687c6ab6aafd43c291f138091)
This commit is contained in:
@@ -88,7 +88,7 @@ def get_server_ip(server, public=False, cloud_public=True, **kwargs):
|
|||||||
"""
|
"""
|
||||||
addrs = find_nova_addresses(server['addresses'], **kwargs)
|
addrs = find_nova_addresses(server['addresses'], **kwargs)
|
||||||
return find_best_address(
|
return find_best_address(
|
||||||
addrs, socket.AF_INET, public=public, cloud_public=cloud_public)
|
addrs, public=public, cloud_public=cloud_public)
|
||||||
|
|
||||||
|
|
||||||
def get_server_private_ip(server, cloud=None):
|
def get_server_private_ip(server, cloud=None):
|
||||||
@@ -211,7 +211,7 @@ def get_server_external_ipv4(cloud, server):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def find_best_address(addresses, family, public=False, cloud_public=True):
|
def find_best_address(addresses, public=False, cloud_public=True):
|
||||||
do_check = public == cloud_public
|
do_check = public == cloud_public
|
||||||
if not addresses:
|
if not addresses:
|
||||||
return None
|
return None
|
||||||
@@ -224,9 +224,12 @@ def find_best_address(addresses, family, public=False, cloud_public=True):
|
|||||||
for address in addresses:
|
for address in addresses:
|
||||||
# Return the first one that is reachable
|
# Return the first one that is reachable
|
||||||
try:
|
try:
|
||||||
connect_socket = socket.socket(family, socket.SOCK_STREAM, 0)
|
for res in socket.getaddrinfo(
|
||||||
|
address, 22, socket.AF_UNSPEC, socket.SOCK_STREAM, 0):
|
||||||
|
family, socktype, proto, _, sa = res
|
||||||
|
connect_socket = socket.socket(family, socktype, proto)
|
||||||
connect_socket.settimeout(1)
|
connect_socket.settimeout(1)
|
||||||
connect_socket.connect((address, 22, 0, 0))
|
connect_socket.connect(sa)
|
||||||
return address
|
return address
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
@@ -252,7 +255,7 @@ def get_server_external_ipv6(server):
|
|||||||
if server['accessIPv6']:
|
if server['accessIPv6']:
|
||||||
return server['accessIPv6']
|
return server['accessIPv6']
|
||||||
addresses = find_nova_addresses(addresses=server['addresses'], version=6)
|
addresses = find_nova_addresses(addresses=server['addresses'], version=6)
|
||||||
return find_best_address(addresses, socket.AF_INET6, public=True)
|
return find_best_address(addresses, public=True)
|
||||||
|
|
||||||
|
|
||||||
def get_server_default_ip(cloud, server):
|
def get_server_default_ip(cloud, server):
|
||||||
|
Reference in New Issue
Block a user