diff options
author | fengyuanxing <feng.yuanxing@zte.com.cn> | 2018-01-29 14:45:20 +0800 |
---|---|---|
committer | fengyuanxing <feng.yuanxing@zte.com.cn> | 2018-01-29 15:29:13 +0800 |
commit | ec6d4382849a899f7dc5934ed1ff4e669d2d185a (patch) | |
tree | 4a7a4f37fa3820b71ea5a96bd1a45b1fe96fbcf6 | |
parent | 901d33ba737224ceba2784ace54c26b4ebb57f92 (diff) |
Refact code dealing with errors
Change-Id: Ib61c68a5a9a58e2208181d5c70c6ff75b2ccb22b
Issue-ID: VFC-685
Signed-off-by: fengyuanxing <feng.yuanxing@zte.com.cn>
-rw-r--r-- | catalog/jobs/views.py | 74 | ||||
-rw-r--r-- | catalog/packages/views.py | 2 |
2 files changed, 54 insertions, 22 deletions
diff --git a/catalog/jobs/views.py b/catalog/jobs/views.py index b23156f4..e077fc46 100644 --- a/catalog/jobs/views.py +++ b/catalog/jobs/views.py @@ -31,8 +31,16 @@ logger = logging.getLogger(__name__) class JobView(APIView): - input_job_id = openapi.Parameter('job_id', openapi.IN_QUERY, description="job id", type=openapi.TYPE_STRING) - input_response_id = openapi.Parameter('responseId', openapi.IN_QUERY, description="response id", type=openapi.TYPE_STRING) + input_job_id = openapi.Parameter( + 'job_id', + openapi.IN_QUERY, + description="job id", + type=openapi.TYPE_STRING) + input_response_id = openapi.Parameter( + 'responseId', + openapi.IN_QUERY, + description="response id", + type=openapi.TYPE_STRING) @swagger_auto_schema( operation_description="Get job status", @@ -47,11 +55,12 @@ class JobView(APIView): response_serializer = PostResponseSerializer(data=ret) isValid = response_serializer.is_valid() if not isValid: - message = 'Invalid resposne' - logger.error(response_serializer.errors) - return Response(data={'result': 'error', 'msg': message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) + response = self.handleValidatonError(response_serializer, False) + return response - return Response(data=response_serializer.data, status=status.HTTP_200_OK) + return Response( + data=response_serializer.data, + status=status.HTTP_200_OK) @swagger_auto_schema( request_body=PostJobRequestSerializer(), @@ -69,30 +78,53 @@ class JobView(APIView): if len(jobs) > 0 and jobs[-1].errcode == '255': return Response(data={'result': 'ok'}) - serializer = PostJobRequestSerializer(data=request.data) - request_isValid = serializer.is_valid() + request_serializer = PostJobRequestSerializer(data=request.data) + request_isValid = request_serializer.is_valid() if not request_isValid: - message = 'Invalid request' - logger.error(message) - return Response(data={'result': 'error', 'msg': message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) + response = self.handleValidatonError(request_serializer, True) + return response - requestData = serializer.data + requestData = request_serializer.data progress = ignore_case_get(requestData, "progress") desc = ignore_case_get(requestData, "desc", '%s' % progress) - errcode = '0' if ignore_case_get(requestData, 'errcode') in ('true', 'active') else '255' + errcode = '0' if ignore_case_get( + requestData, 'errcode') in ( + 'true', 'active') else '255' logger.debug("errcode=%s", errcode) JobUtil.add_job_status(job_id, progress, desc, error_code=errcode) - response = Response(data={'result': 'ok'}, status=status.HTTP_202_ACCEPTED) - response_serializer = GetJobResponseResultSerializer(data=response.data) + response = Response( + data={'result': 'ok'}, + status=status.HTTP_202_ACCEPTED) + response_serializer = GetJobResponseResultSerializer( + data=response.data) isValid = response_serializer.is_valid() if not isValid: - message = 'Invalid resposne' - logger.error(message) - return Response(data={'result': 'error', 'msg': message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) - - return Response(data=response_serializer.data, status=status.HTTP_202_ACCEPTED) + response = self.handleValidatonError( + response_serializer, False) + return response + return Response( + data=response_serializer.data, + status=status.HTTP_202_ACCEPTED) except Exception as e: logger.error(e.message) logger.error(traceback.format_exc()) - return Response(data={'result': 'error', 'msg': e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) + return Response( + data={ + 'result': 'error', + 'msg': e.message}, + status=status.HTTP_500_INTERNAL_SERVER_ERROR) + + def handleValidatonError(base_serializer, is_request): + errormessage = base_serializer.errors + logger.error(errormessage) + + if is_request: + message = 'Invalid request' + else: + message = 'Invalid response' + logger.error(message) + + return Response( + data={'result': message, 'msg': errormessage}, + status=status.HTTP_500_INTERNAL_SERVER_ERROR) diff --git a/catalog/packages/views.py b/catalog/packages/views.py index a3b5c1e3..3c6623eb 100644 --- a/catalog/packages/views.py +++ b/catalog/packages/views.py @@ -220,7 +220,7 @@ def ns_model_parser(request, *args, **kwargs): @swagger_auto_schema( method='POST', - operation_description="Parse Nf model", + operation_description="Parse NF model", request_body=ParseModelRequestSerializer, responses={ status.HTTP_202_ACCEPTED: ParseModelResponseSerializer, |