import sys
import threading
import traceback
-import urllib2
-import uuid
from catalog.pub.config.config import CATALOG_ROOT_PATH, CATALOG_URL_PATH, MSB_SERVICE_IP
from catalog.pub.config.config import REG_TO_MSB_REG_PARAM
from catalog.pub.utils import fileutil
from catalog.pub.utils import toscaparser
from catalog.pub.utils.jobutil import JobUtil
-from catalog.pub.utils.values import ignore_case_get
logger = logging.getLogger(__name__)
return [0, ret]
-def create_vnf_pkg(data):
- user_defined_data = ignore_case_get(data, "userDefinedData")
- vnfPkgId = str(uuid.uuid4())
- VnfPackageModel.objects.create(
- vnfPackageId=vnfPkgId,
- onboardingState="CREATED",
- operationalState="DISABLED",
- usageState="NOT_IN_USE",
- userDefinedData=user_defined_data
- )
- data = {
- "id": vnfPkgId,
- "onboardingState": "CREATED",
- "operationalState": "DISABLED",
- "usageState": "NOT_IN_USE",
- "userDefinedData": user_defined_data,
- "_links": None
- }
- return data
-
-
-def query_multiple():
- # TODO
- data = {
- "id": "1",
- "onboardingState": "CREATED",
- "operationalState": "DISABLED",
- "usageState": "NOT_IN_USE",
- "userDefinedData": "1",
- "_links": None
- }
- return data
-
-
class NfDistributeThread(threading.Thread):
"""
Sdc NF Package Distribute
JobUtil.add_job_status(self.job_id, 100, "Delete CSAR(%s) successfully." % self.csar_id)
-class VnfpkgUploadThread(threading.Thread):
- def __init__(self, data, vnfPkgId):
- threading.Thread.__init__(self)
- self.vnfPkgId = vnfPkgId
- self.data = data
-
- def run(self):
- try:
- self.upload_vnfPkg_from_uri()
- except CatalogException as e:
- logger.error(e.message)
- except Exception as e:
- logger.error(e.message)
- logger.error(traceback.format_exc())
- logger.error(str(sys.exc_info()))
-
- def upload_vnfPkg_from_uri(self):
- logger.debug("UploadVnf %s" % self.vnfPkgId)
- uri = ignore_case_get(self.data, "addressInformation")
- upload_path = os.path.join(CATALOG_ROOT_PATH, self.vnfPkgId)
- if not os.path.exists(upload_path):
- os.makedirs(upload_path, 0o777)
- r = urllib2.Request(uri)
- req = urllib2.urlopen(r)
-
- upload_file_name = os.path.join(upload_path, os.path.basename(uri))
- save_file = open(upload_file_name, "wb")
- save_file.write(req.read())
- save_file.close()
- req.close()
-
-
class NfPackage(object):
"""
Actions for sdc nf package.
from django.conf.urls import url
-from catalog.packages.views.vnfpkg_views import package_content, upload_from_uri, vnf_packages
+from catalog.packages.views import vnf_package_views
from catalog.packages.views import (catalog_views, ns_descriptor_views,
nsd_content_views, pnf_descriptor_views,
pnfd_content_views)
# url(r'^api/nsd/v1/subscriptions', nsd_subscriptions.as_view(), name='subscriptions_rc'),
# url(r'^api/nsd/v1/subscriptions/(?P<subscriptionId>[0-9a-zA-Z\-\_]+)$', nsd_subscription.as_view(), name='subscription_rd'),
- url(r'^api/vnfpkgm/v1/vnf_packages$', vnf_packages.as_view(), name='vnf_packages_rc'),
+ url(r'^api/vnfpkgm/v1/vnf_packages$', vnf_package_views.vnf_packages_rc, name='vnf_packages_rc'),
# url(r'^api/vnfpkgm/v1/vnf_packages/(?P<vnfPkgId>[0-9a-zA-Z\-\_]+)$', vnf_package.as_view(), name='vnf_package_rd'),
# url(r'^api/vnfpkgm/v1/vnf_packages/(?P<vnfPkgId>[0-9a-zA-Z\-\_]+)/vnfd$', vnfd.as_view(), name='vnfd_r'),
url(r'^api/vnfpkgm/v1/vnf_packages/(?P<vnfPkgId>[0-9a-zA-Z\-\_]+)/package_content$',
- package_content.as_view(), name='package_content_ru'),
+ vnf_package_views.upload_vnf_pkg_content, name='package_content_ru'),
url(r'^api/vnfpkgm/v1/vnf_packages/(?P<vnfPkgId>[0-9a-zA-Z\-\_]+)/package_content/upload_from_uri$',
- upload_from_uri.as_view(), name='upload_from_uri_c'),
+ vnf_package_views.upload_vnf_pkg_from_uri, name='upload_from_uri_c'),
# url(r'^api/vnfpkgm/v1/vnf_packages/(?P<vnfPkgId>[0-9a-zA-Z\-\_]+)/artifacts/artifactPath$', artifacts.as_view(), name='artifacts_r'),
# url(r'^api/vnfpkgm/v1/subscriptions', vnfpkg_subscriptions.as_view(), name='subscriptions_rc'),
# url(r'^api/vnfpkgm/v1/subscriptions/(?P<subscriptionId>[0-9a-zA-Z\-\_]+)$', vnfpkg_subscription.as_view(), name='subscription_rd'),
# See the License for the specific language governing permissions and\r
# limitations under the License.\r
\r
-import os\r
-import traceback\r
import logging\r
-from catalog.pub.config.config import CATALOG_ROOT_PATH\r
+\r
from drf_yasg.utils import swagger_auto_schema\r
from rest_framework import status\r
from rest_framework.views import APIView\r
-from rest_framework.response import Response\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.vnfpackage import create_vnf_pkg, query_multiple\r
-\r
-logger = logging.getLogger(__name__)\r
\r
\r
-class vnf_packages(APIView):\r
- @swagger_auto_schema(\r
- responses={\r
- status.HTTP_200_OK: VnfPkgInfoSerializer(),\r
- status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"\r
- }\r
- )\r
- def get(self, request):\r
- logger.debug("Query VNF Packages> %s" % request.data)\r
- try:\r
- res = query_multiple()\r
- query_serializer = VnfPkgInfoSerializer(data=res)\r
- if not query_serializer.is_valid():\r
- raise CatalogException\r
- return Response(data=query_serializer.data, status=status.HTTP_200_OK)\r
- except CatalogException:\r
- logger.error(traceback.format_exc())\r
- return Response(data={'error': 'Querying 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
- @swagger_auto_schema(\r
- request_body=CreateVnfPkgInfoRequestSerializer(),\r
- responses={\r
- status.HTTP_201_CREATED: VnfPkgInfoSerializer(),\r
- status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"\r
- }\r
- )\r
- def post(self, request):\r
- logger.debug("CreateVnfPkg> %s" % request.data)\r
- try:\r
- req_serializer = CreateVnfPkgInfoRequestSerializer(data=request.data)\r
- if not req_serializer.is_valid():\r
- raise CatalogException\r
- res = create_vnf_pkg(req_serializer.data)\r
- create_vnf_pkg_resp_serializer = VnfPkgInfoSerializer(data=res)\r
- if not create_vnf_pkg_resp_serializer.is_valid():\r
- raise CatalogException\r
- return Response(data=create_vnf_pkg_resp_serializer.data, status=status.HTTP_201_CREATED)\r
- except CatalogException:\r
- logger.error(traceback.format_exc())\r
- return Response(data={'error': 'Creating 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
+logger = logging.getLogger(__name__)\r
\r
\r
class vnf_package(APIView):\r
return None\r
\r
\r
-class package_content(APIView):\r
- @swagger_auto_schema(\r
- responses={\r
- # status.HTTP_200_OK: Serializer(),\r
- status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"\r
- }\r
- )\r
- def get(self, request):\r
- # TODO\r
- return None\r
-\r
- @swagger_auto_schema(\r
- # request_body=CreateVnfReqSerializer(),\r
- responses={\r
- # status.HTTP_201_CREATED: CreateVnfRespSerializer(),\r
- status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"\r
- }\r
- )\r
- def post(self, request):\r
- # TODO\r
- return None\r
-\r
- def put(self, request, vnfPkgId):\r
- logger.debug("UploadVnf %s" % vnfPkgId)\r
- file_object = request.FILES.get('file')\r
- upload_path = os.path.join(CATALOG_ROOT_PATH, vnfPkgId)\r
- if not os.path.exists(upload_path):\r
- os.makedirs(upload_path, 0o777)\r
- try:\r
- upload_file_name = os.path.join(upload_path, file_object.name)\r
- with open(upload_file_name, 'wb+') as dest_file:\r
- for chunk in file_object.chunks():\r
- dest_file.write(chunk)\r
- except Exception as e:\r
- logger.error("File upload exception.[%s:%s]" % (type(e), str(e)))\r
- logger.error("%s", traceback.format_exc())\r
- return Response(None, status.HTTP_202_ACCEPTED)\r
-\r
-\r
-class upload_from_uri(APIView):\r
- @swagger_auto_schema(\r
- responses={\r
- # status.HTTP_200_OK: Serializer(),\r
- status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"\r
- }\r
- )\r
- def get(self, request):\r
- # TODO\r
- return None\r
-\r
- @swagger_auto_schema(\r
- request_body=UploadVnfPackageFromUriRequestSerializer(),\r
- responses={\r
- status.HTTP_202_ACCEPTED: "Successfully",\r
- status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"\r
- }\r
- )\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
@swagger_auto_schema(\r
responses={\r