From b891a31a97e9f4d46a6594d62296fed2cf0d9759 Mon Sep 17 00:00:00 2001 From: fujinhua Date: Wed, 24 Jan 2018 15:12:45 +0800 Subject: Add create NS swagger generate logic Change-Id: Ibb0b0334826b7d0949392a9ac63034b9024dd2e4 Issue-ID: VFC-680 Signed-off-by: fujinhua --- lcm/ns/serializers.py | 2 +- lcm/ns/tests/test_ns_create.py | 4 ++-- lcm/ns/views.py | 25 +++++++++++++++++-------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/lcm/ns/serializers.py b/lcm/ns/serializers.py index e9d85e5c..debacf92 100644 --- a/lcm/ns/serializers.py +++ b/lcm/ns/serializers.py @@ -21,7 +21,7 @@ class ContextSerializer(serializers.Serializer): class CreateNsReqSerializer(serializers.Serializer): - csarId = serializers.CharField(help_text="Package ID of NS", required=True) + csarId = serializers.CharField(help_text="Package ID of NS", required=False, allow_null=True) nsName = serializers.CharField(help_text="Name of NS", required=False, allow_null=True) description = serializers.CharField(help_text="Description of NS", required=False, allow_null=True) context = ContextSerializer(help_text="Context of NS", required=False) diff --git a/lcm/ns/tests/test_ns_create.py b/lcm/ns/tests/test_ns_create.py index e462e1c3..61d87913 100644 --- a/lcm/ns/tests/test_ns_create.py +++ b/lcm/ns/tests/test_ns_create.py @@ -70,8 +70,8 @@ class TestNsInstantiate(TestCase): mock_do_biz.side_effect = NSLCMException("nsd not exists.") new_nsd_id = '1' data = { - 'nsdid': new_nsd_id, - 'nsname': 'ns', + 'csarId': new_nsd_id, + 'nsName': 'ns', 'description': 'description' } response = self.client.post("/api/nslcm/v1/ns", data=data) diff --git a/lcm/ns/views.py b/lcm/ns/views.py index 76c4adbe..954f6486 100644 --- a/lcm/ns/views.py +++ b/lcm/ns/views.py @@ -33,6 +33,7 @@ from lcm.pub.utils.jobutil import JobUtil, JOB_TYPE 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.pub.exceptions import NSLCMException logger = logging.getLogger(__name__) @@ -58,20 +59,28 @@ class CreateNSView(APIView): ) def post(self, request): logger.debug("Enter CreateNS: %s", request.data) - if ignore_case_get(request.data, 'test') == "test": - return Response(data={'nsInstanceId': "test"}, status=status.HTTP_201_CREATED) - csar_id = ignore_case_get(request.data, 'csarId') - ns_name = ignore_case_get(request.data, 'nsName') - description = ignore_case_get(request.data, 'description') - context = ignore_case_get(request.data, 'context') try: + req_serializer = CreateNsReqSerializer(data=request.data) + if not req_serializer.is_valid(): + raise NSLCMException(req_serializer.errors) + + if ignore_case_get(request.data, 'test') == "test": + return Response(data={'nsInstanceId': "test"}, status=status.HTTP_201_CREATED) + csar_id = ignore_case_get(request.data, 'csarId') + ns_name = ignore_case_get(request.data, 'nsName') + description = ignore_case_get(request.data, 'description') + context = ignore_case_get(request.data, 'context') ns_inst_id = CreateNSService(csar_id, ns_name, description, context).do_biz() + + logger.debug("CreateNSView::post::ret={'nsInstanceId':%s}", ns_inst_id) + resp_serializer = CreateNsRespSerializer(data={'nsInstanceId': ns_inst_id}) + if not resp_serializer.is_valid(): + raise NSLCMException(resp_serializer.errors) + return Response(data=resp_serializer.data, status=status.HTTP_201_CREATED) except Exception as e: logger.error(traceback.format_exc()) logger.error("Exception in CreateNS: %s", e.message) return Response(data={'error': e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) - logger.debug("CreateNSView::post::ret={'nsInstanceId':%s}", ns_inst_id) - return Response(data={'nsInstanceId': ns_inst_id}, status=status.HTTP_201_CREATED) class NSInstView(APIView): -- cgit 1.2.3-korg