aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lcm/jobs/views.py41
1 files changed, 24 insertions, 17 deletions
diff --git a/lcm/jobs/views.py b/lcm/jobs/views.py
index 24a89b57..1ffcf9c3 100644
--- a/lcm/jobs/views.py
+++ b/lcm/jobs/views.py
@@ -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)