aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfujinhua <fu.jinhua@zte.com.cn>2018-01-25 09:15:44 +0800
committerfujinhua <fu.jinhua@zte.com.cn>2018-01-25 09:36:26 +0800
commit37ff5365438310d6597b921747095981f5cd50dd (patch)
tree3e695903737947c52d9876adc4741405addb6483
parent55fb91671fe86611e48a99deabe2aef6e9e37727 (diff)
Add Get NS swagger generate logic
Change-Id: If6ca7e635b117abfb185315a537869e33bd9322a Issue-ID: VFC-680 Signed-off-by: fujinhua <fu.jinhua@zte.com.cn>
-rw-r--r--lcm/ns/serializers.py6
-rw-r--r--lcm/ns/tests/test_ns_get.py2
-rw-r--r--lcm/ns/views.py34
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(),