import json
import os
import mock
+import urllib2
from rest_framework.test import APIClient
from django.test import TestCase
from rest_framework import status
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
+
+
+class MockReq():
+ def read(self):
+ return "1"
+
+ def close(self):
+ pass
class TestNfPackage(TestCase):
data = {'file': open(os.path.join(CATALOG_ROOT_PATH, "empty.txt"), "rb")}
response = self.client.put("/api/vnfpkgm/v1/vnf_packages/222/package_content", data=data)
self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED)
+
+ @mock.patch.object(urllib2, 'urlopen')
+ def test_upload_nf_pkg(self, mock_urlopen):
+ req_data = {"addressInformation": "https://127.0.0.1:1234/sdc/v1/hss.csar"}
+ mock_urlopen.return_value = MockReq()
+ vnfPkgId = "222"
+ VnfpkgUploadThread(req_data, vnfPkgId).run()
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.pub.exceptions import CatalogException\r
+from catalog.packages.serializers.upload_vnf_pkg_from_uri_req import UploadVnfPackageFromUriRequestSerializer\r
\r
logger = logging.getLogger(__name__)\r
\r
return None\r
\r
@swagger_auto_schema(\r
- # request_body=CreateVnfReqSerializer(),\r
+ request_body=UploadVnfPackageFromUriRequestSerializer(),\r
responses={\r
- # status.HTTP_201_CREATED: CreateVnfRespSerializer(),\r
+ status.HTTP_202_ACCEPTED: "Successfully",\r
status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"\r
}\r
)\r
- def post(self, request):\r
- # TODO\r
- return None\r
+ def post(self, request, vnfPkgId):\r
+ try:\r
+ req_serializer = UploadVnfPackageFromUriRequestSerializer(data=request.data)\r
+ if not req_serializer.is_valid():\r
+ raise CatalogException\r
+ VnfpkgUploadThread(req_serializer.data, vnfPkgId).start()\r
+ return Response(None, status=status.HTTP_202_ACCEPTED)\r
+ except CatalogException:\r
+ logger.error(traceback.format_exc())\r
+ return Response(data={'error': 'Upload vnfPkg failed.'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)\r
+ except Exception as e:\r
+ logger.error(e.message)\r
+ logger.error(traceback.format_exc())\r
+ return Response(data={'error': 'unexpected exception'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)\r
\r
\r
class artifacts(APIView):\r