diff options
author | 2018-01-25 09:15:44 +0800 | |
---|---|---|
committer | 2018-01-25 09:36:26 +0800 | |
commit | 37ff5365438310d6597b921747095981f5cd50dd (patch) | |
tree | 3e695903737947c52d9876adc4741405addb6483 | |
parent | 55fb91671fe86611e48a99deabe2aef6e9e37727 (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.py | 6 | ||||
-rw-r--r-- | lcm/ns/tests/test_ns_get.py | 2 | ||||
-rw-r--r-- | 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(), |