X-Git-Url: https://gerrit.onap.org/r/gitweb?p=modeling%2Fetsicatalog.git;a=blobdiff_plain;f=genericparser%2Fpackages%2Fviews%2Fvnf_package_subscription_views.py;h=135b62554a1ccacc3a30526044a1e3dd5e8911a7;hp=897b43c23103ecdf5211c7381af1b47a14400af9;hb=52a969dcc2a935930a559b1780d7c95e1cc45d73;hpb=63c392e9cca3c6654e8383f49e5136fa86d1c72a diff --git a/genericparser/packages/views/vnf_package_subscription_views.py b/genericparser/packages/views/vnf_package_subscription_views.py index 897b43c..135b625 100644 --- a/genericparser/packages/views/vnf_package_subscription_views.py +++ b/genericparser/packages/views/vnf_package_subscription_views.py @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. - -import traceback import logging from drf_yasg.utils import swagger_auto_schema @@ -21,26 +19,29 @@ from rest_framework import status from rest_framework.views import APIView from rest_framework.response import Response -from genericparser.packages.serializers.vnf_pkg_subscription import PkgmSubscriptionRequestSerializer, \ - PkgmSubscriptionSerializer, PkgmSubscriptionsSerializer +from genericparser.packages.serializers.vnf_pkg_subscription import PkgmSubscriptionRequestSerializer +from genericparser.packages.serializers.vnf_pkg_subscription import PkgmSubscriptionSerializer +from genericparser.packages.serializers.vnf_pkg_subscription import PkgmSubscriptionsSerializer from genericparser.packages.serializers.response import ProblemDetailsSerializer -from genericparser.packages.biz.vnf_pkg_subscription import CreateSubscription, QuerySubscription, TerminateSubscription +from genericparser.packages.biz.vnf_pkg_subscription import CreateSubscription +from genericparser.packages.biz.vnf_pkg_subscription import QuerySubscription +from genericparser.packages.biz.vnf_pkg_subscription import TerminateSubscription from genericparser.packages.views.common import validate_data -from genericparser.pub.exceptions import VnfPkgDuplicateSubscriptionException, VnfPkgSubscriptionException, \ - SubscriptionDoesNotExistsException +from genericparser.pub.exceptions import VnfPkgSubscriptionException +from genericparser.pub.exceptions import BadRequestException -logger = logging.getLogger(__name__) -VALID_FILTERS = ["callbackUri", "notificationTypes", "vnfdId", "vnfPkgId", "operationalState", "usageState"] +from .common import view_safe_call_with_log +logger = logging.getLogger(__name__) -def get_problem_details_serializer(status_code, error_message): - problem_details = { - "status": status_code, - "detail": error_message - } - problem_details_serializer = ProblemDetailsSerializer(data=problem_details) - problem_details_serializer.is_valid() - return problem_details_serializer +VALID_FILTERS = [ + "callbackUri", + "notificationTypes", + "vnfdId", + "vnfPkgId", + "operationalState", + "usageState" +] class CreateQuerySubscriptionView(APIView): @@ -52,25 +53,14 @@ class CreateQuerySubscriptionView(APIView): status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" } ) + @view_safe_call_with_log(logger=logger) def post(self, request): logger.debug("Create VNF package Subscription> %s" % request.data) - try: - vnf_pkg_subscription_request = validate_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) - except VnfPkgDuplicateSubscriptionException as e: - logger.error(e.message) - logger.error(traceback.format_exc()) - problem_details_serializer = get_problem_details_serializer(status.HTTP_303_SEE_OTHER, - traceback.format_exc()) - return Response(data=problem_details_serializer.data, status=status.HTTP_303_SEE_OTHER) - except Exception as e: - logger.error(e.message) - logger.error(traceback.format_exc()) - problem_details_serializer = get_problem_details_serializer(status.HTTP_500_INTERNAL_SERVER_ERROR, - traceback.format_exc()) - return Response(data=problem_details_serializer.data, status=status.HTTP_500_INTERNAL_SERVER_ERROR) + + vnf_pkg_subscription_request = validate_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( responses={ @@ -79,27 +69,20 @@ class CreateQuerySubscriptionView(APIView): status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() } ) + @view_safe_call_with_log(logger=logger) def get(self, request): logger.debug("SubscribeNotification--get::> %s" % request.query_params) - try: - if request.query_params and not set(request.query_params).issubset(set(VALID_FILTERS)): - problem_details_serializer = get_problem_details_serializer(status.HTTP_400_BAD_REQUEST, - "Not a valid filter") - return Response(data=problem_details_serializer.data, status=status.HTTP_400_BAD_REQUEST) - resp_data = QuerySubscription().query_multi_subscriptions(request.query_params) - subscriptions_serializer = PkgmSubscriptionsSerializer(data=resp_data) - if not subscriptions_serializer.is_valid(): - raise VnfPkgSubscriptionException(subscriptions_serializer.errors) + if request.query_params and not set(request.query_params).issubset(set(VALID_FILTERS)): + raise BadRequestException("Not a valid filter") + + resp_data = QuerySubscription().query_multi_subscriptions(request.query_params) - return Response(data=subscriptions_serializer.data, status=status.HTTP_200_OK) + subscriptions_serializer = PkgmSubscriptionsSerializer(data=resp_data) + if not subscriptions_serializer.is_valid(): + raise VnfPkgSubscriptionException(subscriptions_serializer.errors) - except Exception as e: - logger.error(e.message) - logger.error(traceback.format_exc()) - problem_details_serializer = get_problem_details_serializer(status.HTTP_500_INTERNAL_SERVER_ERROR, - traceback.format_exc()) - return Response(data=problem_details_serializer.data, status=status.HTTP_500_INTERNAL_SERVER_ERROR) + return Response(data=subscriptions_serializer.data, status=status.HTTP_200_OK) class QueryTerminateSubscriptionView(APIView): @@ -111,29 +94,17 @@ class QueryTerminateSubscriptionView(APIView): status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() } ) + @view_safe_call_with_log(logger=logger) def get(self, request, subscriptionId): logger.debug("SubscribeNotification--get::> %s" % subscriptionId) - try: - - resp_data = QuerySubscription().query_single_subscription(subscriptionId) - - subscription_serializer = PkgmSubscriptionSerializer(data=resp_data) - if not subscription_serializer.is_valid(): - raise VnfPkgSubscriptionException(subscription_serializer.errors) - - return Response(data=subscription_serializer.data, status=status.HTTP_200_OK) - except SubscriptionDoesNotExistsException as e: - logger.error(e.message) - logger.error(traceback.format_exc()) - problem_details_serializer = get_problem_details_serializer(status.HTTP_404_NOT_FOUND, - traceback.format_exc()) - return Response(data=problem_details_serializer.data, status=status.HTTP_404_NOT_FOUND) - except Exception as e: - logger.error(e.message) - logger.error(traceback.format_exc()) - problem_details_serializer = get_problem_details_serializer(status.HTTP_500_INTERNAL_SERVER_ERROR, - traceback.format_exc()) - return Response(data=problem_details_serializer.data, status=status.HTTP_500_INTERNAL_SERVER_ERROR) + + resp_data = QuerySubscription().query_single_subscription(subscriptionId) + + subscription_serializer = PkgmSubscriptionSerializer(data=resp_data) + if not subscription_serializer.is_valid(): + raise VnfPkgSubscriptionException(subscription_serializer.errors) + + return Response(data=subscription_serializer.data, status=status.HTTP_200_OK) @swagger_auto_schema( responses={ @@ -142,20 +113,9 @@ class QueryTerminateSubscriptionView(APIView): status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() } ) + @view_safe_call_with_log(logger=logger) def delete(self, request, subscriptionId): logger.debug("SubscribeNotification--get::> %s" % subscriptionId) - try: - TerminateSubscription().terminate(subscriptionId) - return Response(status=status.HTTP_204_NO_CONTENT) - except SubscriptionDoesNotExistsException as e: - logger.error(e.message) - logger.error(traceback.format_exc()) - problem_details_serializer = get_problem_details_serializer(status.HTTP_404_NOT_FOUND, - traceback.format_exc()) - return Response(data=problem_details_serializer.data, status=status.HTTP_404_NOT_FOUND) - except Exception as e: - logger.error(e.message) - logger.error(traceback.format_exc()) - problem_details_serializer = get_problem_details_serializer(status.HTTP_500_INTERNAL_SERVER_ERROR, - traceback.format_exc()) - return Response(data=problem_details_serializer.data, status=status.HTTP_500_INTERNAL_SERVER_ERROR) + + TerminateSubscription().terminate(subscriptionId) + return Response(status=status.HTTP_204_NO_CONTENT)