X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=multivimbroker%2Fmultivimbroker%2Fforwarder%2Fbase.py;h=6d450146e7330f2968687aa64b66001c9d24134b;hb=dd5aa4a740e7a75acacba3623e36ef08b740e8e0;hp=747784274c0265cff70f92d392ca738956ac44dd;hpb=d4123e672586bc38820d6a00d7f0103b4e10b103;p=multicloud%2Fframework.git diff --git a/multivimbroker/multivimbroker/forwarder/base.py b/multivimbroker/multivimbroker/forwarder/base.py index 7477842..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,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__) @@ -29,6 +30,8 @@ class BaseHandler(object): 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: @@ -45,8 +48,30 @@ 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): + + 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) + + 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):