diff --git a/requirements-test.txt b/requirements-test.txt --- a/requirements-test.txt +++ b/requirements-test.txt @@ -2,4 +2,3 @@ pytest-mongodb swh.loader.git >= 0.8 swh.journal >= 0.8 -types-Werkzeug diff --git a/swh/provenance/__init__.py b/swh/provenance/__init__.py --- a/swh/provenance/__init__.py +++ b/swh/provenance/__init__.py @@ -92,19 +92,4 @@ engine = kwargs.get("engine", "pymongo") return ProvenanceStorageMongoDb(engine=engine, **kwargs["db"]) - elif cls in ["remote", "rpcapi"]: - from .api.client import ProvenanceStorageRPCClient - - if cls == "remote": - warnings.warn( - '"remote" class is deprecated for provenance storage, please ' - 'use "rpcapi" class instead.', - DeprecationWarning, - ) - - rpc_storage = ProvenanceStorageRPCClient(**kwargs) - if TYPE_CHECKING: - assert isinstance(rpc_storage, ProvenanceStorageInterface) - return rpc_storage - raise ValueError diff --git a/swh/provenance/api/client.py b/swh/provenance/api/client.py --- a/swh/provenance/api/client.py +++ b/swh/provenance/api/client.py @@ -2,16 +2,3 @@ # 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.api import RPCClient - -from ..interface import ProvenanceStorageInterface -from .serializers import DECODERS, ENCODERS - - -class ProvenanceStorageRPCClient(RPCClient): - """Proxy to a remote provenance storage API""" - - backend_class = ProvenanceStorageInterface - extra_type_decoders = DECODERS - extra_type_encoders = ENCODERS diff --git a/swh/provenance/api/server.py b/swh/provenance/api/server.py --- a/swh/provenance/api/server.py +++ b/swh/provenance/api/server.py @@ -3,80 +3,10 @@ # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information -import logging import os -from typing import Any, Dict, List, Optional - -from werkzeug.routing import Rule +from typing import Any, Dict, Optional from swh.core import config -from swh.core.api import JSONFormatter, MsgpackFormatter, RPCServerApp, negotiate -from swh.provenance import get_provenance_storage -from swh.provenance.interface import ProvenanceStorageInterface - -from .serializers import DECODERS, ENCODERS - -storage: Optional[ProvenanceStorageInterface] = None - - -def get_global_provenance_storage() -> ProvenanceStorageInterface: - global storage - if storage is None: - storage = get_provenance_storage(**app.config["provenance"]["storage"]) - storage.open() # XXX: nobody is closing this storage! - return storage - - -class ProvenanceStorageRPCServerApp(RPCServerApp): - extra_type_decoders = DECODERS - extra_type_encoders = ENCODERS - - -app = ProvenanceStorageRPCServerApp( - __name__, - backend_class=ProvenanceStorageInterface, - backend_factory=get_global_provenance_storage, -) - - -def has_no_empty_params(rule: Rule) -> bool: - return len(rule.defaults or ()) >= len(rule.arguments or ()) - - -@app.route("/") -def index() -> str: - return """ -Software Heritage provenance storage RPC server - -

You have reached the -Software Heritage -provenance storage RPC server.
-See its -documentation -and API for more information

- -""" - - -@app.route("/site-map") -@negotiate(MsgpackFormatter) -@negotiate(JSONFormatter) -def site_map() -> List[Dict[str, Any]]: - links = [] - for rule in app.url_map.iter_rules(): - if has_no_empty_params(rule) and hasattr( - ProvenanceStorageInterface, rule.endpoint - ): - links.append( - dict( - rule=rule.rule, - description=getattr( - ProvenanceStorageInterface, rule.endpoint - ).__doc__, - ) - ) - # links is now a list of url, endpoint tuples - return links def load_and_check_config( @@ -126,24 +56,3 @@ raise KeyError("Invalid configuration; missing 'db' config entry") return cfg - - -api_cfg: Optional[Dict[str, Any]] = None - - -def make_app_from_configfile() -> ProvenanceStorageRPCServerApp: - """Run the WSGI app from the webserver, loading the configuration from - a configuration file. - - SWH_CONFIG_FILENAME environment variable defines the - configuration path to load. - - """ - global api_cfg - if api_cfg is None: - config_path = os.environ.get("SWH_CONFIG_FILENAME") - api_cfg = load_and_check_config(config_path) - app.config.update(api_cfg) - handler = logging.StreamHandler() - app.logger.addHandler(handler) - return app diff --git a/swh/provenance/cli.py b/swh/provenance/cli.py --- a/swh/provenance/cli.py +++ b/swh/provenance/cli.py @@ -54,9 +54,6 @@ # "db": { # "dbname": "provenance", # }, - # Remote RPC-API/PostgreSQL - # "cls": "rpcapi", - # "url": "http://localhost:8080/%2f", }, } } diff --git a/swh/provenance/tests/conftest.py b/swh/provenance/tests/conftest.py --- a/swh/provenance/tests/conftest.py +++ b/swh/provenance/tests/conftest.py @@ -5,7 +5,7 @@ from datetime import datetime, timedelta, timezone from os import path -from typing import Any, Dict, Generator, Iterable, Iterator +from typing import Any, Dict, Generator, Iterable from _pytest.fixtures import SubRequest import mongomock.database @@ -16,8 +16,6 @@ from swh.journal.serializers import msgpack_ext_hook from swh.provenance import get_provenance, get_provenance_storage -from swh.provenance.api.client import ProvenanceStorageRPCClient -import swh.provenance.api.server as server from swh.provenance.archive import ArchiveInterface from swh.provenance.interface import ProvenanceInterface, ProvenanceStorageInterface from swh.provenance.storage.archive import ArchiveStorage @@ -46,42 +44,15 @@ return postgresql.get_dsn_parameters() -# the Flask app used as server in these tests -@pytest.fixture -def app( - provenance_postgresqldb: Dict[str, str] -) -> Iterator[server.ProvenanceStorageRPCServerApp]: - assert hasattr(server, "storage") - server.storage = get_provenance_storage( - cls="postgresql", db=provenance_postgresqldb - ) - server.storage.open() - yield server.app - server.storage.close() - - -# the RPCClient class used as client used in these tests -@pytest.fixture -def swh_rpc_client_class() -> type: - return ProvenanceStorageRPCClient - - -@pytest.fixture(params=["mongodb", "postgresql", "rpcapi"]) +@pytest.fixture(params=["mongodb", "postgresql"]) def provenance_storage( request: SubRequest, provenance_postgresqldb: Dict[str, str], mongodb: mongomock.database.Database, - swh_rpc_client: ProvenanceStorageRPCClient, ) -> Generator[ProvenanceStorageInterface, None, None]: """Return a working and initialized ProvenanceStorageInterface object""" - if request.param == "rpcapi": - assert isinstance(swh_rpc_client, ProvenanceStorageInterface) - swh_rpc_client.open() - yield swh_rpc_client - swh_rpc_client.close() - - elif request.param == "mongodb": + if request.param == "mongodb": mongodb_params = { "host": mongodb.client.address[0], "port": mongodb.client.address[1],