Update identity conversion for API v2.0 91/20491/2
authorBin Yang <bin.yang@windriver.com>
Wed, 25 Oct 2017 07:10:15 +0000 (15:10 +0800)
committerBin Yang <bin.yang@windriver.com>
Wed, 25 Oct 2017 07:10:15 +0000 (15:10 +0800)
support parameter tenantId

Change-Id: I11d94db0c6fc4d7ea40d66110bb90d2976cd6f3e
Issue-Id: MULTICLOUD-119
Signed-off-by: Bin Yang <bin.yang@windriver.com>
newton/newton/proxy/urls.py
newton/newton/proxy/views/identityV3.py
newton/newton/proxy/views/services.py

index 0e0ca52..3a4be2f 100644 (file)
@@ -24,6 +24,8 @@ urlpatterns = [
     #        identityV2.Tokens.as_view()),
     url(r'^identity/v3/auth/tokens$',
         identityV3.Tokens.as_view()),
+    url(r'^identity/v3/?$',
+        identityV3.Tokens.as_view()),
     url(r'^identity/v2.0/?$',
         identityV3.TokensV2.as_view()),
     url(r'^identity/v2.0/tokens/?$',
index 7395fac..d12e24c 100644 (file)
@@ -33,6 +33,22 @@ logger = logging.getLogger(__name__)
 
 DEBUG=True
 
+v3_version_detail = {
+    "version": {
+        "status": "stable",
+        "updated": "2014-04-17T00:00:00Z",
+        "media-types": [
+            {
+                "base": "application/json",
+                "type": "application/vnd.openstack.identity-v3+json"
+            }
+        ],
+        "id": "v3",
+        "links": [
+        ]
+    }
+}
+
 class Tokens(APIView):
     service = {'service_type': 'identity',
                'interface': 'public'}
@@ -41,6 +57,11 @@ class Tokens(APIView):
         self.proxy_prefix = config.MULTICLOUD_PREFIX
         self._logger = logger
 
+    def get(self, request, vimid=""):
+        self._logger.debug("identityV3--get::META> %s" % request.META)
+
+        return Response(data=v3_version_detail, status=status.HTTP_200_OK)
+
     def post(self, request, vimid=""):
         self._logger.debug("identityV3--post::META> %s" % request.META)
         self._logger.debug("identityV3--post::data> %s" % request.data)
@@ -55,6 +76,7 @@ class Tokens(APIView):
             #backward support for keystone v2.0 API
             if not tenant_name and request.data.get("auth"):
                 tenant_name = request.data["auth"].get("tenantName")
+                tenant_id = request.data["auth"].get("tenantId")
 
             #keystone v3 API
             if not tenant_name and request.data.get("auth") \
@@ -104,7 +126,7 @@ class Tokens(APIView):
             return Response(data={'error': str(e)},
                             status=status.HTTP_500_INTERNAL_SERVER_ERROR)
 
-version_detail = {
+v2_version_detail = {
     "version": {
         "status": "stable",
         "updated": "2014-04-17T00:00:00Z",
@@ -132,7 +154,7 @@ class TokensV2(Tokens):
     def get(self, request, vimid=""):
         self._logger.debug("TokensV2--get::META> %s" % request.META)
 
-        return Response(data=version_detail, status=status.HTTP_200_OK)
+        return Response(data=v2_version_detail, status=status.HTTP_200_OK)
 
     def post(self, request, vimid=""):
         self._logger.debug("TokensV2--post::META> %s" % request.META)
index d86b0e8..7115d4d 100644 (file)
@@ -130,10 +130,16 @@ class Services(APIView):
             content = resp.json() if resp.content else None
             self._logger.debug("service " + action + " response: %s, %s" % (resp.status_code, content))
 
-            if (action != "delete"):
+            if (action == "delete"):
+                return Response(headers={'X-Subject-Token': tmp_auth_token}, status=resp.status_code)
+            else:
                 content = ProxyUtils.update_prefix(metadata_catalog, content)
+                if (action == "get"):
+                    if requri == '/v3/auth/catalog' and content and content.get("catalog"):
+                        content['catalog'] = ProxyUtils.update_catalog_dnsaas(
+                            vim_id, content['catalog'], self.proxy_prefix, vim)
                 return Response(headers={'X-Subject-Token': tmp_auth_token}, data=content, status=resp.status_code)
-            return Response(headers={'X-Subject-Token': tmp_auth_token}, status=resp.status_code)
+
         except VimDriverNewtonException as e:
             return Response(data={'error': e.content}, status=e.status_code)
         except HttpError as e: