diff options
-rw-r--r-- | lcm/ns/tests/tests_ns_terminate.py | 8 | ||||
-rw-r--r-- | lcm/ns/views.py | 32 |
2 files changed, 28 insertions, 12 deletions
diff --git a/lcm/ns/tests/tests_ns_terminate.py b/lcm/ns/tests/tests_ns_terminate.py index 4a33105d..d7091882 100644 --- a/lcm/ns/tests/tests_ns_terminate.py +++ b/lcm/ns/tests/tests_ns_terminate.py @@ -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) diff --git a/lcm/ns/views.py b/lcm/ns/views.py index 3905faae..b8904d54 100644 --- a/lcm/ns/views.py +++ b/lcm/ns/views.py @@ -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): |