summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfengyuanxing <feng.yuanxing@zte.com.cn>2018-01-26 11:04:23 +0800
committerfengyuanxing <feng.yuanxing@zte.com.cn>2018-01-26 14:39:05 +0800
commit71f10ccb23f5338f5a57800d71de2ba6cccc5c35 (patch)
treec57c35911710f1e80df3a1de84eba06b634434e3
parentdb14d92945a5b1400e98b28175b8ace00ccbe6cf (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.py28
-rw-r--r--catalog/serializers.py14
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):