Add etsicatalog api
[modeling/etsicatalog.git] / catalog / packages / views / pnf_descriptor_views.py
index 381b557..4051e56 100644 (file)
@@ -19,19 +19,22 @@ from drf_yasg.utils import no_body, swagger_auto_schema
 from rest_framework import status
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
+from drf_yasg import openapi
 
 from catalog.packages.biz.pnf_descriptor import PnfDescriptor
+from catalog.packages.const import TAG_PNFD_API, TAG_PARSER_API
+from catalog.packages.serializers.catalog_serializers import InternalErrorRequestSerializer
+from catalog.packages.serializers.catalog_serializers import ParseModelRequestSerializer
+from catalog.packages.serializers.catalog_serializers import ParseModelResponseSerializer
 from catalog.packages.serializers.create_pnfd_info_request import CreatePnfdInfoRequestSerializer
 from catalog.packages.serializers.pnfd_info import PnfdInfoSerializer
 from catalog.packages.serializers.pnfd_infos import PnfdInfosSerializer
-from catalog.packages.views.common import validate_data
-from catalog.packages.serializers.catalog_serializers import ParseModelRequestSerializer
-from catalog.packages.serializers.catalog_serializers import ParseModelResponseSerializer
-from catalog.packages.serializers.catalog_serializers import InternalErrorRequestSerializer
 from catalog.packages.serializers.response import ProblemDetailsSerializer
+from catalog.packages.views.common import validate_data
 from catalog.pub.utils.syscomm import fun_name
 from catalog.pub.utils.values import ignore_case_get
 from .common import view_safe_call_with_log
+from catalog.swagger.views import EtsiCatalogFileAutoSchema
 
 logger = logging.getLogger(__name__)
 
@@ -39,7 +42,7 @@ logger = logging.getLogger(__name__)
 @swagger_auto_schema(
     method='GET',
     operation_description="Query a PNFD",
-    tags=["PNFD API"],
+    tags=[TAG_PNFD_API],
     request_body=no_body,
     responses={
         status.HTTP_200_OK: PnfdInfoSerializer(),
@@ -50,7 +53,7 @@ logger = logging.getLogger(__name__)
 @swagger_auto_schema(
     method='DELETE',
     operation_description="Delete a PNFD",
-    tags=["PNFD API"],
+    tags=[TAG_PNFD_API],
     request_body=no_body,
     responses={
         status.HTTP_204_NO_CONTENT: "No content",
@@ -76,7 +79,7 @@ def pnfd_info_rd(request, **kwargs):  # TODO
 @swagger_auto_schema(
     method='POST',
     operation_description="Create a  PNFD",
-    tags=["PNFD API"],
+    tags=[TAG_PNFD_API],
     request_body=CreatePnfdInfoRequestSerializer(),
     responses={
         status.HTTP_201_CREATED: PnfdInfoSerializer(),
@@ -86,7 +89,7 @@ def pnfd_info_rd(request, **kwargs):  # TODO
 @swagger_auto_schema(
     method='GET',
     operation_description="Query multiple PNFDs",
-    tags=["PNFD API"],
+    tags=[TAG_PNFD_API],
     request_body=no_body,
     responses={
         status.HTTP_200_OK: PnfdInfosSerializer(),
@@ -111,7 +114,7 @@ def pnf_descriptors_rc(request):
 @swagger_auto_schema(
     method='PUT',
     operation_description="Upload PNFD content",
-    tags=["PNFD API"],
+    tags=[TAG_PNFD_API],
     request_body=no_body,
     responses={
         status.HTTP_204_NO_CONTENT: "No content",
@@ -119,15 +122,18 @@ def pnf_descriptors_rc(request):
     }
 )
 @swagger_auto_schema(
+    auto_schema=EtsiCatalogFileAutoSchema,
     method='GET',
     operation_description="Fetch PNFD content",
-    tags=["PNFD API"],
+    tags=[TAG_PNFD_API],
     request_body=no_body,
     responses={
-        status.HTTP_204_NO_CONTENT: 'PNFD file',
+        status.HTTP_200_OK: openapi.Response('PNFD file', schema=openapi.Schema(format=openapi.FORMAT_BINARY,
+                                                                                type=openapi.TYPE_STRING)),
         status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(),
         status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer()
-    }
+    },
+    operation_id='Fetch PNFD content'
 )
 @api_view(http_method_names=['PUT', 'GET'])
 @view_safe_call_with_log(logger=logger)
@@ -151,7 +157,7 @@ def pnfd_content_ru(request, **kwargs):
 @swagger_auto_schema(
     method='POST',
     operation_description="Parse PNF model",
-    tags=["Parser API"],
+    tags=[TAG_PARSER_API],
     request_body=ParseModelRequestSerializer,
     responses={
         status.HTTP_202_ACCEPTED: ParseModelResponseSerializer,