Add get ns detail swagger generate logic 97/29397/2
authorfujinhua <fu.jinhua@zte.com.cn>
Mon, 29 Jan 2018 02:11:48 +0000 (10:11 +0800)
committerfujinhua <fu.jinhua@zte.com.cn>
Mon, 29 Jan 2018 02:18:07 +0000 (10:18 +0800)
Change-Id: I9e443ae9604faa5e0047105016d4e93be984bfad
Issue-ID: VFC-680
Signed-off-by: fujinhua <fu.jinhua@zte.com.cn>
lcm/ns/views.py

index 23c3adc..84c50da 100644 (file)
@@ -187,14 +187,30 @@ class NSHealView(APIView):
 
 
 class NSDetailView(APIView):
+    @swagger_auto_schema(
+        request_body=None,
+        responses={
+            status.HTTP_200_OK: QueryNsRespSerializer(help_text="NS instance", many=True),
+            status.HTTP_500_INTERNAL_SERVER_ERROR: "Inner error",
+            status.HTTP_404_NOT_FOUND: "Ns instance does not exist"
+        }
+    )
     def get(self, request, ns_instance_id):
-        logger.debug("Enter NSDetailView::get ns(%s)", ns_instance_id)
-        ns_filter = {"ns_inst_id": ns_instance_id}
-        ret = GetNSInfoService(ns_filter).get_ns_info()
-        if not ret:
-            return Response(status=status.HTTP_404_NOT_FOUND)
-        logger.debug("Leave NSDetailView::get::ret=%s", ret)
-        return Response(data=ret, status=status.HTTP_200_OK)
+        try:
+            logger.debug("Enter NSDetailView::get ns(%s)", ns_instance_id)
+            ns_filter = {"ns_inst_id": ns_instance_id}
+            ret = GetNSInfoService(ns_filter).get_ns_info()
+            if not ret:
+                return Response(status=status.HTTP_404_NOT_FOUND)
+            logger.debug("Leave NSDetailView::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 GetNSDetail: %s", e.message)
+            return Response(data={'error': e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
 
     def delete(self, request, ns_instance_id):
         logger.debug("Enter NSDetailView::delete ns(%s)", ns_instance_id)