X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=lcm%2Fjobs%2Fviews.py;h=dddb853c0e2f60c81c6ceb1561cc01547acd717e;hb=42abd8c99e0c0bcda1ca9d66a467b70c55ce3f6d;hp=7439b63020f98477e0d63b850a19523a7f62669c;hpb=06818431452358766209296a5cb1bb817f0e0037;p=vfc%2Fnfvo%2Flcm.git diff --git a/lcm/jobs/views.py b/lcm/jobs/views.py index 7439b630..dddb853c 100644 --- a/lcm/jobs/views.py +++ b/lcm/jobs/views.py @@ -20,25 +20,33 @@ from rest_framework.views import APIView from rest_framework import status from drf_yasg.utils import swagger_auto_schema +from lcm.pub.enum import JOB_ERROR_CODE from lcm.jobs.job_get import GetJobInfoService from lcm.pub.utils.jobutil import JobUtil -from lcm.pub.utils.values import ignore_case_get +from lcm.jobs.api_model import JobUpdReq, JobUpdResp from lcm.jobs.serializers import JobUpdReqSerializer, JobUpdRespSerializer from lcm.jobs.serializers import JobQueryRespSerializer -from lcm.pub.exceptions import NSLCMException +from lcm.pub.exceptions import BadRequestException, NSLCMException 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) + @swagger_auto_schema( - manual_parameters=[ - openapi.Parameter('responseId', - openapi.IN_QUERY, - "responseId", - type=openapi.TYPE_INTEGER - ), - ], + operation_description="Query job", + manual_parameters=[input_job_id, input_response_id], responses={ status.HTTP_200_OK: JobQueryRespSerializer(), status.HTTP_500_INTERNAL_SERVER_ERROR: "Inner error" @@ -46,17 +54,19 @@ class JobView(APIView): ) def get(self, request, job_id): try: - response_id = ignore_case_get(request.META, 'responseId') + response_id = int(request.GET.get('responseId', 0)) ret = GetJobInfoService(job_id, response_id).do_biz() resp_serializer = JobQueryRespSerializer(data=ret) if not resp_serializer.is_valid(): raise NSLCMException(resp_serializer.errors) - return Response(data=resp_serializer.data, status=status.HTTP_200_OK) + return Response(data=ret, status=status.HTTP_200_OK) except Exception as e: logger.error(traceback.format_exc()) return Response(data={'error': e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) @swagger_auto_schema( + operation_description="Update job", + manual_parameters=[input_job_id], request_body=JobUpdReqSerializer(), responses={ status.HTTP_202_ACCEPTED: JobUpdRespSerializer() @@ -68,31 +78,27 @@ class JobView(APIView): req_serializer = JobUpdReqSerializer(data=request.data) if not req_serializer.is_valid(): - raise NSLCMException(req_serializer.errors) + raise BadRequestException(req_serializer.errors) jobs = JobUtil.query_job_status(job_id) if not jobs: raise NSLCMException("Job(%s) does not exist.") - if jobs[-1].errcode != '255': - progress = request.data.get('progress') - desc = request.data.get('desc', '%s' % progress) - errcode = '0' if request.data.get('errcode') in ('true', 'active') else '255' + if jobs[-1].errcode != JOB_ERROR_CODE.ERROR: + job_up_req = JobUpdReq() + job_up_req.load(request.data) + desc = job_up_req.desc + errcode = JOB_ERROR_CODE.NO_ERROR if job_up_req.errcode in ('true', 'active') else JOB_ERROR_CODE.ERROR logger.debug("errcode=%s", errcode) - JobUtil.add_job_status(job_id, progress, desc, error_code=errcode) - - resp_serializer = JobUpdRespSerializer(data={'result': 'ok'}) - if not resp_serializer.is_valid(): - raise NSLCMException(req_serializer.errors) - + JobUtil.add_job_status(job_id, job_up_req.progress, desc, error_code=errcode) + job_update_resp = JobUpdResp('ok') + resp_serializer = JobUpdRespSerializer(job_update_resp) return Response(data=resp_serializer.data, status=status.HTTP_202_ACCEPTED) + except NSLCMException as e: + job_update_resp = JobUpdResp('error', e.message) + resp_serializer = JobUpdRespSerializer(job_update_resp) + return Response(data=resp_serializer.data, status=status.HTTP_400_BAD_REQUEST) except Exception as e: - resp_serializer = JobUpdRespSerializer(data={ - 'result': 'error', - 'msg': e.message}) - if not resp_serializer.is_valid(): - logger.error(resp_serializer.errors) - return Response(data={ - 'result': 'error', - 'msg': resp_serializer.errors}, status=status.HTTP_202_ACCEPTED) - return Response(data=resp_serializer.data, status=status.HTTP_202_ACCEPTED) + job_update_resp = JobUpdResp('error', e.message) + resp_serializer = JobUpdRespSerializer(job_update_resp) + return Response(data=resp_serializer.data, status=status.HTTP_500_INTERNAL_SERVER_ERROR)