endpoint notification v2 API compatibility
Fallback to v2 API behaviour for processing endpoints for older OpenStack releases where the v2 API is still the default. Change-Id: Ieb9afed0a6442fac48f8e1ccc0f5c34626a3be18 Closes-Bug: 1889180
This commit is contained in:
parent
819c41acda
commit
e02f0590a7
@ -2108,7 +2108,15 @@ def service_endpoint_dict(service_name):
|
||||
endpoint_dict = {}
|
||||
for endpoint in current_endpoints:
|
||||
if endpoint['service_id'] == service_id:
|
||||
endpoint_dict[endpoint['interface']] = endpoint['url']
|
||||
if 'interface' in endpoint:
|
||||
# NOTE: v3 API response - endpoint per interface
|
||||
endpoint_dict[endpoint['interface']] = endpoint['url']
|
||||
else:
|
||||
# NOTE: v2 API response - endpoint has all interfaces
|
||||
for interface in ('public', 'internal', 'admin'):
|
||||
endpoint_url = endpoint.get('{}url'.format(interface))
|
||||
if endpoint_url:
|
||||
endpoint_dict[interface] = endpoint_url
|
||||
return endpoint_dict
|
||||
|
||||
|
||||
|
@ -978,7 +978,7 @@ class TestKeystoneUtils(CharmTestCase):
|
||||
any_order=True)
|
||||
|
||||
@patch.object(utils, 'get_manager')
|
||||
def test_service_endpoint_dict(self, mock_get_manager):
|
||||
def test_service_endpoint_dict_v3(self, mock_get_manager):
|
||||
mock_manager = MagicMock()
|
||||
mock_get_manager.return_value = mock_manager
|
||||
mock_manager.resolve_service_id.return_value = None
|
||||
@ -1019,6 +1019,46 @@ class TestKeystoneUtils(CharmTestCase):
|
||||
{}
|
||||
)
|
||||
|
||||
@patch.object(utils, 'get_manager')
|
||||
def test_service_endpoint_dict_v2(self, mock_get_manager):
|
||||
mock_manager = MagicMock()
|
||||
mock_get_manager.return_value = mock_manager
|
||||
mock_manager.resolve_service_id.return_value = None
|
||||
|
||||
self.assertIsNone(utils.service_endpoint_dict('dummyservice'))
|
||||
|
||||
mock_manager.reset_mock()
|
||||
|
||||
mock_manager.resolve_service_id.return_value = 'd123456'
|
||||
mock_manager.list_endpoints.return_value = [
|
||||
{'service_id': 'd123456',
|
||||
'internalurl': 'http://dummyservice.demo.com',
|
||||
'publicurl': 'http://anotherservice.demo.com'},
|
||||
]
|
||||
|
||||
self.assertEqual(
|
||||
utils.service_endpoint_dict('dummyservice'),
|
||||
{'internal': 'http://dummyservice.demo.com',
|
||||
'public': 'http://anotherservice.demo.com'}
|
||||
)
|
||||
|
||||
mock_manager.reset_mock()
|
||||
|
||||
mock_manager.resolve_service_id.return_value = 'd123456'
|
||||
mock_manager.list_endpoints.return_value = [
|
||||
{'service_id': 'd789102',
|
||||
'internalurl': 'http://dummyservice.demo.com',
|
||||
'publicurl': 'http://anotherservice.demo.com'},
|
||||
{'service_id': 'd789102',
|
||||
'internalurl': 'http://dummyservice.demo.com',
|
||||
'publicurl': 'http://anotherservice.demo.com'},
|
||||
]
|
||||
|
||||
self.assertEqual(
|
||||
utils.service_endpoint_dict('dummyservice'),
|
||||
{}
|
||||
)
|
||||
|
||||
def test_get_admin_passwd_pwd_set(self):
|
||||
self.test_config.set('admin-password', 'supersecret')
|
||||
self.assertEqual(utils.get_admin_passwd(), 'supersecret')
|
||||
|
Loading…
Reference in New Issue
Block a user