X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=catalog%2Fpackages%2Fviews%2Fvnf_package_subscription_views.py;h=b06ad4e68823774baed2661f7dfe94d0eaa812db;hb=b16b4579ea80bf82fa497e4934b2bb8728845b58;hp=32904e3296ac17c49da968209587211c6f9ab64d;hpb=5fd2ae6a4517980ce0f89247bb354220748ae67b;p=modeling%2Fetsicatalog.git diff --git a/catalog/packages/views/vnf_package_subscription_views.py b/catalog/packages/views/vnf_package_subscription_views.py index 32904e3..b06ad4e 100644 --- a/catalog/packages/views/vnf_package_subscription_views.py +++ b/catalog/packages/views/vnf_package_subscription_views.py @@ -13,22 +13,25 @@ # 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__) @@ -44,24 +47,36 @@ VALID_FILTERS = [ class CreateQuerySubscriptionView(APIView): + """ + This resource represents subscriptions. + The client can use this resource to subscribe to notifications related to NS lifecycle management, + and to query its subscriptions. + """ @swagger_auto_schema( + 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): + """ + The POST method creates a new subscription + :param request: + :return: + """ 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=[TAG_VNF_PACKAGE_API], responses={ status.HTTP_200_OK: PkgmSubscriptionSerializer(), status.HTTP_400_BAD_REQUEST: ProblemDetailsSerializer(), @@ -70,6 +85,12 @@ class CreateQuerySubscriptionView(APIView): ) @view_safe_call_with_log(logger=logger) def get(self, request): + """ + The GET method queries the list of active subscriptions of the functional block that invokes the method. + It can be used e.g. for resynchronization after error situations. + :param request: + :return: + """ logger.debug("SubscribeNotification--get::> %s" % request.query_params) if request.query_params and not set(request.query_params).issubset(set(VALID_FILTERS)): @@ -85,8 +106,13 @@ class CreateQuerySubscriptionView(APIView): class QueryTerminateSubscriptionView(APIView): + """ + This resource represents an individual subscription. + It can be used by the client to read and to terminate a subscription to Notifications related to NS lifecycle management. + """ @swagger_auto_schema( + tags=[TAG_VNF_PACKAGE_API], responses={ status.HTTP_200_OK: PkgmSubscriptionSerializer(), status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(), @@ -95,6 +121,12 @@ class QueryTerminateSubscriptionView(APIView): ) @view_safe_call_with_log(logger=logger) def get(self, request, subscriptionId): + """ + The GET method retrieves information about a subscription by reading an individual subscription resource. + :param request: + :param subscriptionId: + :return: + """ logger.debug("SubscribeNotification--get::> %s" % subscriptionId) resp_data = QuerySubscription().query_single_subscription(subscriptionId) @@ -106,6 +138,7 @@ class QueryTerminateSubscriptionView(APIView): return Response(data=subscription_serializer.data, status=status.HTTP_200_OK) @swagger_auto_schema( + tags=[TAG_VNF_PACKAGE_API], responses={ status.HTTP_204_NO_CONTENT: "", status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(), @@ -114,7 +147,65 @@ class QueryTerminateSubscriptionView(APIView): ) @view_safe_call_with_log(logger=logger) def delete(self, request, subscriptionId): + """ + The DELETE method terminates an individual subscription. + :param request: + :param subscriptionId: + :return: + """ logger.debug("SubscribeNotification--get::> %s" % subscriptionId) TerminateSubscription().terminate(subscriptionId) return Response(status=status.HTTP_204_NO_CONTENT) + + +class PkgOnboardingNotificationView(APIView): + """ + This resource represents a notification endpoint about package onboarding + """ + + @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): + """ + This resource represents a notification endpoint about package change + """ + + @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