aboutsummaryrefslogtreecommitdiffstats
path: root/genericparser/packages/views
diff options
context:
space:
mode:
authoryangyan <yangyanyj@chinamobile.com>2019-04-30 15:59:45 +0800
committerYan Yang <yangyanyj@chinamobile.com>2019-04-30 08:25:47 +0000
commit52a969dcc2a935930a559b1780d7c95e1cc45d73 (patch)
treeb95f60a4c719a0a24b5343f09fe17cb6fe060666 /genericparser/packages/views
parent63c392e9cca3c6654e8383f49e5136fa86d1c72a (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')
-rw-r--r--genericparser/packages/views/common.py28
-rw-r--r--genericparser/packages/views/ns_descriptor_views.py2
-rw-r--r--genericparser/packages/views/nsdm_subscription_views.py206
-rw-r--r--genericparser/packages/views/pnf_descriptor_views.py27
-rw-r--r--genericparser/packages/views/vnf_package_artifact_views.py2
-rw-r--r--genericparser/packages/views/vnf_package_subscription_views.py132
-rw-r--r--genericparser/packages/views/vnf_package_views.py22
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