Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions src/sentry/incidents/grouptype.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def build_occurrence_and_event_data(
occurrence = DetectorOccurrence(
issue_title="Some Issue Title",
subtitle="An Issue Subtitle",
type=MetricAlertFire,
type=MetricIssue,
level="error",
culprit="Some culprit",
)
Expand All @@ -51,10 +51,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
Expand Down Expand Up @@ -87,3 +87,8 @@ class MetricAlertFire(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"
4 changes: 2 additions & 2 deletions src/sentry/testutils/factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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"}
}


Expand Down
4 changes: 2 additions & 2 deletions src/sentry/workflow_engine/migration_helpers/alert_rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions tests/sentry/deletions/test_detector.py
Original file line number Diff line number Diff line change
@@ -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 (
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions tests/sentry/incidents/test_subscription_processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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") == [
Expand Down
Original file line number Diff line number Diff line change
@@ -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,
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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,
]
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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": {
Expand Down Expand Up @@ -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):
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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])
Expand All @@ -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(),
Expand Down Expand Up @@ -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
Expand Down
16 changes: 8 additions & 8 deletions tests/sentry/workflow_engine/endpoints/test_serializers.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -18,20 +18,20 @@
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)

assert result == {
"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):
Expand All @@ -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(
Expand Down Expand Up @@ -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": [
Expand Down Expand Up @@ -131,15 +131,15 @@ def test_serialize_full(self):
}
],
},
"config": default_detector_config_data[MetricAlertFire.slug],
"config": default_detector_config_data[MetricIssue.slug],
}

def test_serialize_bulk(self):
detectors = [
self.create_detector(
project_id=self.project.id,
name=f"Test Detector {i}",
type=MetricAlertFire.slug,
type=MetricIssue.slug,
)
for i in range(2)
]
Expand Down
6 changes: 3 additions & 3 deletions tests/sentry/workflow_engine/endpoints/test_validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -162,7 +162,7 @@ def setUp(self):
}
self.valid_data = {
"name": "Test Detector",
"detectorType": MetricAlertFire.slug,
"detectorType": MetricIssue.slug,
"dataSource": {
"field1": "test",
"field2": 123,
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down
Loading
Loading