def parse_vnfd_and_save(vnf_pkg_id, vnf_pkg_path):
+ vnf_pkg = VnfPackageModel.objects.filter(vnfPackageId=vnf_pkg_id)
+ vnf_pkg.update(onboardingState="PROCESSING")
vnfd_json = toscaparser.parse_vnfd(vnf_pkg_path)
vnfd = json.JSONDecoder().decode(vnfd_json)
vnf_pkg = VnfPackageModel.objects.filter(vnfPackageId=self.vnf_pkg_id)
if vnf_pkg[0].onboardingState != "CREATED":
raise CatalogException("VNF package (%s) is not created" % self.vnf_pkg_id)
+ vnf_pkg.update(onboardingState="UPLOADING")
uri = ignore_case_get(self.data, "addressInformation")
upload_path = os.path.join(CATALOG_ROOT_PATH, self.vnf_pkg_id)
if not os.path.exists(upload_path):
response['Content-Type'] = 'application/octet-stream'
response['Content-Disposition'] = 'attachment; filename=%s' % file_name.encode('utf-8')
return response
+
+
+def handle_upload_failed(vnf_pkg_id):
+ vnf_pkg = VnfPackageModel.objects.filter(vnfPackageId=vnf_pkg_id)
+ vnf_pkg.update(onboardingState="CREATED")
from catalog.packages.serializers.vnf_pkg_info import VnfPkgInfoSerializer
from catalog.packages.serializers.vnf_pkg_infos import VnfPkgInfosSerializer
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
+ query_single, delete_vnf_pkg, parse_vnfd_and_save, fetch_vnf_pkg, handle_upload_failed
from catalog.pub.database.models import VnfPackageModel
logger = logging.getLogger(__name__)
parse_vnfd_and_save(vnfPkgId, upload_file_name)
return Response(None, status=status.HTTP_202_ACCEPTED)
except CatalogException:
+ handle_upload_failed(vnfPkgId)
logger.error(traceback.format_exc())
return Response(data={'error': 'Upload VNF package failed.'},
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
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)
VnfPkgUploadThread(req_serializer.data, vnfPkgId).start()
return Response(None, status=status.HTTP_202_ACCEPTED)
except CatalogException:
+ handle_upload_failed(vnfPkgId)
logger.error(traceback.format_exc())
return Response(data={'error': 'Upload VNF package failed.'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
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)