diff options
author | Zuul <zuul@review.openstack.org> | 2018-10-28 11:39:32 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2018-10-28 11:39:32 +0000 |
commit | 536a8701ed21fa5ac77ea649ee911646d94a9046 (patch) | |
tree | 5e8269638672c404932a7d85323464602626e3c4 /keystonemiddleware | |
parent | 55b61427911a84ebac27604e0ca50ded8eae60f9 (diff) | |
parent | 6779838a242b222672721407cc320672ab24067a (diff) | |
download | keystonemiddleware-536a8701ed21fa5ac77ea649ee911646d94a9046.tar.gz |
Merge "Skip the services with no endpoints when parsing service catalog"
Diffstat (limited to 'keystonemiddleware')
-rw-r--r-- | keystonemiddleware/audit/_api.py | 5 | ||||
-rw-r--r-- | keystonemiddleware/tests/unit/audit/test_audit_api.py | 17 |
2 files changed, 22 insertions, 0 deletions
diff --git a/keystonemiddleware/audit/_api.py b/keystonemiddleware/audit/_api.py index d05d732..e692151 100644 --- a/keystonemiddleware/audit/_api.py +++ b/keystonemiddleware/audit/_api.py @@ -261,6 +261,11 @@ class OpenStackAuditApi(object): default_endpoint = None for endp in catalog: + if not endp['endpoints']: + self._log.warning( + 'Skipping service %s as it have no endpoints.', + endp['name']) + continue endpoint_urls = endp['endpoints'][0] admin_urlparse = urlparse.urlparse( endpoint_urls.get('adminURL', '')) diff --git a/keystonemiddleware/tests/unit/audit/test_audit_api.py b/keystonemiddleware/tests/unit/audit/test_audit_api.py index 367d7d0..1512e9d 100644 --- a/keystonemiddleware/tests/unit/audit/test_audit_api.py +++ b/keystonemiddleware/tests/unit/audit/test_audit_api.py @@ -303,6 +303,23 @@ class AuditApiLogicTest(base.BaseAuditMiddlewareTest): payload = self.get_payload('GET', url, environ=env_headers) self.assertEqual((payload['target']['addresses'][0]['url']), "unknown") + def test_service_with_no_endpoints(self): + env_headers = {'HTTP_X_SERVICE_CATALOG': + '''[{"endpoints_links": [], + "endpoints": [], + "type": "foo", + "name": "bar"}]''', + 'HTTP_X_USER_ID': 'user_id', + 'HTTP_X_USER_NAME': 'user_name', + 'HTTP_X_AUTH_TOKEN': 'token', + 'HTTP_X_PROJECT_ID': 'tenant_id', + 'HTTP_X_IDENTITY_STATUS': 'Confirmed', + 'REQUEST_METHOD': 'GET'} + + url = 'http://public_host:8774/v2/' + str(uuid.uuid4()) + '/servers' + payload = self.get_payload('GET', url, environ=env_headers) + self.assertEqual(payload['target']['name'], "unknown") + def test_no_auth_token(self): # Test cases where API requests such as Swift list public containers # which does not require an auth token. In these cases, CADF event |