From: fengyuanxing Date: Fri, 26 Jan 2018 03:04:23 +0000 (+0800) Subject: Refactor code adding functon to deal with error X-Git-Tag: v1.1.0~69 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=71f10ccb23f5338f5a57800d71de2ba6cccc5c35;p=vfc%2Fnfvo%2Fcatalog.git Refactor code adding functon to deal with error Change-Id: Iece103a960de2fb36aa20ceace5a102c5f1254d1 Issue-ID: VFC-685 Signed-off-by: fengyuanxing --- diff --git a/catalog/packages/views.py b/catalog/packages/views.py index a0d0d13d..5a5a906f 100644 --- a/catalog/packages/views.py +++ b/catalog/packages/views.py @@ -25,7 +25,6 @@ from catalog.packages import ns_package from drf_yasg import openapi from drf_yasg.utils import no_body, swagger_auto_schema -from catalog.serializers import NsPackageDistributeRequestSerializer from catalog.serializers import NsPackagesSerializer @@ -35,7 +34,7 @@ logger = logging.getLogger(__name__) @swagger_auto_schema( method='POST', operation_description="On distribute NS package", - request_body=NsPackageDistributeRequestSerializer(), + request_body=no_body, responses={ status.HTTP_202_ACCEPTED: openapi.Response( 'return code', @@ -61,18 +60,27 @@ logger = logging.getLogger(__name__) @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 = None, None + ret, normal_status, validation_response = None, None, None if request.method == 'GET': # Gets ns package list ret = ns_package.ns_get_csars() normal_status = status.HTTP_200_OK + responseSerializer = NsPackagesSerializer(data=ret[1]) + + if not responseSerializer.is_valid(): + validation_response = handleValidatonError( + responseSerializer, False) elif request.method == 'POST': # Distributes the package accroding to the given csarId csar_id = ignore_case_get(request.data, "csarId") logger.debug("csar_id is %s", csar_id) ret = ns_package.ns_on_distribute(csar_id) normal_status = status.HTTP_202_ACCEPTED + + if validation_response: + return validation_response + logger.debug("Leave %s, Return value is %s", fun_name(), ret) if ret[0] != 0: return Response( @@ -191,3 +199,17 @@ def vnf_model_parser(request, *args, **kwargs): 'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) return Response(data=ret[1], status=status.HTTP_202_ACCEPTED) + + +def handleValidatonError(base_serializer, is_request): + errormessage = base_serializer.errors + logger.error(errormessage) + + if is_request: + message = 'Invalid request' + else: + message = 'Invalid response' + logger.error(message) + + return Response(data={'error': errormessage}, + status=status.HTTP_500_INTERNAL_SERVER_ERROR) diff --git a/catalog/serializers.py b/catalog/serializers.py index 647301ed..7f7ead86 100644 --- a/catalog/serializers.py +++ b/catalog/serializers.py @@ -64,24 +64,24 @@ class NsPackageDistributeRequestSerializer(serializers.Serializer): class NsPackageInfoSerializer(serializers.Serializer): nsdId = serializers.CharField(help_text="NSD ID", required=True) nsPackageId = serializers.CharField( - help_text="NS Package ID", required=True) + help_text="NS Package ID", allow_blank=True, required=True) nsdProvider = serializers.CharField( - help_text="NSD Provider", required=True) - nsdVersion = serializers.CharField(help_text="NSD Version", required=True) - csarName = serializers.CharField(help_text="CSAR name", required=True) - nsdModel = serializers.CharField(help_text="NSD Model", required=True) + help_text="NSD Provider", allow_blank=True, required=True) + nsdVersion = serializers.CharField(help_text="NSD Version", allow_blank=True, required=True) + csarName = serializers.CharField(help_text="CSAR name", allow_blank=True, required=True) + nsdModel = serializers.CharField(help_text="NSD Model", allow_blank=True, required=True) downloadUrl = serializers.CharField( help_text="URL to download NSD Model", required=True) class NsPackageSerializer(serializers.Serializer): csarId = serializers.CharField(help_text="CSAR ID", required=True) - package_info = NsPackageInfoSerializer( + packageInfo = NsPackageInfoSerializer( help_text="NS Package Info", required=True) class NsPackagesSerializer(serializers.ListSerializer): - child = NsPackageSerializer(many=True) + child = NsPackageSerializer() class NfPackageDistributeRequestSerializer(serializers.Serializer):