# limitations under the License.
import logging
+import traceback
+from drf_yasg import openapi
+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(
+ manual_parameters=[
+ openapi.Parameter('responseId',
+ openapi.IN_QUERY,
+ "responseId",
+ type=openapi.TYPE_INTEGER
+ ),
+ ],
+ 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.args[0]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)