Refactor code adding functon to deal with error 43/29243/2
authorfengyuanxing <feng.yuanxing@zte.com.cn>
Fri, 26 Jan 2018 03:04:23 +0000 (11:04 +0800)
committerfengyuanxing <feng.yuanxing@zte.com.cn>
Fri, 26 Jan 2018 06:39:05 +0000 (14:39 +0800)
Change-Id: Iece103a960de2fb36aa20ceace5a102c5f1254d1
Issue-ID: VFC-685
Signed-off-by: fengyuanxing <feng.yuanxing@zte.com.cn>
catalog/packages/views.py
catalog/serializers.py

index a0d0d13..5a5a906 100644 (file)
@@ -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)
index 647301e..7f7ead8 100644 (file)
@@ -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):