コード例 #1
0
    def upload_vnf_package_from_uri(self,
                                    context,
                                    vnf_package,
                                    address_information,
                                    user_name=None,
                                    password=None):

        body = {"address_information": address_information}
        (location, size, checksum, multihash,
         loc_meta) = glance_store.store_csar(context, vnf_package.id, body)

        vnf_package.onboarding_state = (
            fields.PackageOnboardingStateType.PROCESSING)

        vnf_package.algorithm = CONF.vnf_package.hashing_algorithm
        vnf_package.hash = multihash
        vnf_package.location_glance_store = location

        vnf_package.save()

        zip_path = glance_store.load_csar(vnf_package.id, location)
        vnf_data, flavours = csar_utils.load_csar_data(context.elevated(),
                                                       vnf_package.id,
                                                       zip_path)

        self._onboard_vnf_package(context, vnf_package, vnf_data, flavours)

        vnf_package.onboarding_state = (
            fields.PackageOnboardingStateType.ONBOARDED)
        vnf_package.operational_state = (
            fields.PackageOperationalStateType.ENABLED)

        vnf_package.save()
コード例 #2
0
    def create_package(cls, context, vnf_package_info):
        """vnf_package, create a vnf_package_vnfd table."""

        vnf_package_info = utils.convert_camelcase_to_snakecase(
            vnf_package_info)

        try:
            vnf_package = cls.__create_vnf_package(context, vnf_package_info)
        except Exception as exc:
            raise webob.exc.HTTPInternalServerError(explanation=exc)

        try:
            artifact_paths = cls._get_artifact_paths(vnf_package_info)
            vnf_package_binary = \
                nfvo_client.VnfPackageRequest.download_vnf_packages(
                    vnf_package.id, artifact_paths)
        except nfvo_client.UndefinedExternalSettingException as exc:
            raise webob.exc.HTTPNotFound(explanation=exc)
        except (nfvo_client.FaliedDownloadContentException, Exception) as exc:
            raise webob.exc.HTTPInternalServerError(explanation=exc)

        try:
            (location, size, _, multihash,
             _) = glance_store.store_csar(context, vnf_package.id,
                                          vnf_package_binary)

            cls.__update_vnf_package(vnf_package, location, size, multihash)
            cls.vnf_package_rpc_api.upload_vnf_package_content(
                context, vnf_package)
            vnf_package_vnfd = cls._get_vnf_package_vnfd(
                context, vnf_package_info.get('vnfd_id'))
        except Exception as exc:
            raise webob.exc.HTTPInternalServerError(explanation=exc)

        return vnf_package_vnfd
コード例 #3
0
    def upload_vnf_package_content(self, request, id, body):
        context = request.environ['tacker.context']
        context.can(vnf_package_policies.VNFPKGM % 'upload_package_content')

        # check if id is of type uuid format
        if not uuidutils.is_uuid_like(id):
            msg = _("Can not find requested vnf package: %s") % id
            raise webob.exc.HTTPNotFound(explanation=msg)

        try:
            vnf_package = vnf_package_obj.VnfPackage.get_by_id(
                request.context, id)
        except exceptions.VnfPackageNotFound:
            msg = _("Can not find requested vnf package: %s") % id
            raise webob.exc.HTTPNotFound(explanation=msg)

        if vnf_package.onboarding_state != \
           fields.PackageOnboardingStateType.CREATED:
            msg = _("VNF Package %(id)s onboarding state "
                    "is not %(onboarding)s")
            raise webob.exc.HTTPConflict(
                explanation=msg % {
                    "id": id,
                    "onboarding": fields.PackageOnboardingStateType.CREATED
                })

        vnf_package.onboarding_state = (
            fields.PackageOnboardingStateType.UPLOADING)

        vnf_package.save()

        try:
            (location, size, checksum, multihash,
             loc_meta) = glance_store.store_csar(context, id, body)
        except exceptions.UploadFailedToGlanceStore:
            with excutils.save_and_reraise_exception():
                vnf_package.onboarding_state = (
                    fields.PackageOnboardingStateType.CREATED)
                vnf_package.save()

        vnf_package.onboarding_state = (
            fields.PackageOnboardingStateType.PROCESSING)

        vnf_package.algorithm = CONF.vnf_package.hashing_algorithm
        vnf_package.hash = multihash
        vnf_package.location_glance_store = location

        vnf_package.save()

        # process vnf_package
        self.rpc_api.upload_vnf_package_content(context, vnf_package)
コード例 #4
0
ファイル: controller.py プロジェクト: shuwenCai/tacker
    def upload_vnf_package_content(self, request, id, body):
        context = request.environ['tacker.context']
        context.can(vnf_package_policies.VNFPKGM % 'upload_package_content')

        vnf_package = self._get_vnf_package(id, request)

        if vnf_package.onboarding_state != \
           fields.PackageOnboardingStateType.CREATED:
            msg = _("VNF Package %(id)s onboarding state "
                    "is not %(onboarding)s")
            raise webob.exc.HTTPConflict(
                explanation=msg % {
                    "id": id,
                    "onboarding": fields.PackageOnboardingStateType.CREATED
                })

        vnf_package.onboarding_state = (
            fields.PackageOnboardingStateType.UPLOADING)

        vnf_package.save()

        try:
            (location, size, checksum, multihash,
             loc_meta) = glance_store.store_csar(context, id, body)
        except exceptions.UploadFailedToGlanceStore:
            with excutils.save_and_reraise_exception():
                vnf_package.onboarding_state = (
                    fields.PackageOnboardingStateType.CREATED)
                vnf_package.save()

        vnf_package.onboarding_state = (
            fields.PackageOnboardingStateType.PROCESSING)

        vnf_package.algorithm = CONF.vnf_package.hashing_algorithm
        vnf_package.hash = multihash
        vnf_package.location_glance_store = location
        vnf_package.size = size
        vnf_package.save()

        # process vnf_package
        self.rpc_api.upload_vnf_package_content(context, vnf_package)
コード例 #5
0
 def __store_csar(cls, context, id, body):
     (location, size, checksum, multihash,
      loc_meta) = glance_store.store_csar(context, id, body)
     return location, size, checksum, multihash, loc_meta