Skip to content

Commit 62a7dec

Browse files
committed
fix test
1 parent 356ab03 commit 62a7dec

File tree

4 files changed

+40
-26
lines changed

4 files changed

+40
-26
lines changed

src/sentry/incidents/grouptype.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from sentry.issues.grouptype import GroupCategory, GroupType
1717
from sentry.models.organization import Organization
1818
from sentry.ratelimits.sliding_windows import Quota
19+
from sentry.seer.anomaly_detection.delete_rule import delete_data_in_seer_for_detector
1920
from sentry.snuba.dataset import Dataset
2021
from sentry.snuba.metrics import format_mri_field, is_mri_field
2122
from sentry.snuba.models import QuerySubscription, SnubaQuery
@@ -27,7 +28,12 @@
2728
from sentry.workflow_engine.models.data_condition import Condition, DataCondition
2829
from sentry.workflow_engine.models.data_source import DataPacket
2930
from sentry.workflow_engine.processors.data_condition_group import ProcessedDataConditionGroup
30-
from sentry.workflow_engine.types import DetectorException, DetectorPriorityLevel, DetectorSettings
31+
from sentry.workflow_engine.types import (
32+
DetectorException,
33+
DetectorLifeCycleHooks,
34+
DetectorPriorityLevel,
35+
DetectorSettings,
36+
)
3137

3238
logger = logging.getLogger(__name__)
3339

@@ -353,4 +359,5 @@ class MetricIssue(GroupType):
353359
},
354360
},
355361
},
362+
hooks=DetectorLifeCycleHooks(pending_delete=delete_data_in_seer_for_detector),
356363
)

src/sentry/seer/anomaly_detection/delete_rule.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,36 @@
2020

2121
if TYPE_CHECKING:
2222
from sentry.incidents.models.alert_rule import AlertRule
23+
from sentry.workflow_engine.models.detector import Detector
24+
25+
26+
def delete_data_in_seer_for_detector(detector: "Detector"):
27+
from sentry.incidents.models.alert_rule import AlertRuleDetectionType
28+
from sentry.workflow_engine.models import DataSourceDetector
29+
30+
data_source_detector = DataSourceDetector.objects.filter(detector_id=detector.id).first()
31+
if not data_source_detector:
32+
logger.error(
33+
"No data source found for detector",
34+
extra={
35+
"detector_id": detector.id,
36+
},
37+
)
38+
return
39+
40+
organization = detector.project.organization
41+
42+
if detector.config.get("detection_type") == AlertRuleDetectionType.DYNAMIC:
43+
success = delete_rule_in_seer(
44+
source_id=data_source_detector.data_source_id, organization=organization
45+
)
46+
if not success:
47+
logger.error(
48+
"Call to delete rule data in Seer failed",
49+
extra={
50+
"detector_id": detector.id,
51+
},
52+
)
2353

2454

2555
def delete_rule_in_seer(source_id: int, organization: Organization) -> bool:

src/sentry/workflow_engine/endpoints/organization_detector_details.py

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,17 @@
2828
from sentry.grouping.grouptype import ErrorGroupType
2929
from sentry.incidents.grouptype import MetricIssue
3030
from sentry.incidents.metric_issue_detector import schedule_update_project_config
31-
from sentry.incidents.models.alert_rule import AlertRuleDetectionType
3231
from sentry.issues import grouptype
3332
from sentry.models.organization import Organization
3433
from sentry.models.project import Project
35-
from sentry.seer.anomaly_detection.delete_rule import delete_rule_in_seer
3634
from sentry.utils.audit import create_audit_entry
3735
from sentry.workflow_engine.endpoints.serializers.detector_serializer import DetectorSerializer
3836
from sentry.workflow_engine.endpoints.validators.detector_workflow import (
3937
BulkDetectorWorkflowsValidator,
4038
can_edit_detector,
4139
)
4240
from sentry.workflow_engine.endpoints.validators.utils import get_unknown_detector_type_error
43-
from sentry.workflow_engine.models import DataSourceDetector, Detector
41+
from sentry.workflow_engine.models import Detector
4442
from sentry.workflow_engine.types import DetectorLifeCycleHooks
4543

4644
logger = logging.getLogger(__name__)
@@ -216,25 +214,6 @@ def delete(self, request: Request, organization: Organization, detector: Detecto
216214
if detector.type == MetricIssue.slug:
217215
schedule_update_project_config(detector)
218216

219-
data_source_detector = DataSourceDetector.objects.filter(
220-
detector_id=detector.id
221-
).first()
222-
if not data_source_detector:
223-
return Response(status=404)
224-
225-
if detector.config.get("detection_type") == AlertRuleDetectionType.DYNAMIC:
226-
success = delete_rule_in_seer(
227-
source_id=data_source_detector.data_source_id, organization=organization
228-
)
229-
# We don't need to surface this to the user, but we should know about it.
230-
if not success:
231-
logger.error(
232-
"Call to delete rule data in Seer failed",
233-
extra={
234-
"detector_id": detector.id,
235-
},
236-
)
237-
238217
RegionScheduledDeletion.schedule(detector, days=0, actor=request.user)
239218
detector.update(status=ObjectStatus.PENDING_DELETION)
240219

tests/sentry/workflow_engine/endpoints/test_organization_detector_details.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -752,9 +752,7 @@ def test_error_group_type(self) -> None:
752752
).exists()
753753

754754
@with_feature("organizations:anomaly-detection-alerts")
755-
@mock.patch(
756-
"sentry.workflow_engine.endpoints.organization_detector_details.delete_rule_in_seer"
757-
)
755+
@mock.patch("sentry.seer.anomaly_detection.delete_rule.delete_rule_in_seer")
758756
@mock.patch(
759757
"sentry.workflow_engine.endpoints.organization_detector_details.schedule_update_project_config"
760758
)

0 commit comments

Comments
 (0)