diff --git a/swh/storage/__init__.py b/swh/storage/__init__.py index 4b870c3f..3582630c 100644 --- a/swh/storage/__init__.py +++ b/swh/storage/__init__.py @@ -1,3 +1,27 @@ from . import storage Storage = storage.Storage + + +def get_storage(storage_class, storage_args): + """ + Get a storage object of class `storage_class` with arguments + `storage_args`. + + Args: + storage_class: one of 'remote_storage', 'local_storage' + storage_args: the arguments to pass to the storage class + Returns: + an instance of swh.storage.Storage (either local or remote) + Raises: + ValueError if passed an unknown storage_class. + """ + + if storage_class == 'remote_storage': + from .storage.api.client import RemoteStorage as Storage + elif storage_class == 'local_storage': + from .storage import Storage + else: + raise ValueError('Unknown storage class `%s`' % storage_class) + + return Storage(*storage_args)