X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=multivimbroker%2Fmultivimbroker%2Fforwarder%2Fbase.py;h=f5d3734dc512f042cc3493b34f9c1c78b2ab6005;hb=0f7184f697298eaabe56b3960e6bc59197b7793e;hp=c96461a6f36205d72c5fe532e034500add9c16e6;hpb=67430600410e312c2db5a6a7709da8e45a5245fa;p=multicloud%2Fframework.git diff --git a/multivimbroker/multivimbroker/forwarder/base.py b/multivimbroker/multivimbroker/forwarder/base.py index c96461a..f5d3734 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,6 +19,7 @@ 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__) @@ -26,9 +27,12 @@ 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, + multipart=False): try: + if multipart: + 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: @@ -45,15 +49,37 @@ 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 send(self, vimid, full_path, body, method, headers=None): + def _multipart_req(self, route_uri, method, body, headers=None): try: - url = getMultivimDriver(vimid, full_path=full_path) + 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) + except exceptions.NotFound as e: + return HttpResponse(str(e), status=status.HTTP_404_NOT_FOUND) + + except Exception as e: + content = e + status_code = status.HTTP_500_INTERNAL_SERVER_ERROR + logger.exception("exception: %s" % e) + + response = HttpResponse(content, status=status_code) + return response + + def send(self, vimid, full_path, body, method, headers=None, + multipart=False): + + 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) @@ -61,5 +87,5 @@ class BaseHandler(object): 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) + return self._request(url, method, body=body, headers=headers, + multipart=multipart)