Example #1
0
 def do_biz(self):
     jobs = JobUtil.query_job_status(self.job_id, self.response_id)
     if not jobs:
         return {"jobId": self.job_id}
     ret = {
         "jobId": self.job_id,
         "responseDescriptor": {
             "status":
             jobs[0].status,
             "progress":
             jobs[0].progress,
             "statusDescription":
             jobs[0].descp,
             "errorCode":
             jobs[0].errcode,
             "responseId":
             jobs[0].indexid,
             "responseHistoryList": [{
                 "status": job.status,
                 "progress": job.progress,
                 "statusDescription": job.descp,
                 "errorCode": job.errcode,
                 "responseId": job.indexid
             } for job in jobs[1:]]
         }
     }
     return ret
Example #2
0
 def test_query_job_status(self):
     job_id = "1"
     JobStatusModel.objects.filter().delete()
     JobStatusModel(indexid=1, jobid=job_id, status="success",
                    progress=10).save()
     JobStatusModel(indexid=2, jobid=job_id, status="success",
                    progress=50).save()
     JobStatusModel(indexid=3, jobid=job_id, status="success",
                    progress=100).save()
     jobs = JobUtil.query_job_status(job_id)
     self.assertEqual(1, len(jobs))
     self.assertEqual(3, jobs[0].indexid)
     jobs = JobUtil.query_job_status(job_id, 1)
     self.assertEqual(2, len(jobs))
     self.assertEqual(3, jobs[0].indexid)
     self.assertEqual(2, jobs[1].indexid)
     JobStatusModel.objects.filter().delete()
Example #3
0
 def post(self, request, job_id):
     try:
         logger.debug("Enter JobView:post, %s, %s ", job_id, request.data)
         jobs = JobUtil.query_job_status(job_id)
         if len(jobs) > 0 and jobs[-1].errcode == '255':
             return Response(data={'result': 'ok'})
         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)
         return Response(data={'result': 'ok'})
     except Exception as e:
         return Response(data={'result': 'error', 'msg': e.message})
Example #4
0
 def do_biz(self):
     logger.debug("GetJobInfoService, job_id=%s, response_id=%s",
                  self.job_id, self.response_id)
     jobs = JobUtil.query_job_status(self.job_id, self.response_id)
     if not jobs:
         job_query_resp = JobQueryResp(self.job_id)
         return remove_none_key(job_query_resp.to_dict())
     job_query_resp = JobQueryResp(
         self.job_id,
         JobDescriptor(jobs[0].status, jobs[0].progress, jobs[0].descp,
                       jobs[0].errcode, jobs[0].indexid, [
                           JobHistory(job.status, job.progress, job.descp,
                                      job.errcode, job.indexid)
                           for job in jobs[1:]
                       ]))
     return remove_none_key(job_query_resp.to_dict())
Example #5
0
    def post(self, request, job_id):
        try:
            logger.debug("Enter JobView:post, job_id=%s, request=%s", job_id,
                         request.data)
            req_serializer = JobUpdReqSerializer(data=request.data)
            if not req_serializer.is_valid():
                raise BadRequestException(req_serializer.errors)

            jobs = JobUtil.query_job_status(job_id)
            if not jobs:
                raise BadRequestException("Job(%s) does not exist." % job_id)

            if jobs[-1].errcode != JOB_ERROR_CODE.ERROR:
                job_up_req = JobUpdReq(**request.data)
                desc = job_up_req.desc
                no_err_list = ('true', 'active', '0')
                err_code = JOB_ERROR_CODE.NO_ERROR if job_up_req.errcode in no_err_list else JOB_ERROR_CODE.ERROR
                logger.debug("errcode=%s", err_code)
                JobUtil.add_job_status(job_id,
                                       job_up_req.progress,
                                       desc,
                                       error_code=err_code)
            job_update_resp = JobUpdResp('ok')
            resp_serializer = JobUpdRespSerializer(job_update_resp)
            logger.debug("Leave JobView::post, response=%s", job_update_resp)
            return Response(data=resp_serializer.data,
                            status=status.HTTP_202_ACCEPTED)
        except BadRequestException as e:
            job_update_resp = JobUpdResp('error', e.args[0])
            resp_serializer = JobUpdRespSerializer(job_update_resp)
            return Response(data=resp_serializer.data,
                            status=status.HTTP_400_BAD_REQUEST)
        except Exception as e:
            job_update_resp = JobUpdResp('error', e.args[0])
            resp_serializer = JobUpdRespSerializer(job_update_resp)
            return Response(data=resp_serializer.data,
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)