summaryrefslogtreecommitdiffstats
path: root/newton/newton/proxy
diff options
context:
space:
mode:
authorBin Yang <bin.yang@windriver.com>2017-10-09 17:42:08 +0800
committerBin Yang <bin.yang@windriver.com>2017-10-09 17:42:08 +0800
commite487cd90e97edb6b085e03de93b169756b41b882 (patch)
tree3fe7361eecaf8dfe94df867b25ebc9619b2accdc /newton/newton/proxy
parent6c84979daf381be78a9af0c52730525da9383a94 (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.py6
-rw-r--r--newton/newton/proxy/views/identityV3.py43
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