class Storage: storage = None original_file_container = None rebuild_file_container = None original_path = 'original' rebuild_path = 'rebuild' # Container Behavior need to be changed for S3/Minio so that we can reuse a single BUCKET def __init__(self): self.storage = LocalDriver(key='gw-file-storage') self.original_file_container = self.storage.create_container(self.original_path) self.rebuild_file_container = self.storage.create_container(self.rebuild_path) def get_original_file(self, uuid: str): return self.__get_file(uuid, self.original_file_container) def get_original_file_name(self, uuid: str): try: file_blob = self.original_file_container.get_blob(uuid) return file_blob.meta_data.get('file_name') except NotFoundError: return None def save_original_file(self, uuid: str, file: BytesIO, content_type: str, file_name: str, metadata=None): if metadata is None: metadata = {} metadata['file_name'] = file_name self.original_file_container.upload_blob(file, blob_name=uuid, content_type=content_type, meta_data=metadata) def check_original_exist(self, uuid: str): return self.__check_file_exist(uuid, self.original_file_container) def save_rebuild_file(self, uuid: str, file: BytesIO, content_type: str, metadata=None): self.rebuild_file_container.upload_blob(file, blob_name=uuid, content_type=content_type, meta_data=metadata) def is_rebuild_complete(self, uuid: str): return self.__check_file_exist(uuid, self.rebuild_file_container) def get_rebuild_file(self, uuid: str): return self.__get_file(uuid, self.rebuild_file_container) def __get_file(self, uuid: str, container: Container): if self.__check_file_exist(uuid, container): file_blob = container.get_blob(uuid) with open(self.storage.base_path + '/' + file_blob.path, 'rb') as f: return f.read(), file_blob.meta_data return None def __check_file_exist(self, uuid: str, container: Container): try: container.get_blob(uuid) return True except NotFoundError: return False
def test_driver_validate_credentials(): driver = LocalDriver(key=LOCAL_KEY) assert driver.validate_credentials() is None driver = LocalDriver(key='/') with pytest.raises(CredentialsError) as excinfo: driver.validate_credentials() assert excinfo.value assert excinfo.value.message
def test_driver_validate_credentials(): if os.name == "nt": pytest.skip("skipping Windows incompatible test") driver = LocalDriver(key=settings.LOCAL_KEY) assert driver.validate_credentials() is None driver = LocalDriver(key="/") with pytest.raises(CredentialsError) as excinfo: driver.validate_credentials() assert excinfo.value assert excinfo.value.message
def storage(): driver = LocalDriver(key=settings.LOCAL_KEY, secret=settings.LOCAL_SECRET) yield driver for container in driver: # cleanup if container.name.startswith(settings.CONTAINER_PREFIX): for blob in container: blob.delete() container.delete() shutil.rmtree(settings.LOCAL_KEY)
def storage(): driver = LocalDriver(key=LOCAL_KEY, secret=LOCAL_SECRET) yield driver for container in driver: # cleanup if container.name.startswith(CONTAINER_PREFIX): for blob in container: blob.delete() container.delete() os.rmdir(LOCAL_KEY)
def __init__(self): self.storage = LocalDriver(key='gw-file-storage') self.original_file_container = self.storage.create_container(self.original_path) self.rebuild_file_container = self.storage.create_container(self.rebuild_path)