Translate hostname to IP when the main_vip is obtained
In some cases, the AUTH_URL parameter from the overcloudrc file does not contain an IP, but a hostname. In those cases. the hostname needs to be translated into an IP into the get_main_vip function Change-Id: Ibad4d1b31c56711df231f4bbf3379d416fb3e433
This commit is contained in:
parent
39357023dc
commit
eda34a2a63
@ -19,9 +19,11 @@ from datetime import datetime
|
|||||||
import math
|
import math
|
||||||
import random
|
import random
|
||||||
import re
|
import re
|
||||||
|
import socket
|
||||||
import time
|
import time
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
|
||||||
|
import netaddr
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
|
|
||||||
import tobiko
|
import tobiko
|
||||||
@ -215,7 +217,19 @@ def get_main_vip():
|
|||||||
Retreive an ip address (ipv4/ipv6) from the auth_url."""
|
Retreive an ip address (ipv4/ipv6) from the auth_url."""
|
||||||
auth_url = keystone.default_keystone_credentials().auth_url
|
auth_url = keystone.default_keystone_credentials().auth_url
|
||||||
auth_url_parsed = urllib.parse.urlsplit(auth_url)
|
auth_url_parsed = urllib.parse.urlsplit(auth_url)
|
||||||
return auth_url_parsed.hostname
|
main_vip = auth_url_parsed.hostname
|
||||||
|
|
||||||
|
if not (netaddr.valid_ipv4(main_vip) or netaddr.valid_ipv6(main_vip)):
|
||||||
|
try:
|
||||||
|
# socket.gethostbyname translates hostname to IPv4 - it fails when
|
||||||
|
# no IPv4 address is available
|
||||||
|
main_vip = socket.gethostbyname(main_vip)
|
||||||
|
except socket.gaierror:
|
||||||
|
# the following method obtains an IPv6 from a hostname
|
||||||
|
main_vip = socket.getaddrinfo(
|
||||||
|
main_vip, None, socket.AF_INET6)[0][4][0]
|
||||||
|
|
||||||
|
return main_vip
|
||||||
|
|
||||||
|
|
||||||
def get_main_vip_controller(main_vip):
|
def get_main_vip_controller(main_vip):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user