diff options
author | fengyuanxing <feng.yuanxing@zte.com.cn> | 2018-01-26 11:04:23 +0800 |
---|---|---|
committer | fengyuanxing <feng.yuanxing@zte.com.cn> | 2018-01-26 14:39:05 +0800 |
commit | 71f10ccb23f5338f5a57800d71de2ba6cccc5c35 (patch) | |
tree | c57c35911710f1e80df3a1de84eba06b634434e3 | |
parent | db14d92945a5b1400e98b28175b8ace00ccbe6cf (diff) |
Refactor code adding functon to deal with error
Change-Id: Iece103a960de2fb36aa20ceace5a102c5f1254d1
Issue-ID: VFC-685
Signed-off-by: fengyuanxing <feng.yuanxing@zte.com.cn>
-rw-r--r-- | catalog/packages/views.py | 28 | ||||
-rw-r--r-- | catalog/serializers.py | 14 |
2 files changed, 32 insertions, 10 deletions
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): |