Source code for swh.objstorage.factory
# Copyright (C) 2016-2025 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
from swh.core.config import get_swh_backend_module
from swh.objstorage.interface import ObjStorageInterface
from swh.objstorage.objstorage import ObjStorage
__all__ = ["get_objstorage", "ObjStorage"]
[docs]
def get_objstorage(cls: str, **kwargs) -> ObjStorageInterface:
"""Create an ObjStorage using the given implementation class.
Args:
cls: objstorage class unique key declared in the
swh.objstorage.classes entry point.
kwargs: arguments for the required class of objstorage
that must match exactly the one in the `__init__` method of the
class.
Returns:
subclass of ObjStorage that match the given `storage_class` argument.
Raises:
ValueError: if the given storage class is not a valid objstorage
key.
"""
_, ObjStorage = get_swh_backend_module("objstorage", cls)
assert ObjStorage is not None
check_config = kwargs.pop("check_config", {})
objstorage = ObjStorage(**kwargs)
if check_config:
if not objstorage.check_config(**check_config):
raise EnvironmentError("objstorage check config failed")
return objstorage