diff --git a/src/dispatch/signal/flows.py b/src/dispatch/signal/flows.py index 373ec4efa85f..680d10a75ed8 100644 --- a/src/dispatch/signal/flows.py +++ b/src/dispatch/signal/flows.py @@ -90,6 +90,10 @@ def signal_instance_create_flow( ) return signal_instance + # limited support for canary signals, just store the instance and return + if signal_instance.canary: + return signal_instance + if not signal_instance.signal.create_case: return signal_instance diff --git a/src/dispatch/signal/models.py b/src/dispatch/signal/models.py index 23dfd127e490..d35154a8c325 100644 --- a/src/dispatch/signal/models.py +++ b/src/dispatch/signal/models.py @@ -231,6 +231,7 @@ class SignalInstance(Base, TimeStampMixin, ProjectMixin): case_priority = relationship("CasePriority", backref="signal_instances") fingerprint = Column(String) filter_action = Column(String) + canary = Column(Boolean, default=False) raw = Column(JSONB) signal = relationship("Signal", backref="instances") signal_id = Column(Integer, ForeignKey("signal.id")) @@ -364,6 +365,7 @@ class AdditionalMetadata(DispatchBase): class SignalInstanceBase(DispatchBase): project: ProjectRead case: Optional[CaseReadMinimal] + canary: Optional[bool] = False entities: Optional[List[EntityRead]] = [] raw: dict[str, Any] filter_action: SignalFilterAction = None