From aaab856ff0d985a7cf2dee20de98b737622a03d9 Mon Sep 17 00:00:00 2001 From: "ying.yunlong" Date: Thu, 8 Feb 2018 18:17:54 +0800 Subject: Add ztevnfmdriver query job swagger Change-Id: I8febb3d1861ebb36d276e0bcf72880a832ffba0d Issue-ID: VFC-736 Signed-off-by: ying.yunlong --- zte/vmanager/driver/interfaces/serializers.py | 12 ++++++------ zte/vmanager/driver/interfaces/tests.py | 25 ++++++++++++------------- zte/vmanager/driver/interfaces/views.py | 17 ++++++++++++----- 3 files changed, 30 insertions(+), 24 deletions(-) (limited to 'zte') diff --git a/zte/vmanager/driver/interfaces/serializers.py b/zte/vmanager/driver/interfaces/serializers.py index f024d224..0e061f33 100644 --- a/zte/vmanager/driver/interfaces/serializers.py +++ b/zte/vmanager/driver/interfaces/serializers.py @@ -20,7 +20,7 @@ class JobHistorySerializer(serializers.Serializer): help_text="Status of job", required=True, allow_null=False) - progress = serializers.CharField( + progress = serializers.IntegerField( help_text="Progress of job", required=True, allow_null=False) @@ -31,8 +31,8 @@ class JobHistorySerializer(serializers.Serializer): errorCode = serializers.CharField( help_text="Error code of job", required=False, - allow_null=True) - responseId = serializers.CharField( + allow_blank=True) + responseId = serializers.IntegerField( help_text="Response index of job", required=True, allow_null=False) @@ -43,7 +43,7 @@ class JobDescriptorSerializer(serializers.Serializer): help_text="Status of job", required=True, allow_null=False) - progress = serializers.CharField( + progress = serializers.IntegerField( help_text="Progress of job", required=True, allow_null=False) @@ -54,8 +54,8 @@ class JobDescriptorSerializer(serializers.Serializer): errorCode = serializers.CharField( help_text="Error code of job", required=False, - allow_null=True) - responseId = serializers.CharField( + allow_blank=True) + responseId = serializers.IntegerField( help_text="Response index of job", required=True, allow_null=False) diff --git a/zte/vmanager/driver/interfaces/tests.py b/zte/vmanager/driver/interfaces/tests.py index 13f181c7..a0f27d72 100644 --- a/zte/vmanager/driver/interfaces/tests.py +++ b/zte/vmanager/driver/interfaces/tests.py @@ -229,33 +229,32 @@ class InterfacesTest(TestCase): "description": "" } resp_body = { - "responsedescriptor": { + "responseDescriptor": { "status": "processing", - "responsehistorylist": [ + "responseHistoryList": [ { "status": "error", "progress": 255, - "errorcode": "", - "responseid": 20, - "statusdescription": "'JsonParser' object has no attribute 'parser_info'"}], - "responseid": 21, - "errorcode": "", + "errorCode": "", + "responseId": 20, + "statusDescription": "'JsonParser' object has no attribute 'parser_info'"}], + "responseId": 21, + "errorCode": "", "progress": 40, - "statusdescription": "Create nf apply resource failed"}, - "jobid": "NF-CREATE-11-ec6c2f2a-9f48-11e6-9405-fa163e91c2f9"} + "statusDescription": "Create nf apply resource failed"}, + "jobId": "NF-CREATE-11-ec6c2f2a-9f48-11e6-9405-fa163e91c2f9"} r1 = [0, json.JSONEncoder().encode(vnfm_info), '200'] r2 = [0, json.JSONEncoder().encode(resp_body), '200'] mock_call_req.side_effect = [r1, r2] response = self.client.get( "/api/ztevnfmdriver/v1/{vnfmid}/jobs/{jobid}?responseId={responseId}".format( vnfmid=vnfm_info["vnfmId"], - jobid=resp_body["jobid"], - responseId=resp_body["responsedescriptor"]["responseid"])) + jobid=resp_body["jobId"], + responseId=resp_body["responseDescriptor"]["responseId"])) self.assertEqual(status.HTTP_200_OK, response.status_code) - expect_resp_data = resp_body - self.assertDictEqual(expect_resp_data, response.data) + self.assertDictEqual(resp_body, response.data) @mock.patch.object(restcall, 'call_req') def test_grantvnf_005(self, mock_call_req): diff --git a/zte/vmanager/driver/interfaces/views.py b/zte/vmanager/driver/interfaces/views.py index 89d8e48f..c664219e 100644 --- a/zte/vmanager/driver/interfaces/views.py +++ b/zte/vmanager/driver/interfaces/views.py @@ -236,25 +236,32 @@ class JobView(APIView): logger.debug("[%s] request.data=%s", fun_name(), request.data) ret = get_vnfminfo_from_nslcm(vnfmid) if ret[0] != 0: - return Response(data={'error': ret[1]}, status=ret[2]) + raise Exception(ret[1]) + vnfm_info = json.JSONDecoder().decode(ret[1]) logger.debug("[%s] vnfm_info=%s", fun_name(), vnfm_info) operation_status_url = '/v1/jobs/{jobId}?NFVOID={nfvoId}&VNFMID={vnfmId}&ResponseID={responseId}' + responseId = ignorcase_get(request.GET, 'responseId') + query_url = operation_status_url.format(jobId=jobid, nfvoId=1, vnfmId=vnfmid, responseId=responseId) ret = restcall.call_req( base_url=ignorcase_get(vnfm_info, 'url'), user=ignorcase_get(vnfm_info, 'userName'), passwd=ignorcase_get(vnfm_info, 'password'), auth_type=restcall.rest_no_auth, - resource=operation_status_url.format(jobId=jobid, nfvoId=1, vnfmId=vnfmid, - responseId=ignorcase_get(request.GET, 'responseId')), + resource=query_url, method='get', content={}) if ret[0] != 0: - return Response(data={'error': ret[1]}, status=ret[2]) + raise Exception(ret[1]) + resp_data = json.JSONDecoder().decode(ret[1]) logger.debug("[%s]resp_data=%s", fun_name(), resp_data) - return Response(data=resp_data, status=ret[2]) + jobQueryRespSerializer = JobQueryRespSerializer(data=resp_data) + if not jobQueryRespSerializer.is_valid(): + raise Exception(jobQueryRespSerializer.errors) + + return Response(data=jobQueryRespSerializer.data, status=status.HTTP_200_OK) except Exception as e: logger.error("Error occurred when getting operation status information,error:%s", e.message) logger.error(traceback.format_exc()) -- cgit 1.2.3-korg