Skip to content

Commit 4d2976a

Browse files
authored
Merge pull request #6473 from opsmill/pog-remove-custom-event-filter-code
Remove matching_related from events and use native Prefect 3.4.1
2 parents e085b8f + 63a81d9 commit 4d2976a

File tree

2 files changed

+11
-25
lines changed

2 files changed

+11
-25
lines changed

backend/infrahub/prefect_server/models.py

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,17 @@
1-
from typing import TYPE_CHECKING, Sequence, cast
2-
3-
from prefect.server.database import PrefectDBInterface, db_injector
4-
from prefect.server.events.filters import EventFilter, EventNameFilter, EventOrder, EventRelatedFilter
1+
from prefect.server.events.filters import EventFilter, EventNameFilter, EventOrder
52
from prefect.server.events.schemas.events import ReceivedEvent
63
from prefect.server.utilities.schemas import PrefectBaseModel
74
from pydantic import BaseModel, Field
85

9-
if TYPE_CHECKING:
10-
from sqlalchemy.sql.expression import ColumnExpressionArgument
11-
126

137
class InfrahubEventFilter(EventFilter):
14-
matching_related: list[EventRelatedFilter] = Field(default_factory=list)
15-
168
def set_prefix(self) -> None:
179
if self.event:
1810
if self.event.prefix is not None and "infrahub." not in self.event.prefix:
1911
self.event.prefix.append("infrahub.")
2012
else:
2113
self.event = EventNameFilter(prefix=["infrahub."], name=[], exclude_prefix=None, exclude_name=None)
2214

23-
@db_injector
24-
def build_where_clauses(self, db: PrefectDBInterface) -> Sequence["ColumnExpressionArgument[bool]"]:
25-
result = cast(list["ColumnExpressionArgument[bool]"], super().build_where_clauses())
26-
top_level_filter = self._scoped_event_resources(db)
27-
for matching_related in self.matching_related:
28-
matching_related._top_level_filter = top_level_filter
29-
result.extend(matching_related.build_where_clauses())
30-
31-
return result
32-
3315
@classmethod
3416
def default(cls) -> "InfrahubEventFilter":
3517
return cls(event=None, any_resource=None, resource=None, related=None, order=EventOrder.DESC)

backend/infrahub/task_manager/models.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,15 @@ class FlowProgress(BaseModel):
8484

8585

8686
class InfrahubEventFilter(EventFilter):
87-
matching_related: list[EventRelatedFilter] = Field(default_factory=list)
87+
def add_related_filter(self, related: EventRelatedFilter) -> None:
88+
if not isinstance(self.related, list):
89+
self.related = []
90+
91+
self.related.append(related)
8892

8993
def add_account_filter(self, account__ids: list[str] | None) -> None:
9094
if account__ids:
91-
self.matching_related.append(
95+
self.add_related_filter(
9296
EventRelatedFilter(
9397
labels=ResourceSpecification(
9498
{"prefect.resource.role": "infrahub.account", "infrahub.resource.id": account__ids}
@@ -98,7 +102,7 @@ def add_account_filter(self, account__ids: list[str] | None) -> None:
98102

99103
def add_branch_filter(self, branches: list[str] | None = None) -> None:
100104
if branches:
101-
self.matching_related.append(
105+
self.add_related_filter(
102106
EventRelatedFilter(
103107
labels=ResourceSpecification(
104108
{"prefect.resource.role": "infrahub.branch", "infrahub.resource.label": branches}
@@ -116,7 +120,7 @@ def add_event_filter(self, level: int | None = None, has_children: bool | None =
116120

117121
if event_filter:
118122
event_filter["prefect.resource.role"] = "infrahub.event"
119-
self.matching_related.append(EventRelatedFilter(labels=ResourceSpecification(event_filter)))
123+
self.add_related_filter(EventRelatedFilter(labels=ResourceSpecification(event_filter)))
120124

121125
def add_event_id_filter(self, ids: list[str] | None = None) -> None:
122126
if ids:
@@ -151,7 +155,7 @@ def add_primary_node_filter(self, primary_node__ids: list[str] | None) -> None:
151155

152156
def add_parent_filter(self, parent__ids: list[str] | None) -> None:
153157
if parent__ids:
154-
self.matching_related.append(
158+
self.add_related_filter(
155159
EventRelatedFilter(
156160
labels=ResourceSpecification(
157161
{"prefect.resource.role": "infrahub.child_event", "infrahub.event_parent.id": parent__ids}
@@ -161,7 +165,7 @@ def add_parent_filter(self, parent__ids: list[str] | None) -> None:
161165

162166
def add_related_node_filter(self, related_node__ids: list[str] | None) -> None:
163167
if related_node__ids:
164-
self.matching_related.append(
168+
self.add_related_filter(
165169
EventRelatedFilter(
166170
labels=ResourceSpecification(
167171
{"prefect.resource.role": "infrahub.related.node", "prefect.resource.id": related_node__ids}

0 commit comments

Comments
 (0)