Skip to content

Commit

Permalink
Use RPSLDatabaseQuery.default_suppression more widely
Browse files Browse the repository at this point in the history
  • Loading branch information
Sasha Romijn committed Apr 8, 2024
1 parent c905cf4 commit d2c2156
Show file tree
Hide file tree
Showing 9 changed files with 18 additions and 65 deletions.
8 changes: 1 addition & 7 deletions irrd/mirroring/mirror_runners_export.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@
from tempfile import NamedTemporaryFile

from irrd.conf import get_setting
from irrd.routepref.status import RoutePreferenceStatus
from irrd.rpki.status import RPKIStatus
from irrd.scopefilter.status import ScopeFilterStatus
from irrd.storage.database_handler import DatabaseHandler
from irrd.storage.queries import DatabaseStatusQuery, RPSLDatabaseQuery
from irrd.utils.text import remove_auth_hashes as remove_auth_hashes_func
Expand Down Expand Up @@ -73,10 +70,7 @@ def _export(self, export_destination, remove_auth_hashes=True):
serial = None

with gzip.open(export_tmpfile.name, "wb") as fh:
query = RPSLDatabaseQuery().sources([self.source])
query = query.rpki_status([RPKIStatus.not_found, RPKIStatus.valid])
query = query.scopefilter_status([ScopeFilterStatus.in_scope])
query = query.route_preference_status([RoutePreferenceStatus.visible])
query = RPSLDatabaseQuery().sources([self.source]).default_suppression()
for obj in self.database_handler.execute_query(query):
object_text = obj["object_text"]
if remove_auth_hashes:
Expand Down
11 changes: 2 additions & 9 deletions irrd/mirroring/tests/test_mirror_runners_export.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
from pathlib import Path
from unittest.mock import Mock

from irrd.routepref.status import RoutePreferenceStatus
from irrd.rpki.status import RPKIStatus
from irrd.scopefilter.status import ScopeFilterStatus
from irrd.utils.test_utils import flatten_mock_calls

from ..mirror_runners_export import EXPORT_PERMISSIONS, SourceExportRunner
Expand Down Expand Up @@ -71,13 +68,9 @@ def test_export(self, tmpdir, config_override, monkeypatch, caplog):
]
assert flatten_mock_calls(mock_dq) == [
["sources", (["TEST"],), {}],
["rpki_status", ([RPKIStatus.not_found, RPKIStatus.valid],), {}],
["scopefilter_status", ([ScopeFilterStatus.in_scope],), {}],
["route_preference_status", ([RoutePreferenceStatus.visible],), {}],
["default_suppression", (), {}],
["sources", (["TEST"],), {}],
["rpki_status", ([RPKIStatus.not_found, RPKIStatus.valid],), {}],
["scopefilter_status", ([ScopeFilterStatus.in_scope],), {}],
["route_preference_status", ([RoutePreferenceStatus.visible],), {}],
["default_suppression", (), {}],
]
assert "Starting a source export for TEST" in caplog.text
assert "Export for TEST complete" in caplog.text
Expand Down
2 changes: 1 addition & 1 deletion irrd/scripts/irr_rpsl_submit.py
Original file line number Diff line number Diff line change
Expand Up @@ -760,7 +760,7 @@ def send_request(requests_text, args):
raise XHTTPConnectionFailed(args.url, http_request) from error # pragma: no cover
if reason == "Not Found":
raise XHTTPNotFound(args.url, http_request) from error
raise error
raise error # pragma: no cover: CI glitch workaround
except Exception as error:
raise error

Expand Down
14 changes: 3 additions & 11 deletions irrd/server/http/event_stream.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@
from starlette.websockets import WebSocket

from irrd.conf import get_setting
from irrd.routepref.status import RoutePreferenceStatus
from irrd.rpki.status import RPKIStatus
from irrd.rpsl.rpsl_objects import rpsl_object_from_text
from irrd.scopefilter.status import ScopeFilterStatus
from irrd.server.access_check import STARLETTE_TEST_CLIENT_HOST, is_client_permitted
from irrd.storage.database_handler import DatabaseHandler
from irrd.storage.event_stream import (
Expand Down Expand Up @@ -110,14 +107,9 @@ async def generate_rows(self):
}

async def generate_sql_query(self):
query = (
RPSLDatabaseQuery(
column_names=["rpsl_pk", "object_class", "object_text", "source", "updated", "parsed_data"]
)
.rpki_status([RPKIStatus.not_found.name, RPKIStatus.valid.name])
.scopefilter_status([ScopeFilterStatus.in_scope.name])
.route_preference_status([RoutePreferenceStatus.visible.name])
)
query = RPSLDatabaseQuery(
column_names=["rpsl_pk", "object_class", "object_text", "source", "updated", "parsed_data"]
).default_suppression()
if self.sources:
query = query.sources(self.sources)
if self.object_classes:
Expand Down
7 changes: 1 addition & 6 deletions irrd/server/http/tests/test_event_stream.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,7 @@
from starlette.testclient import TestClient
from starlette.websockets import WebSocketDisconnect

from irrd.routepref.status import RoutePreferenceStatus
from irrd.rpki.status import RPKIStatus
from irrd.rpsl.rpsl_objects import rpsl_object_from_text
from irrd.scopefilter.status import ScopeFilterStatus
from irrd.storage.event_stream import OPERATION_JOURNAL_EXTENDED
from irrd.storage.queries import (
RPSLDatabaseJournalQuery,
Expand Down Expand Up @@ -103,9 +100,7 @@ def mock_copy_to_side_effect(source, dest, engine_or_conn, format):
RPSLDatabaseQuery(
column_names=["rpsl_pk", "object_class", "object_text", "source", "updated", "parsed_data"]
)
.rpki_status([RPKIStatus.not_found.name, RPKIStatus.valid.name])
.scopefilter_status([ScopeFilterStatus.in_scope.name])
.route_preference_status([RoutePreferenceStatus.visible.name])
.default_suppression()
.sources(["TEST"])
.object_classes(["mntner"])
.finalise_statement()
Expand Down
15 changes: 3 additions & 12 deletions irrd/storage/preload.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@
from setproctitle import setproctitle

from irrd.conf import get_setting
from irrd.routepref.status import RoutePreferenceStatus
from irrd.rpki.status import RPKIStatus
from irrd.scopefilter.status import ScopeFilterStatus
from irrd.utils.process_support import ExceptionLoggingProcess

from .queries import RPSLDatabaseQuery
Expand Down Expand Up @@ -509,9 +506,7 @@ def _update_routes(self, dh):
column_names=["ip_version", "ip_first", "prefix_length", "asn_first", "source"],
enable_ordering=False,
)
q = q.object_classes(["route", "route6"]).rpki_status([RPKIStatus.not_found, RPKIStatus.valid])
q = q.scopefilter_status([ScopeFilterStatus.in_scope])
q = q.route_preference_status([RoutePreferenceStatus.visible])
q = q.object_classes(["route", "route6"]).default_suppression()
for result in dh.execute_query(q):
prefix = result["ip_first"]
key = result["source"] + REDIS_KEY_PK_SOURCE_SEPARATOR + "AS" + str(result["asn_first"])
Expand Down Expand Up @@ -542,9 +537,7 @@ def _update_set(self, dh, set_class, member_classes):
enable_ordering=False,
)
.object_classes([set_class])
.rpki_status([RPKIStatus.not_found, RPKIStatus.valid])
.scopefilter_status([ScopeFilterStatus.in_scope])
.route_preference_status([RoutePreferenceStatus.visible])
.default_suppression()
)

member_store: Dict[str, set] = {}
Expand All @@ -568,9 +561,7 @@ def _update_set(self, dh, set_class, member_classes):
)
.lookup_attr("member-of", True)
.object_classes(member_classes)
.rpki_status([RPKIStatus.not_found, RPKIStatus.valid])
.scopefilter_status([ScopeFilterStatus.in_scope])
.route_preference_status([RoutePreferenceStatus.visible])
.default_suppression()
)
for row in dh.execute_query(q):
for member_of in row["parsed_data"].get("member-of", []):
Expand Down
1 change: 1 addition & 0 deletions irrd/storage/tests/test_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -1153,6 +1153,7 @@ def test_non_matching_filters(self, irrd_db_mock_preload, database_handler_with_
self._assert_no_match(RPSLDatabaseQuery().rpki_status([RPKIStatus.valid]))
self._assert_no_match(RPSLDatabaseQuery().scopefilter_status([ScopeFilterStatus.out_scope_as]))
self._assert_no_match(RPSLDatabaseQuery().route_preference_status([RoutePreferenceStatus.suppressed]))
self._assert_no_match(RPSLDatabaseQuery().default_suppression())

def test_ordering_sources(self, irrd_db_mock_preload, database_handler_with_route):
self.dh = database_handler_with_route
Expand Down
23 changes: 5 additions & 18 deletions irrd/storage/tests/test_preload.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@

import pytest

from irrd.routepref.status import RoutePreferenceStatus
from irrd.rpki.status import RPKIStatus
from irrd.scopefilter.status import ScopeFilterStatus
from irrd.utils.test_utils import flatten_mock_calls

from ..database_handler import DatabaseHandler
Expand Down Expand Up @@ -334,27 +331,17 @@ def test_preload_updater(self, monkeypatch):
assert flatten_mock_calls(mock_reload_lock) == [["acquire", (), {}], ["release", (), {}]]
assert flatten_mock_calls(mock_database_query) == [
["object_classes", (["route", "route6"],), {}],
["rpki_status", ([RPKIStatus.not_found, RPKIStatus.valid],), {}],
["scopefilter_status", ([ScopeFilterStatus.in_scope],), {}],
["route_preference_status", ([RoutePreferenceStatus.visible],), {}],
["default_suppression", (), {}],
["object_classes", (["as-set"],), {}],
["rpki_status", ([RPKIStatus.not_found, RPKIStatus.valid],), {}],
["scopefilter_status", ([ScopeFilterStatus.in_scope],), {}],
["route_preference_status", ([RoutePreferenceStatus.visible],), {}],
["default_suppression", (), {}],
["lookup_attr", ("member-of", True), {}],
["object_classes", (["aut-num"],), {}],
["rpki_status", ([RPKIStatus.not_found, RPKIStatus.valid],), {}],
["scopefilter_status", ([ScopeFilterStatus.in_scope],), {}],
["route_preference_status", ([RoutePreferenceStatus.visible],), {}],
["default_suppression", (), {}],
["object_classes", (["route-set"],), {}],
["rpki_status", ([RPKIStatus.not_found, RPKIStatus.valid],), {}],
["scopefilter_status", ([ScopeFilterStatus.in_scope],), {}],
["route_preference_status", ([RoutePreferenceStatus.visible],), {}],
["default_suppression", (), {}],
["lookup_attr", ("member-of", True), {}],
["object_classes", (["route", "route6"],), {}],
["rpki_status", ([RPKIStatus.not_found, RPKIStatus.valid],), {}],
["scopefilter_status", ([ScopeFilterStatus.in_scope],), {}],
["route_preference_status", ([RoutePreferenceStatus.visible],), {}],
["default_suppression", (), {}],
]

assert flatten_mock_calls(mock_preload_obj) == [
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ ruff = "ruff irrd --fix"
isort = "isort irrd"
mypy = "mypy irrd"
lint = ["black", "ruff", "isort", "mypy"]
test = "pytest --cov-report term-missing:skip-covered --cov=irrd --basetemp=.tmpdirs/ irrd"
test = "pytest --cov-report term-missing:skip-covered --cov=irrd --basetemp=.tmpdirs/ "

[tool.coverage.report]
exclude_lines = [
Expand Down

0 comments on commit d2c2156

Please sign in to comment.