from django.test import TestCase
from rest_framework import status
-from catalog.packages.biz.nf_package import NfDistributeThread, NfPkgDeleteThread
+from catalog.packages.biz.vnfpackage import NfDistributeThread, NfPkgDeleteThread
from catalog.pub.database.models import JobStatusModel, JobModel
from catalog.pub.database.models import VnfPackageModel
from catalog.pub.msapi import sdc
from catalog.pub.utils import restcall, toscaparser
from catalog.pub.config.config import CATALOG_ROOT_PATH
-from catalog.packages.biz.nf_package import VnfpkgUploadThread
+from catalog.packages.biz.vnfpackage import VnfpkgUploadThread
class MockReq():
from rest_framework.decorators import api_view
from rest_framework.response import Response
-from catalog.packages.biz import nf_package, ns_package
+from catalog.packages.biz import vnfpackage, ns_package
from catalog.packages.serializers.catalog_serializers import InternalErrorRequestSerializer
from catalog.packages.serializers.catalog_serializers import NfPackageDistributeRequestSerializer
from catalog.packages.serializers.catalog_serializers import NfPackageSerializer
request.method)
ret, normal_status, response_serializer, validation_error = None, None, None, None
if request.method == 'GET':
- ret = nf_package.nf_get_csars()
+ ret = vnfpackage.nf_get_csars()
normal_status = status.HTTP_200_OK
response_serializer = NfPackagesSerializer(data=ret[1])
elif request.method == 'POST':
vim_ids = ignore_case_get(request_serivalizer.data, "vimIds")
lab_vim_id = ignore_case_get(request_serivalizer.data, "labVimId")
job_id = str(uuid.uuid4())
- nf_package.NfDistributeThread(
+ vnfpackage.NfDistributeThread(
csar_id, vim_ids, lab_vim_id, job_id).start()
ret = [0, {"jobId": job_id}]
normal_status = status.HTTP_202_ACCEPTED
ret, normal_status, response_serializer, validation_error = None, None, None, None
if request.method == 'GET':
- ret = nf_package.nf_get_csar(csar_id)
+ ret = vnfpackage.nf_get_csar(csar_id)
normal_status = status.HTTP_200_OK
response_serializer = NfPackageSerializer(data=ret[1])
elif request.method == 'DELETE':
job_id = str(uuid.uuid4())
- nf_package.NfPkgDeleteThread(csar_id, job_id).start()
+ vnfpackage.NfPkgDeleteThread(csar_id, job_id).start()
ret = [0, {"jobId": job_id}]
normal_status = status.HTTP_202_ACCEPTED
response_serializer = PostJobResponseSerializer(data=ret[1])
fun_name(),
csar_id,
inputs)
- ret = nf_package.parse_vnfd(csar_id, inputs)
+ ret = vnfpackage.parse_vnfd(csar_id, inputs)
logger.info("Leave %s, Return value is %s", fun_name(), ret)
if ret[0] != 0:
return Response(
import traceback
import logging
+import os
+
+from catalog.pub.config.config import CATALOG_ROOT_PATH
from drf_yasg.utils import swagger_auto_schema, no_body
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from catalog.pub.exceptions import CatalogException
+from catalog.packages.serializers.upload_vnf_pkg_from_uri_req import UploadVnfPackageFromUriRequestSerializer
from catalog.packages.serializers.create_vnf_pkg_info_req import CreateVnfPkgInfoRequestSerializer
from catalog.packages.serializers.vnf_pkg_info import VnfPkgInfoSerializer
-from catalog.packages.biz.vnf_package import create_vnf_pkg, query_multiple
+from catalog.packages.biz.vnf_package import create_vnf_pkg, query_multiple, VnfpkgUploadThread
logger = logging.getLogger(__name__)
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(
+ method='PUT',
+ operation_description="Upload VNF package content",
+ request_body=no_body,
+ responses={
+ status.HTTP_202_ACCEPTED: "Successfully",
+ status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"
+ }
+)
+@api_view(http_method_names=['PUT'])
+def upload_vnf_pkg_content(request, vnfPkgId):
+ logger.debug("UploadVnf %s" % 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)
+ try:
+ 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)
+ except Exception as e:
+ logger.error("File upload exception.[%s:%s]" % (type(e), str(e)))
+ logger.error("%s", traceback.format_exc())
+ return Response(None, status.HTTP_202_ACCEPTED)
+
+
+@swagger_auto_schema(
+ method='POST',
+ operation_description="Upload VNF package content from uri",
+ request_body=UploadVnfPackageFromUriRequestSerializer,
+ responses={
+ status.HTTP_202_ACCEPTED: "Successfully",
+ status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"
+ }
+)
+@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
+ VnfpkgUploadThread(req_serializer.data, vnfPkgId).start()
+ return Response(None, status=status.HTTP_202_ACCEPTED)
+ except CatalogException:
+ logger.error(traceback.format_exc())
+ return Response(data={'error': 'Upload vnfPkg 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)
from rest_framework import status\r
from rest_framework.views import APIView\r
from rest_framework.response import Response\r
-from catalog.packages.biz.nf_package import VnfpkgUploadThread\r
+from catalog.packages.biz.vnfpackage import VnfpkgUploadThread\r
from catalog.pub.exceptions import CatalogException\r
from catalog.packages.serializers.upload_vnf_pkg_from_uri_req import UploadVnfPackageFromUriRequestSerializer\r
from catalog.packages.serializers.create_vnf_pkg_info_req import CreateVnfPkgInfoRequestSerializer\r
from catalog.packages.serializers.vnf_pkg_info import VnfPkgInfoSerializer\r
-from catalog.packages.biz.nf_package import create_vnf_pkg, query_multiple\r
+from catalog.packages.biz.vnfpackage import create_vnf_pkg, query_multiple\r
\r
logger = logging.getLogger(__name__)\r
\r