Merge "Allow overriding of /etc/hosts entries"

This commit is contained in:
Zuul 2018-08-02 13:24:53 +00:00 committed by Gerrit Code Review
commit b5f7491540
3 changed files with 39 additions and 0 deletions

View File

@ -103,6 +103,20 @@ dns_opts = [
"This is required if 'use_designate' is True")
]
accessible_ip_opts = [
cfg.IPOpt('identity_ip_accessible',
default=None,
help='IP address of Keystone endpoint, accessible by tenant'
' machines. If not set, the results of the DNS lookup'
' performed where Sahara services are running will be'
' used.'),
cfg.IPOpt('object_store_ip_accessible',
default=None,
help='IP address of Swift endpoint, accessible by tenant'
' machines. If not set, the results of the DNS lookup'
' performed where Sahara services are running will be'
' used.'),
]
CONF = cfg.CONF
CONF.register_cli_opts(cli_opts)
@ -110,6 +124,7 @@ CONF.register_opts(networking_opts)
CONF.register_opts(edp_opts)
CONF.register_opts(db_opts)
CONF.register_opts(dns_opts)
CONF.register_opts(accessible_ip_opts)
log.register_options(CONF)
@ -158,6 +173,7 @@ def list_opts():
networking_opts,
dns_opts,
db_opts,
accessible_ip_opts,
plugins_base.opts,
topology_helper.opts,
keystone.opts,

View File

@ -170,3 +170,19 @@ class UtilsClusterTest(base.SaharaWithDbTestCase):
expected = ("nameserver 1.1.1.1\n"
"nameserver 2.2.2.2\n")
self.assertEqual(expected, value)
@mock.patch("socket.gethostbyname")
@mock.patch("sahara.utils.openstack.base.url_for")
def test_etc_hosts_entry_for_service_overrides(self, mock_url,
mock_get_host):
self.override_config("object_store_ip_accessible", None)
mock_url.return_value = "http://swift.org"
mock_get_host.return_value = '1.1.1.1'
res = cluster_utils.etc_hosts_entry_for_service('object-store')
self.assertEqual('1.1.1.1 swift.org\n', res)
self.override_config("object_store_ip_accessible", '2.2.2.2')
res = cluster_utils.etc_hosts_entry_for_service('object-store')
self.assertEqual('2.2.2.2 swift.org\n', res)

View File

@ -143,6 +143,13 @@ def etc_hosts_entry_for_service(service):
except keystone_ex.EndpointNotFound:
LOG.debug("Endpoint not found for service: '{}'".format(service))
return result
overridden_ip = (
getattr(CONF, "%s_ip_accessible" % service.replace('-', '_'), None)
)
if overridden_ip is not None:
return "%s %s\n" % (overridden_ip, hostname)
try:
result = "%s %s\n" % (socket.gethostbyname(hostname), hostname)
except socket.gaierror: