Add vfc-ztevnfmdriver heal auto-swagger 41/30441/1
authorying.yunlong <ying.yunlong@zte.com.cn>
Tue, 6 Feb 2018 11:07:52 +0000 (19:07 +0800)
committerying.yunlong <ying.yunlong@zte.com.cn>
Tue, 6 Feb 2018 11:07:52 +0000 (19:07 +0800)
Change-Id: Id9dbcfd9a9d275d3b700b8d9a8599409684d72f6
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 70a6541..2e60118 100644 (file)
@@ -19,8 +19,7 @@ class AffectedvmSerializer(serializers.Serializer):
     extention = serializers.CharField(
         help_text="extention",
         max_length=255,
-        required=True,
-        allow_null=True)
+        required=True, allow_blank=True)
     vmid = serializers.CharField(
         help_text="vmid",
         max_length=255,
index da41484..24c7fbd 100644 (file)
@@ -473,10 +473,8 @@ class InterfacesTest(TestCase):
             'isgrace': 'force'
         }
 
-        response = self.client.post(
-            "/api/ztevnfmdriver/v1/200/vnfs/201/heal",
-            data=json.dumps(heal_vnf_data),
-            content_type='application/json')
+        response = self.client.post("/api/ztevnfmdriver/v1/200/vnfs/201/heal", data=json.dumps(heal_vnf_data),
+                                    content_type='application/json')
 
         self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code)
         self.assertDictEqual(job_info, response.data)
index cd51c69..485657e 100644 (file)
@@ -450,13 +450,17 @@ class Heal(APIView):
         try:
             logger.info("request.data = %s", request.data)
             logger.info("requested_url = %s", request.get_full_path())
+            healReqSerializer = HealReqSerializer(data=request.data)
+            if not healReqSerializer.is_valid():
+                raise Exception(healReqSerializer.errors)
+
             ret = get_vnfminfo_from_nslcm(vnfmid)
             if ret[0] != 0:
                 return Response(data={'error': ret[1]}, status=ret[2])
             vnfm_info = json.JSONDecoder().decode(ret[1])
             data = {}
-            data['action'] = ignorcase_get(request.data, 'action')
-            affectedvm = ignorcase_get(request.data, 'affectedvm')
+            data['action'] = ignorcase_get(healReqSerializer.data, 'action')
+            affectedvm = ignorcase_get(healReqSerializer.data, 'affectedvm')
             data['affectedvm'] = []
             if isinstance(affectedvm, list):
                 data['affectedvm'] = affectedvm
@@ -479,7 +483,11 @@ class Heal(APIView):
                 raise Exception('heal error')
             resp_data = json.JSONDecoder().decode(ret[1])
             logger.info("resp_data=%s", resp_data)
-            return Response(data=resp_data, status=status.HTTP_202_ACCEPTED)
+            healRespSerializer = HealRespSerializer(data=resp_data)
+            if not healRespSerializer.is_valid():
+                raise Exception(healRespSerializer.errors)
+
+            return Response(data=healRespSerializer.data, status=status.HTTP_202_ACCEPTED)
         except Exception as e:
             logger.error("Error occurred when healing VNF,error:%s", e.message)
             logger.error(traceback.format_exc())