aboutsummaryrefslogtreecommitdiffstats
path: root/catalog/packages/views/vnf_package_views.py
diff options
context:
space:
mode:
Diffstat (limited to 'catalog/packages/views/vnf_package_views.py')
-rw-r--r--catalog/packages/views/vnf_package_views.py74
1 files changed, 49 insertions, 25 deletions
diff --git a/catalog/packages/views/vnf_package_views.py b/catalog/packages/views/vnf_package_views.py
index 7defc347..43ac26fa 100644
--- a/catalog/packages/views/vnf_package_views.py
+++ b/catalog/packages/views/vnf_package_views.py
@@ -27,7 +27,7 @@ from catalog.packages.serializers.create_vnf_pkg_info_req import CreateVnfPkgInf
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
+ query_single, delete_vnf_pkg, parse_vnfd_and_save, fetch_vnf_pkg
from catalog.pub.database.models import VnfPackageModel
logger = logging.getLogger(__name__)
@@ -98,32 +98,56 @@ def vnf_packages_rc(request):
status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"
}
)
-@api_view(http_method_names=['PUT'])
+@swagger_auto_schema(
+ method="GET",
+ operation_description="Fetch VNF package content",
+ request_body=no_body,
+ responses={
+ status.HTTP_200_OK: VnfPkgInfosSerializer(),
+ status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"
+ }
+)
+@api_view(http_method_names=["PUT", "GET"])
def upload_vnf_pkg_content(request, vnfPkgId):
- logger.debug("Upload VNF package %s" % vnfPkgId)
- try:
- vnf_pkg = VnfPackageModel.objects.filter(vnfPackageId=vnfPkgId)
- if vnf_pkg[0].onboardingState != "CREATED":
- raise CatalogException("VNF package (%s) is not created" % vnfPkgId)
- file_object = request.FILES.get('file')
- upload_path = os.path.join(CATALOG_ROOT_PATH, vnfPkgId)
- if not os.path.exists(upload_path):
- os.makedirs(upload_path, 0o777)
-
- upload_file_name = os.path.join(upload_path, file_object.name)
- with open(upload_file_name, 'wb+') as dest_file:
- for chunk in file_object.chunks():
- dest_file.write(chunk)
-
- parse_vnfd_and_save(vnfPkgId, upload_file_name)
- return Response(None, status=status.HTTP_202_ACCEPTED)
- except CatalogException:
+ if request.method == "PUT":
+ logger.debug("Upload VNF package %s" % vnfPkgId)
+ try:
+ vnf_pkg = VnfPackageModel.objects.filter(vnfPackageId=vnfPkgId)
+ if vnf_pkg[0].onboardingState != "CREATED":
+ raise CatalogException("VNF package (%s) is not created" % vnfPkgId)
+ file_object = request.FILES.get('file')
+ upload_path = os.path.join(CATALOG_ROOT_PATH, vnfPkgId)
+ if not os.path.exists(upload_path):
+ os.makedirs(upload_path, 0o777)
+
+ upload_file_name = os.path.join(upload_path, file_object.name)
+ with open(upload_file_name, 'wb+') as dest_file:
+ for chunk in file_object.chunks():
+ dest_file.write(chunk)
+
+ parse_vnfd_and_save(vnfPkgId, upload_file_name)
+ return Response(None, status=status.HTTP_202_ACCEPTED)
+ except CatalogException:
+ logger.error(traceback.format_exc())
+ return Response(data={'error': 'Upload VNF package failed.'},
+ status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ except Exception as e:
+ logger.error(e.message)
logger.error(traceback.format_exc())
- return Response(data={'error': 'Upload VNF package failed.'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
- 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)
+ return Response(data={'error': 'unexpected exception'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+
+ if request.method == "GET":
+ try:
+ response = fetch_vnf_pkg(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 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)
@swagger_auto_schema(