diff options
Diffstat (limited to 'genericparser/packages/views')
-rw-r--r-- | genericparser/packages/views/__init__.py | 13 | ||||
-rw-r--r-- | genericparser/packages/views/catalog_views.py | 535 | ||||
-rw-r--r-- | genericparser/packages/views/common.py | 123 | ||||
-rw-r--r-- | genericparser/packages/views/health_check_views.py | 31 | ||||
-rw-r--r-- | genericparser/packages/views/ns_descriptor_views.py | 139 | ||||
-rw-r--r-- | genericparser/packages/views/nsdm_subscription_views.py | 127 | ||||
-rw-r--r-- | genericparser/packages/views/pnf_descriptor_views.py | 166 | ||||
-rw-r--r-- | genericparser/packages/views/vnf_package_artifact_views.py | 54 | ||||
-rw-r--r-- | genericparser/packages/views/vnf_package_subscription_views.py | 121 | ||||
-rw-r--r-- | genericparser/packages/views/vnf_package_views.py | 167 |
10 files changed, 0 insertions, 1476 deletions
diff --git a/genericparser/packages/views/__init__.py b/genericparser/packages/views/__init__.py deleted file mode 100644 index 342c2a8..0000000 --- a/genericparser/packages/views/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2018 ZTE Corporation. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/genericparser/packages/views/catalog_views.py b/genericparser/packages/views/catalog_views.py deleted file mode 100644 index df3dfca..0000000 --- a/genericparser/packages/views/catalog_views.py +++ /dev/null @@ -1,535 +0,0 @@ -# Copyright 2017 ZTE Corporation. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging -import uuid - -from drf_yasg import openapi -from drf_yasg.utils import no_body, swagger_auto_schema -from rest_framework import status -from rest_framework.decorators import api_view -from rest_framework.response import Response -from genericparser.packages.biz import sdc_vnf_package, sdc_ns_package -from genericparser.packages.biz.pnf_descriptor import PnfDescriptor -from genericparser.packages.biz.sdc_service_package import ServicePackage -from genericparser.packages.serializers.genericparser_serializers import InternalErrorRequestSerializer, \ - ServicePackageDistributeRequestSerializer, ServicePackagesSerializer, ServicePackageSerializer -from genericparser.packages.serializers.genericparser_serializers import NfPackageDistributeRequestSerializer -from genericparser.packages.serializers.genericparser_serializers import NfPackageSerializer -from genericparser.packages.serializers.genericparser_serializers import NfPackagesSerializer -from genericparser.packages.serializers.genericparser_serializers import NsPackageDistributeRequestSerializer -from genericparser.packages.serializers.genericparser_serializers import NsPackageDistributeResponseSerializer -from genericparser.packages.serializers.genericparser_serializers import NsPackageSerializer -from genericparser.packages.serializers.genericparser_serializers import NsPackagesSerializer -from genericparser.packages.serializers.genericparser_serializers import ParseModelRequestSerializer -from genericparser.packages.serializers.genericparser_serializers import ParseModelResponseSerializer -from genericparser.packages.serializers.genericparser_serializers import PostJobResponseSerializer -from genericparser.packages.views.common import fmt_error_rsp -from genericparser.pub.exceptions import PackageNotFoundException, PackageHasExistsException -from genericparser.pub.utils.syscomm import fun_name -from genericparser.pub.utils.values import ignore_case_get - -logger = logging.getLogger(__name__) - - -@swagger_auto_schema( - method='POST', - operation_description="On distribute NS package", - request_body=NsPackageDistributeRequestSerializer, - responses={ - status.HTTP_202_ACCEPTED: NsPackageDistributeResponseSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: InternalErrorRequestSerializer}) -@swagger_auto_schema( - method='GET', - operation_description="Query NS packages", - request_body=no_body, - responses={ - status.HTTP_200_OK: NsPackagesSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: InternalErrorRequestSerializer}) -@api_view(http_method_names=['POST', 'GET']) -def nspackages_rc(request, *args, **kwargs): - logger.debug("Enter %s, method is %s", fun_name(), request.method) - ret, normal_status, response_serializer, validation_error = None, None, None, None - - if request.method == 'GET': - # Gets ns package list - ret = sdc_ns_package.ns_get_csars() - normal_status = status.HTTP_200_OK - - if ret[0] == 0: - response_serializer = NsPackagesSerializer(data=ret[1]) - validation_error = handleValidatonError( - response_serializer, False) - if validation_error: - return validation_error - elif request.method == 'POST': - # Distributes the package accroding to the given csarId - request_serializer = NsPackageDistributeRequestSerializer(data=request.data) - validation_error = handleValidatonError(request_serializer, True) - if validation_error: - return validation_error - - csar_id = ignore_case_get(request.data, "csarId") - logger.debug("csar_id is %s", csar_id) - ret = sdc_ns_package.ns_on_distribute(csar_id) - normal_status = status.HTTP_202_ACCEPTED - - logger.debug("Leave %s, Return value is %s", fun_name(), ret) - if ret[0] != 0: - return Response( - data={ - 'error': ret[1]}, - status=status.HTTP_500_INTERNAL_SERVER_ERROR) - - return Response(data=ret[1], status=normal_status) - - -@swagger_auto_schema( - method='POST', - operation_description="On distribute Nf package", - request_body=NfPackageDistributeRequestSerializer(), - responses={ - status.HTTP_202_ACCEPTED: PostJobResponseSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: InternalErrorRequestSerializer}) -@swagger_auto_schema( - method='GET', - operation_description="Query Nf packages", - request_body=no_body, - responses={ - status.HTTP_200_OK: NfPackagesSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: InternalErrorRequestSerializer}) -@api_view(http_method_names=['POST', 'GET']) -def nfpackages_rc(request, *args, **kwargs): - logger.debug( - "Enter %s%s, method is %s", - fun_name(), - request.data, - request.method) - ret, normal_status, response_serializer, validation_error = None, None, None, None - if request.method == 'GET': - ret = sdc_vnf_package.nf_get_csars() - normal_status = status.HTTP_200_OK - response_serializer = NfPackagesSerializer(data=ret[1]) - elif request.method == 'POST': - request_serivalizer = NfPackageDistributeRequestSerializer( - data=request.data) - validation_error = handleValidatonError( - request_serivalizer, True) - if validation_error: - return validation_error - - csar_id = ignore_case_get(request_serivalizer.data, "csarId") - vim_ids = ignore_case_get(request_serivalizer.data, "vimIds") - lab_vim_id = ignore_case_get(request_serivalizer.data, "labVimId") - job_id = str(uuid.uuid4()) - sdc_vnf_package.NfDistributeThread( - csar_id, vim_ids, lab_vim_id, job_id).start() - ret = [0, {"jobId": job_id}] - normal_status = status.HTTP_202_ACCEPTED - - response_serializer = PostJobResponseSerializer(data=ret[1]) - logger.debug("Leave %s, Return value is %s", fun_name(), ret) - - if ret[0] != 0: - return Response( - data={ - 'error': ret[1]}, - status=status.HTTP_500_INTERNAL_SERVER_ERROR) - - validation_error = handleValidatonError( - response_serializer, False) - if validation_error: - return validation_error - - return Response(data=response_serializer.data, status=normal_status) - - -@swagger_auto_schema( - method='DELETE', - operation_description="Delete one NS package", - request_body=no_body, - manual_parameters=[ - openapi.Parameter( - 'csarId', - openapi.IN_QUERY, - "csarId", - type=openapi.TYPE_STRING)], - responses={ - status.HTTP_200_OK: NsPackageDistributeResponseSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( - 'error message', - openapi.Schema( - type=openapi.TYPE_STRING))}) -@swagger_auto_schema( - method='GET', - operation_description="Query one NS package", - request_body=no_body, - manual_parameters=[ - openapi.Parameter( - 'csarId', - openapi.IN_QUERY, - "csarId", - type=openapi.TYPE_STRING)], - responses={ - status.HTTP_200_OK: NsPackageSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( - 'error message', - openapi.Schema( - type=openapi.TYPE_STRING))}) -@api_view(http_method_names=['DELETE', 'GET']) -def ns_rd_csar(request, *args, **kwargs): - csar_id = ignore_case_get(kwargs, "csarId") - logger.info("Enter %s, method is %s, csar_id is %s", - fun_name(), request.method, csar_id) - ret, normal_status, response_serializer, validation_error = None, None, None, None - if request.method == 'GET': - ret = sdc_ns_package.ns_get_csar(csar_id) - normal_status = status.HTTP_200_OK - if ret[0] == 0: - response_serializer = NsPackageSerializer(data=ret[1]) - validation_error = handleValidatonError(response_serializer, False) - if validation_error: - return validation_error - elif request.method == 'DELETE': - ret = sdc_ns_package.ns_delete_csar(csar_id) - normal_status = status.HTTP_200_OK - logger.info("Leave %s, Return value is %s", fun_name(), ret) - if ret[0] != 0: - return Response( - data={ - 'error': ret[1]}, - status=status.HTTP_500_INTERNAL_SERVER_ERROR) - return Response(data=ret[1], status=normal_status) - - -@swagger_auto_schema( - method='POST', - operation_description="On distribute Service package", - request_body=ServicePackageDistributeRequestSerializer, - responses={ - status.HTTP_202_ACCEPTED: "", - status.HTTP_400_BAD_REQUEST: InternalErrorRequestSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: InternalErrorRequestSerializer}) -@swagger_auto_schema( - method='GET', - operation_description="Query Service packages", - request_body=no_body, - responses={ - status.HTTP_200_OK: ServicePackagesSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: InternalErrorRequestSerializer}) -@api_view(http_method_names=['POST', 'GET']) -def servicepackages_rc(request, *args, **kwargs): - logger.debug("Enter %s, method is %s", fun_name(), request.method) - - if request.method == 'GET': - # Gets service package list - try: - csar_list = ServicePackage().get_csars() - response_serializer = ServicePackagesSerializer(data=csar_list) - validation_error = handleValidatonError(response_serializer, False) - if validation_error: - return validation_error - return Response(data=csar_list, status=status.HTTP_200_OK) - except Exception as e: - error_status = status.HTTP_500_INTERNAL_SERVER_ERROR - return Response(data=fmt_error_rsp(e.args[0], error_status), status=error_status) - elif request.method == 'POST': - # Distributes the package according to the given csarId - request_serializer = ServicePackageDistributeRequestSerializer(data=request.data) - validation_error = handleValidatonError(request_serializer, True) - if validation_error: - return validation_error - - csar_id = ignore_case_get(request.data, "csarId") - logger.debug("csar_id is %s", csar_id) - try: - ServicePackage().on_distribute(csar_id) - return Response(status=status.HTTP_202_ACCEPTED) - except PackageHasExistsException as e: - error_status = status.HTTP_400_BAD_REQUEST - return Response(data=fmt_error_rsp(e.args[0], error_status), status=error_status) - except Exception as e: - error_status = status.HTTP_500_INTERNAL_SERVER_ERROR - return Response(data=fmt_error_rsp(e.args[0], error_status), status=error_status) - - -@swagger_auto_schema( - method='DELETE', - operation_description="Delete one Service package", - request_body=no_body, - manual_parameters=[ - openapi.Parameter( - 'csarId', - openapi.IN_QUERY, - "csarId", - type=openapi.TYPE_STRING)], - responses={ - status.HTTP_204_NO_CONTENT: "", - status.HTTP_404_NOT_FOUND: InternalErrorRequestSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: InternalErrorRequestSerializer}) -@swagger_auto_schema( - method='GET', - operation_description="Query one Service package", - request_body=no_body, - manual_parameters=[ - openapi.Parameter( - 'csarId', - openapi.IN_QUERY, - "csarId", - type=openapi.TYPE_STRING)], - responses={ - status.HTTP_200_OK: ServicePackageSerializer, - status.HTTP_404_NOT_FOUND: InternalErrorRequestSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: InternalErrorRequestSerializer}) -@api_view(http_method_names=['DELETE', 'GET']) -def service_rd_csar(request, *args, **kwargs): - csar_id = ignore_case_get(kwargs, "csarId") - logger.info("Enter %s, method is %s, csar_id is %s", fun_name(), request.method, csar_id) - - if request.method == 'GET': - try: - ret = ServicePackage().get_csar(csar_id) - response_serializer = ServicePackageSerializer(data=ret) - validation_error = handleValidatonError(response_serializer, False) - if validation_error: - return validation_error - return Response(data=ret, status=status.HTTP_200_OK) - except PackageNotFoundException as e: - error_status = status.HTTP_404_NOT_FOUND - return Response(data=fmt_error_rsp(e.args[0], error_status), status=error_status) - except Exception as e: - error_status = status.HTTP_500_INTERNAL_SERVER_ERROR - return Response(data=fmt_error_rsp(e.args[0], error_status), status=error_status) - - elif request.method == 'DELETE': - try: - ServicePackage().delete_csar(csar_id) - return Response(status=status.HTTP_204_NO_CONTENT) - except PackageNotFoundException as e: - error_status = status.HTTP_404_NOT_FOUND - return Response(data=fmt_error_rsp(e.args[0], error_status), status=error_status) - except Exception as e: - error_status = status.HTTP_500_INTERNAL_SERVER_ERROR - return Response(data=fmt_error_rsp(e.args[0], error_status), status=error_status) - - -@swagger_auto_schema( - method='DELETE', - operation_description="Delete one Nf package", - request_body=no_body, - manual_parameters=[ - openapi.Parameter( - 'csarId', - openapi.IN_QUERY, - "csarId", - type=openapi.TYPE_STRING)], - responses={ - status.HTTP_202_ACCEPTED: PostJobResponseSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( - 'error message', - openapi.Schema( - type=openapi.TYPE_STRING))}) -@swagger_auto_schema( - method='GET', - operation_description="Query one Nf package", - request_body=no_body, - manual_parameters=[ - openapi.Parameter( - 'csarId', - openapi.IN_QUERY, - "csarId", - type=openapi.TYPE_STRING)], - responses={ - status.HTTP_200_OK: NfPackageSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( - 'error message', - openapi.Schema( - type=openapi.TYPE_STRING))}) -@api_view(http_method_names=['DELETE', 'GET']) -def nf_rd_csar(request, *args, **kwargs): - csar_id = ignore_case_get(kwargs, "csarId") - logger.info("Enter %s, method is %s, csar_id is %s", - fun_name(), request.method, csar_id) - ret, normal_status, response_serializer, validation_error = None, None, None, None - - if request.method == 'GET': - ret = sdc_vnf_package.nf_get_csar(csar_id) - normal_status = status.HTTP_200_OK - response_serializer = NfPackageSerializer(data=ret[1]) - - elif request.method == 'DELETE': - job_id = str(uuid.uuid4()) - sdc_vnf_package.NfPkgDeleteThread(csar_id, job_id).start() - ret = [0, {"jobId": job_id}] - normal_status = status.HTTP_202_ACCEPTED - response_serializer = PostJobResponseSerializer(data=ret[1]) - - logger.info("Leave %s, Return value is %s", fun_name(), ret) - if ret[0] != 0: - return Response( - data={ - 'error': ret[1]}, - status=status.HTTP_500_INTERNAL_SERVER_ERROR) - - validation_error = handleValidatonError( - response_serializer, False) - if validation_error: - return validation_error - - return Response(data=response_serializer.data, status=normal_status) - - -@swagger_auto_schema( - method='POST', - operation_description="Parse model(NS, Service, VNF, PNF)", - request_body=ParseModelRequestSerializer, - responses={ - status.HTTP_202_ACCEPTED: ParseModelResponseSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: InternalErrorRequestSerializer}) -@api_view(http_method_names=['POST']) -def model_parser(request, *args, **kwargs): - csar_id = ignore_case_get(request.data, "csarId") - package_type = ignore_case_get(request.data, "packageType") - inputs = ignore_case_get(request.data, "inputs") - logger.debug( - "Enter %s, csar_id=%s, package_type=%s, inputs=%s", - fun_name(), - csar_id, - package_type, - inputs) - - if package_type.lower().__eq__("service"): - try: - ret = ServicePackage().parse_serviced(csar_id, inputs) - response_serializer = ParseModelResponseSerializer(data=ret) - validation_error = handleValidatonError( - response_serializer, False) - if validation_error: - return validation_error - return Response(data=response_serializer.data, status=status.HTTP_202_ACCEPTED) - except PackageNotFoundException as e: - error_status = status.HTTP_404_NOT_FOUND - return Response(data=fmt_error_rsp(e.args[0], error_status), status=error_status) - except Exception as e: - error_status = status.HTTP_500_INTERNAL_SERVER_ERROR - return Response(data=fmt_error_rsp(e.args[0], error_status), status=error_status) - elif package_type.lower().__eq__("ns"): - ret = sdc_ns_package.parse_nsd(csar_id, inputs) - elif package_type.lower().__eq__("vnf"): - ret = sdc_vnf_package.parse_vnfd(csar_id, inputs) - elif package_type.lower().__eq__("pnf"): - ret = PnfDescriptor().parse_pnfd(csar_id, inputs) - else: - error_status = status.HTTP_400_BAD_REQUEST - error_message = "Invalid package type, it should be one of [VNF, PNF, NS, Service]" - return Response(data=fmt_error_rsp(error_message, error_status), status=error_status) - - if ret[0] != 0: - return Response( - data={ - 'error': ret[1]}, - status=status.HTTP_500_INTERNAL_SERVER_ERROR) - - response_serializer = ParseModelResponseSerializer(data=ret[1]) - validation_error = handleValidatonError( - response_serializer, False) - if validation_error: - return validation_error - - return Response(data=response_serializer.data, status=status.HTTP_202_ACCEPTED) - - -@swagger_auto_schema( - method='POST', - operation_description="Parse NS model", - request_body=ParseModelRequestSerializer, - responses={ - status.HTTP_202_ACCEPTED: ParseModelResponseSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: InternalErrorRequestSerializer}) -@api_view(http_method_names=['POST']) -def ns_model_parser(request, *args, **kwargs): - csar_id = ignore_case_get(request.data, "csarId") - inputs = ignore_case_get(request.data, "inputs") - logger.debug( - "Enter %s, csar_id=%s, inputs=%s", - fun_name(), - csar_id, - inputs) - ret = sdc_ns_package.parse_nsd(csar_id, inputs) - logger.info("Leave %s, Return value is %s", fun_name(), ret) - if ret[0] != 0: - return Response( - data={ - 'error': ret[1]}, - status=status.HTTP_500_INTERNAL_SERVER_ERROR) - - response_serializer = ParseModelResponseSerializer(data=ret[1]) - validation_error = handleValidatonError( - response_serializer, False) - if validation_error: - return validation_error - - return Response(data=response_serializer.data, status=status.HTTP_202_ACCEPTED) - - -@swagger_auto_schema( - method='POST', - operation_description="Parse NF model", - request_body=ParseModelRequestSerializer, - responses={ - status.HTTP_202_ACCEPTED: ParseModelResponseSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: InternalErrorRequestSerializer}) -@api_view(http_method_names=['POST']) -def vnf_model_parser(request, *args, **kwargs): - csar_id = ignore_case_get(request.data, "csarId") - inputs = ignore_case_get(request.data, "inputs") - logger.debug( - "Enter %s, csar_id=%s, inputs=%s", - fun_name(), - csar_id, - inputs) - ret = sdc_vnf_package.parse_vnfd(csar_id, inputs) - logger.info("Leave %s, Return value is %s", fun_name(), ret) - if ret[0] != 0: - return Response( - data={ - 'error': ret[1]}, - status=status.HTTP_500_INTERNAL_SERVER_ERROR) - - response_serializer = ParseModelResponseSerializer(data=ret[1]) - validation_error = handleValidatonError( - response_serializer, False) - if validation_error: - return validation_error - - return Response(data=response_serializer.data, status=status.HTTP_202_ACCEPTED) - - -def handleValidatonError(base_serializer, is_request): - response = None - - if not base_serializer.is_valid(): - errormessage = base_serializer.errors - logger.error(errormessage) - - if is_request: - message = 'Invalid request' - else: - message = 'Invalid response' - logger.error(message) - response = Response( - data={'error': errormessage}, - status=status.HTTP_500_INTERNAL_SERVER_ERROR) - - return response diff --git a/genericparser/packages/views/common.py b/genericparser/packages/views/common.py deleted file mode 100644 index efd045b..0000000 --- a/genericparser/packages/views/common.py +++ /dev/null @@ -1,123 +0,0 @@ -# Copyright 2018 ZTE Corporation. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import traceback -import logging - -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__) - - -def validate_data(data, serializer): - serialized_data = serializer(data=data) - if not serialized_data.is_valid(): - logger.error('Data validation failed.') - raise GenericparserException(serialized_data.errors) - return serialized_data - - -def fmt_error_rsp(error_message, status): - return {"errorMessage": error_message, "error": status} - - -def make_error_resp(status, detail): - return Response( - data={ - 'status': status, - 'detail': detail - }, - status=status - ) - - -def view_safe_call_with_log(logger): - def view_safe_call(func): - def wrapper(*args, **kwargs): - try: - return func(*args, **kwargs) - except NsdmDuplicateSubscriptionException as e: - logger.error(e.args[0]) - return make_error_resp( - detail=e.args[0], - status=status.HTTP_303_SEE_OTHER - ) - except VnfPkgDuplicateSubscriptionException as e: - logger.error(e.args[0]) - return make_error_resp( - detail=e.args[0], - status=status.HTTP_303_SEE_OTHER - ) - except PackageNotFoundException as e: - logger.error(e.args[0]) - return make_error_resp( - detail=e.args[0], - status=status.HTTP_404_NOT_FOUND - ) - except ResourceNotFoundException as e: - logger.error(e.args[0]) - return make_error_resp( - detail=e.args[0], - status=status.HTTP_404_NOT_FOUND - ) - except ArtifactNotFoundException as e: - logger.error(e.args[0]) - return make_error_resp( - detail=e.args[0], - status=status.HTTP_404_NOT_FOUND - ) - except BadRequestException as e: - logger.error(e.args[0]) - return make_error_resp( - detail=e.args[0], - status=status.HTTP_400_BAD_REQUEST - ) - except NsdmBadRequestException as e: - logger.error(e.args[0]) - return make_error_resp( - detail=e.args[0], - status=status.HTTP_400_BAD_REQUEST - ) - except VnfPkgSubscriptionException as e: - logger.error(e.args[0]) - return make_error_resp( - detail=e.args[0], - status=status.HTTP_500_INTERNAL_SERVER_ERROR - ) - except GenericparserException as e: - logger.error(e.args[0]) - return make_error_resp( - detail=e.args[0], - status=status.HTTP_500_INTERNAL_SERVER_ERROR - ) - except Exception as e: - logger.error(e.args[0]) - logger.error(traceback.format_exc()) - return make_error_resp( - detail='Unexpected exception', - status=status.HTTP_500_INTERNAL_SERVER_ERROR - ) - return wrapper - return view_safe_call diff --git a/genericparser/packages/views/health_check_views.py b/genericparser/packages/views/health_check_views.py deleted file mode 100644 index cc1a379..0000000 --- a/genericparser/packages/views/health_check_views.py +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright (c) 2019, CMCC Technologies Co., Ltd. - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging - -from drf_yasg.utils import swagger_auto_schema -from rest_framework import status -from rest_framework.response import Response -from rest_framework.views import APIView - -logger = logging.getLogger(__name__) - - -class HealthCheckView(APIView): - @swagger_auto_schema( - responses={ - status.HTTP_200_OK: 'Active'}) - def get(self, request, format=None): - logger.debug("Health check.") - return Response({"status": "active"}) diff --git a/genericparser/packages/views/ns_descriptor_views.py b/genericparser/packages/views/ns_descriptor_views.py deleted file mode 100644 index bbe51ea..0000000 --- a/genericparser/packages/views/ns_descriptor_views.py +++ /dev/null @@ -1,139 +0,0 @@ -# Copyright 2018 ZTE Corporation. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging - -from django.http import StreamingHttpResponse -from drf_yasg.utils import no_body, swagger_auto_schema -from rest_framework import status -from rest_framework.decorators import api_view -from rest_framework.response import Response - -from genericparser.packages.biz.ns_descriptor import NsDescriptor -from genericparser.packages.serializers.create_nsd_info_request import CreateNsdInfoRequestSerializer -from genericparser.packages.serializers.nsd_info import NsdInfoSerializer -from genericparser.packages.serializers.nsd_infos import NsdInfosSerializer -from genericparser.packages.views.common import validate_data -from genericparser.pub.exceptions import GenericparserException -from .common import view_safe_call_with_log - -logger = logging.getLogger(__name__) - - -@swagger_auto_schema( - method='GET', - operation_description="Query a NSD", - request_body=no_body, - responses={ - status.HTTP_200_OK: NsdInfoSerializer(), - status.HTTP_404_NOT_FOUND: 'NSDs do not exist', - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" - } -) -@swagger_auto_schema( - method='DELETE', - operation_description="Delete a NSD", - request_body=no_body, - responses={ - status.HTTP_204_NO_CONTENT: "No content", - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" - } -) -@api_view(http_method_names=['GET', 'DELETE']) -@view_safe_call_with_log(logger=logger) -def ns_info_rd(request, **kwargs): - nsd_info_id = kwargs.get("nsdInfoId") - if request.method == 'GET': - data = NsDescriptor().query_single(nsd_info_id) - nsd_info = validate_data(data, NsdInfoSerializer) - return Response(data=nsd_info.data, status=status.HTTP_200_OK) - if request.method == 'DELETE': - NsDescriptor().delete_single(nsd_info_id) - return Response(status=status.HTTP_204_NO_CONTENT) - - -@swagger_auto_schema( - method='POST', - operation_description="Create a NSD", - request_body=CreateNsdInfoRequestSerializer(), - responses={ - status.HTTP_201_CREATED: NsdInfoSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" - } -) -@swagger_auto_schema( - method='GET', - operation_description="Query multiple NSDs", - request_body=no_body, - responses={ - status.HTTP_200_OK: NsdInfosSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" - } -) -@api_view(http_method_names=['POST', 'GET']) -@view_safe_call_with_log(logger=logger) -def ns_descriptors_rc(request): - if request.method == 'POST': - create_nsd_info_request = validate_data(request.data, CreateNsdInfoRequestSerializer) - data = NsDescriptor().create(create_nsd_info_request.data) - nsd_info = validate_data(data, NsdInfoSerializer) - return Response(data=nsd_info.data, status=status.HTTP_201_CREATED) - - if request.method == 'GET': - nsdId = request.query_params.get("nsdId", None) - data = NsDescriptor().query_multiple(nsdId) - nsd_infos = validate_data(data, NsdInfosSerializer) - return Response(data=nsd_infos.data, status=status.HTTP_200_OK) - - -@swagger_auto_schema( - method='PUT', - operation_description="Upload NSD content", - request_body=no_body, - responses={ - status.HTTP_204_NO_CONTENT: 'PNFD file', - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" - } -) -@swagger_auto_schema( - method='GET', - operation_description="Download NSD content", - request_body=no_body, - responses={ - status.HTTP_204_NO_CONTENT: "No content", - status.HTTP_404_NOT_FOUND: 'NSD does not exist.', - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" - } -) -@api_view(http_method_names=['PUT', 'GET']) -@view_safe_call_with_log(logger=logger) -def nsd_content_ru(request, **kwargs): - nsd_info_id = kwargs.get("nsdInfoId") - if request.method == 'PUT': - files = request.FILES.getlist('file') - try: - local_file_name = NsDescriptor().upload(nsd_info_id, files[0]) - NsDescriptor().parse_nsd_and_save(nsd_info_id, local_file_name) - return Response(data=None, status=status.HTTP_204_NO_CONTENT) - except GenericparserException as e: - NsDescriptor().handle_upload_failed(nsd_info_id) - raise e - except Exception as e: - NsDescriptor().handle_upload_failed(nsd_info_id) - raise e - - if request.method == 'GET': - 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 deleted file mode 100644 index e0576c3..0000000 --- a/genericparser/packages/views/nsdm_subscription_views.py +++ /dev/null @@ -1,127 +0,0 @@ -# Copyright (C) 2019 Verizon. All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging - -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 -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__) - - -def validate_data(data, serializer): - serialized_data = serializer(data=data) - if not serialized_data.is_valid(): - logger.error('Data validation failed.') - raise NsdmBadRequestException(serialized_data.errors) - return serialized_data - - -@swagger_auto_schema( - method='POST', - operation_description="Create Subscription for NSD Management", - request_body=NsdmSubscriptionRequestSerializer(), - responses={ - status.HTTP_201_CREATED: NsdmSubscriptionSerializer, - status.HTTP_303_SEE_OTHER: ProblemDetailsSerializer(), - status.HTTP_400_BAD_REQUEST: ProblemDetailsSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() - } -) -@swagger_auto_schema( - method='GET', - operation_description="Query subscriptions for Nsd Management", - request_body=no_body, - responses={ - status.HTTP_200_OK: NsdmSubscriptionsSerializer(), - status.HTTP_400_BAD_REQUEST: ProblemDetailsSerializer(), - status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer(), - } -) -@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) - nsdm_subscription_request = \ - validate_data(request.data, - NsdmSubscriptionRequestSerializer) - subscription = NsdmSubscription().create( - nsdm_subscription_request.data) - validate_data(subscription, NsdmSubscriptionSerializer) - return Response(data=subscription, status=status.HTTP_201_CREATED) - - if request.method == 'GET': - logger.debug("Subscription Notification GET %s" % request.query_params) - 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( - method='GET', - operation_description="Query subscriptions for Nsd Management", - request_body=no_body, - responses={ - status.HTTP_200_OK: NsdmSubscriptionSerializer(), - status.HTTP_400_BAD_REQUEST: ProblemDetailsSerializer(), - status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() - } -) -@swagger_auto_schema( - method='DELETE', - operation_description="Delete subscription for Nsd Management", - request_body=no_body, - responses={ - status.HTTP_204_NO_CONTENT: 'No_Content', - status.HTTP_400_BAD_REQUEST: ProblemDetailsSerializer(), - status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() - } -) -@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': - 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': - 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 deleted file mode 100644 index 7abd8ad..0000000 --- a/genericparser/packages/views/pnf_descriptor_views.py +++ /dev/null @@ -1,166 +0,0 @@ -# Copyright 2018 ZTE Corporation. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging - -from django.http import StreamingHttpResponse -from drf_yasg.utils import no_body, swagger_auto_schema -from rest_framework import status -from rest_framework.decorators import api_view -from rest_framework.response import Response - -from genericparser.packages.biz.pnf_descriptor import PnfDescriptor -from genericparser.packages.serializers.create_pnfd_info_request import CreatePnfdInfoRequestSerializer -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.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 - -logger = logging.getLogger(__name__) - - -@swagger_auto_schema( - method='GET', - operation_description="Query a PNFD", - request_body=no_body, - responses={ - status.HTTP_200_OK: PnfdInfoSerializer(), - status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() - } -) -@swagger_auto_schema( - method='DELETE', - operation_description="Delete a PNFD", - request_body=no_body, - responses={ - status.HTTP_204_NO_CONTENT: "No content", - status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() - } -) -@api_view(http_method_names=['GET', 'DELETE']) -@view_safe_call_with_log(logger=logger) -def pnfd_info_rd(request, **kwargs): # TODO - pnfd_info_id = kwargs.get('pnfdInfoId') - if request.method == 'GET': - logger.debug("Query an individual PNF descriptor> %s" % request.data) - data = PnfDescriptor().query_single(pnfd_info_id) - pnfd_info = validate_data(data, PnfdInfoSerializer) - return Response(data=pnfd_info.data, status=status.HTTP_200_OK) - - if request.method == 'DELETE': - logger.debug("Delete an individual PNFD resource> %s" % request.data) - PnfDescriptor().delete_single(pnfd_info_id) - return Response(data=None, status=status.HTTP_204_NO_CONTENT) - - -@swagger_auto_schema( - method='POST', - operation_description="Create a PNFD", - request_body=CreatePnfdInfoRequestSerializer(), - responses={ - status.HTTP_201_CREATED: PnfdInfoSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() - } -) -@swagger_auto_schema( - method='GET', - operation_description="Query multiple PNFDs", - request_body=no_body, - responses={ - status.HTTP_200_OK: PnfdInfosSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() - } -) -@api_view(http_method_names=['POST', 'GET']) -@view_safe_call_with_log(logger=logger) -def pnf_descriptors_rc(request): - if request.method == 'POST': - create_pnfd_info_request = validate_data(request.data, CreatePnfdInfoRequestSerializer) - data = PnfDescriptor().create(create_pnfd_info_request.data) - pnfd_info = validate_data(data, PnfdInfoSerializer) - return Response(data=pnfd_info.data, status=status.HTTP_201_CREATED) - - if request.method == 'GET': - data = PnfDescriptor().query_multiple(request) - pnfd_infos = validate_data(data, PnfdInfosSerializer) - return Response(data=pnfd_infos.data, status=status.HTTP_200_OK) - - -@swagger_auto_schema( - method='PUT', - operation_description="Upload PNFD content", - request_body=no_body, - responses={ - status.HTTP_204_NO_CONTENT: "No content", - status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() - } -) -@swagger_auto_schema( - method='GET', - operation_description="Fetch PNFD content", - request_body=no_body, - responses={ - status.HTTP_204_NO_CONTENT: 'PNFD file', - status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() - } -) -@api_view(http_method_names=['PUT', 'GET']) -@view_safe_call_with_log(logger=logger) -def pnfd_content_ru(request, **kwargs): - pnfd_info_id = kwargs.get("pnfdInfoId") - if request.method == 'PUT': - files = request.FILES.getlist('file') - try: - 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 Exception as e: - PnfDescriptor().handle_upload_failed(pnfd_info_id) - raise e - - if request.method == 'GET': - file_iterator = PnfDescriptor().download(pnfd_info_id) - return StreamingHttpResponse(file_iterator, status=status.HTTP_200_OK) - - -@swagger_auto_schema( - method='POST', - operation_description="Parse PNF model", - request_body=ParseModelRequestSerializer, - responses={ - status.HTTP_202_ACCEPTED: ParseModelResponseSerializer, - status.HTTP_500_INTERNAL_SERVER_ERROR: InternalErrorRequestSerializer}) -@api_view(http_method_names=['POST']) -def pnf_model_parser(request, *args, **kwargs): - csar_id = ignore_case_get(request.data, "csarId") - inputs = ignore_case_get(request.data, "inputs") - logger.debug( - "Enter %s, csar_id=%s, inputs=%s", - fun_name(), - csar_id, - inputs) - ret = PnfDescriptor().parse_pnfd(csar_id, inputs) - logger.info("Leave %s, Return value is %s", fun_name(), ret) - if ret[0] != 0: - return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) - response = validate_data(ret[1], ParseModelResponseSerializer) - return Response(data=response.data, status=status.HTTP_202_ACCEPTED) diff --git a/genericparser/packages/views/vnf_package_artifact_views.py b/genericparser/packages/views/vnf_package_artifact_views.py deleted file mode 100644 index 164db6c..0000000 --- a/genericparser/packages/views/vnf_package_artifact_views.py +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright (C) 2019 Verizon. All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging - -from drf_yasg.utils import swagger_auto_schema -from rest_framework import status -from rest_framework.views import APIView -from django.http import FileResponse - -from genericparser.packages.serializers.response import ProblemDetailsSerializer -from genericparser.packages.biz.vnf_pkg_artifacts import FetchVnfPkgArtifact -from .common import view_safe_call_with_log - -logger = logging.getLogger(__name__) - -VALID_FILTERS = [ - "callbackUri", - "notificationTypes", - "vnfdId", - "vnfPkgId", - "operationalState", - "usageState" -] - - -class FetchVnfPkgmArtifactsView(APIView): - - @swagger_auto_schema( - responses={ - status.HTTP_200_OK: "HTTP_200_OK", - status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() - } - ) - @view_safe_call_with_log(logger=logger) - def get(self, request, vnfPkgId, artifactPath): - logger.debug("FetchVnfPkgmArtifactsView--get::> ") - - resp_data = FetchVnfPkgArtifact().fetch(vnfPkgId, artifactPath) - response = FileResponse(resp_data) - - return response diff --git a/genericparser/packages/views/vnf_package_subscription_views.py b/genericparser/packages/views/vnf_package_subscription_views.py deleted file mode 100644 index 135b625..0000000 --- a/genericparser/packages/views/vnf_package_subscription_views.py +++ /dev/null @@ -1,121 +0,0 @@ -# Copyright (C) 2019 Verizon. All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging - -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 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 -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 VnfPkgSubscriptionException -from genericparser.pub.exceptions import BadRequestException - -from .common import view_safe_call_with_log - -logger = logging.getLogger(__name__) - -VALID_FILTERS = [ - "callbackUri", - "notificationTypes", - "vnfdId", - "vnfPkgId", - "operationalState", - "usageState" -] - - -class CreateQuerySubscriptionView(APIView): - - @swagger_auto_schema( - request_body=PkgmSubscriptionRequestSerializer, - responses={ - status.HTTP_201_CREATED: PkgmSubscriptionSerializer(), - 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) - - 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={ - status.HTTP_200_OK: PkgmSubscriptionSerializer(), - status.HTTP_400_BAD_REQUEST: ProblemDetailsSerializer(), - 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) - - 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) - - subscriptions_serializer = PkgmSubscriptionsSerializer(data=resp_data) - if not subscriptions_serializer.is_valid(): - raise VnfPkgSubscriptionException(subscriptions_serializer.errors) - - return Response(data=subscriptions_serializer.data, status=status.HTTP_200_OK) - - -class QueryTerminateSubscriptionView(APIView): - - @swagger_auto_schema( - responses={ - status.HTTP_200_OK: PkgmSubscriptionSerializer(), - status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(), - 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) - - 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={ - status.HTTP_204_NO_CONTENT: "", - status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(), - 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) - - 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 deleted file mode 100644 index bfb1224..0000000 --- a/genericparser/packages/views/vnf_package_views.py +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2018 ZTE Corporation. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging - -from django.http import StreamingHttpResponse -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.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 -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__) - - -@swagger_auto_schema( - method="GET", - operation_description="Query multiple VNF package resource", - request_body=no_body, - responses={ - status.HTTP_200_OK: VnfPkgInfosSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" - } -) -@swagger_auto_schema( - method="POST", - operation_description="Create an individual VNF package resource", - request_body=CreateVnfPkgInfoRequestSerializer, - responses={ - status.HTTP_201_CREATED: VnfPkgInfoSerializer(), - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" - } -) -@api_view(http_method_names=["GET", "POST"]) -@view_safe_call_with_log(logger=logger) -def vnf_packages_rc(request): - if request.method == 'GET': - logger.debug("Query VNF packages> %s" % request.data) - data = VnfPackage().query_multiple() - vnf_pkg_infos = validate_data(data, VnfPkgInfosSerializer) - return Response(data=vnf_pkg_infos.data, status=status.HTTP_200_OK) - - if request.method == 'POST': - logger.debug("Create VNF package> %s" % request.data) - 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) - - -@swagger_auto_schema( - method='PUT', - operation_description="Upload VNF package content", - request_body=no_body, - responses={ - status.HTTP_202_ACCEPTED: "Successfully", - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" - } -) -@swagger_auto_schema( - method="GET", - operation_description="Fetch VNF package content", - request_body=no_body, - responses={ - status.HTTP_200_OK: VnfPkgInfosSerializer(), - status.HTTP_404_NOT_FOUND: "VNF package does not exist", - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" - } -) -@api_view(http_method_names=["PUT", "GET"]) -@view_safe_call_with_log(logger=logger) -def package_content_ru(request, **kwargs): - vnf_pkg_id = kwargs.get("vnfPkgId") - if request.method == "PUT": - logger.debug("Upload VNF package %s" % vnf_pkg_id) - files = request.FILES.getlist('file') - try: - 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 Exception as e: - handle_upload_failed(vnf_pkg_id) - raise e - - if request.method == "GET": - 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) - - -@swagger_auto_schema( - method='POST', - operation_description="Upload VNF package content from uri", - request_body=UploadVnfPackageFromUriRequestSerializer, - responses={ - status.HTTP_202_ACCEPTED: "Successfully", - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" - } -) -@api_view(http_method_names=['POST']) -@view_safe_call_with_log(logger=logger) -def upload_from_uri_c(request, **kwargs): - vnf_pkg_id = kwargs.get("vnfPkgId") - try: - 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 Exception as e: - handle_upload_failed(vnf_pkg_id) - raise e - - -@swagger_auto_schema( - method='GET', - operation_description="Query an individual VNF package resource", - request_body=no_body, - responses={ - status.HTTP_200_OK: VnfPkgInfoSerializer(), - status.HTTP_404_NOT_FOUND: "VNF package does not exist", - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" - } -) -@swagger_auto_schema( - method='DELETE', - operation_description="Delete an individual VNF package resource", - request_body=no_body, - responses={ - status.HTTP_204_NO_CONTENT: "No content", - status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" - } -) -@api_view(http_method_names=['GET', 'DELETE']) -@view_safe_call_with_log(logger=logger) -def vnf_package_rd(request, **kwargs): - vnf_pkg_id = kwargs.get("vnfPkgId") - if request.method == 'GET': - logger.debug("Query an individual VNF package> %s" % request.data) - data = VnfPackage().query_single(vnf_pkg_id) - vnf_pkg_info = validate_data(data, VnfPkgInfoSerializer) - return Response(data=vnf_pkg_info.data, status=status.HTTP_200_OK) - - if request.method == 'DELETE': - logger.debug("Delete an individual VNF package> %s" % request.data) - VnfPackage().delete_vnf_pkg(vnf_pkg_id) - return Response(data=None, status=status.HTTP_204_NO_CONTENT) |