from catalog.packages.biz.vnf_package import create_vnf_pkg, query_multiple, VnfPkgUploadThread, \
query_single, delete_vnf_pkg, parse_vnfd_and_save, fetch_vnf_pkg, handle_upload_failed
from catalog.pub.database.models import VnfPackageModel
+from catalog.packages.views.ns_descriptor_views import validate_data
logger = logging.getLogger(__name__)
logger.debug("Query VNF packages> %s" % request.data)
try:
res = query_multiple()
- query_serializer = VnfPkgInfosSerializer(data=res)
- if not query_serializer.is_valid():
- raise CatalogException
+ query_serializer = validate_data(res, VnfPkgInfosSerializer)
return Response(data=query_serializer.data, status=status.HTTP_200_OK)
- except CatalogException:
- logger.error(traceback.format_exc())
- return Response(data={'error': 'Query VNF package failed.'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ except CatalogException as e:
+ logger.error(e.message)
+ error_msg = {'error': 'Query VNF package failed.'}
except Exception as e:
logger.error(e.message)
logger.error(traceback.format_exc())
- return Response(data={'error': 'unexpected exception'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ error_msg = {'error': 'unexpected exception'}
+ return Response(data=error_msg, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
if request.method == 'POST':
logger.debug("Create VNF package> %s" % request.data)
try:
- req_serializer = CreateVnfPkgInfoRequestSerializer(data=request.data)
- if not req_serializer.is_valid():
- raise CatalogException
+ req_serializer = validate_data(request.data, CreateVnfPkgInfoRequestSerializer)
res = create_vnf_pkg(req_serializer.data)
- create_vnf_pkg_resp_serializer = VnfPkgInfoSerializer(data=res)
- if not create_vnf_pkg_resp_serializer.is_valid():
- raise CatalogException
+ create_vnf_pkg_resp_serializer = validate_data(res, VnfPkgInfoSerializer)
return Response(data=create_vnf_pkg_resp_serializer.data, status=status.HTTP_201_CREATED)
- except CatalogException:
- logger.error(traceback.format_exc())
- return Response(data={'error': 'Create VNF package failed.'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ except CatalogException as e:
+ logger.error(e.message)
+ error_msg = {'error': 'Create VNF package failed.'}
except Exception as e:
logger.error(e.message)
logger.error(traceback.format_exc())
- return Response(data={'error': 'unexpected exception'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ error_msg = {'error': 'unexpected exception'}
+ return Response(data=error_msg, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
@swagger_auto_schema(
request_body=no_body,
responses={
status.HTTP_200_OK: VnfPkgInfosSerializer(),
+ status.HTTP_404_NOT_FOUND: "VNF package does not exist",
status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"
}
)
parse_vnfd_and_save(vnfPkgId, upload_file_name)
return Response(None, status=status.HTTP_202_ACCEPTED)
- except CatalogException:
+ except CatalogException as e:
handle_upload_failed(vnfPkgId)
- logger.error(traceback.format_exc())
- return Response(data={'error': 'Upload VNF package failed.'},
- status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ logger.debug(e.message)
+ error_msg = {'error': 'Upload VNF package failed.'}
except Exception as e:
handle_upload_failed(vnfPkgId)
logger.error(e.message)
logger.error(traceback.format_exc())
- return Response(data={'error': 'unexpected exception'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ error_msg = {'error': 'unexpected exception'}
+ return Response(data=error_msg, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
if request.method == "GET":
try:
response = fetch_vnf_pkg(request, vnfPkgId)
return response
- except CatalogException:
- logger.error(traceback.format_exc())
- return Response(data={'error': 'Fetch VNF package failed.'},
- status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ except VnfPkgNotFoundException as e:
+ logger.error(e.message)
+ return Response(data={'error': "VNF package does not exist"}, status=status.HTTP_404_NOT_FOUND)
+ except CatalogException as e:
+ logger.error(e.message)
+ error_msg = {'error': 'Fetch VNF package failed.'}
except Exception as e:
logger.error(e.message)
logger.error(traceback.format_exc())
- return Response(data={'error': 'unexpected exception'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ error_msg = {'error': 'unexpected exception'}
+ return Response(data=error_msg, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
@swagger_auto_schema(
@api_view(http_method_names=['POST'])
def upload_vnf_pkg_from_uri(request, vnfPkgId):
try:
- req_serializer = UploadVnfPackageFromUriRequestSerializer(data=request.data)
- if not req_serializer.is_valid():
- raise CatalogException
+ req_serializer = validate_data(request.data, UploadVnfPackageFromUriRequestSerializer)
VnfPkgUploadThread(req_serializer.data, vnfPkgId).start()
return Response(None, status=status.HTTP_202_ACCEPTED)
- except CatalogException:
+ except CatalogException as e:
handle_upload_failed(vnfPkgId)
- logger.error(traceback.format_exc())
- return Response(data={'error': 'Upload VNF package failed.'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ logger.debug(e.message)
+ error_msg = {'error': 'Upload VNF package failed.'}
except Exception as e:
handle_upload_failed(vnfPkgId)
logger.error(e.message)
logger.error(traceback.format_exc())
- return Response(data={'error': 'unexpected exception'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ error_msg = {'error': 'unexpected exception'}
+ return Response(data=error_msg, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
@swagger_auto_schema(
request_body=no_body,
responses={
status.HTTP_200_OK: VnfPkgInfoSerializer(),
+ status.HTTP_404_NOT_FOUND: "VNF package does not exist",
status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"
}
)
logger.debug("Query an individual VNF package> %s" % request.data)
try:
res = query_single(vnfPkgId)
- query_serializer = VnfPkgInfoSerializer(data=res)
- if not query_serializer.is_valid():
- logger.debug("Data validation failed.")
- raise CatalogException(query_serializer.error)
+ query_serializer = validate_data(res, VnfPkgInfoSerializer)
return Response(data=query_serializer.data, status=status.HTTP_200_OK)
except VnfPkgNotFoundException as e:
logger.error(e.message)
- return Response(data={'error': 'Query an individual VNF package failed.'}, status=status.HTTP_404_NOT_FOUND)
+ return Response(data={'error': "VNF package does not exist"}, status=status.HTTP_404_NOT_FOUND)
except CatalogException as e:
logger.error(e.message)
error_msg = {'error': 'Query an individual VNF package failed.'}
try:
delete_vnf_pkg(vnfPkgId)
return Response(data=None, status=status.HTTP_204_NO_CONTENT)
- except CatalogException:
- logger.error(traceback.format_exc())
- return Response(data={'error': 'Delete an individual VNF package failed.'},
- status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ except CatalogException as e:
+ logger.error(e.message)
+ error_msg = {'error': 'Delete an individual VNF package failed.'}
except Exception as e:
logger.error(e.message)
logger.error(traceback.format_exc())
- return Response(data={'error': 'unexpected exception'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ error_msg = {'error': 'unexpected exception'}
+ return Response(data=error_msg, status=status.HTTP_500_INTERNAL_SERVER_ERROR)