Merge "Do not assume ksv2 in multi-region deploys"
This commit is contained in:
commit
f71e83d867
@ -141,9 +141,12 @@ class IdentityServiceContext(OSContextGenerator):
|
|||||||
# If using keystone v3 the context is incomplete without the
|
# If using keystone v3 the context is incomplete without the
|
||||||
# admin domain id
|
# admin domain id
|
||||||
if local_ctxt['api_version'] == '3':
|
if local_ctxt['api_version'] == '3':
|
||||||
|
local_ctxt['ks_endpoint_path'] = 'v3'
|
||||||
if not config('default_domain'):
|
if not config('default_domain'):
|
||||||
local_ctxt['admin_domain_id'] = rdata.get(
|
local_ctxt['admin_domain_id'] = rdata.get(
|
||||||
'admin_domain_id')
|
'admin_domain_id')
|
||||||
|
else:
|
||||||
|
local_ctxt['ks_endpoint_path'] = 'v2.0'
|
||||||
if not context_complete(local_ctxt):
|
if not context_complete(local_ctxt):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@ -176,12 +179,15 @@ class IdentityServiceContext(OSContextGenerator):
|
|||||||
# region in order to support multi-region deployments
|
# region in order to support multi-region deployments
|
||||||
if region is not None:
|
if region is not None:
|
||||||
if config("use-internal-endpoints") and internal_host:
|
if config("use-internal-endpoints") and internal_host:
|
||||||
endpoint = ("%(internal_protocol)s://%(internal_host)s"
|
endpoint = (
|
||||||
":%(internal_port)s/v2.0") % local_ctxt
|
"{internal_protocol}://{internal_host}"
|
||||||
|
":{internal_port}/{ks_endpoint_path}").format(
|
||||||
|
**local_ctxt)
|
||||||
else:
|
else:
|
||||||
endpoint = ("%(service_protocol)s://%(service_host)s"
|
endpoint = (
|
||||||
":%(service_port)s/v2.0") % local_ctxt
|
"{service_protocol}://{service_host}"
|
||||||
|
":{service_port}/{ks_endpoint_path}").format(
|
||||||
|
**local_ctxt)
|
||||||
for reg in region.split():
|
for reg in region.split():
|
||||||
regions.add((endpoint, reg))
|
regions.add((endpoint, reg))
|
||||||
|
|
||||||
|
@ -698,6 +698,7 @@ class TestHorizonContexts(CharmTestCase):
|
|||||||
'internal_protocol': 'http',
|
'internal_protocol': 'http',
|
||||||
'ks_host': 'foo', 'ks_port': 5000,
|
'ks_host': 'foo', 'ks_port': 5000,
|
||||||
'ks_protocol': 'http',
|
'ks_protocol': 'http',
|
||||||
|
'ks_endpoint_path': 'v2.0',
|
||||||
'default_role': 'member',
|
'default_role': 'member',
|
||||||
'api_version': '2', 'service_protocol': 'http'})
|
'api_version': '2', 'service_protocol': 'http'})
|
||||||
|
|
||||||
@ -716,6 +717,7 @@ class TestHorizonContexts(CharmTestCase):
|
|||||||
'internal_host': 'bar', 'internal_port': 5001,
|
'internal_host': 'bar', 'internal_port': 5001,
|
||||||
'internal_protocol': 'http',
|
'internal_protocol': 'http',
|
||||||
'ks_host': 'foo', 'ks_port': 5000,
|
'ks_host': 'foo', 'ks_port': 5000,
|
||||||
|
'ks_endpoint_path': 'v2.0',
|
||||||
'ks_protocol': 'http',
|
'ks_protocol': 'http',
|
||||||
'default_role': 'member',
|
'default_role': 'member',
|
||||||
'api_version': '2', 'service_protocol': 'http'})
|
'api_version': '2', 'service_protocol': 'http'})
|
||||||
@ -737,12 +739,41 @@ class TestHorizonContexts(CharmTestCase):
|
|||||||
'internal_protocol': 'http',
|
'internal_protocol': 'http',
|
||||||
'ks_host': 'foo', 'ks_port': 5000,
|
'ks_host': 'foo', 'ks_port': 5000,
|
||||||
'ks_protocol': 'http',
|
'ks_protocol': 'http',
|
||||||
|
'ks_endpoint_path': 'v2.0',
|
||||||
'default_role': 'member',
|
'default_role': 'member',
|
||||||
'regions': [{'endpoint': 'http://foo:5000/v2.0',
|
'regions': [{'endpoint': 'http://foo:5000/v2.0',
|
||||||
'title': 'regionOne'},
|
'title': 'regionOne'},
|
||||||
{'endpoint': 'http://foo:5000/v2.0',
|
{'endpoint': 'http://foo:5000/v2.0',
|
||||||
'title': 'regionTwo'}]})
|
'title': 'regionTwo'}]})
|
||||||
|
|
||||||
|
@patch("hooks.horizon_contexts.format_ipv6_addr")
|
||||||
|
def test_IdentityServiceContext_multi_region_v3(self,
|
||||||
|
mock_format_ipv6_addr):
|
||||||
|
mock_format_ipv6_addr.side_effect = lambda x: x
|
||||||
|
self.relation_ids.return_value = ['foo']
|
||||||
|
self.related_units.return_value = ['bar', 'baz']
|
||||||
|
self.relation_get.side_effect = self.test_relation.get
|
||||||
|
self.test_relation.set({'service_host': 'foo', 'service_port': 5000,
|
||||||
|
'internal_host': 'bar', 'internal_port': 5001,
|
||||||
|
'region': 'regionOne regionTwo',
|
||||||
|
'api_version': '3',
|
||||||
|
'admin_domain_id': 'admindomainid'})
|
||||||
|
self.context_complete.return_value = True
|
||||||
|
self.assertEqual(horizon_contexts.IdentityServiceContext()(),
|
||||||
|
{'admin_domain_id': 'admindomainid',
|
||||||
|
'service_host': 'foo', 'service_port': 5000,
|
||||||
|
'service_protocol': 'http', 'api_version': '3',
|
||||||
|
'internal_host': 'bar', 'internal_port': 5001,
|
||||||
|
'internal_protocol': 'http',
|
||||||
|
'ks_host': 'foo', 'ks_port': 5000,
|
||||||
|
'ks_protocol': 'http',
|
||||||
|
'ks_endpoint_path': 'v3',
|
||||||
|
'default_role': 'member',
|
||||||
|
'regions': [{'endpoint': 'http://foo:5000/v3',
|
||||||
|
'title': 'regionOne'},
|
||||||
|
{'endpoint': 'http://foo:5000/v3',
|
||||||
|
'title': 'regionTwo'}]})
|
||||||
|
|
||||||
@patch("hooks.horizon_contexts.format_ipv6_addr")
|
@patch("hooks.horizon_contexts.format_ipv6_addr")
|
||||||
def test_IdentityServiceContext_api3(self, mock_format_ipv6_addr):
|
def test_IdentityServiceContext_api3(self, mock_format_ipv6_addr):
|
||||||
mock_format_ipv6_addr.side_effect = lambda x: x
|
mock_format_ipv6_addr.side_effect = lambda x: x
|
||||||
@ -767,6 +798,7 @@ class TestHorizonContexts(CharmTestCase):
|
|||||||
'ks_host': 'foo',
|
'ks_host': 'foo',
|
||||||
'ks_port': 5000,
|
'ks_port': 5000,
|
||||||
'ks_protocol': 'http',
|
'ks_protocol': 'http',
|
||||||
|
'ks_endpoint_path': 'v3',
|
||||||
'api_version': '3',
|
'api_version': '3',
|
||||||
'default_role': 'member',
|
'default_role': 'member',
|
||||||
'admin_domain_id': 'admindomainid',
|
'admin_domain_id': 'admindomainid',
|
||||||
@ -829,6 +861,7 @@ class TestHorizonContexts(CharmTestCase):
|
|||||||
'ks_host': 'foo',
|
'ks_host': 'foo',
|
||||||
'ks_port': 5000,
|
'ks_port': 5000,
|
||||||
'ks_protocol': 'http',
|
'ks_protocol': 'http',
|
||||||
|
'ks_endpoint_path': 'v3',
|
||||||
'api_version': '3',
|
'api_version': '3',
|
||||||
'default_role': 'Member',
|
'default_role': 'Member',
|
||||||
'admin_domain_id': 'admindomainid',
|
'admin_domain_id': 'admindomainid',
|
||||||
@ -855,6 +888,7 @@ class TestHorizonContexts(CharmTestCase):
|
|||||||
'internal_protocol': 'http',
|
'internal_protocol': 'http',
|
||||||
'ks_host': 'foo', 'ks_port': 5000,
|
'ks_host': 'foo', 'ks_port': 5000,
|
||||||
'ks_protocol': 'http',
|
'ks_protocol': 'http',
|
||||||
|
'ks_endpoint_path': 'v3',
|
||||||
'api_version': '3',
|
'api_version': '3',
|
||||||
'default_role': 'member',
|
'default_role': 'member',
|
||||||
'admin_domain_id': 'admindomainid',
|
'admin_domain_id': 'admindomainid',
|
||||||
@ -869,7 +903,7 @@ class TestHorizonContexts(CharmTestCase):
|
|||||||
self.relation_get.side_effect = self.test_relation.get
|
self.relation_get.side_effect = self.test_relation.get
|
||||||
self.test_relation.set({'service_host': 'foo', 'service_port': 5000,
|
self.test_relation.set({'service_host': 'foo', 'service_port': 5000,
|
||||||
'internal_host': 'bar', 'internal_port': 5001,
|
'internal_host': 'bar', 'internal_port': 5001,
|
||||||
'region': 'regionOne'})
|
'region': 'regionOne', 'api_version': '2'})
|
||||||
self.test_config.set('use-internal-endpoints', True)
|
self.test_config.set('use-internal-endpoints', True)
|
||||||
self.context_complete.return_value = True
|
self.context_complete.return_value = True
|
||||||
self.maxDiff = None
|
self.maxDiff = None
|
||||||
@ -879,6 +913,7 @@ class TestHorizonContexts(CharmTestCase):
|
|||||||
'internal_host': 'bar', 'internal_port': 5001,
|
'internal_host': 'bar', 'internal_port': 5001,
|
||||||
'internal_protocol': 'http',
|
'internal_protocol': 'http',
|
||||||
'ks_host': 'bar', 'ks_port': 5001,
|
'ks_host': 'bar', 'ks_port': 5001,
|
||||||
|
'ks_endpoint_path': 'v2.0',
|
||||||
'ks_protocol': 'http',
|
'ks_protocol': 'http',
|
||||||
'api_version': '2',
|
'api_version': '2',
|
||||||
'default_role': 'member'})
|
'default_role': 'member'})
|
||||||
@ -891,7 +926,8 @@ class TestHorizonContexts(CharmTestCase):
|
|||||||
self.related_units.return_value = ['bar', 'baz']
|
self.related_units.return_value = ['bar', 'baz']
|
||||||
self.relation_get.side_effect = self.test_relation.get
|
self.relation_get.side_effect = self.test_relation.get
|
||||||
self.test_relation.set({'service_host': 'foo', 'service_port': 5000,
|
self.test_relation.set({'service_host': 'foo', 'service_port': 5000,
|
||||||
'region': 'regionOne regionTwo'})
|
'region': 'regionOne regionTwo',
|
||||||
|
'api_version': '2'})
|
||||||
self.test_config.set('use-internal-endpoints', True)
|
self.test_config.set('use-internal-endpoints', True)
|
||||||
self.context_complete.return_value = True
|
self.context_complete.return_value = True
|
||||||
self.maxDiff = None
|
self.maxDiff = None
|
||||||
@ -901,6 +937,7 @@ class TestHorizonContexts(CharmTestCase):
|
|||||||
'internal_host': None, 'internal_port': None,
|
'internal_host': None, 'internal_port': None,
|
||||||
'internal_protocol': 'http',
|
'internal_protocol': 'http',
|
||||||
'ks_host': 'foo', 'ks_port': 5000,
|
'ks_host': 'foo', 'ks_port': 5000,
|
||||||
|
'ks_endpoint_path': 'v2.0',
|
||||||
'ks_protocol': 'http',
|
'ks_protocol': 'http',
|
||||||
'api_version': '2',
|
'api_version': '2',
|
||||||
'default_role': 'member',
|
'default_role': 'member',
|
||||||
|
Loading…
Reference in New Issue
Block a user