1.Update API endpoint; 2. update swagger information. 02/98702/2
authordyh <dengyuanhong@chinamobile.com>
Thu, 21 Nov 2019 08:53:38 +0000 (16:53 +0800)
committerdyh <dengyuanhong@chinamobile.com>
Thu, 21 Nov 2019 09:17:32 +0000 (17:17 +0800)
Issue-ID: MODELING-277
Change-Id: I6b3252ebc61d6bdf0ece483688a44f3838901940
Signed-off-by: dyh <dengyuanhong@chinamobile.com>
17 files changed:
catalog/jobs/views.py
catalog/packages/biz/vnf_pkg_artifacts.py
catalog/packages/const.py
catalog/packages/tests/test_nspackage.py
catalog/packages/tests/test_pnf_descriptor.py
catalog/packages/tests/test_servicepackage.py
catalog/packages/tests/test_vnfpackage.py
catalog/packages/urls.py
catalog/packages/views/catalog_views.py
catalog/packages/views/health_check_views.py
catalog/packages/views/ns_descriptor_views.py
catalog/packages/views/nsdm_subscription_views.py
catalog/packages/views/pnf_descriptor_views.py
catalog/packages/views/vnf_package_artifact_views.py
catalog/packages/views/vnf_package_subscription_views.py
catalog/packages/views/vnf_package_views.py
catalog/samples/views.py

index 123af00..dd5299c 100644 (file)
@@ -27,10 +27,10 @@ from catalog.pub.utils.jobutil import JobUtil
 from catalog.pub.utils.values import ignore_case_get
 
 logger = logging.getLogger(__name__)
+CATALOG_API = "Catalog interface"
 
 
 class JobView(APIView):
-
     input_job_id = openapi.Parameter(
         'job_id',
         openapi.IN_QUERY,
@@ -44,6 +44,7 @@ class JobView(APIView):
 
     @swagger_auto_schema(
         operation_description="Get job status",
+        tags=[CATALOG_API],
         manual_parameters=[input_job_id, input_response_id],
         responses={
             status.HTTP_200_OK: GetJobResponseSerializer(),
@@ -53,8 +54,7 @@ class JobView(APIView):
         response_id = ignore_case_get(request.META, 'responseId')
         ret = GetJobInfoService(job_id, response_id).do_biz()
         response_serializer = GetJobResponseSerializer(data=ret)
-        validataion_error = self.handleValidatonError(
-            response_serializer, False)
+        validataion_error = self.handleValidatonError(response_serializer, False)
         if validataion_error:
             return validataion_error
 
@@ -65,6 +65,7 @@ class JobView(APIView):
     @swagger_auto_schema(
         request_body=PostJobRequestSerializer(),
         operation_description="Update job status",
+        tags=[CATALOG_API],
         manual_parameters=[input_job_id],
         responses={
             status.HTTP_202_ACCEPTED: PostJobResponseResultSerializer(),
@@ -80,24 +81,19 @@ class JobView(APIView):
             return Response(data=job_result_ok)
 
         request_serializer = PostJobRequestSerializer(data=request.data)
-        validataion_error = self.handleValidatonError(
-            request_serializer, True)
+        validataion_error = self.handleValidatonError(request_serializer, True)
         if not validataion_error:
             return validataion_error
 
         requestData = request_serializer.data
         progress = ignore_case_get(requestData, "progress")
         desc = ignore_case_get(requestData, "desc", '%s' % progress)
-        errcode = '0' if ignore_case_get(
-            requestData, 'errcode') in (
-            'true', 'active') else '255'
+        errcode = '0' if ignore_case_get(requestData, 'errcode') in ('true', 'active') else '255'
         logger.debug("errcode=%s", errcode)
         JobUtil.add_job_status(job_id, progress, desc, error_code=errcode)
 
-        response_serializer = PostJobResponseResultSerializer(
-            data=job_result_ok)
-        validataion_error = self.handleValidatonError(
-            response_serializer, False)
+        response_serializer = PostJobResponseResultSerializer(data=job_result_ok)
+        validataion_error = self.handleValidatonError(response_serializer, False)
         if validataion_error:
             return validataion_error
 
index 37021eb..839f05c 100644 (file)
@@ -35,7 +35,7 @@ class FetchVnfPkgArtifact(object):
             vnf_extract_path = fileutil.unzip_csar_to_tmp(local_path)
             artifact_path = fileutil.get_artifact_path(vnf_extract_path, artifactPath)
             if not artifact_path:
-                raise ArtifactNotFoundException("Couldn't artifact %s" % artifactPath)
+                raise ArtifactNotFoundException("Can't find artifact %s" % artifactPath)
             with open(artifact_path, 'rt') as f:
                 file_content = f.read()
         else:
index 593f3a2..cc7dd2d 100644 (file)
@@ -92,3 +92,16 @@ NSDM_NOTIFICATION_TYPES = [
     "PnfdOnBoardingFailureNotification",
     "PnfdDeletionNotification"
 ]
+
+# API swagger tag
+TAG_CATALOG_API = "Catalog interface"
+
+TAG_PARSER_API = "Parser interface"
+
+TAG_NSD_API = "NSD Management interface"
+
+TAG_PNFD_API = "NSD Management interface"
+
+TAG_VNF_PACKAGE_API = "VNF Package Management interface"
+
+TAG_HEALTH_CHECK = "Health Check interface"
index 91f3503..0ca34a2 100644 (file)
 # limitations under the License.
 
 import json
+
 import mock
-from rest_framework import status
-from django.test import TestCase
 from django.test import Client
+from django.test import TestCase
+from rest_framework import status
 
-from catalog.pub.utils import restcall, toscaparser
 from catalog.pub.database.models import NSPackageModel, VnfPackageModel, PnfPackageModel
 from catalog.pub.msapi import sdc
+from catalog.pub.utils import restcall, toscaparser
 from .const import nsd_data
 
 
@@ -228,7 +229,7 @@ class TestNsPackage(TestCase):
         mock_parse_nsd.return_value = json.JSONEncoder().encode({"a": "b"})
         req_data = {"csarId": "18", "inputs": []}
         resp = self.client.post(
-            "/api/catalog/v1/parsernsd",
+            "/api/parser/v1/parsernsd",
             req_data,
             format='json')
         self.assertEqual(resp.status_code, status.HTTP_202_ACCEPTED)
@@ -237,7 +238,7 @@ class TestNsPackage(TestCase):
     def test_nsd_parse_when_csar_not_exist(self):
         req_data = {"csarId": "1", "inputs": []}
         resp = self.client.post(
-            "/api/catalog/v1/parsernsd",
+            "/api/parser/v1/parsernsd",
             req_data,
             format='json')
         self.assertEqual(
index 8af8614..7abd46c 100644 (file)
 
 import copy
 import json
-import mock
 import os
 import shutil
 
-
+import mock
 from django.test import TestCase
 from rest_framework import status
 from rest_framework.test import APIClient
+
 from catalog.packages.biz.pnf_descriptor import PnfDescriptor
 from catalog.packages.const import PKG_STATUS
 from catalog.packages.tests.const import pnfd_data
@@ -281,6 +281,6 @@ class TestPnfDescriptor(TestCase):
         PnfPackageModel(pnfPackageId="8", pnfdId="10").save()
         mock_parse_pnfd.return_value = json.JSONEncoder().encode({"c": "d"})
         req_data = {"csarId": "8", "inputs": []}
-        resp = self.client.post("/api/catalog/v1/parserpnfd", req_data, format='json')
+        resp = self.client.post("/api/parser/v1/parserpnfd", req_data, format='json')
         self.assertEqual(resp.status_code, status.HTTP_202_ACCEPTED)
         self.assertEqual({"model": '{"c": "d"}'}, resp.data)
index 241d80d..babfa4d 100644 (file)
@@ -24,7 +24,7 @@ from catalog.pub.exceptions import PackageNotFoundException, PackageHasExistsExc
 from catalog.pub.msapi import sdc
 from catalog.pub.utils import toscaparser
 
-PARSER_BASE_URL = "/api/parser/v1"
+CATALOG_BASE_URL = "/api/catalog/v1"
 
 
 class TestServicePackage(TestCase):
@@ -352,7 +352,7 @@ class TestServicePackage(TestCase):
     def test_api_service_pkg_distribute_when_pkg_exists(self):
         ServicePackageModel(servicePackageId="1", servicedId="2").save()
         resp = self.client.post(
-            PARSER_BASE_URL + "/service_packages", {"csarId": "1"}, format='json')
+            CATALOG_BASE_URL + "/service_packages", {"csarId": "1"}, format='json')
         self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
         self.assertEqual("Service CSAR(1) already exists.", resp.data["errorMessage"])
 
@@ -391,7 +391,7 @@ class TestServicePackage(TestCase):
             servicedVersion="3",
             servicePackageUri="14.csar",
             servicedModel="").save()
-        resp = self.client.get(PARSER_BASE_URL + "/service_packages")
+        resp = self.client.get(CATALOG_BASE_URL + "/service_packages")
         self.assertEqual(resp.status_code, status.HTTP_200_OK)
 
     ###############################################################
@@ -421,11 +421,11 @@ class TestServicePackage(TestCase):
             servicedVersion="4",
             servicePackageUri="14.csar",
             servicedModel="").save()
-        resp = self.client.get(PARSER_BASE_URL + "/service_packages/14")
+        resp = self.client.get(CATALOG_BASE_URL + "/service_packages/14")
         self.assertEqual(resp.status_code, status.HTTP_200_OK)
 
     def test_api_service_pkg_get_one_not_found(self):
-        resp = self.client.get(PARSER_BASE_URL + "/service_packages/22")
+        resp = self.client.get(CATALOG_BASE_URL + "/service_packages/22")
         self.assertEqual(resp.status_code, status.HTTP_404_NOT_FOUND)
         self.assertEqual(
             {"errorMessage": "Service package[22] not Found.", 'error': 404},
@@ -449,7 +449,7 @@ class TestServicePackage(TestCase):
 
     def test_api_service_pkg_normal_delete(self):
         ServicePackageModel(servicePackageId="8", servicedId="2").save()
-        resp = self.client.delete(PARSER_BASE_URL + "/service_packages/8")
+        resp = self.client.delete(CATALOG_BASE_URL + "/service_packages/8")
         self.assertEqual(resp.status_code, status.HTTP_204_NO_CONTENT)
 
     ###############################################################
@@ -477,5 +477,5 @@ class TestServicePackage(TestCase):
             "packageType": "Service",
             "inputs": "string"
         }
-        resp = self.client.post(PARSER_BASE_URL + "/parser", query_data, format='json')
+        resp = self.client.post(CATALOG_BASE_URL + "/parser", query_data, format='json')
         self.assertEqual(resp.status_code, status.HTTP_404_NOT_FOUND)
index 0d8cbad..f016d01 100644 (file)
 # limitations under the License.
 
 import json
+
 import mock
-from rest_framework.test import APIClient
 from django.test import TestCase
 from rest_framework import status
+from rest_framework.test import APIClient
+
 from catalog.packages.biz.sdc_vnf_package import NfDistributeThread, NfPkgDeleteThread
 from catalog.pub.database.models import JobStatusModel, JobModel
 from catalog.pub.database.models import VnfPackageModel
@@ -240,7 +242,7 @@ class TestNfPackage(TestCase):
             "inputs": []
         }
         resp = self.client.post(
-            "/api/catalog/v1/parservnfd",
+            "/api/parser/v1/parservnfd",
             req_data,
             format='json'
         )
@@ -250,7 +252,7 @@ class TestNfPackage(TestCase):
     def test_vnfd_parse_when_csar_not_exist(self):
         req_data = {"csarId": "1", "inputs": []}
         resp = self.client.post(
-            "/api/catalog/v1/parservnfd",
+            "/api/parser/v1/parservnfd",
             req_data,
             format='json'
         )
index 3ed6968..aa11883 100644 (file)
@@ -29,17 +29,14 @@ urlpatterns = [
     url(r'^api/catalog/v1/nspackages/(?P<csarId>[0-9a-zA-Z\-\_]+)$', catalog_views.ns_rd_csar, name='nspackage_rd'),
     url(r'^api/catalog/v1/vnfpackages$', catalog_views.nfpackages_rc, name='nfpackages_rc'),
     url(r'^api/catalog/v1/vnfpackages/(?P<csarId>[0-9a-zA-Z\-\_]+)$', catalog_views.nf_rd_csar, name='nfpackage_rd'),
-    url(r'^api/parser/v1/service_packages$', catalog_views.servicepackages_rc, name='servicepackages_rc'),
-    url(r'^api/parser/v1/service_packages/(?P<csarId>[0-9a-zA-Z\-\_]+)$', catalog_views.service_rd_csar, name='servicepackage_rd'),
+    url(r'^api/catalog/v1/service_packages$', catalog_views.servicepackages_rc, name='servicepackages_rc'),
+    url(r'^api/catalog/v1/service_packages/(?P<csarId>[0-9a-zA-Z\-\_]+)$', catalog_views.service_rd_csar, name='servicepackage_rd'),
 
     # NFV Model Parser
     url(r'^api/parser/v1/parser$', catalog_views.model_parser, name='modelparser_rc'),
     url(r'^api/parser/v1/parsernsd$', catalog_views.ns_model_parser, name='nsmodelparser_rc'),
     url(r'^api/parser/v1/parservnfd$', catalog_views.vnf_model_parser, name='vnfmodelparser_rc'),
     url(r'^api/parser/v1/parserpnfd$', pnf_descriptor_views.pnf_model_parser, name='pnfmodelparser_rc'),
-    url(r'^api/catalog/v1/parsernsd$', catalog_views.ns_model_parser, name='nsmodelparser_rc'),
-    url(r'^api/catalog/v1/parservnfd$', catalog_views.vnf_model_parser, name='vnfmodelparser_rc'),
-    url(r'^api/catalog/v1/parserpnfd$', pnf_descriptor_views.pnf_model_parser, name='pnfmodelparser_rc'),
 
     # ETSI SOL005 NSD API
     url(r'^api/nsd/v1/ns_descriptors$', ns_descriptor_views.ns_descriptors_rc, name='ns_descriptors_rc'),
@@ -64,10 +61,6 @@ urlpatterns = [
     url(r'^api/vnfpkgm/v1/subscriptions$', CreateQuerySubscriptionView.as_view(), name='subscriptions_create_query'),
     url(r'^api/vnfpkgm/v1/subscriptions/(?P<subscriptionId>[0-9a-zA-Z\-\_]+)$', QueryTerminateSubscriptionView.as_view(), name='subscriptions_query_terminate'),
     url(r'^api/vnfpkgm/v1/vnf_packages/(?P<vnfPkgId>[0-9a-zA-Z\-\_]+)/artifacts/(?P<artifactPath>[0-9a-zA-Z\-\_]+)$', FetchVnfPkgmArtifactsView.as_view(), name="fetch_vnf_artifacts"),
-    # url(r'^api/vnfpkgm/v1/subscriptions/(?P<vnfPkgId>[0-9a-zA-Z\-\_]+)$', vnf_package_subscription_views.vnf_package_subscriptions_rc, name='subscriptions_rc'),
-    # url(r'^api/vnfpkgm/v1/vnf_packages/(?P<vnfPkgId>[0-9a-zA-Z\-\_]+)/vnfd$', vnfd.as_view(), name='vnfd_r'),# url(r'^api/vnfpkgm/v1/vnf_packages/(?P<vnfPkgId>[0-9a-zA-Z\-\_]+)/artifacts/artifactPath$', artifacts.as_view(), name='artifacts_r'),
-
-    # url(r'^api/vnfpkgm/v1/subscriptions/(?P<subscriptionId>[0-9a-zA-Z\-\_]+)$', vnfpkg_subscription.as_view(), name='subscription_rd'),
 
     # health check
     url(r'^api/vnfpkgm/v1/health_check$', HealthCheckView.as_view()),
index 740c530..a83d9d2 100644 (file)
@@ -20,9 +20,12 @@ 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 catalog.jobs.views import CATALOG_API
 from catalog.packages.biz import sdc_vnf_package, sdc_ns_package
 from catalog.packages.biz.pnf_descriptor import PnfDescriptor
 from catalog.packages.biz.sdc_service_package import ServicePackage
+from catalog.packages.const import TAG_PARSER_API
 from catalog.packages.serializers.catalog_serializers import InternalErrorRequestSerializer, \
     ServicePackageDistributeRequestSerializer, ServicePackagesSerializer, ServicePackageSerializer
 from catalog.packages.serializers.catalog_serializers import NfPackageDistributeRequestSerializer
@@ -46,7 +49,7 @@ logger = logging.getLogger(__name__)
 @swagger_auto_schema(
     method='POST',
     operation_description="On distribute NS package",
-    tags=["NS packages API"],
+    tags=[CATALOG_API],
     request_body=NsPackageDistributeRequestSerializer,
     responses={
         status.HTTP_202_ACCEPTED: NsPackageDistributeResponseSerializer,
@@ -54,7 +57,7 @@ logger = logging.getLogger(__name__)
 @swagger_auto_schema(
     method='GET',
     operation_description="Query NS packages",
-    tags=["NS packages API"],
+    tags=[CATALOG_API],
     request_body=no_body,
     responses={
         status.HTTP_200_OK: NsPackagesSerializer,
@@ -100,7 +103,7 @@ def nspackages_rc(request, *args, **kwargs):
 @swagger_auto_schema(
     method='POST',
     operation_description="On distribute Nf package",
-    tags=["NF packages API"],
+    tags=[CATALOG_API],
     request_body=NfPackageDistributeRequestSerializer(),
     responses={
         status.HTTP_202_ACCEPTED: PostJobResponseSerializer,
@@ -108,7 +111,7 @@ def nspackages_rc(request, *args, **kwargs):
 @swagger_auto_schema(
     method='GET',
     operation_description="Query Nf packages",
-    tags=["NF packages API"],
+    tags=[CATALOG_API],
     request_body=no_body,
     responses={
         status.HTTP_200_OK: NfPackagesSerializer,
@@ -162,7 +165,7 @@ def nfpackages_rc(request, *args, **kwargs):
 @swagger_auto_schema(
     method='DELETE',
     operation_description="Delete one NS package",
-    tags=["NS packages API"],
+    tags=[CATALOG_API],
     request_body=no_body,
     manual_parameters=[
         openapi.Parameter(
@@ -179,7 +182,7 @@ def nfpackages_rc(request, *args, **kwargs):
 @swagger_auto_schema(
     method='GET',
     operation_description="Query one NS package",
-    tags=["NS packages API"],
+    tags=[CATALOG_API],
     request_body=no_body,
     manual_parameters=[
         openapi.Parameter(
@@ -222,7 +225,7 @@ def ns_rd_csar(request, *args, **kwargs):
 @swagger_auto_schema(
     method='POST',
     operation_description="On distribute Service package",
-    tags=["Service packages API"],
+    tags=[CATALOG_API],
     request_body=ServicePackageDistributeRequestSerializer,
     responses={
         status.HTTP_202_ACCEPTED: "",
@@ -231,7 +234,7 @@ def ns_rd_csar(request, *args, **kwargs):
 @swagger_auto_schema(
     method='GET',
     operation_description="Query Service packages",
-    tags=["Service packages API"],
+    tags=[CATALOG_API],
     request_body=no_body,
     responses={
         status.HTTP_200_OK: ServicePackagesSerializer,
@@ -275,7 +278,7 @@ def servicepackages_rc(request, *args, **kwargs):
 @swagger_auto_schema(
     method='DELETE',
     operation_description="Delete one Service package",
-    tags=["Service packages API"],
+    tags=[CATALOG_API],
     request_body=no_body,
     manual_parameters=[
         openapi.Parameter(
@@ -290,7 +293,7 @@ def servicepackages_rc(request, *args, **kwargs):
 @swagger_auto_schema(
     method='GET',
     operation_description="Query one Service package",
-    tags=["Service packages API"],
+    tags=[CATALOG_API],
     request_body=no_body,
     manual_parameters=[
         openapi.Parameter(
@@ -337,7 +340,7 @@ def service_rd_csar(request, *args, **kwargs):
 @swagger_auto_schema(
     method='DELETE',
     operation_description="Delete one Nf package",
-    tags=["NF packages API"],
+    tags=[CATALOG_API],
     request_body=no_body,
     manual_parameters=[
         openapi.Parameter(
@@ -354,7 +357,7 @@ def service_rd_csar(request, *args, **kwargs):
 @swagger_auto_schema(
     method='GET',
     operation_description="Query one Nf package",
-    tags=["NF packages API"],
+    tags=[CATALOG_API],
     request_body=no_body,
     manual_parameters=[
         openapi.Parameter(
@@ -405,7 +408,7 @@ def nf_rd_csar(request, *args, **kwargs):
 @swagger_auto_schema(
     method='POST',
     operation_description="Parse model(NS, Service, VNF, PNF)",
-    tags=["Parser API"],
+    tags=[TAG_PARSER_API],
     request_body=ParseModelRequestSerializer,
     responses={
         status.HTTP_202_ACCEPTED: ParseModelResponseSerializer,
@@ -466,7 +469,7 @@ def model_parser(request, *args, **kwargs):
 @swagger_auto_schema(
     method='POST',
     operation_description="Parse NS model",
-    tags=["Parser API"],
+    tags=[TAG_PARSER_API],
     request_body=ParseModelRequestSerializer,
     responses={
         status.HTTP_202_ACCEPTED: ParseModelResponseSerializer,
@@ -500,7 +503,7 @@ def ns_model_parser(request, *args, **kwargs):
 @swagger_auto_schema(
     method='POST',
     operation_description="Parse NF model",
-    tags=["Parser API"],
+    tags=[TAG_PARSER_API],
     request_body=ParseModelRequestSerializer,
     responses={
         status.HTTP_202_ACCEPTED: ParseModelResponseSerializer,
index e5aad9a..fc5c25e 100644 (file)
@@ -19,12 +19,14 @@ from rest_framework import status
 from rest_framework.response import Response
 from rest_framework.views import APIView
 
+from catalog.packages.const import TAG_HEALTH_CHECK
+
 logger = logging.getLogger(__name__)
 
 
 class HealthCheckView(APIView):
     @swagger_auto_schema(
-        tags=["Health check API"],
+        tags=[TAG_HEALTH_CHECK],
         responses={
             status.HTTP_200_OK: 'Active'})
     def get(self, request, format=None):
index 797bfec..2d98628 100644 (file)
@@ -21,6 +21,7 @@ from rest_framework.decorators import api_view
 from rest_framework.response import Response
 
 from catalog.packages.biz.ns_descriptor import NsDescriptor
+from catalog.packages.const import TAG_NSD_API
 from catalog.packages.serializers.create_nsd_info_request import CreateNsdInfoRequestSerializer
 from catalog.packages.serializers.nsd_info import NsdInfoSerializer
 from catalog.packages.serializers.nsd_infos import NsdInfosSerializer
@@ -34,7 +35,7 @@ logger = logging.getLogger(__name__)
 @swagger_auto_schema(
     method='GET',
     operation_description="Query a NSD",
-    tags=["NSD API"],
+    tags=[TAG_NSD_API],
     request_body=no_body,
     responses={
         status.HTTP_200_OK: NsdInfoSerializer(),
@@ -45,7 +46,7 @@ logger = logging.getLogger(__name__)
 @swagger_auto_schema(
     method='DELETE',
     operation_description="Delete a NSD",
-    tags=["NSD API"],
+    tags=[TAG_NSD_API],
     request_body=no_body,
     responses={
         status.HTTP_204_NO_CONTENT: "No content",
@@ -68,7 +69,7 @@ def ns_info_rd(request, **kwargs):
 @swagger_auto_schema(
     method='POST',
     operation_description="Create a NSD",
-    tags=["NSD API"],
+    tags=[TAG_NSD_API],
     request_body=CreateNsdInfoRequestSerializer(),
     responses={
         status.HTTP_201_CREATED: NsdInfoSerializer(),
@@ -78,7 +79,7 @@ def ns_info_rd(request, **kwargs):
 @swagger_auto_schema(
     method='GET',
     operation_description="Query multiple NSDs",
-    tags=["NSD API"],
+    tags=[TAG_NSD_API],
     request_body=no_body,
     responses={
         status.HTTP_200_OK: NsdInfosSerializer(),
@@ -104,7 +105,7 @@ def ns_descriptors_rc(request):
 @swagger_auto_schema(
     method='PUT',
     operation_description="Upload NSD content",
-    tags=["NSD API"],
+    tags=[TAG_NSD_API],
     request_body=no_body,
     responses={
         status.HTTP_204_NO_CONTENT: 'PNFD file',
@@ -114,7 +115,7 @@ def ns_descriptors_rc(request):
 @swagger_auto_schema(
     method='GET',
     operation_description="Download NSD content",
-    tags=["NSD API"],
+    tags=[TAG_NSD_API],
     request_body=no_body,
     responses={
         status.HTTP_204_NO_CONTENT: "No content",
index b4b82ae..7e1b2f5 100644 (file)
@@ -19,15 +19,15 @@ from rest_framework import status
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 
+from catalog.packages.biz.nsdm_subscription import NsdmSubscription
+from catalog.packages.const import TAG_NSD_API
 from catalog.packages.serializers.nsdm_filter_data import NsdmNotificationsFilter
-from catalog.packages.serializers.nsdm_subscription import NsdmSubscriptionsSerializer
 from catalog.packages.serializers.nsdm_subscription import NsdmSubscriptionIdSerializer
-from catalog.packages.serializers.nsdm_subscription import NsdmSubscriptionSerializer
 from catalog.packages.serializers.nsdm_subscription import NsdmSubscriptionRequestSerializer
+from catalog.packages.serializers.nsdm_subscription import NsdmSubscriptionSerializer
+from catalog.packages.serializers.nsdm_subscription import NsdmSubscriptionsSerializer
 from catalog.packages.serializers.response import ProblemDetailsSerializer
-
 from catalog.pub.exceptions import NsdmBadRequestException
-from catalog.packages.biz.nsdm_subscription import NsdmSubscription
 from .common import view_safe_call_with_log
 
 logger = logging.getLogger(__name__)
@@ -44,7 +44,7 @@ def validate_data(data, serializer):
 @swagger_auto_schema(
     method='POST',
     operation_description="Create Subscription for NSD Management",
-    tags=["NSD API"],
+    tags=[TAG_NSD_API],
     request_body=NsdmSubscriptionRequestSerializer(),
     responses={
         status.HTTP_201_CREATED: NsdmSubscriptionSerializer,
@@ -56,7 +56,7 @@ def validate_data(data, serializer):
 @swagger_auto_schema(
     method='GET',
     operation_description="Query subscriptions for Nsd Management",
-    tags=["NSD API"],
+    tags=[TAG_NSD_API],
     request_body=no_body,
     responses={
         status.HTTP_200_OK: NsdmSubscriptionsSerializer(),
@@ -96,7 +96,7 @@ def nsd_subscription_rc(request):
 @swagger_auto_schema(
     method='GET',
     operation_description="Query subscriptions for Nsd Management",
-    tags=["NSD API"],
+    tags=[TAG_NSD_API],
     request_body=no_body,
     responses={
         status.HTTP_200_OK: NsdmSubscriptionSerializer(),
@@ -108,7 +108,7 @@ def nsd_subscription_rc(request):
 @swagger_auto_schema(
     method='DELETE',
     operation_description="Delete subscription for Nsd Management",
-    tags=["NSD API"],
+    tags=[TAG_NSD_API],
     request_body=no_body,
     responses={
         status.HTTP_204_NO_CONTENT: 'No_Content',
index 381b557..9e7a2c4 100644 (file)
@@ -21,14 +21,15 @@ from rest_framework.decorators import api_view
 from rest_framework.response import Response
 
 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
@@ -39,7 +40,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 +51,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 +77,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 +87,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 +112,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",
@@ -121,7 +122,7 @@ def pnf_descriptors_rc(request):
 @swagger_auto_schema(
     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',
@@ -151,7 +152,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,
index 23a76c7..9dd9b57 100644 (file)
 
 import logging
 
+from django.http import FileResponse
 from drf_yasg.utils import swagger_auto_schema
 from rest_framework import status
 from rest_framework.views import APIView
-from django.http import FileResponse
 
-from catalog.packages.serializers.response import ProblemDetailsSerializer
 from catalog.packages.biz.vnf_pkg_artifacts import FetchVnfPkgArtifact
+from catalog.packages.const import TAG_VNF_PACKAGE_API
 from .common import view_safe_call_with_log
 
 logger = logging.getLogger(__name__)
@@ -38,11 +38,11 @@ VALID_FILTERS = [
 class FetchVnfPkgmArtifactsView(APIView):
 
     @swagger_auto_schema(
-        tags=["VNF Package API"],
+        tags=[TAG_VNF_PACKAGE_API],
         responses={
-            status.HTTP_200_OK: "HTTP_200_OK",
-            status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(),
-            status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer()
+            status.HTTP_200_OK: "Return the artifact file",
+            status.HTTP_404_NOT_FOUND: "Artifact not found",
+            status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"
         }
     )
     @view_safe_call_with_log(logger=logger)
index 27be798..8289275 100644 (file)
@@ -16,19 +16,20 @@ import logging
 
 from drf_yasg.utils import swagger_auto_schema
 from rest_framework import status
-from rest_framework.views import APIView
 from rest_framework.response import Response
+from rest_framework.views import APIView
 
-from catalog.packages.serializers.vnf_pkg_subscription import PkgmSubscriptionRequestSerializer
-from catalog.packages.serializers.vnf_pkg_subscription import PkgmSubscriptionSerializer
-from catalog.packages.serializers.vnf_pkg_subscription import PkgmSubscriptionsSerializer
-from catalog.packages.serializers.response import ProblemDetailsSerializer
 from catalog.packages.biz.vnf_pkg_subscription import CreateSubscription
 from catalog.packages.biz.vnf_pkg_subscription import QuerySubscription
 from catalog.packages.biz.vnf_pkg_subscription import TerminateSubscription
+from catalog.packages.const import TAG_VNF_PACKAGE_API
+from catalog.packages.serializers.response import ProblemDetailsSerializer
+from catalog.packages.serializers.vnf_pkg_subscription import PkgmSubscriptionRequestSerializer
+from catalog.packages.serializers.vnf_pkg_subscription import PkgmSubscriptionSerializer
+from catalog.packages.serializers.vnf_pkg_subscription import PkgmSubscriptionsSerializer
 from catalog.packages.views.common import validate_data
-from catalog.pub.exceptions import VnfPkgSubscriptionException
 from catalog.pub.exceptions import BadRequestException
+from catalog.pub.exceptions import VnfPkgSubscriptionException
 from .common import view_safe_call_with_log
 
 logger = logging.getLogger(__name__)
@@ -46,7 +47,7 @@ VALID_FILTERS = [
 class CreateQuerySubscriptionView(APIView):
 
     @swagger_auto_schema(
-        tags=["VNF Package API"],
+        tags=[TAG_VNF_PACKAGE_API],
         request_body=PkgmSubscriptionRequestSerializer,
         responses={
             status.HTTP_201_CREATED: PkgmSubscriptionSerializer(),
@@ -63,7 +64,7 @@ class CreateQuerySubscriptionView(APIView):
         return Response(data=subscription_info.data, status=status.HTTP_201_CREATED)
 
     @swagger_auto_schema(
-        tags=["VNF Package API"],
+        tags=[TAG_VNF_PACKAGE_API],
         responses={
             status.HTTP_200_OK: PkgmSubscriptionSerializer(),
             status.HTTP_400_BAD_REQUEST: ProblemDetailsSerializer(),
@@ -89,7 +90,7 @@ class CreateQuerySubscriptionView(APIView):
 class QueryTerminateSubscriptionView(APIView):
 
     @swagger_auto_schema(
-        tags=["VNF Package API"],
+        tags=[TAG_VNF_PACKAGE_API],
         responses={
             status.HTTP_200_OK: PkgmSubscriptionSerializer(),
             status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(),
@@ -109,7 +110,7 @@ class QueryTerminateSubscriptionView(APIView):
         return Response(data=subscription_serializer.data, status=status.HTTP_200_OK)
 
     @swagger_auto_schema(
-        tags=["VNF Package API"],
+        tags=[TAG_VNF_PACKAGE_API],
         responses={
             status.HTTP_204_NO_CONTENT: "",
             status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(),
index 76891f2..6747269 100644 (file)
@@ -20,14 +20,15 @@ from rest_framework import status
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 
-from catalog.packages.serializers.upload_vnf_pkg_from_uri_req import UploadVnfPackageFromUriRequestSerializer
-from catalog.packages.serializers.create_vnf_pkg_info_req import CreateVnfPkgInfoRequestSerializer
-from catalog.packages.serializers.vnf_pkg_info import VnfPkgInfoSerializer
-from catalog.packages.serializers.vnf_pkg_infos import VnfPkgInfosSerializer
 from catalog.packages.biz.vnf_package import VnfPackage
 from catalog.packages.biz.vnf_package import VnfPkgUploadThread
-from catalog.packages.biz.vnf_package import parse_vnfd_and_save
 from catalog.packages.biz.vnf_package import handle_upload_failed
+from catalog.packages.biz.vnf_package import parse_vnfd_and_save
+from catalog.packages.const import TAG_VNF_PACKAGE_API
+from catalog.packages.serializers.create_vnf_pkg_info_req import CreateVnfPkgInfoRequestSerializer
+from catalog.packages.serializers.upload_vnf_pkg_from_uri_req import UploadVnfPackageFromUriRequestSerializer
+from catalog.packages.serializers.vnf_pkg_info import VnfPkgInfoSerializer
+from catalog.packages.serializers.vnf_pkg_infos import VnfPkgInfosSerializer
 from .common import validate_data
 from .common import view_safe_call_with_log
 
@@ -37,7 +38,7 @@ logger = logging.getLogger(__name__)
 @swagger_auto_schema(
     method="GET",
     operation_description="Query multiple VNF package resource",
-    tags=["VNF Package API"],
+    tags=[TAG_VNF_PACKAGE_API],
     request_body=no_body,
     responses={
         status.HTTP_200_OK: VnfPkgInfosSerializer(),
@@ -47,7 +48,7 @@ logger = logging.getLogger(__name__)
 @swagger_auto_schema(
     method="POST",
     operation_description="Create an individual VNF package resource",
-    tags=["VNF Package API"],
+    tags=[TAG_VNF_PACKAGE_API],
     request_body=CreateVnfPkgInfoRequestSerializer,
     responses={
         status.HTTP_201_CREATED: VnfPkgInfoSerializer(),
@@ -75,7 +76,7 @@ def vnf_packages_rc(request):
 @swagger_auto_schema(
     method="GET",
     operation_description="Read VNFD of an on-boarded VNF package",
-    tags=["VNF Package API"],
+    tags=[TAG_VNF_PACKAGE_API],
     request_body=no_body,
     responses={
         status.HTTP_200_OK: VnfPkgInfosSerializer(),
@@ -99,7 +100,7 @@ def vnfd_rd(request, **kwargs):
 @swagger_auto_schema(
     method='PUT',
     operation_description="Upload VNF package content",
-    tags=["VNF Package API"],
+    tags=[TAG_VNF_PACKAGE_API],
     request_body=no_body,
     responses={
         status.HTTP_202_ACCEPTED: "Successfully",
@@ -109,10 +110,10 @@ def vnfd_rd(request, **kwargs):
 @swagger_auto_schema(
     method="GET",
     operation_description="Fetch VNF package content",
-    tags=["VNF Package API"],
+    tags=[TAG_VNF_PACKAGE_API],
     request_body=no_body,
     responses={
-        status.HTTP_200_OK: VnfPkgInfosSerializer(),
+        status.HTTP_200_OK: "Return csar file of VNF package",
         status.HTTP_404_NOT_FOUND: "VNF package does not exist",
         status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"
     }
@@ -141,7 +142,7 @@ def package_content_ru(request, **kwargs):
 @swagger_auto_schema(
     method='POST',
     operation_description="Upload VNF package content from uri",
-    tags=["VNF Package API"],
+    tags=[TAG_VNF_PACKAGE_API],
     request_body=UploadVnfPackageFromUriRequestSerializer,
     responses={
         status.HTTP_202_ACCEPTED: "Successfully",
@@ -165,7 +166,7 @@ def upload_from_uri_c(request, **kwargs):
 @swagger_auto_schema(
     method='GET',
     operation_description="Query an individual VNF package resource",
-    tags=["VNF Package API"],
+    tags=[TAG_VNF_PACKAGE_API],
     request_body=no_body,
     responses={
         status.HTTP_200_OK: VnfPkgInfoSerializer(),
@@ -176,7 +177,7 @@ def upload_from_uri_c(request, **kwargs):
 @swagger_auto_schema(
     method='DELETE',
     operation_description="Delete an individual VNF package resource",
-    tags=["VNF Package API"],
+    tags=[TAG_VNF_PACKAGE_API],
     request_body=no_body,
     responses={
         status.HTTP_204_NO_CONTENT: "No content",
index 006f0e5..bca716a 100644 (file)
 import logging
 import traceback
 
+from drf_yasg.utils import swagger_auto_schema
 from rest_framework import status
 from rest_framework.response import Response
 from rest_framework.views import APIView
 
+TAG_SAMPLE_INTERFACE = "Sample interface"
+
 logger = logging.getLogger(__name__)
 
 
@@ -26,6 +29,9 @@ class SampleList(APIView):
     """
     List all samples.
     """
+
+    @swagger_auto_schema(
+        tags=[TAG_SAMPLE_INTERFACE])
     def get(self, request, format=None):
         logger.debug("get")
         return Response({"status": "active"})
@@ -35,12 +41,17 @@ class CallbackSample(APIView):
     """
     Callback Sample.
     """
+
+    @swagger_auto_schema(
+        tags=[TAG_SAMPLE_INTERFACE])
     def get(self, request, format=None):
         logger.debug("Callback Sample")
         return Response(data={}, status=status.HTTP_204_NO_CONTENT)
 
 
 class TablesList(APIView):
+    @swagger_auto_schema(
+        tags=[TAG_SAMPLE_INTERFACE])
     def delete(self, request, modelName):
         logger.debug("Start delete model %s", modelName)
         try:
@@ -54,6 +65,8 @@ class TablesList(APIView):
             return Response(data={"error": "failed"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
         return Response(data={}, status=status.HTTP_204_NO_CONTENT)
 
+    @swagger_auto_schema(
+        tags=["Sample interface"])
     def get(self, request, modelName):
         logger.debug("Get model %s", modelName)
         count = 0