Add ns terminate swagger generate logic 33/29233/3
authorfujinhua <fu.jinhua@zte.com.cn>
Fri, 26 Jan 2018 01:43:33 +0000 (09:43 +0800)
committerfujinhua <fu.jinhua@zte.com.cn>
Fri, 26 Jan 2018 02:07:27 +0000 (10:07 +0800)
Change-Id: I79ae3253210718f13d9a7f8bc6758fced1f94b35
Issue-ID: VFC-680
Signed-off-by: fujinhua <fu.jinhua@zte.com.cn>
lcm/ns/tests/tests_ns_terminate.py
lcm/ns/views.py

index 4a33105..d709188 100644 (file)
@@ -51,12 +51,12 @@ class TestTerminateNsViews(TestCase):
 
     @mock.patch.object(TerminateNsService, 'run')
     def test_terminate_vnf_url(self, mock_run):
-        mock_run.re.return_value = None
+        mock_run.re.return_value = "1"
         req_data = {
             "terminationType": "forceful",
             "gracefulTerminationTimeout": "600"}
         response = self.client.post("/api/nslcm/v1/ns/%s/terminate" % self.ns_inst_id, data=req_data)
-        self.failUnlessEqual(status.HTTP_202_ACCEPTED, response.status_code)
+        self.failUnlessEqual(status.HTTP_202_ACCEPTED, response.status_code, response.data)
 
         response = self.client.delete("/api/nslcm/v1/ns/%s" % self.ns_inst_id)
         self.failUnlessEqual(status.HTTP_204_NO_CONTENT, response.status_code)
@@ -100,7 +100,7 @@ class TestTerminateNsViews(TestCase):
 
     @mock.patch.object(TerminateNsService, 'run')
     def test_terminate_non_existing_ns_inst_id(self, mock_run):
-        mock_run.re.return_value = None
+        mock_run.re.return_value = "1"
 
         ns_inst_id = '100'
 
@@ -108,6 +108,6 @@ class TestTerminateNsViews(TestCase):
             "terminationType": "forceful",
             "gracefulTerminationTimeout": "600"}
         response = self.client.post("/api/nslcm/v1/ns/%s/terminate" % ns_inst_id, data=req_data)
-        self.failUnlessEqual(status.HTTP_202_ACCEPTED, response.status_code)
+        self.failUnlessEqual(status.HTTP_202_ACCEPTED, response.status_code, response.data)
 
         self.assertRaises(NSInstModel.DoesNotExist, NSInstModel.objects.get, id=ns_inst_id)
index 3905faa..b8904d5 100644 (file)
@@ -34,7 +34,9 @@ from lcm.pub.utils.restcall import req_by_msb
 from lcm.pub.utils.values import ignore_case_get
 from lcm.ns.serializers import CreateNsReqSerializer, CreateNsRespSerializer
 from lcm.ns.serializers import QueryNsRespSerializer
-from lcm.ns.serializers import InstantNsReqSerializer, NsOperateJobSerializer
+from lcm.ns.serializers import NsOperateJobSerializer
+from lcm.ns.serializers import InstantNsReqSerializer
+from lcm.ns.serializers import TerminateNsReqSerializer
 from lcm.pub.exceptions import NSLCMException
 
 logger = logging.getLogger(__name__)
@@ -124,19 +126,33 @@ class NSInstView(APIView):
 
 
 class TerminateNSView(APIView):
+    @swagger_auto_schema(
+        request_body=TerminateNsReqSerializer(),
+        responses={
+            status.HTTP_202_ACCEPTED: NsOperateJobSerializer(),
+            status.HTTP_500_INTERNAL_SERVER_ERROR: "Inner error"
+        }
+    )
     def post(self, request, ns_instance_id):
-        logger.debug("Enter TerminateNSView::post %s", request.data)
-        termination_type = ignore_case_get(request.data, 'terminationType')
-        graceful_termination_timeout = ignore_case_get(request.data, 'gracefulTerminationTimeout')
-        job_id = JobUtil.create_job("VNF", JOB_TYPE.TERMINATE_VNF, ns_instance_id)
         try:
+            logger.debug("Enter TerminateNSView::post %s", request.data)
+            req_serializer = TerminateNsReqSerializer(data=request.data)
+            if not req_serializer.is_valid():
+                raise NSLCMException(req_serializer.errors)
+
+            termination_type = ignore_case_get(request.data, 'terminationType')
+            graceful_termination_timeout = ignore_case_get(request.data, 'gracefulTerminationTimeout')
+            job_id = JobUtil.create_job("VNF", JOB_TYPE.TERMINATE_VNF, ns_instance_id)
             TerminateNsService(ns_instance_id, termination_type, graceful_termination_timeout, job_id).start()
+
+            resp_serializer = NsOperateJobSerializer(data={'jobId': job_id})
+            if not resp_serializer.is_valid():
+                raise NSLCMException(resp_serializer.errors)
+            logger.debug("Leave TerminateNSView::post ret=%s", resp_serializer.data)
+            return Response(data=resp_serializer.data, status=status.HTTP_202_ACCEPTED)
         except Exception as e:
             logger.error("Exception in CreateNS: %s", e.message)
             return Response(data={'error': e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
-        ret = {'jobId': job_id}
-        logger.debug("Leave TerminateNSView::post ret=%s", ret)
-        return Response(data=ret, status=status.HTTP_202_ACCEPTED)
 
 
 class NSHealView(APIView):