From 37ff5365438310d6597b921747095981f5cd50dd Mon Sep 17 00:00:00 2001 From: fujinhua Date: Thu, 25 Jan 2018 09:15:44 +0800 Subject: [PATCH] Add Get NS swagger generate logic Change-Id: If6ca7e635b117abfb185315a537869e33bd9322a Issue-ID: VFC-680 Signed-off-by: fujinhua --- lcm/ns/serializers.py | 6 +++--- lcm/ns/tests/test_ns_get.py | 2 +- lcm/ns/views.py | 34 +++++++++++++++++++++++++--------- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/lcm/ns/serializers.py b/lcm/ns/serializers.py index bce03023..26327e5f 100644 --- a/lcm/ns/serializers.py +++ b/lcm/ns/serializers.py @@ -64,7 +64,7 @@ class QueryNsRespSerializer(serializers.Serializer): nsName = serializers.CharField(help_text="Name of NS instance", required=False, allow_null=True) description = serializers.CharField(help_text="Description of NS instance", required=False, allow_null=True) nsdId = serializers.CharField(help_text="ID of NSD", required=True) - vnfInfo = VnfInstSerializer(help_text="VNF instances", many=True) - vlInfo = VlInstSerializer(help_text="VL instances", many=True) - vnffgInfo = VnffgInstSerializer(help_text="VNFFG instances", many=True) + vnfInfo = VnfInstSerializer(help_text="VNF instances", many=True, required=False, allow_null=True) + vlInfo = VlInstSerializer(help_text="VL instances", many=True, required=False, allow_null=True) + vnffgInfo = VnffgInstSerializer(help_text="VNFFG instances", many=True, required=False, allow_null=True) nsState = serializers.CharField(help_text="State of NS instance", required=False, allow_null=True) diff --git a/lcm/ns/tests/test_ns_get.py b/lcm/ns/tests/test_ns_get.py index e41f397a..32e5d1fb 100644 --- a/lcm/ns/tests/test_ns_get.py +++ b/lcm/ns/tests/test_ns_get.py @@ -31,7 +31,7 @@ class TestNsQuery(TestCase): def test_query_all_nsinstance(self): response = self.client.get("/api/nslcm/v1/ns") - self.failUnlessEqual(status.HTTP_200_OK, response.status_code) + self.failUnlessEqual(status.HTTP_200_OK, response.status_code, response.data) self.assertIsNotNone(response.data) self.assertEqual(2, len(response.data)) diff --git a/lcm/ns/views.py b/lcm/ns/views.py index 954f6486..ae9c48d1 100644 --- a/lcm/ns/views.py +++ b/lcm/ns/views.py @@ -33,22 +33,38 @@ 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.ns.serializers import QueryNsRespSerializer from lcm.pub.exceptions import NSLCMException logger = logging.getLogger(__name__) class CreateNSView(APIView): + @swagger_auto_schema( + request_body=None, + responses={ + status.HTTP_200_OK: QueryNsRespSerializer(help_text="NS instances", many=True), + status.HTTP_500_INTERNAL_SERVER_ERROR: "Inner error" + } + ) def get(self, request): - logger.debug("CreateNSView::get") - filter = None - csarId = ignore_case_get(request.META, 'csarId') - if csarId: - filter = {"csarId": csarId} - - ret = GetNSInfoService(filter).get_ns_info() - logger.debug("CreateNSView::get::ret=%s", ret) - return Response(data=ret, status=status.HTTP_200_OK) + try: + logger.debug("CreateNSView::get") + filter = None + csarId = ignore_case_get(request.META, 'csarId') + if csarId: + filter = {"csarId": csarId} + + ret = GetNSInfoService(filter).get_ns_info() + logger.debug("CreateNSView::get::ret=%s", ret) + resp_serializer = QueryNsRespSerializer(data=ret, many=True) + if not resp_serializer.is_valid(): + raise NSLCMException(resp_serializer.errors) + return Response(data=resp_serializer.data, status=status.HTTP_200_OK) + except Exception as e: + logger.error(traceback.format_exc()) + logger.error("Exception in GetNS: %s", e.message) + return Response(data={'error': e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) @swagger_auto_schema( request_body=CreateNsReqSerializer(), -- 2.16.6