def populate_provisioning_directory( raw_files: Sequence[RawImageFile], provisioning_dir: Path ): """ Provisions provisioning_dir with the files associated using the given list of RawImageFile objects. Parameters ---------- raw_files: The list of RawImageFile that should be saved in the target directory. provisioning_dir: Path The path where to copy the files. Raises ------ ProvisioningError: Raised when not all files could be copied to the provisioning directory. """ provisioning_dir = Path(provisioning_dir) def copy_to_tmpdir(image_file: RawImageFile): staged_file = StagedAjaxFile(image_file.staged_file_id) if not staged_file.exists: raise ValueError( f"staged file {image_file.staged_file_id} does not exist" ) with open(provisioning_dir / staged_file.name, "wb") as dest_file: with staged_file.open() as src_file: BUFFER_SIZE = 0x10000 first = True while first or (len(buffer) >= BUFFER_SIZE): first = False buffer = src_file.read(BUFFER_SIZE) dest_file.write(buffer) exceptions_raised = 0 for raw_file in raw_files: try: copy_to_tmpdir(raw_file) except Exception as e: logger.exception( f"populate_provisioning_directory exception " f"for file: '{raw_file.filename}'" ) exceptions_raised += 1 if exceptions_raised > 0: raise ProvisioningError( f"{exceptions_raised} errors occurred during provisioning of the " f"image construction directory" )
def populate_provisioning_directory( raw_files: Sequence[RawImageFile], provisioning_dir: Path): """ Provisions provisioning_dir with the files associated using the given list of RawImageFile objects. Parameters ---------- raw_files: The list of RawImageFile that should be saved in the target directory. provisioning_dir: Path The path where to copy the files. Raises ------ ProvisioningError: Raised when not all files could be copied to the provisioning directory. """ provisioning_dir = Path(provisioning_dir) def copy_to_tmpdir(image_file: RawImageFile): staged_file = StagedAjaxFile(image_file.staged_file_id) if not staged_file.exists: raise ValueError( f"staged file {image_file.staged_file_id} does not exist") with open(provisioning_dir / staged_file.name, "wb") as dest_file: with staged_file.open() as src_file: BUFFER_SIZE = 0x10000 first = True while first or (len(buffer) >= BUFFER_SIZE): first = False buffer = src_file.read(BUFFER_SIZE) dest_file.write(buffer) exceptions_raised = 0 for raw_file in raw_files: try: copy_to_tmpdir(raw_file) except Exception as e: logger.exception( f"populate_provisioning_directory exception " f"for file: '{raw_file.filename}'") exceptions_raised += 1 if exceptions_raised > 0: raise ProvisioningError( f"{exceptions_raised} errors occurred during provisioning of the " f"image construction directory")