-# 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.
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,
+ 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:
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)
+
+ except exceptions.NotFound as e:
+ return HttpResponse(str(e), status=status.HTTP_404_NOT_FOUND)
- try:
- url = getMultivimDriver(vimid,full_path=full_path)
+ except Exception as e:
+ content = e
+ status_code = status.HTTP_500_INTERNAL_SERVER_ERROR
+ logger.exception("exception: %s" % e)
- 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)
+ response = HttpResponse(content, status=status_code)
+ return response
- return self._request(url,method,body=body,headers=headers)
+ 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)
+ 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,
+ multipart=multipart)