Changeset View
Changeset View
Standalone View
Standalone View
swh/provenance/__init__.py
Show First 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | def get_provenance_storage(cls: str, **kwargs) -> ProvenanceStorageInterface: | ||||
Returns: | Returns: | ||||
an instance of storage object | an instance of storage object | ||||
Raises: | Raises: | ||||
:cls:`ValueError` if passed an unknown archive class. | :cls:`ValueError` if passed an unknown archive class. | ||||
""" | """ | ||||
if cls in ["local", "postgresql"]: | if cls in ["local", "postgresql"]: | ||||
from swh.core.db import BaseDb | |||||
from .postgresql.provenance import ProvenanceStoragePostgreSql | from .postgresql.provenance import ProvenanceStoragePostgreSql | ||||
if cls == "local": | if cls == "local": | ||||
warnings.warn( | warnings.warn( | ||||
'"local" class is deprecated for provenance storage, please ' | '"local" class is deprecated for provenance storage, please ' | ||||
'use "postgresql" class instead.', | 'use "postgresql" class instead.', | ||||
DeprecationWarning, | DeprecationWarning, | ||||
) | ) | ||||
conn = BaseDb.connect(**kwargs["db"]).conn | |||||
raise_on_commit = kwargs.get("raise_on_commit", False) | raise_on_commit = kwargs.get("raise_on_commit", False) | ||||
return ProvenanceStoragePostgreSql(conn, raise_on_commit) | return ProvenanceStoragePostgreSql( | ||||
raise_on_commit=raise_on_commit, **kwargs["db"] | |||||
) | |||||
elif cls == "mongodb": | elif cls == "mongodb": | ||||
from pymongo import MongoClient | |||||
from .mongo.backend import ProvenanceStorageMongoDb | from .mongo.backend import ProvenanceStorageMongoDb | ||||
dbname = kwargs["db"].pop("dbname") | engine = kwargs.get("engine", "pymongo") | ||||
db = MongoClient(**kwargs["db"]).get_database(dbname) | return ProvenanceStorageMongoDb(engine=engine, **kwargs["db"]) | ||||
return ProvenanceStorageMongoDb(db) | |||||
raise ValueError | raise ValueError |