Add Get NS swagger generate logic 75/29075/2
authorfujinhua <fu.jinhua@zte.com.cn>
Thu, 25 Jan 2018 01:15:44 +0000 (09:15 +0800)
committerfujinhua <fu.jinhua@zte.com.cn>
Thu, 25 Jan 2018 01:36:26 +0000 (09:36 +0800)
Change-Id: If6ca7e635b117abfb185315a537869e33bd9322a
Issue-ID: VFC-680
Signed-off-by: fujinhua <fu.jinhua@zte.com.cn>
lcm/ns/serializers.py
lcm/ns/tests/test_ns_get.py
lcm/ns/views.py

index bce0302..26327e5 100644 (file)
@@ -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)
index e41f397..32e5d1f 100644 (file)
@@ -31,7 +31,7 @@ class TestNsQuery(TestCase):
 \r
     def test_query_all_nsinstance(self):\r
         response = self.client.get("/api/nslcm/v1/ns")\r
-        self.failUnlessEqual(status.HTTP_200_OK, response.status_code)\r
+        self.failUnlessEqual(status.HTTP_200_OK, response.status_code, response.data)\r
         self.assertIsNotNone(response.data)\r
         self.assertEqual(2, len(response.data))\r
 \r
index 954f648..ae9c48d 100644 (file)
@@ -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(),