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
@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',
@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(
'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)
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):