X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=multivimbroker%2Fmultivimbroker%2Fforwarder%2Fbase.py;h=6d450146e7330f2968687aa64b66001c9d24134b;hb=bc4187f075e89b200393babb3d89b207513b5dd1;hp=8f70c8baac54284e02aa7a72343f24d4b7b5e22f;hpb=300a7e4839621acfb006cd8baadee0c4ed2c8bba;p=multicloud%2Fframework.git diff --git a/multivimbroker/multivimbroker/forwarder/base.py b/multivimbroker/multivimbroker/forwarder/base.py index 8f70c8b..6d45014 100644 --- a/multivimbroker/multivimbroker/forwarder/base.py +++ b/multivimbroker/multivimbroker/forwarder/base.py @@ -1,4 +1,4 @@ -# Copyright (c) 2017 VMware, Inc. +# Copyright (c) 2017-2018 VMware, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,15 +19,19 @@ import multivimbroker.pub.exceptions as exceptions from multivimbroker.pub.utils.syscomm import getHeadersKeys from multivimbroker.pub.utils.syscomm import getMultivimDriver from multivimbroker.pub.utils.restcall import req_by_msb +from multivimbroker.pub.utils.restcall import req_by_msb_multipart logger = logging.getLogger(__name__) + class BaseHandler(object): - def _request(self,route_uri,method,body="",headers=None): + def _request(self, route_uri, method, body="", headers=None): try: + if "multipart" in route_uri: + return self._multipart_req(route_uri, method, body, headers) retcode, content, status_code, resp = \ req_by_msb(route_uri, method, body, headers) if retcode != 0: @@ -44,22 +48,42 @@ class BaseHandler(object): logger.exception("exception: %s" % e) response = HttpResponse(content, status=status_code) - for k in getHeadersKeys(resp): - response[k] = resp[k] + if retcode == 0: + for k in getHeadersKeys(resp): + response[k] = resp[k] return response + def _multipart_req(self, route_uri, method, body, headers=None): - def send(self,vimid,full_path,body,method,headers=None): + try: + retcode, content, status_code, resp = \ + req_by_msb_multipart(route_uri, method, body, headers) + if retcode != 0: + # Execptions are handled within req_by_msb + logger.error("Status code is %s, detail is %s.", + status_code, content) - try: - url = getMultivimDriver(vimid,full_path=full_path) + except exceptions.NotFound as e: + return HttpResponse(str(e), status=status.HTTP_404_NOT_FOUND) - except exceptions.VimBrokerException as e: - logging.exception("vimbroker exception: %s"%e) - return HttpResponse(e.content,status=e.status_code) - except Exception as e: - logging.exception("unkown exception: %s" %e) - return HttpResponse(str(e),status=status.HTTP_500_INTERNAL_SERVER_ERROR) + except Exception as e: + content = e + status_code = status.HTTP_500_INTERNAL_SERVER_ERROR + logger.exception("exception: %s" % e) - return self._request(url,method,body=body,headers=headers) + response = HttpResponse(content, status=status_code) + return response + + def send(self, vimid, full_path, body, method, headers=None): + + try: + url = getMultivimDriver(vimid, full_path=full_path) + except exceptions.VimBrokerException as e: + logging.exception("vimbroker exception: %s" % e) + return HttpResponse(e.content, status=e.status_code) + except Exception as e: + logging.exception("unkown exception: %s" % e) + return HttpResponse(str(e), + status=status.HTTP_500_INTERNAL_SERVER_ERROR) + return self._request(url, method, body=body, headers=headers)