Add swagger auto generate of job
[vfc/nfvo/lcm.git] / lcm / jobs / views.py
index 24a89b5..1ffcf9c 100644 (file)
@@ -22,6 +22,7 @@ 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.serializers import JobUpdReqSerializer, JobUpdRespSerializer
+from lcm.pub.exceptions import NSLCMException
 
 logger = logging.getLogger(__name__)
 
@@ -35,8 +36,7 @@ class JobView(APIView):
     @swagger_auto_schema(
         request_body=JobUpdReqSerializer(),
         responses={
-            status.HTTP_202_ACCEPTED: JobUpdRespSerializer(),
-            status.HTTP_404_NOT_FOUND: "Job does not exist"
+            status.HTTP_202_ACCEPTED: JobUpdRespSerializer()
         }
     )
     def post(self, request, job_id):
@@ -45,24 +45,31 @@ class JobView(APIView):
 
             req_serializer = JobUpdReqSerializer(data=request.data)
             if not req_serializer.is_valid():
-                return Response(data={
-                    'result': 'error',
-                    'msg': req_serializer.errors},
-                    status=status.HTTP_202_ACCEPTED)
+                raise NSLCMException(req_serializer.errors)
 
             jobs = JobUtil.query_job_status(job_id)
-            if len(jobs) > 0 and jobs[-1].errcode == '255':
-                return Response(data={'result': 'ok'}, status=status.HTTP_202_ACCEPTED)
+            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'
+                logger.debug("errcode=%s", errcode)
+                JobUtil.add_job_status(job_id, progress, desc, error_code=errcode)
 
-            progress = request.data.get('progress')
-            desc = request.data.get('desc', '%s' % progress)
-            errcode = '0' if request.data.get('errcode') in ('true', 'active') else '255'
-            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)
 
-            return Response(data={'result': 'ok'}, status=status.HTTP_202_ACCEPTED)
+            return Response(data=resp_serializer.data, status=status.HTTP_202_ACCEPTED)
         except Exception as e:
-            return Response(data={
+            resp_serializer = JobUpdRespSerializer(data={
                 'result': 'error',
-                'msg': e.message},
-                status=status.HTTP_202_ACCEPTED)
+                '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)