summaryrefslogtreecommitdiffstats
path: root/newton/newton/proxy
diff options
context:
space:
mode:
authorBin Yang <bin.yang@windriver.com>2017-09-06 15:30:42 +0800
committerBin Yang <bin.yang@windriver.com>2017-09-06 15:33:09 +0800
commit6f89e2f32ed4bb2a6a6a5447f53dedc12e556bbc (patch)
tree8000f4d15abf0554a5e5b8d7b69e96e12820800e /newton/newton/proxy
parent21da6a95b1c043c5a17ce1e802295aea26de5a8d (diff)
Refactor proxy API
refactor logger and auth method fix identity proxy bug Change-Id: Ie26c01c2fbf0869dcc77b8c182b775bce90b8d69 Issue-Id: MULTICLOUD-58 Signed-off-by: Bin Yang <bin.yang@windriver.com>
Diffstat (limited to 'newton/newton/proxy')
-rw-r--r--newton/newton/proxy/views/identityV3.py34
-rw-r--r--newton/newton/proxy/views/services.py83
2 files changed, 68 insertions, 49 deletions
diff --git a/newton/newton/proxy/views/identityV3.py b/newton/newton/proxy/views/identityV3.py
index b06fb1e6..f11a6334 100644
--- a/newton/newton/proxy/views/identityV3.py
+++ b/newton/newton/proxy/views/identityV3.py
@@ -74,12 +74,19 @@ def update_catalog(vimid, catalog, multicould_namespace):
# replace the endpoint with MultiCloud's proxy
import re
endpoint_url = endpoint["url"]
-# m = re.search(r'^http[s]*://([0-9.]+:[0-9]+)[/]*([0-9a-zA-Z/._-]*)$', endpoint_url)
- m = re.search(r'^(http[s]?://[0-9.]+:[0-9]+)(/([0-9a-zA-Z/._-]+)$)?', endpoint_url)
+ real_prefix = None
+ real_suffix = None
+# m = re.search(r'^(http[s]?://[0-9.]+:[0-9]+)(/([0-9a-zA-Z/._-]+)$)?', endpoint_url)
+ m = re.search(r'^(http[s]?://[0-9.]+[0-9:]*)(/([0-9a-zA-Z/._-]+)$)?', endpoint_url)
if m:
real_prefix = m.group(1)
real_suffix = m.group(3)
-
+# else:
+# m = re.search(r'^(http[s]?://[0-9.]+)(/([0-9a-zA-Z/._-]+)$)?', endpoint_url)
+# if m:
+# real_prefix = m.group(1)
+# real_suffix = m.group(2)
+ if real_prefix:
# populate metadata_catalog
one_catalog['prefix'] = real_prefix
one_catalog['suffix'] = real_suffix if real_suffix else ''
@@ -96,6 +103,9 @@ def update_catalog(vimid, catalog, multicould_namespace):
# endpoint["url"] = re.sub(r"^http([s]*)://([0-9.]+):([0-9]+)",
# multicould_namespace + "/%s/" % vimid + item["type"],
# endpoint["url"])
+ else:
+ #something wrong
+ pass
endpoint["url"] = endpoint_url
@@ -114,9 +124,10 @@ class Tokens(APIView):
def __init__(self):
self.proxy_prefix = MULTICLOUD_PREFIX
+ self._logger = logger
def post(self, request, vimid=""):
- logger.debug("identityV3--post::> %s" % request.data)
+ self._logger.debug("identityV3--post::> %s" % request.data)
sess = None
resp = None
resp_body = None
@@ -135,7 +146,7 @@ class Tokens(APIView):
#update the catalog
tmp_auth_data['token']['catalog'], tmp_metadata_catalog = update_catalog(vimid, tmp_auth_data['token']['catalog'], self.proxy_prefix)
- VimDriverUtils.update_token_cache(vim, sess, tmp_auth_token, tmp_auth_state, json.dumps(tmp_metadata_catalog))
+ tmp_auth_token = VimDriverUtils.update_token_cache(vim, sess, tmp_auth_token, tmp_auth_state, json.dumps(tmp_metadata_catalog))
resp = Response(headers={'X-Subject-Token': tmp_auth_token}, data=tmp_auth_data, status=status.HTTP_201_CREATED)
return resp
@@ -143,10 +154,10 @@ class Tokens(APIView):
return Response(data={'error': e.content}, status=e.status_code)
except HttpError as e:
- logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
+ self._logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
return Response(data=e.response.json(), status=e.http_status)
except Exception as e:
- logger.error(traceback.format_exc())
+ self._logger.error(traceback.format_exc())
return Response(data={'error': str(e)},
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
@@ -159,10 +170,11 @@ class Catalog(APIView):
def __init__(self):
self.proxy_prefix = MULTICLOUD_PREFIX
+ self._logger = logger
def get(self, request, vimid=""):
- logger.debug("Catalog--get::data> %s" % request.data)
-# logger.debug("Catalog--get::META> %s" % request.META)
+ self._logger.debug("Catalog--get::data> %s" % request.data)
+# self._logger.debug("Catalog--get::META> %s" % request.META)
try:
# prepare request resource to vim instance
#get token:
@@ -191,9 +203,9 @@ class Catalog(APIView):
except VimDriverNewtonException as e:
return Response(data={'error': e.content}, status=e.status_code)
except HttpError as e:
- logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
+ self._logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
return Response(data=e.response.json(), status=e.http_status)
except Exception as e:
- logger.error(traceback.format_exc())
+ self._logger.error(traceback.format_exc())
return Response(data={'error': str(e)},
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
diff --git a/newton/newton/proxy/views/services.py b/newton/newton/proxy/views/services.py
index 1ca8b535..1a478f35 100644
--- a/newton/newton/proxy/views/services.py
+++ b/newton/newton/proxy/views/services.py
@@ -35,10 +35,13 @@ DEBUG=True
class Services(APIView):
+ def __init__(self):
+ self._logger = logger
+
def head(self, request, vimid="", servicetype="", requri=""):
- logger.debug("Services--head::META> %s" % request.META)
- logger.debug("Services--head::data> %s" % request.data)
- logger.debug("Services--head::vimid, servicetype, requri> %s,%s,%s"
+ self._logger.debug("Services--head::META> %s" % request.META)
+ self._logger.debug("Services--head::data> %s" % request.data)
+ self._logger.debug("Services--head::vimid, servicetype, requri> %s,%s,%s"
% (vimid, servicetype, requri))
try:
@@ -75,17 +78,17 @@ class Services(APIView):
except VimDriverNewtonException as e:
return Response(data={'error': e.content}, status=e.status_code)
except HttpError as e:
- logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
+ self._logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
return Response(data=e.response.json(), status=e.http_status)
except Exception as e:
- logger.error(traceback.format_exc())
+ self._logger.error(traceback.format_exc())
return Response(data={'error': str(e)},
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def get(self, request, vimid="", servicetype="", requri=""):
- logger.debug("Services--get::META> %s" % request.META)
- logger.debug("Services--get::data> %s" % request.data)
- logger.debug("Services--get::vimid, servicetype, requri> %s,%s,%s"
+ self._logger.debug("Services--get::META> %s" % request.META)
+ self._logger.debug("Services--get::data> %s" % request.data)
+ self._logger.debug("Services--get::vimid, servicetype, requri> %s,%s,%s"
% (vimid, servicetype, requri))
try:
# prepare request resource to vim instance
@@ -104,7 +107,7 @@ class Services(APIView):
proxy_prefix = None
suffix = None
if servicetype and metadata_catalog:
-# logger.error("metadata_catalog:%s" % metadata_catalog)
+# self._logger.error("metadata_catalog:%s" % metadata_catalog)
metadata_catalog = json.loads(metadata_catalog)
service_metadata = metadata_catalog.get(servicetype, None)
if service_metadata:
@@ -152,17 +155,17 @@ class Services(APIView):
except VimDriverNewtonException as e:
return Response(data={'error': e.content}, status=e.status_code)
except HttpError as e:
- logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
+ self._logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
return Response(data=e.response.json(), status=e.http_status)
except Exception as e:
- logger.error(traceback.format_exc())
+ self._logger.error(traceback.format_exc())
return Response(data={'error': str(e)},
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def post(self, request, vimid="", servicetype="", requri=""):
- logger.debug("Services--post::META> %s" % request.META)
- logger.debug("Services--post::data> %s" % request.data)
- logger.debug("Services--post::vimid, servicetype, requri> %s,%s,%s"
+ self._logger.debug("Services--post::META> %s" % request.META)
+ self._logger.debug("Services--post::data> %s" % request.data)
+ self._logger.debug("Services--post::vimid, servicetype, requri> %s,%s,%s"
% (vimid, servicetype, requri))
try:
# prepare request resource to vim instance
@@ -182,7 +185,7 @@ class Services(APIView):
proxy_prefix = None
suffix = None
if servicetype and metadata_catalog:
-# logger.error("metadata_catalog:%s" % metadata_catalog)
+# self._logger.error("metadata_catalog:%s" % metadata_catalog)
metadata_catalog = json.loads(metadata_catalog)
service_metadata = metadata_catalog.get(servicetype, None)
if service_metadata:
@@ -230,17 +233,17 @@ class Services(APIView):
except VimDriverNewtonException as e:
return Response(data={'error': e.content}, status=e.status_code)
except HttpError as e:
- logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
+ self._logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
return Response(data=e.response.json(), status=e.http_status)
except Exception as e:
- logger.error(traceback.format_exc())
+ self._logger.error(traceback.format_exc())
return Response(data={'error': str(e)},
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def put(self, request, vimid="", servicetype="", requri=""):
- logger.debug("Services--put::META> %s" % request.META)
- logger.debug("Services--put::data> %s" % request.data)
- logger.debug("Services--put::vimid, servicetype, requri> %s,%s,%s"
+ self._logger.debug("Services--put::META> %s" % request.META)
+ self._logger.debug("Services--put::data> %s" % request.data)
+ self._logger.debug("Services--put::vimid, servicetype, requri> %s,%s,%s"
% (vimid, servicetype, requri))
try:
# prepare request resource to vim instance
@@ -260,7 +263,7 @@ class Services(APIView):
proxy_prefix = None
suffix = None
if servicetype and metadata_catalog:
-# logger.error("metadata_catalog:%s" % metadata_catalog)
+# self._logger.error("metadata_catalog:%s" % metadata_catalog)
metadata_catalog = json.loads(metadata_catalog)
service_metadata = metadata_catalog.get(servicetype, None)
if service_metadata:
@@ -308,18 +311,18 @@ class Services(APIView):
except VimDriverNewtonException as e:
return Response(data={'error': e.content}, status=e.status_code)
except HttpError as e:
- logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
+ self._logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
return Response(data=e.response.json(), status=e.http_status)
except Exception as e:
- logger.error(traceback.format_exc())
+ self._logger.error(traceback.format_exc())
return Response(data={'error': str(e)},
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def patch(self, request, vimid="", servicetype="", requri=""):
- logger.debug("Services--patch::META> %s" % request.META)
- logger.debug("Services--patch::data> %s" % request.data)
- logger.debug("Services--patch::vimid, servicetype, requri> %s,%s,%s"
+ self._logger.debug("Services--patch::META> %s" % request.META)
+ self._logger.debug("Services--patch::data> %s" % request.data)
+ self._logger.debug("Services--patch::vimid, servicetype, requri> %s,%s,%s"
% (vimid, servicetype, requri))
try:
# prepare request resource to vim instance
@@ -339,7 +342,7 @@ class Services(APIView):
proxy_prefix = None
suffix = None
if servicetype and metadata_catalog:
-# logger.error("metadata_catalog:%s" % metadata_catalog)
+# self._logger.error("metadata_catalog:%s" % metadata_catalog)
metadata_catalog = json.loads(metadata_catalog)
service_metadata = metadata_catalog.get(servicetype, None)
if service_metadata:
@@ -387,17 +390,17 @@ class Services(APIView):
except VimDriverNewtonException as e:
return Response(data={'error': e.content}, status=e.status_code)
except HttpError as e:
- logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
+ self._logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
return Response(data=e.response.json(), status=e.http_status)
except Exception as e:
- logger.error(traceback.format_exc())
+ self._logger.error(traceback.format_exc())
return Response(data={'error': str(e)},
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def delete(self, request, vimid="", servicetype="", requri=""):
- logger.debug("Services--delete::META> %s" % request.META)
- logger.debug("Services--delete::data> %s" % request.data)
- logger.debug("Services--delete::vimid, servicetype, requri> %s,%s,%s"
+ self._logger.debug("Services--delete::META> %s" % request.META)
+ self._logger.debug("Services--delete::data> %s" % request.data)
+ self._logger.debug("Services--delete::vimid, servicetype, requri> %s,%s,%s"
% (vimid, servicetype, requri))
try:
# prepare request resource to vim instance
@@ -417,7 +420,7 @@ class Services(APIView):
proxy_prefix = None
suffix = None
if servicetype and metadata_catalog:
-# logger.error("metadata_catalog:%s" % metadata_catalog)
+# self._logger.error("metadata_catalog:%s" % metadata_catalog)
metadata_catalog = json.loads(metadata_catalog)
service_metadata = metadata_catalog.get(servicetype, None)
if service_metadata:
@@ -458,10 +461,10 @@ class Services(APIView):
except VimDriverNewtonException as e:
return Response(data={'error': e.content}, status=e.status_code)
except HttpError as e:
- logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
+ self._logger.error("HttpError: status:%s, response:%s" % (e.http_status, e.response.json()))
return Response(data=e.response.json(), status=e.http_status)
except Exception as e:
- logger.error(traceback.format_exc())
+ self._logger.error(traceback.format_exc())
return Response(data={'error': str(e)},
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
@@ -470,10 +473,14 @@ class GetTenants(Services):
'''
Backward compatible API for /v2.0/tenants
'''
+
+ def __init__(self):
+ self._logger = logger
+
def get(self, request, vimid="", servicetype="identity", requri='projects'):
- logger.debug("GetTenants--get::META> %s" % request.META)
- logger.debug("GetTenants--get::data> %s" % request.data)
- logger.debug("GetTenants--get::vimid, servicetype, requri> %s,%s,%s"
+ self._logger.debug("GetTenants--get::META> %s" % request.META)
+ self._logger.debug("GetTenants--get::data> %s" % request.data)
+ self._logger.debug("GetTenants--get::vimid, servicetype, requri> %s,%s,%s"
% (vimid, servicetype, requri))
tmp_auth_token = request.META.get('HTTP_X_AUTH_TOKEN', None)