diff options
Diffstat (limited to 'lcm')
-rw-r--r-- | lcm/lcm/jobs/serializers.py | 11 | ||||
-rw-r--r-- | lcm/lcm/jobs/views.py | 28 |
2 files changed, 24 insertions, 15 deletions
diff --git a/lcm/lcm/jobs/serializers.py b/lcm/lcm/jobs/serializers.py index 61fa2dda..afaa40e8 100644 --- a/lcm/lcm/jobs/serializers.py +++ b/lcm/lcm/jobs/serializers.py @@ -35,14 +35,3 @@ class JobDescriptorSerializer(serializers.Serializer): class JobQueryRespSerializer(serializers.Serializer): jobId = serializers.CharField(help_text="UUID of job", required=True) responseDescriptor = JobDescriptorSerializer(help_text="Descriptor of job", required=False) - - -class JobUpdReqSerializer(serializers.Serializer): - progress = serializers.CharField(help_text="Progress of job", required=True) - desc = serializers.CharField(help_text="Desc of job", required=False) - errcode = serializers.CharField(help_text="Error code of job", required=False) - - -class JobUpdRespSerializer(serializers.Serializer): - result = serializers.CharField(help_text="Result of job update", required=True) - msg = serializers.CharField(help_text="Detail of job update", required=False) diff --git a/lcm/lcm/jobs/views.py b/lcm/lcm/jobs/views.py index 57a999b4..37318639 100644 --- a/lcm/lcm/jobs/views.py +++ b/lcm/lcm/jobs/views.py @@ -13,17 +13,37 @@ # limitations under the License. import logging +import traceback +from drf_yasg.utils import swagger_auto_schema +from rest_framework import status from rest_framework.response import Response from rest_framework.views import APIView -from lcm.pub.utils.values import ignore_case_get + from lcm.jobs.job_get import GetJobInfoService +from lcm.jobs.serializers import JobQueryRespSerializer +from lcm.pub.exceptions import NFLCMException +from lcm.pub.utils.values import ignore_case_get logger = logging.getLogger(__name__) class JobView(APIView): + @swagger_auto_schema( + request_body=None, + responses={ + status.HTTP_200_OK: JobQueryRespSerializer(), + status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" + } + ) def get(self, request, job_id): - response_id = ignore_case_get(request.META, 'responseId') - ret = GetJobInfoService(job_id, response_id).do_biz() - return Response(data=ret) + try: + response_id = ignore_case_get(request.META, 'responseId') + ret = GetJobInfoService(job_id, response_id).do_biz() + resp_serializer = JobQueryRespSerializer(data=ret) + if not resp_serializer.is_valid(): + raise NFLCMException(resp_serializer.errors) + return Response(data=resp_serializer.data, 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) |