Esempio n. 1
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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)
Esempio n. 6
0
 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)