From 673d8c03ff95ff0f3b72c4721041e55c96446f5c Mon Sep 17 00:00:00 2001 From: Snigdha Sharma Date: Thu, 17 Apr 2025 12:00:22 -0700 Subject: [PATCH 1/2] Rename MetricAlertFire to MetricIssue --- src/sentry/incidents/grouptype.py | 8 ++++---- src/sentry/testutils/factories.py | 4 ++-- .../migration_helpers/alert_rule.py | 4 ++-- tests/sentry/deletions/test_detector.py | 6 +++--- .../endpoints/validators/test_validators.py | 6 +++--- .../incidents/test_subscription_processor.py | 4 ++-- .../detectors/test_error_detector.py | 2 +- .../test_organization_detector_types.py | 6 +++--- .../test_project_detector_details.py | 8 ++++---- .../endpoints/test_project_detector_index.py | 10 +++++----- .../endpoints/test_serializers.py | 16 +++++++-------- .../endpoints/test_validators.py | 6 +++--- .../test_migrate_alert_rule.py | 4 ++-- .../models/test_json_config_base.py | 20 +++++++++---------- .../processors/test_data_sources.py | 2 +- tests/sentry/workflow_engine/test_base.py | 4 ++-- .../workflow_engine/test_integration.py | 10 +++++----- tests/snuba/search/test_backend.py | 6 +++--- 18 files changed, 63 insertions(+), 63 deletions(-) diff --git a/src/sentry/incidents/grouptype.py b/src/sentry/incidents/grouptype.py index 10bdf8c3b27724..86dcbda99c7fc3 100644 --- a/src/sentry/incidents/grouptype.py +++ b/src/sentry/incidents/grouptype.py @@ -38,7 +38,7 @@ def build_occurrence_and_event_data( resource_id=None, evidence_data={"detector_id": self.detector.id, "value": value}, evidence_display=[], - type=MetricAlertFire, + type=MetricIssue, detection_time=datetime.now(UTC), level="error", culprit="Some culprit", @@ -71,10 +71,10 @@ def get_group_key_values( # Example GroupType and detector handler for metric alerts. We don't create these issues yet, but we'll use something # like these when we're sending issues as alerts @dataclass(frozen=True) -class MetricAlertFire(GroupType): +class MetricIssue(GroupType): type_id = 8001 - slug = "metric_alert_fire" - description = "Metric alert fired" + slug = "metric_issue" + description = "Metric issue triggered" category = GroupCategory.METRIC_ALERT.value creation_quota = Quota(3600, 60, 100) default_priority = PriorityLevel.HIGH diff --git a/src/sentry/testutils/factories.py b/src/sentry/testutils/factories.py index 052d018b90ea9a..f9d15741db5d04 100644 --- a/src/sentry/testutils/factories.py +++ b/src/sentry/testutils/factories.py @@ -35,7 +35,7 @@ from sentry.hybridcloud.models.outbox import RegionOutbox, outbox_context from sentry.hybridcloud.models.webhookpayload import WebhookPayload from sentry.hybridcloud.outbox.category import OutboxCategory, OutboxScope -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.incidents.logic import ( create_alert_rule, create_alert_rule_trigger, @@ -323,7 +323,7 @@ def make_word(words=None): } default_detector_config_data = { - MetricAlertFire.slug: {"threshold_period": 1, "detection_type": "static"} + MetricIssue.slug: {"threshold_period": 1, "detection_type": "static"} } diff --git a/src/sentry/workflow_engine/migration_helpers/alert_rule.py b/src/sentry/workflow_engine/migration_helpers/alert_rule.py index 1741db831d4a98..06b285b7685864 100644 --- a/src/sentry/workflow_engine/migration_helpers/alert_rule.py +++ b/src/sentry/workflow_engine/migration_helpers/alert_rule.py @@ -5,7 +5,7 @@ from django.db import router, transaction from django.forms import ValidationError -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.incidents.models.alert_rule import ( AlertRule, AlertRuleThresholdType, @@ -483,7 +483,7 @@ def get_detector_field_values( "project_id": project_id, "enabled": True, "created_by_id": user.id if user else None, - "type": MetricAlertFire.slug, + "type": MetricIssue.slug, } ) return detector_field_values diff --git a/tests/sentry/deletions/test_detector.py b/tests/sentry/deletions/test_detector.py index 333fa6d1880b84..9b38f2c2d82eb3 100644 --- a/tests/sentry/deletions/test_detector.py +++ b/tests/sentry/deletions/test_detector.py @@ -1,5 +1,5 @@ from sentry.deletions.tasks.scheduled import run_scheduled_deletions -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.snuba.models import QuerySubscription, SnubaQuery from sentry.testutils.hybrid_cloud import HybridCloudTestMixin from sentry.workflow_engine.models import ( @@ -30,7 +30,7 @@ def setUp(self): self.detector = self.create_detector( project_id=self.project.id, name="Test Detector", - type=MetricAlertFire.slug, + type=MetricIssue.slug, workflow_condition_group=self.data_condition_group, ) self.workflow = self.create_workflow() @@ -99,7 +99,7 @@ def test_data_source_not_deleted(self): detector_2 = self.create_detector( project_id=self.project.id, name="Testy Detector", - type=MetricAlertFire.slug, + type=MetricIssue.slug, ) data_source_detector_2 = self.create_data_source_detector( data_source=self.data_source, detector=detector_2 diff --git a/tests/sentry/incidents/endpoints/validators/test_validators.py b/tests/sentry/incidents/endpoints/validators/test_validators.py index 3139374734597f..ee4a048a546d8d 100644 --- a/tests/sentry/incidents/endpoints/validators/test_validators.py +++ b/tests/sentry/incidents/endpoints/validators/test_validators.py @@ -3,7 +3,7 @@ from rest_framework.exceptions import ErrorDetail from sentry import audit_log -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.incidents.metric_alert_detector import ( MetricAlertComparisonConditionValidator, MetricAlertsDetectorValidator, @@ -107,7 +107,7 @@ def setUp(self): } self.valid_data = { "name": "Test Detector", - "detectorType": MetricAlertFire.slug, + "detectorType": MetricIssue.slug, "dataSource": { "query_type": SnubaQuery.Type.ERROR.value, "dataset": Dataset.Events.value, @@ -150,7 +150,7 @@ def test_create_with_valid_data(self, mock_audit): # Verify detector in DB detector = Detector.objects.get(id=detector.id) assert detector.name == "Test Detector" - assert detector.type == MetricAlertFire.slug + assert detector.type == MetricIssue.slug assert detector.project_id == self.project.id # Verify data source and query subscription in DB diff --git a/tests/sentry/incidents/test_subscription_processor.py b/tests/sentry/incidents/test_subscription_processor.py index b75dc7f0e4137b..6e1b1c89abeca9 100644 --- a/tests/sentry/incidents/test_subscription_processor.py +++ b/tests/sentry/incidents/test_subscription_processor.py @@ -14,7 +14,7 @@ from urllib3.response import HTTPResponse from sentry.conf.server import SEER_ANOMALY_DETECTION_ENDPOINT_URL -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.incidents.logic import ( CRITICAL_TRIGGER_LABEL, WARNING_TRIGGER_LABEL, @@ -3834,7 +3834,7 @@ def test_resolved_alert_updates_metric_issue(self, mock_produce_occurrence_to_ka @mock.patch("sentry.incidents.subscription_processor.process_data_packets") def test_process_data_packets_called(self, mock_process_data_packets): rule = self.rule - detector = self.create_detector(name="hojicha", type=MetricAlertFire.slug) + detector = self.create_detector(name="hojicha", type=MetricIssue.slug) data_source = self.create_data_source(source_id=str(self.sub.id)) data_source.detectors.set([detector]) self.send_update(rule, 10) diff --git a/tests/sentry/workflow_engine/detectors/test_error_detector.py b/tests/sentry/workflow_engine/detectors/test_error_detector.py index 1151e483ad8e59..45d9e39000c49d 100644 --- a/tests/sentry/workflow_engine/detectors/test_error_detector.py +++ b/tests/sentry/workflow_engine/detectors/test_error_detector.py @@ -56,7 +56,7 @@ def test_create_with_valid_data(self, mock_audit): ) def test_invalid_detector_type(self): - data = {**self.valid_data, "detectorType": "metric_alert_fire"} + data = {**self.valid_data, "detectorType": "metric_issue"} validator = ErrorDetectorValidator(data=data, context=self.context) assert not validator.is_valid() assert validator.errors.get("detectorType") == [ diff --git a/tests/sentry/workflow_engine/endpoints/test_organization_detector_types.py b/tests/sentry/workflow_engine/endpoints/test_organization_detector_types.py index a703ea7f1626b7..b48b211508a5a4 100644 --- a/tests/sentry/workflow_engine/endpoints/test_organization_detector_types.py +++ b/tests/sentry/workflow_engine/endpoints/test_organization_detector_types.py @@ -1,7 +1,7 @@ from dataclasses import dataclass from unittest.mock import patch -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.issues.grouptype import ( GroupCategory, GroupType, @@ -40,7 +40,7 @@ def evaluate( @dataclass(frozen=True) class TestMetricGroupType(GroupType): type_id = 1 - slug = MetricAlertFire.slug + slug = MetricIssue.slug description = "Metric alert" category = GroupCategory.METRIC_ALERT.value detector_settings = DetectorSettings(handler=MockDetectorHandler) @@ -80,7 +80,7 @@ def tearDown(self): def test_simple(self): response = self.get_success_response(self.organization.slug, status_code=200) assert response.data == [ - MetricAlertFire.slug, + MetricIssue.slug, MonitorIncidentType.slug, UptimeDomainCheckFailure.slug, ] diff --git a/tests/sentry/workflow_engine/endpoints/test_project_detector_details.py b/tests/sentry/workflow_engine/endpoints/test_project_detector_details.py index 599ca62fb3c775..20cea531ccdf40 100644 --- a/tests/sentry/workflow_engine/endpoints/test_project_detector_details.py +++ b/tests/sentry/workflow_engine/endpoints/test_project_detector_details.py @@ -7,7 +7,7 @@ from sentry.api.serializers import serialize from sentry.deletions.models.scheduleddeletion import RegionScheduledDeletion from sentry.grouping.grouptype import ErrorGroupType -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.incidents.utils.constants import INCIDENTS_SNUBA_SUBSCRIPTION_TYPE from sentry.models.auditlogentry import AuditLogEntry from sentry.silo.base import SiloMode @@ -73,7 +73,7 @@ def setUp(self): self.detector = self.create_detector( project_id=self.project.id, name="Test Detector", - type=MetricAlertFire.slug, + type=MetricIssue.slug, workflow_condition_group=self.data_condition_group, ) self.data_source_detector = self.create_data_source_detector( @@ -104,7 +104,7 @@ def setUp(self): "id": self.detector.id, "projectId": self.project.id, "name": "Updated Detector", - "detectorType": MetricAlertFire.slug, + "detectorType": MetricIssue.slug, "dateCreated": self.detector.date_added, "dateUpdated": timezone.now(), "dataSource": { @@ -136,7 +136,7 @@ def setUp(self): def assert_detector_updated(self, detector): assert detector.name == "Updated Detector" - assert detector.type == MetricAlertFire.slug + assert detector.type == MetricIssue.slug assert detector.project_id == self.project.id def assert_condition_group_updated(self, condition_group): diff --git a/tests/sentry/workflow_engine/endpoints/test_project_detector_index.py b/tests/sentry/workflow_engine/endpoints/test_project_detector_index.py index d8d5f0e61119d4..40ad0e1a2a7217 100644 --- a/tests/sentry/workflow_engine/endpoints/test_project_detector_index.py +++ b/tests/sentry/workflow_engine/endpoints/test_project_detector_index.py @@ -1,7 +1,7 @@ from unittest import mock from sentry.api.serializers import serialize -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.incidents.models.alert_rule import AlertRuleDetectionType from sentry.models.environment import Environment from sentry.snuba.dataset import Dataset @@ -38,10 +38,10 @@ def setUp(self): class ProjectDetectorIndexGetTest(ProjectDetectorIndexBaseTest): def test_simple(self): detector = self.create_detector( - project_id=self.project.id, name="Test Detector", type=MetricAlertFire.slug + project_id=self.project.id, name="Test Detector", type=MetricIssue.slug ) detector_2 = self.create_detector( - project_id=self.project.id, name="Test Detector 2", type=MetricAlertFire.slug + project_id=self.project.id, name="Test Detector 2", type=MetricIssue.slug ) response = self.get_success_response(self.organization.slug, self.project.slug) assert response.data == serialize([detector, detector_2]) @@ -59,7 +59,7 @@ def setUp(self): super().setUp() self.valid_data = { "name": "Test Detector", - "detectorType": MetricAlertFire.slug, + "detectorType": MetricIssue.slug, "dataSource": { "queryType": SnubaQuery.Type.ERROR.value, "dataset": Dataset.Events.name.lower(), @@ -136,7 +136,7 @@ def test_valid_creation(self, mock_audit): detector = Detector.objects.get(id=response.data["id"]) assert response.data == serialize([detector])[0] assert detector.name == "Test Detector" - assert detector.type == MetricAlertFire.slug + assert detector.type == MetricIssue.slug assert detector.project_id == self.project.id # Verify data source diff --git a/tests/sentry/workflow_engine/endpoints/test_serializers.py b/tests/sentry/workflow_engine/endpoints/test_serializers.py index 5d3d2f87f011bb..4769750782bfe7 100644 --- a/tests/sentry/workflow_engine/endpoints/test_serializers.py +++ b/tests/sentry/workflow_engine/endpoints/test_serializers.py @@ -1,7 +1,7 @@ from datetime import timedelta from sentry.api.serializers import serialize -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.incidents.utils.constants import INCIDENTS_SNUBA_SUBSCRIPTION_TYPE from sentry.notifications.models.notificationaction import ActionTarget from sentry.snuba.dataset import Dataset @@ -18,7 +18,7 @@ class TestDetectorSerializer(TestCase): def test_serialize_simple(self): detector = self.create_detector( - project_id=self.project.id, name="Test Detector", type=MetricAlertFire.slug + project_id=self.project.id, name="Test Detector", type=MetricIssue.slug ) result = serialize(detector) @@ -26,12 +26,12 @@ def test_serialize_simple(self): "id": str(detector.id), "projectId": str(detector.project_id), "name": "Test Detector", - "type": MetricAlertFire.slug, + "type": MetricIssue.slug, "dateCreated": detector.date_added, "dateUpdated": detector.date_updated, "dataSources": None, "conditionGroup": None, - "config": default_detector_config_data[MetricAlertFire.slug], + "config": default_detector_config_data[MetricIssue.slug], } def test_serialize_full(self): @@ -57,7 +57,7 @@ def test_serialize_full(self): detector = self.create_detector( project_id=self.project.id, name="Test Detector", - type=MetricAlertFire.slug, + type=MetricIssue.slug, workflow_condition_group=condition_group, ) snuba_query = create_snuba_query( @@ -85,7 +85,7 @@ def test_serialize_full(self): "id": str(detector.id), "projectId": str(detector.project_id), "name": "Test Detector", - "type": MetricAlertFire.slug, + "type": MetricIssue.slug, "dateCreated": detector.date_added, "dateUpdated": detector.date_updated, "dataSources": [ @@ -131,7 +131,7 @@ def test_serialize_full(self): } ], }, - "config": default_detector_config_data[MetricAlertFire.slug], + "config": default_detector_config_data[MetricIssue.slug], } def test_serialize_bulk(self): @@ -139,7 +139,7 @@ def test_serialize_bulk(self): self.create_detector( project_id=self.project.id, name=f"Test Detector {i}", - type=MetricAlertFire.slug, + type=MetricIssue.slug, ) for i in range(2) ] diff --git a/tests/sentry/workflow_engine/endpoints/test_validators.py b/tests/sentry/workflow_engine/endpoints/test_validators.py index c7a623cb62398d..44f4e18573196d 100644 --- a/tests/sentry/workflow_engine/endpoints/test_validators.py +++ b/tests/sentry/workflow_engine/endpoints/test_validators.py @@ -5,7 +5,7 @@ from rest_framework.exceptions import ErrorDetail, ValidationError from sentry import audit_log -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.incidents.metric_alert_detector import ( MetricAlertComparisonConditionValidator, MetricAlertsDetectorValidator, @@ -162,7 +162,7 @@ def setUp(self): } self.valid_data = { "name": "Test Detector", - "detectorType": MetricAlertFire.slug, + "detectorType": MetricIssue.slug, "dataSource": { "field1": "test", "field2": 123, @@ -196,7 +196,7 @@ def test_create_with_mock_validator(self, mock_audit): # Verify detector in DB detector = Detector.objects.get(id=detector.id) assert detector.name == "Test Detector" - assert detector.type == MetricAlertFire.slug + assert detector.type == MetricIssue.slug assert detector.project_id == self.project.id # Verify data source in DB diff --git a/tests/sentry/workflow_engine/migration_helpers/test_migrate_alert_rule.py b/tests/sentry/workflow_engine/migration_helpers/test_migrate_alert_rule.py index ad49f60bac1f16..d6e04ec04e78bc 100644 --- a/tests/sentry/workflow_engine/migration_helpers/test_migrate_alert_rule.py +++ b/tests/sentry/workflow_engine/migration_helpers/test_migrate_alert_rule.py @@ -4,7 +4,7 @@ import pytest from django.forms import ValidationError -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.incidents.logic import update_alert_rule_trigger_action from sentry.incidents.models.alert_rule import ( AlertRule, @@ -82,7 +82,7 @@ def assert_alert_rule_migrated(alert_rule, project_id): assert detector.description == alert_rule.description assert detector.owner_user_id == alert_rule.user_id assert detector.owner_team == alert_rule.team - assert detector.type == MetricAlertFire.slug + assert detector.type == MetricIssue.slug assert detector.config == { "threshold_period": alert_rule.threshold_period, "sensitivity": None, diff --git a/tests/sentry/workflow_engine/models/test_json_config_base.py b/tests/sentry/workflow_engine/models/test_json_config_base.py index bccd77b9513ec3..167580a2658ca6 100644 --- a/tests/sentry/workflow_engine/models/test_json_config_base.py +++ b/tests/sentry/workflow_engine/models/test_json_config_base.py @@ -3,7 +3,7 @@ import pytest from jsonschema import ValidationError -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.issues.grouptype import GroupCategory, GroupType from sentry.testutils.cases import APITestCase from sentry.workflow_engine.types import DetectorSettings @@ -92,7 +92,7 @@ def test_workflow_correct_schema(self): # TODO - This should be moved into incidents directory -class TestMetricAlertFireDetectorConfig(JSONConfigBaseTest, APITestCase): +class TestMetricIssueDetectorConfig(JSONConfigBaseTest, APITestCase): def setUp(self): super().setUp() self.metric_alert = self.create_alert_rule(threshold_period=1) @@ -100,18 +100,18 @@ def setUp(self): @dataclass(frozen=True) class TestGroupType(GroupType): type_id = 3 - slug = "test_metric_alert_fire" + slug = "test_metric_issue" description = "Metric alert fired" category = GroupCategory.METRIC_ALERT.value detector_settings = DetectorSettings( - config_schema=MetricAlertFire.detector_settings.config_schema, + config_schema=MetricIssue.detector_settings.config_schema, ) def test_detector_correct_schema(self): self.create_detector( name=self.metric_alert.name, project_id=self.project.id, - type="test_metric_alert_fire", + type="test_metric_issue", owner_user_id=self.metric_alert.user_id, config={ "threshold_period": self.metric_alert.threshold_period, @@ -127,7 +127,7 @@ def test_empty_config(self): self.create_detector( name=self.metric_alert.name, project_id=self.project.id, - type="test_metric_alert_fire", + type="test_metric_issue", owner_user_id=self.metric_alert.user_id, config={}, ) @@ -137,7 +137,7 @@ def test_no_config(self): self.create_detector( name=self.metric_alert.name, project_id=self.project.id, - type="test_metric_alert_fire", + type="test_metric_issue", owner_user_id=self.metric_alert.user_id, ) @@ -146,7 +146,7 @@ def test_incorrect_config(self): self.create_detector( name=self.metric_alert.name, project_id=self.project.id, - type="test_metric_alert_fire", + type="test_metric_issue", owner_user_id=self.metric_alert.user_id, config=["some", "stuff"], ) @@ -156,7 +156,7 @@ def test_mismatched_schema(self): self.create_detector( name=self.metric_alert.name, project_id=self.project.id, - type="test_metric_alert_fire", + type="test_metric_issue", owner_user_id=self.metric_alert.user_id, config={ "threshold_period": self.metric_alert.threshold_period, @@ -172,7 +172,7 @@ def test_missing_required(self): self.create_detector( name=self.metric_alert.name, project_id=self.project.id, - type="test_metric_alert_fire", + type="test_metric_issue", owner_user_id=self.metric_alert.user_id, config={ "threshold_period": self.metric_alert.threshold_period, diff --git a/tests/sentry/workflow_engine/processors/test_data_sources.py b/tests/sentry/workflow_engine/processors/test_data_sources.py index e592a22b2e6cc9..b9b03f774f4f1e 100644 --- a/tests/sentry/workflow_engine/processors/test_data_sources.py +++ b/tests/sentry/workflow_engine/processors/test_data_sources.py @@ -26,7 +26,7 @@ def setUp(self): self.query_two = self.create_snuba_query() self.detector_one = self.create_detector(name="test_detector1") - self.detector_two = self.create_detector(name="test_detector2", type="metric_alert_fire") + self.detector_two = self.create_detector(name="test_detector2", type="metric_issue") self.ds1 = self.create_data_source(source_id=self.query.id, type="test") self.ds1.detectors.set([self.detector_one]) diff --git a/tests/sentry/workflow_engine/test_base.py b/tests/sentry/workflow_engine/test_base.py index fe2a369d61d384..4cf03a74469094 100644 --- a/tests/sentry/workflow_engine/test_base.py +++ b/tests/sentry/workflow_engine/test_base.py @@ -5,7 +5,7 @@ from sentry.backup.scopes import RelocationScope from sentry.db.models import Model from sentry.eventstore.models import Event, GroupEvent -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.incidents.utils.types import QuerySubscriptionUpdate from sentry.issues.issue_occurrence import IssueOccurrence from sentry.models.group import Group @@ -119,7 +119,7 @@ def create_detector_and_workflow( self, name_prefix: str = "test", workflow_triggers: DataConditionGroup | None = None, - detector_type: str = MetricAlertFire.slug, + detector_type: str = MetricIssue.slug, **kwargs, ) -> tuple[Workflow, Detector, DetectorWorkflow, DataConditionGroup]: """ diff --git a/tests/sentry/workflow_engine/test_integration.py b/tests/sentry/workflow_engine/test_integration.py index 1c33d0dc010998..b38256ecf56737 100644 --- a/tests/sentry/workflow_engine/test_integration.py +++ b/tests/sentry/workflow_engine/test_integration.py @@ -3,7 +3,7 @@ from sentry.eventstream.types import EventStreamEventType from sentry.grouping.grouptype import ErrorGroupType -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.incidents.utils.types import DATA_SOURCE_SNUBA_QUERY_SUBSCRIPTION from sentry.issues.ingest import save_issue_occurrence from sentry.models.group import Group @@ -24,7 +24,7 @@ def setUp(self): self.workflow_triggers, ) = self.create_detector_and_workflow( name_prefix="e2e-test", - detector_type="metric_alert_fire", + detector_type="metric_issue", ) detector_conditions = self.create_data_condition_group() @@ -45,14 +45,14 @@ def setUp(self): project_id=self.project.id, fingerprint=[f"detector-{self.detector.id}"], evidence_data={"detector_id": self.detector.id}, - type=MetricAlertFire.type_id, + type=MetricIssue.type_id, ) self.occurrence, group_info = save_issue_occurrence(occurrence_data, self.event) assert group_info is not None self.group = Group.objects.get(grouphash__hash=self.occurrence.fingerprint[0]) - assert self.group.type == MetricAlertFire.type_id + assert self.group.type == MetricIssue.type_id def call_post_process_group( self, @@ -144,7 +144,7 @@ def test_workflow_engine__workflows(self): @with_feature("organizations:workflow-engine-metric-alert-processing") def test_workflow_engine__workflows__other_events(self): """ - Ensure that the workflow engine only supports MetricAlertFire events for now. + Ensure that the workflow engine only supports MetricIssue events for now. """ error_event = self.store_event(data={}, project_id=self.project.id) diff --git a/tests/snuba/search/test_backend.py b/tests/snuba/search/test_backend.py index 324b3898c99626..dbd3ee24a185b9 100644 --- a/tests/snuba/search/test_backend.py +++ b/tests/snuba/search/test_backend.py @@ -12,7 +12,7 @@ from sentry.api.issue_search import convert_query_values, issue_search_config, parse_search_query from sentry.exceptions import InvalidSearchQuery from sentry.grouping.grouptype import ErrorGroupType -from sentry.incidents.grouptype import MetricAlertFire +from sentry.incidents.grouptype import MetricIssue from sentry.issues.grouptype import ( FeedbackGroup, NoiseConfig, @@ -3485,11 +3485,11 @@ def setUp(self): def test_no_feature(self): event_id = uuid.uuid4().hex - with self.feature(MetricAlertFire.build_ingest_feature_name()): + with self.feature(MetricIssue.build_ingest_feature_name()): _, group_info = self.process_occurrence( event_id=event_id, project_id=self.project.id, - type=MetricAlertFire.type_id, + type=MetricIssue.type_id, fingerprint=["some perf issue"], event_data={ "title": "some problem", From 0ce46f9dcfd970098fd635ec9a0ec3a5c64d791d Mon Sep 17 00:00:00 2001 From: Snigdha Sharma Date: Thu, 17 Apr 2025 22:04:01 -0700 Subject: [PATCH 2/2] Add back class def --- src/sentry/incidents/grouptype.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/sentry/incidents/grouptype.py b/src/sentry/incidents/grouptype.py index 86dcbda99c7fc3..338d212bcb1005 100644 --- a/src/sentry/incidents/grouptype.py +++ b/src/sentry/incidents/grouptype.py @@ -107,3 +107,8 @@ class MetricIssue(GroupType): @classmethod def allow_post_process_group(cls, organization: Organization) -> bool: return features.has("organizations:workflow-engine-metric-alert-processing", organization) + + +# This needs to be removed once the import in getsentry is updated to use MetricIssue +class MetricAlertFire: + slug = "metric_alert_fire"