Modify notification endpoint interface definition in swagger
[modeling/etsicatalog.git] / catalog / packages / views / vnf_package_subscription_views.py
index 27be798..6698429 100644 (file)
 # limitations under the License.
 
 import logging
-
+from drf_yasg import openapi
 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.views.common import validate_data
-from catalog.pub.exceptions import VnfPkgSubscriptionException
+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.serializers.vnf_pkg_notifications import PkgOnboardingNotificationSerializer
+from catalog.packages.serializers.vnf_pkg_notifications import PkgChangeNotificationSerializer
+from catalog.packages.views.common import validate_data, validate_req_data
 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,24 +49,24 @@ 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(),
-            status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"
+            status.HTTP_400_BAD_REQUEST: ProblemDetailsSerializer(),
+            status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer()
         }
     )
     @view_safe_call_with_log(logger=logger)
     def post(self, request):
         logger.debug("Create VNF package Subscription> %s" % request.data)
-
-        vnf_pkg_subscription_request = validate_data(request.data, PkgmSubscriptionRequestSerializer)
+        vnf_pkg_subscription_request = validate_req_data(request.data, PkgmSubscriptionRequestSerializer)
         data = CreateSubscription(vnf_pkg_subscription_request.data).do_biz()
         subscription_info = validate_data(data, PkgmSubscriptionSerializer)
         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 +92,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 +112,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(),
@@ -122,3 +125,47 @@ class QueryTerminateSubscriptionView(APIView):
 
         TerminateSubscription().terminate(subscriptionId)
         return Response(status=status.HTTP_204_NO_CONTENT)
+
+
+class PkgOnboardingNotificationView(APIView):
+    @swagger_auto_schema(
+        tags=[TAG_VNF_PACKAGE_API],
+        request_body=PkgOnboardingNotificationSerializer,
+        responses={
+            status.HTTP_204_NO_CONTENT: ""
+        }
+    )
+    def post(self):
+        pass
+
+    @swagger_auto_schema(
+        tags=[TAG_VNF_PACKAGE_API],
+        responses={
+            status.HTTP_204_NO_CONTENT: "",
+            status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response('error message',
+                                                                    openapi.Schema(type=openapi.TYPE_STRING))}
+    )
+    def get(self):
+        pass
+
+
+class PkgChangeNotificationView(APIView):
+    @swagger_auto_schema(
+        tags=[TAG_VNF_PACKAGE_API],
+        request_body=PkgChangeNotificationSerializer,
+        responses={
+            status.HTTP_204_NO_CONTENT: ""
+        }
+    )
+    def post(self):
+        pass
+
+    @swagger_auto_schema(
+        tags=[TAG_VNF_PACKAGE_API],
+        responses={
+            status.HTTP_204_NO_CONTENT: "",
+            status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response('error message',
+                                                                    openapi.Schema(type=openapi.TYPE_STRING))}
+    )
+    def get(self):
+        pass