Add ztevnfmdriver query job swagger 31/30831/1
authorying.yunlong <ying.yunlong@zte.com.cn>
Thu, 8 Feb 2018 10:17:54 +0000 (18:17 +0800)
committerying.yunlong <ying.yunlong@zte.com.cn>
Thu, 8 Feb 2018 10:17:54 +0000 (18:17 +0800)
Change-Id: I8febb3d1861ebb36d276e0bcf72880a832ffba0d
Issue-ID: VFC-736
Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
zte/vmanager/driver/interfaces/serializers.py
zte/vmanager/driver/interfaces/tests.py
zte/vmanager/driver/interfaces/views.py

index f024d22..0e061f3 100644 (file)
@@ -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)
index 13f181c..a0f27d7 100644 (file)
@@ -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):
index 89d8e48..c664219 100644 (file)
@@ -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())