diff --git a/jumpgate/identity/drivers/sl/__init__.py b/jumpgate/identity/drivers/sl/__init__.py index 0c82a6c..3e178ea 100644 --- a/jumpgate/identity/drivers/sl/__init__.py +++ b/jumpgate/identity/drivers/sl/__init__.py @@ -23,5 +23,5 @@ def setup_routes(app, disp): raise ValueError('Template file not found') disp.set_handler('v2_tokens', TokensV2(template_file)) - + disp.set_handler('v2_token_endpoints', TokensV2(template_file)) add_hooks(app) diff --git a/jumpgate/identity/drivers/sl/tokens.py b/jumpgate/identity/drivers/sl/tokens.py index 3b2003a..10d2842 100644 --- a/jumpgate/identity/drivers/sl/tokens.py +++ b/jumpgate/identity/drivers/sl/tokens.py @@ -176,6 +176,28 @@ def on_post(self, req, resp): resp.status = 200 resp.body = {'access': access} + def on_get(self, req, resp, token_id): + tokens = identity.token_driver() + token = identity.token_id_driver().token_from_id(token_id) + identity.token_driver().validate_token(token) + raw_endpoints = self._get_catalog(tokens.tenant_id(token), + tokens.user_id(token)) + endpoints = [] + for services in raw_endpoints.values(): + for service_type, service in services.items(): + d = { + 'adminURL': service.get('adminURL'), + 'name': service.get('name', 'Unknown'), + 'publicURL': service.get('publicURL'), + 'privateURL': service.get('privateURL'), + 'region': service.get('region', 'RegionOne'), + 'tenantId': tokens.tenant_id(token), + 'type': service_type, + } + endpoints.append(d) + resp.status = 200 + resp.body = {'endpoints': endpoints, 'endpoints_links': []} + class TokenV2(object): def on_get(self, req, resp, token_id):