Skip to content

Commit a990ab1

Browse files
authored
chore(aci): add default workflow to match default rule (#87207)
1 parent ab043dd commit a990ab1

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

src/sentry/receivers/rules.py

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
import logging
22

3+
from django.db import router, transaction
4+
5+
from sentry import features
36
from sentry.models.project import Project
47
from sentry.models.rule import Rule
58
from sentry.notifications.types import FallthroughChoiceType
69
from sentry.signals import alert_rule_created, project_created
710
from sentry.users.services.user.model import RpcUser
11+
from sentry.workflow_engine.migration_helpers.issue_alert_migration import IssueAlertMigrator
812

913
logger = logging.getLogger("sentry")
1014

@@ -36,7 +40,18 @@ def create_default_rules(project: Project, default_rules=True, RuleModel=Rule, *
3640
return
3741

3842
rule_data = DEFAULT_RULE_DATA
39-
rule = RuleModel.objects.create(project=project, label=DEFAULT_RULE_LABEL, data=rule_data)
43+
44+
with transaction.atomic(router.db_for_write(RuleModel)):
45+
rule = RuleModel.objects.create(project=project, label=DEFAULT_RULE_LABEL, data=rule_data)
46+
47+
if features.has(
48+
"organizations:workflow-engine-issue-alert-dual-write", project.organization
49+
):
50+
workflow = IssueAlertMigrator(rule).run()
51+
logger.info(
52+
"workflow_engine.default_issue_alert.migrated",
53+
extra={"rule_id": rule.id, "workflow_id": workflow.id},
54+
)
4055

4156
try:
4257
user: RpcUser = project.organization.get_default_owner()

tests/sentry/receivers/test_onboarding.py

+20
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from sentry.models.project import Project
1616
from sentry.models.rule import Rule
1717
from sentry.organizations.services.organization import organization_service
18+
from sentry.receivers.rules import DEFAULT_RULE_LABEL
1819
from sentry.signals import (
1920
alert_rule_created,
2021
event_processed,
@@ -30,10 +31,12 @@
3031
from sentry.silo.base import SiloMode
3132
from sentry.testutils.cases import TestCase
3233
from sentry.testutils.helpers.datetime import before_now
34+
from sentry.testutils.helpers.features import with_feature
3335
from sentry.testutils.outbox import outbox_runner
3436
from sentry.testutils.silo import assume_test_silo_mode
3537
from sentry.testutils.skips import requires_snuba
3638
from sentry.utils.samples import load_data
39+
from sentry.workflow_engine.models import Workflow
3740

3841
pytestmark = [requires_snuba]
3942

@@ -138,6 +141,23 @@ def test_project_created(self):
138141
)
139142
assert task is not None
140143

144+
def test_project_created__default_rule(self):
145+
project = self.create_project()
146+
project_created.send(project=project, user=self.user, sender=type(project))
147+
148+
assert Rule.objects.filter(project=project).exists()
149+
assert not Workflow.objects.filter(organization=project.organization).exists()
150+
151+
@with_feature("organizations:workflow-engine-issue-alert-dual-write")
152+
def test_project_created__default_workflow(self):
153+
project = self.create_project()
154+
project_created.send(project=project, user=self.user, sender=type(project))
155+
156+
assert Rule.objects.filter(project=project).exists()
157+
assert Workflow.objects.filter(
158+
organization=project.organization, name=DEFAULT_RULE_LABEL
159+
).exists()
160+
141161
@patch("sentry.analytics.record")
142162
def test_project_created_with_origin(self, record_analytics):
143163
project = self.create_project()

0 commit comments

Comments
 (0)