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()
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
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)
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)
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