diff options
author | yangyan <yangyanyj@chinamobile.com> | 2019-04-30 15:59:45 +0800 |
---|---|---|
committer | Yan Yang <yangyanyj@chinamobile.com> | 2019-04-30 08:25:47 +0000 |
commit | 52a969dcc2a935930a559b1780d7c95e1cc45d73 (patch) | |
tree | b95f60a4c719a0a24b5343f09fe17cb6fe060666 /genericparser/packages/views | |
parent | 63c392e9cca3c6654e8383f49e5136fa86d1c72a (diff) |
code refactor for genericparser1.0.0
Change-Id: I68a128944cde015d767576fc4e159d67db2d6b5d
Issue-ID: VFC-1372
Signed-off-by: yangyan <yangyanyj@chinamobile.com>
Diffstat (limited to 'genericparser/packages/views')
7 files changed, 134 insertions, 285 deletions
diff --git a/genericparser/packages/views/common.py b/genericparser/packages/views/common.py index 70637a9..41ba17c 100644 --- a/genericparser/packages/views/common.py +++ b/genericparser/packages/views/common.py @@ -19,10 +19,14 @@ from rest_framework import status from rest_framework.response import Response from genericparser.pub.exceptions import GenericparserException +from genericparser.pub.exceptions import BadRequestException from genericparser.pub.exceptions import NsdmBadRequestException from genericparser.pub.exceptions import PackageNotFoundException from genericparser.pub.exceptions import ResourceNotFoundException from genericparser.pub.exceptions import ArtifactNotFoundException +from genericparser.pub.exceptions import NsdmDuplicateSubscriptionException +from genericparser.pub.exceptions import VnfPkgDuplicateSubscriptionException +from genericparser.pub.exceptions import VnfPkgSubscriptionException logger = logging.getLogger(__name__) @@ -54,6 +58,18 @@ def view_safe_call_with_log(logger): def wrapper(*args, **kwargs): try: return func(*args, **kwargs) + except NsdmDuplicateSubscriptionException as e: + logger.error(e.message) + return make_error_resp( + detail=e.message, + status=status.HTTP_303_SEE_OTHER + ) + except VnfPkgDuplicateSubscriptionException as e: + logger.error(e.message) + return make_error_resp( + detail=e.message, + status=status.HTTP_303_SEE_OTHER + ) except PackageNotFoundException as e: logger.error(e.message) return make_error_resp( @@ -72,12 +88,24 @@ def view_safe_call_with_log(logger): detail=e.message, status=status.HTTP_404_NOT_FOUND ) + except BadRequestException as e: + logger.error(e.message) + return make_error_resp( + detail=e.message, + status=status.HTTP_400_BAD_REQUEST + ) except NsdmBadRequestException as e: logger.error(e.message) return make_error_resp( detail=e.message, status=status.HTTP_400_BAD_REQUEST ) + except VnfPkgSubscriptionException as e: + logger.error(e.message) + return make_error_resp( + detail=e.message, + status=status.HTTP_500_INTERNAL_SERVER_ERROR + ) except GenericparserException as e: logger.error(e.message) return make_error_resp( diff --git a/genericparser/packages/views/ns_descriptor_views.py b/genericparser/packages/views/ns_descriptor_views.py index 86a3e9e..bbe51ea 100644 --- a/genericparser/packages/views/ns_descriptor_views.py +++ b/genericparser/packages/views/ns_descriptor_views.py @@ -134,6 +134,6 @@ def nsd_content_ru(request, **kwargs): raise e if request.method == 'GET': - file_range = request.META.get('RANGE') + file_range = request.META.get('HTTP_RANGE') file_iterator = NsDescriptor().download(nsd_info_id, file_range) return StreamingHttpResponse(file_iterator, status=status.HTTP_200_OK) diff --git a/genericparser/packages/views/nsdm_subscription_views.py b/genericparser/packages/views/nsdm_subscription_views.py index 865ece4..cd80e6d 100644 --- a/genericparser/packages/views/nsdm_subscription_views.py +++ b/genericparser/packages/views/nsdm_subscription_views.py @@ -13,27 +13,22 @@ # limitations under the License. import logging -import traceback from drf_yasg.utils import swagger_auto_schema, no_body from rest_framework import status from rest_framework.decorators import api_view from rest_framework.response import Response -from genericparser.packages.serializers.nsdm_filter_data \ - import NsdmNotificationsFilter -from genericparser.packages.serializers.nsdm_subscription import \ - NsdmSubscriptionsSerializer, \ - NsdmSubscriptionIdSerializer, \ - NsdmSubscriptionSerializer, \ - NsdmSubscriptionRequestSerializer -from genericparser.packages.serializers.response \ - import ProblemDetailsSerializer -from genericparser.pub.exceptions import \ - ResourceNotFoundException, \ - NsdmBadRequestException, NsdmDuplicateSubscriptionException -from genericparser.packages.biz.nsdm_subscription import NsdmSubscription +from genericparser.packages.serializers.nsdm_filter_data import NsdmNotificationsFilter +from genericparser.packages.serializers.nsdm_subscription import NsdmSubscriptionsSerializer +from genericparser.packages.serializers.nsdm_subscription import NsdmSubscriptionIdSerializer +from genericparser.packages.serializers.nsdm_subscription import NsdmSubscriptionSerializer +from genericparser.packages.serializers.nsdm_subscription import NsdmSubscriptionRequestSerializer +from genericparser.packages.serializers.response import ProblemDetailsSerializer +from genericparser.pub.exceptions import NsdmBadRequestException +from .common import view_safe_call_with_log +from genericparser.packages.biz.nsdm_subscription import NsdmSubscription logger = logging.getLogger(__name__) @@ -46,17 +41,6 @@ def validate_data(data, serializer): return serialized_data -def get_problem_details_serializer(title, status_code, error_message): - problem_details = { - "title": title, - "status": status_code, - "detail": error_message - } - problem_details_serializer = ProblemDetailsSerializer(data=problem_details) - problem_details_serializer.is_valid() - return problem_details_serializer - - @swagger_auto_schema( method='POST', operation_description="Create Subscription for NSD Management", @@ -80,84 +64,33 @@ def get_problem_details_serializer(title, status_code, error_message): } ) @api_view(http_method_names=['POST', 'GET']) +@view_safe_call_with_log(logger=logger) def nsd_subscription_rc(request): if request.method == 'POST': logger.debug("SubscribeNotification--post::> %s" % request.data) - try: - title = 'Creating Subscription Failed!' - nsdm_subscription_request = \ - validate_data(request.data, - NsdmSubscriptionRequestSerializer) - subscription = NsdmSubscription().create( - nsdm_subscription_request.data) - subscription_resp = validate_data(subscription, - NsdmSubscriptionSerializer) - return Response(data=subscription_resp.data, - status=status.HTTP_201_CREATED) - except NsdmDuplicateSubscriptionException as e: - logger.error(e.message) - problem_details_serializer = \ - get_problem_details_serializer(title, - status.HTTP_303_SEE_OTHER, - e.message) - return Response(data=problem_details_serializer.data, - status=status.HTTP_303_SEE_OTHER) - except NsdmBadRequestException as e: - problem_details_serializer = \ - get_problem_details_serializer(title, - status.HTTP_400_BAD_REQUEST, - e.message) - return Response(data=problem_details_serializer.data, - status=status.HTTP_400_BAD_REQUEST) - except Exception as e: - logger.error(e.message) - logger.error(traceback.format_exc()) - problem_details_serializer = \ - get_problem_details_serializer( - title, - status.HTTP_500_INTERNAL_SERVER_ERROR, - e.message) - return Response(data=problem_details_serializer.data, - status=status.HTTP_500_INTERNAL_SERVER_ERROR) + nsdm_subscription_request = \ + validate_data(request.data, + NsdmSubscriptionRequestSerializer) + subscription = NsdmSubscription().create( + nsdm_subscription_request.data) + subscription_resp = validate_data(subscription, + NsdmSubscriptionSerializer) + return Response(data=subscription_resp.data, + status=status.HTTP_201_CREATED) + if request.method == 'GET': logger.debug("Subscription Notification GET %s" % request.query_params) - try: - title = 'Query Subscription Failed!' - request_query_params = {} - if request.query_params: - request_query_params = \ - validate_data(request.query_params, - NsdmNotificationsFilter).data - subscription_data = \ - NsdmSubscription().query_multi_subscriptions( - request_query_params) - subscriptions = validate_data(subscription_data, - NsdmSubscriptionsSerializer) - return Response(data=subscriptions.data, status=status.HTTP_200_OK) - except NsdmBadRequestException as e: - logger.error(e.message) - problem_details_serializer = \ - get_problem_details_serializer(title, - status.HTTP_400_BAD_REQUEST, - e.message) - return Response(data=problem_details_serializer.data, - status=status.HTTP_400_BAD_REQUEST) - except ResourceNotFoundException as e: - problem_details_serializer = \ - get_problem_details_serializer(title, - status.HTTP_404_NOT_FOUND, - e.message) - return Response(data=problem_details_serializer.data, - status=status.HTTP_404_NOT_FOUND) - except Exception as e: - logger.error(e.message) - problem_details_serializer = \ - get_problem_details_serializer( - title, - status.HTTP_500_INTERNAL_SERVER_ERROR, - traceback.format_exc()) - return Response(data=problem_details_serializer.data, - status=status.HTTP_500_INTERNAL_SERVER_ERROR) + request_query_params = {} + if request.query_params: + request_query_params = \ + validate_data(request.query_params, + NsdmNotificationsFilter).data + subscription_data = \ + NsdmSubscription().query_multi_subscriptions( + request_query_params) + subscriptions = validate_data(subscription_data, + NsdmSubscriptionsSerializer) + return Response(data=subscriptions.data, status=status.HTTP_200_OK) @swagger_auto_schema( @@ -183,77 +116,14 @@ def nsd_subscription_rc(request): } ) @api_view(http_method_names=['GET', 'DELETE']) +@view_safe_call_with_log(logger=logger) def nsd_subscription_rd(request, **kwargs): subscription_id = kwargs.get("subscriptionId") + validate_data({'subscription_id': subscription_id}, NsdmSubscriptionIdSerializer) if request.method == 'GET': - try: - title = 'Query Subscription Failed!' - validate_data({'subscription_id': subscription_id}, - NsdmSubscriptionIdSerializer) - subscription_data = \ - NsdmSubscription().query_single_subscription(subscription_id) - subscription = validate_data(subscription_data, - NsdmSubscriptionSerializer) - return Response(data=subscription.data, status=status.HTTP_200_OK) - except NsdmBadRequestException as e: - logger.error(e.message) - problem_details_serializer = \ - get_problem_details_serializer(title, - status.HTTP_400_BAD_REQUEST, - e.message) - return Response(data=problem_details_serializer.data, - status=status.HTTP_400_BAD_REQUEST) - except ResourceNotFoundException as e: - logger.error(e.message) - problem_details_serializer = \ - get_problem_details_serializer(title, - status.HTTP_404_NOT_FOUND, - e.message) - 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( - title, - status.HTTP_500_INTERNAL_SERVER_ERROR, - "Query of subscriptioni(%s) Failed" - % subscription_id) - return Response(data=problem_details_serializer.data, - status=status.HTTP_500_INTERNAL_SERVER_ERROR) + subscription_data = NsdmSubscription().query_single_subscription(subscription_id) + subscription = validate_data(subscription_data, NsdmSubscriptionSerializer) + return Response(data=subscription.data, status=status.HTTP_200_OK) elif request.method == 'DELETE': - try: - title = 'Delete Subscription Failed!' - validate_data({'subscription_id': subscription_id}, - NsdmSubscriptionIdSerializer) - subscription_data = NsdmSubscription().\ - delete_single_subscription(subscription_id) - return Response(status=status.HTTP_204_NO_CONTENT) - except NsdmBadRequestException as e: - logger.error(e.message) - problem_details_serializer = \ - get_problem_details_serializer(title, - status.HTTP_400_BAD_REQUEST, - e.message) - return Response(data=problem_details_serializer.data, - status=status.HTTP_400_BAD_REQUEST) - except ResourceNotFoundException as e: - logger.error(e.message) - problem_details_serializer = \ - get_problem_details_serializer(title, - status.HTTP_404_NOT_FOUND, - e.message) - 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( - title, - status.HTTP_500_INTERNAL_SERVER_ERROR, - "Delete of subscription(%s) Failed" - % subscription_id) - return Response(data=problem_details_serializer.data, - status=status.HTTP_500_INTERNAL_SERVER_ERROR) + subscription_data = NsdmSubscription().delete_single_subscription(subscription_id) + return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/genericparser/packages/views/pnf_descriptor_views.py b/genericparser/packages/views/pnf_descriptor_views.py index e82374f..7abd8ad 100644 --- a/genericparser/packages/views/pnf_descriptor_views.py +++ b/genericparser/packages/views/pnf_descriptor_views.py @@ -25,10 +25,10 @@ from genericparser.packages.serializers.create_pnfd_info_request import CreatePn from genericparser.packages.serializers.pnfd_info import PnfdInfoSerializer from genericparser.packages.serializers.pnfd_infos import PnfdInfosSerializer from genericparser.packages.views.common import validate_data -from genericparser.pub.exceptions import GenericparserException from genericparser.packages.serializers.genericparser_serializers import ParseModelRequestSerializer from genericparser.packages.serializers.genericparser_serializers import ParseModelResponseSerializer from genericparser.packages.serializers.genericparser_serializers import InternalErrorRequestSerializer +from genericparser.packages.serializers.response import ProblemDetailsSerializer from genericparser.pub.utils.syscomm import fun_name from genericparser.pub.utils.values import ignore_case_get from .common import view_safe_call_with_log @@ -42,8 +42,8 @@ logger = logging.getLogger(__name__) request_body=no_body, responses={ status.HTTP_200_OK: PnfdInfoSerializer(), - status.HTTP_404_NOT_FOUND: "PNFD does not exist", - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" + status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(), + status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() } ) @swagger_auto_schema( @@ -52,7 +52,7 @@ logger = logging.getLogger(__name__) request_body=no_body, responses={ status.HTTP_204_NO_CONTENT: "No content", - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" + status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() } ) @api_view(http_method_names=['GET', 'DELETE']) @@ -77,7 +77,7 @@ def pnfd_info_rd(request, **kwargs): # TODO request_body=CreatePnfdInfoRequestSerializer(), responses={ status.HTTP_201_CREATED: PnfdInfoSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" + status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() } ) @swagger_auto_schema( @@ -86,7 +86,7 @@ def pnfd_info_rd(request, **kwargs): # TODO request_body=no_body, responses={ status.HTTP_200_OK: PnfdInfosSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" + status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() } ) @api_view(http_method_names=['POST', 'GET']) @@ -99,11 +99,7 @@ def pnf_descriptors_rc(request): return Response(data=pnfd_info.data, status=status.HTTP_201_CREATED) if request.method == 'GET': - pnfdId = request.query_params.get('pnfdId', None) - if pnfdId: - data = PnfDescriptor().query_multiple(pnfdId) - else: - data = PnfDescriptor().query_multiple() + data = PnfDescriptor().query_multiple(request) pnfd_infos = validate_data(data, PnfdInfosSerializer) return Response(data=pnfd_infos.data, status=status.HTTP_200_OK) @@ -114,7 +110,7 @@ def pnf_descriptors_rc(request): request_body=no_body, responses={ status.HTTP_204_NO_CONTENT: "No content", - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" + status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() } ) @swagger_auto_schema( @@ -123,8 +119,8 @@ def pnf_descriptors_rc(request): request_body=no_body, responses={ status.HTTP_204_NO_CONTENT: 'PNFD file', - status.HTTP_404_NOT_FOUND: "PNFD does not exist", - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" + status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(), + status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() } ) @api_view(http_method_names=['PUT', 'GET']) @@ -137,9 +133,6 @@ def pnfd_content_ru(request, **kwargs): local_file_name = PnfDescriptor().upload(files[0], pnfd_info_id) PnfDescriptor().parse_pnfd_and_save(pnfd_info_id, local_file_name) return Response(data=None, status=status.HTTP_204_NO_CONTENT) - except GenericparserException as e: - PnfDescriptor().handle_upload_failed(pnfd_info_id) - raise e except Exception as e: PnfDescriptor().handle_upload_failed(pnfd_info_id) raise e diff --git a/genericparser/packages/views/vnf_package_artifact_views.py b/genericparser/packages/views/vnf_package_artifact_views.py index a6d57f8..164db6c 100644 --- a/genericparser/packages/views/vnf_package_artifact_views.py +++ b/genericparser/packages/views/vnf_package_artifact_views.py @@ -39,7 +39,7 @@ class FetchVnfPkgmArtifactsView(APIView): @swagger_auto_schema( responses={ - status.HTTP_200_OK: None, + status.HTTP_200_OK: "HTTP_200_OK", status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(), status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() } 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) diff --git a/genericparser/packages/views/vnf_package_views.py b/genericparser/packages/views/vnf_package_views.py index 91238f9..bfb1224 100644 --- a/genericparser/packages/views/vnf_package_views.py +++ b/genericparser/packages/views/vnf_package_views.py @@ -19,13 +19,15 @@ from drf_yasg.utils import swagger_auto_schema, no_body from rest_framework import status from rest_framework.decorators import api_view from rest_framework.response import Response -from genericparser.pub.exceptions import GenericparserException from genericparser.packages.serializers.upload_vnf_pkg_from_uri_req import UploadVnfPackageFromUriRequestSerializer from genericparser.packages.serializers.create_vnf_pkg_info_req import CreateVnfPkgInfoRequestSerializer from genericparser.packages.serializers.vnf_pkg_info import VnfPkgInfoSerializer from genericparser.packages.serializers.vnf_pkg_infos import VnfPkgInfosSerializer -from genericparser.packages.biz.vnf_package import VnfPackage, VnfPkgUploadThread, parse_vnfd_and_save, handle_upload_failed -from genericparser.packages.views.common import validate_data +from genericparser.packages.biz.vnf_package import VnfPackage +from genericparser.packages.biz.vnf_package import VnfPkgUploadThread +from genericparser.packages.biz.vnf_package import parse_vnfd_and_save +from genericparser.packages.biz.vnf_package import handle_upload_failed +from .common import validate_data from .common import view_safe_call_with_log logger = logging.getLogger(__name__) @@ -60,7 +62,8 @@ def vnf_packages_rc(request): if request.method == 'POST': logger.debug("Create VNF package> %s" % request.data) - create_vnf_pkg_info_request = validate_data(request.data, CreateVnfPkgInfoRequestSerializer) + create_vnf_pkg_info_request = validate_data(request.data, + CreateVnfPkgInfoRequestSerializer) data = VnfPackage().create_vnf_pkg(create_vnf_pkg_info_request.data) vnf_pkg_info = validate_data(data, VnfPkgInfoSerializer) return Response(data=vnf_pkg_info.data, status=status.HTTP_201_CREATED) @@ -96,15 +99,12 @@ def package_content_ru(request, **kwargs): local_file_name = VnfPackage().upload(vnf_pkg_id, files[0]) parse_vnfd_and_save(vnf_pkg_id, local_file_name) return Response(None, status=status.HTTP_202_ACCEPTED) - except GenericparserException as e: - handle_upload_failed(vnf_pkg_id) - raise e except Exception as e: handle_upload_failed(vnf_pkg_id) raise e if request.method == "GET": - file_range = request.META.get('RANGE') + file_range = request.META.get('HTTP_RANGE') file_iterator = VnfPackage().download(vnf_pkg_id, file_range) return StreamingHttpResponse(file_iterator, status=status.HTTP_200_OK) @@ -123,12 +123,10 @@ def package_content_ru(request, **kwargs): def upload_from_uri_c(request, **kwargs): vnf_pkg_id = kwargs.get("vnfPkgId") try: - upload_vnf_from_uri_request = validate_data(request.data, UploadVnfPackageFromUriRequestSerializer) + upload_vnf_from_uri_request = validate_data(request.data, + UploadVnfPackageFromUriRequestSerializer) VnfPkgUploadThread(upload_vnf_from_uri_request.data, vnf_pkg_id).start() return Response(None, status=status.HTTP_202_ACCEPTED) - except GenericparserException as e: - handle_upload_failed(vnf_pkg_id) - raise e except Exception as e: handle_upload_failed(vnf_pkg_id) raise e |