diff options
author | Bin Yang <bin.yang@windriver.com> | 2017-10-09 17:42:08 +0800 |
---|---|---|
committer | Bin Yang <bin.yang@windriver.com> | 2017-10-09 17:42:08 +0800 |
commit | e487cd90e97edb6b085e03de93b169756b41b882 (patch) | |
tree | 3fe7361eecaf8dfe94df867b25ebc9619b2accdc /newton/newton/proxy | |
parent | 6c84979daf381be78a9af0c52730525da9383a94 (diff) |
Fix bug in identity v2.0 proxy
Change-Id: I9e25a1b6438f602e38c13cc1282daa9b10118388
Issue-Id: MULTICLOUD-109
Signed-off-by: Bin Yang <bin.yang@windriver.com>
Diffstat (limited to 'newton/newton/proxy')
-rw-r--r-- | newton/newton/proxy/urls.py | 6 | ||||
-rw-r--r-- | newton/newton/proxy/views/identityV3.py | 43 |
2 files changed, 43 insertions, 6 deletions
diff --git a/newton/newton/proxy/urls.py b/newton/newton/proxy/urls.py index ee2da591..556cc4e6 100644 --- a/newton/newton/proxy/urls.py +++ b/newton/newton/proxy/urls.py @@ -23,9 +23,11 @@ urlpatterns = [ # identityV2.Tokens.as_view()), url(r'^identity/v3/auth/tokens$', identityV3.Tokens.as_view()), - url(r'^identity/v2.0/tokens$', + url(r'^identity/v2.0/?$', identityV3.TokensV2.as_view()), - url(r'^identity/v2.0/tenants$', + url(r'^identity/v2.0/tokens/?$', + identityV3.TokensV2.as_view()), + url(r'^identity/v2.0/tenants/?$', services.GetTenants.as_view()), url(r'^(?P<servicetype>[0-9a-zA-Z_-]{,18})/(?P<requri>[0-9a-zA-Z./_-]*)$', services.Services.as_view()), diff --git a/newton/newton/proxy/views/identityV3.py b/newton/newton/proxy/views/identityV3.py index bf63ad6a..3fa124c9 100644 --- a/newton/newton/proxy/views/identityV3.py +++ b/newton/newton/proxy/views/identityV3.py @@ -50,14 +50,26 @@ class Tokens(APIView): resp_body = None try: tenant_name = request.data.get("tenant_name") + tenant_id = request.data.get("tenant_id") #backward support for keystone v2.0 API if not tenant_name and request.data.get("auth"): - tenant_name = request.data["auth"].get("tenant_name") + tenant_name = request.data["auth"].get("tenantName") + + #keystone v3 API + if not tenant_name and request.data.get("auth") \ + and request.data["auth"].get("scope")\ + and request["auth"]["scope"].get("project"): + if request["auth"]["scope"]["project"].get("name"): + tenant_name = request["auth"]["scope"]["project"].get("name") + else: + tenant_id = request["auth"]["scope"]["project"].get("id") + + # prepare request resource to vim instance vim = VimDriverUtils.get_vim_info(vimid) - sess = VimDriverUtils.get_session(vim, tenantname = tenant_name) + sess = VimDriverUtils.get_session(vim, tenantname = tenant_name, tenantid=tenant_id) tmp_auth_state = VimDriverUtils.get_auth_state(vim, sess) tmp_auth_info = json.loads(tmp_auth_state) @@ -85,6 +97,21 @@ class Tokens(APIView): return Response(data={'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) +version_detail = { + "version": { + "status": "stable", + "updated": "2014-04-17T00:00:00Z", + "media-types": [ + { + "base": "application/json", + "type": "application/vnd.openstack.identity-v2.0+json" + } + ], + "id": "v2.0", + "links": [ + ] + } +} class TokensV2(Tokens): ''' @@ -95,6 +122,11 @@ class TokensV2(Tokens): self.proxy_prefix = config.MULTICLOUD_PREFIX self._logger = logger + def get(self, request, vimid=""): + self._logger.debug("TokensV2--get::META> %s" % request.META) + + return Response(data=version_detail, status=status.HTTP_200_OK) + def post(self, request, vimid=""): self._logger.debug("TokensV2--post::META> %s" % request.META) self._logger.debug("TokensV2--post::data> %s" % request.data) @@ -142,11 +174,14 @@ class TokensV2(Tokens): "tenant" : v3_token["project"], }, "serviceCatalog": v2_catalog, - # "user": v3_token["user"], + "user": v3_token["user"], } } - return Response(data=v2_content, status=resp.status_code) + return Response(data=v2_content, + status=status.HTTP_200_OK \ + if resp.status_code==status.HTTP_201_CREATED \ + else resp.status_code) else: return resp |