Pass endpoint override to constructors

Also, the variable name from keystoneauth is "*-endpoint-override" ...
so we need to respond to that. Respond to the old -endpoint for compat
reasons. Then let's actually pass in the value.

Change-Id: I6f413b02e0d2b167a4ee30494b2c91c67124b219
This commit is contained in:
Monty Taylor 2015-12-12 13:03:41 -05:00
parent dbdf8e4248
commit 16166c03c2
2 changed files with 23 additions and 5 deletions

View File

@ -164,8 +164,9 @@ class CloudConfig(object):
return self.config.get(key, None)
def get_endpoint(self, service_type):
key = _make_key('endpoint', service_type)
return self.config.get(key, None)
key = _make_key('endpoint_override', service_type)
old_key = _make_key('endpoint', service_type)
return self.config.get(key, self.config.get(old_key, None))
@property
def prefer_ipv6(self):
@ -310,6 +311,7 @@ class CloudConfig(object):
session=self.get_session(),
service_name=self.get_service_name(service_key),
service_type=self.get_service_type(service_key),
endpoint_override=self.get_endpoint(service_key),
region_name=self.region)
if service_key == 'image':

View File

@ -25,8 +25,9 @@ from os_client_config.tests import base
fake_config_dict = {'a': 1, 'os_b': 2, 'c': 3, 'os_c': 4}
fake_services_dict = {
'compute_api_version': '2',
'compute_endpoint': 'http://compute.example.com',
'compute_endpoint_override': 'http://compute.example.com',
'compute_region_name': 'region-bl',
'telemetry_endpoint': 'http://telemetry.example.com',
'interface': 'public',
'image_service_type': 'mage',
'identity_interface': 'admin',
@ -189,14 +190,24 @@ class TestCloudConfig(base.TestCase):
verify=True, cert=None, timeout=9)
@mock.patch.object(ksa_session, 'Session')
def test_override_session_endpoint(self, mock_session):
def test_override_session_endpoint_override(self, mock_session):
config_dict = defaults.get_defaults()
config_dict.update(fake_services_dict)
cc = cloud_config.CloudConfig(
"test1", "region-al", config_dict, auth_plugin=mock.Mock())
self.assertEqual(
cc.get_session_endpoint('compute'),
fake_services_dict['compute_endpoint'])
fake_services_dict['compute_endpoint_override'])
@mock.patch.object(ksa_session, 'Session')
def test_override_session_endpoint(self, mock_session):
config_dict = defaults.get_defaults()
config_dict.update(fake_services_dict)
cc = cloud_config.CloudConfig(
"test1", "region-al", config_dict, auth_plugin=mock.Mock())
self.assertEqual(
cc.get_session_endpoint('telemetry'),
fake_services_dict['telemetry_endpoint'])
@mock.patch.object(cloud_config.CloudConfig, 'get_session')
def test_session_endpoint_identity(self, mock_get_session):
@ -297,6 +308,7 @@ class TestCloudConfig(base.TestCase):
'2',
service_name=None,
endpoint='http://example.com',
endpoint_override=None,
region_name='region-al',
interface='public',
session=mock.ANY,
@ -316,6 +328,7 @@ class TestCloudConfig(base.TestCase):
mock_client.assert_called_with(
'2.0',
endpoint_type='public',
endpoint_override=None,
region_name='region-al',
service_type='network',
session=mock.ANY,
@ -333,6 +346,7 @@ class TestCloudConfig(base.TestCase):
mock_client.assert_called_with(
'2',
endpoint_type='public',
endpoint_override='http://compute.example.com',
region_name='region-al',
service_type='compute',
session=mock.ANY,
@ -351,6 +365,7 @@ class TestCloudConfig(base.TestCase):
'2.0',
endpoint='http://example.com/v2',
endpoint_type='admin',
endpoint_override=None,
region_name='region-al',
service_type='identity',
session=mock.ANY,
@ -370,6 +385,7 @@ class TestCloudConfig(base.TestCase):
'3',
endpoint='http://example.com',
endpoint_type='admin',
endpoint_override=None,
region_name='region-al',
service_type='identity',
session=mock.ANY,