Skip to content

Commit d447c15

Browse files
committed
fix typing, add conditiontype enum
1 parent 4774c94 commit d447c15

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

src/sentry/workflow_engine/metric_helpers.py

+21-8
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
Workflow,
2323
WorkflowDataConditionGroup,
2424
)
25-
from sentry.workflow_engine.models.data_condition import Condition
25+
from sentry.workflow_engine.models.data_condition import Condition, ConditionType
2626
from sentry.workflow_engine.types import ActionType, DataSourceType, DetectorPriorityLevel
2727

2828

@@ -46,12 +46,17 @@ def create_metric_action(alert_rule_trigger_action: AlertRuleTriggerAction) -> N
4646
)
4747

4848
DataConditionGroupAction.objects.update_or_create(
49-
condition_group_id=alert_rule_trigger_data_condition.data_condition.condition_group.id, # getting dataconditiongroup
49+
condition_group_id=alert_rule_trigger_data_condition.data_condition.condition_group.id,
5050
action_id=action.id,
5151
)
5252

5353

5454
def create_metric_data_condition(alert_rule_trigger: AlertRuleTrigger) -> None:
55+
alert_rule_detector = AlertRuleDetector.objects.get(alert_rule=alert_rule_trigger.alert_rule)
56+
data_condition_group = alert_rule_detector.detector.workflow_condition_group
57+
if not data_condition_group:
58+
return None
59+
5560
condition_result = (
5661
DetectorPriorityLevel.MEDIUM
5762
if alert_rule_trigger.label == "warning"
@@ -62,13 +67,12 @@ def create_metric_data_condition(alert_rule_trigger: AlertRuleTrigger) -> None:
6267
Condition.GREATER if threshold_type == AlertRuleThresholdType.ABOVE else Condition.LESS
6368
)
6469

65-
alert_rule_detector = AlertRuleDetector.objects.get(alert_rule=alert_rule_trigger.alert_rule)
6670
data_condition = DataCondition.objects.create(
6771
condition=condition,
6872
comparison=alert_rule_trigger.alert_threshold,
6973
condition_result=condition_result,
70-
type="MetricCondition", # ??
71-
condition_group=alert_rule_detector.detector.workflow_condition_group,
74+
type=ConditionType.METRIC_CONDITION,
75+
condition_group=data_condition_group,
7276
)
7377
AlertRuleTriggerDataCondition.objects.create(
7478
alert_rule_trigger=alert_rule_trigger, data_condition=data_condition
@@ -94,7 +98,15 @@ def create_metric_detector_and_workflow(
9498
alert_rule: AlertRule,
9599
user: RpcUser | None = None,
96100
) -> None:
97-
query_subscription = QuerySubscription.objects.get(snuba_query=alert_rule.snuba_query.id)
101+
snuba_query = alert_rule.snuba_query
102+
if not snuba_query:
103+
return None
104+
105+
project = alert_rule.projects.first()
106+
if not project:
107+
return None
108+
109+
query_subscription = QuerySubscription.objects.get(snuba_query=snuba_query.id)
98110
data_source = DataSource.objects.create(
99111
organization_id=alert_rule.organization_id,
100112
query_id=query_subscription.id,
@@ -111,10 +123,11 @@ def create_metric_detector_and_workflow(
111123
enabled=True,
112124
created_by_id=user.id if user else None,
113125
)
126+
114127
detector = Detector.objects.create(
115-
project_id=alert_rule.projects.first().id,
128+
project_id=project.id,
116129
enabled=True,
117-
created_by_id=user.id,
130+
created_by_id=user.id if user else None,
118131
name=alert_rule.name,
119132
workflow_condition_group=data_condition_group,
120133
type=MetricAlertFire.slug,

src/sentry/workflow_engine/models/data_condition.py

+4
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
logger = logging.getLogger(__name__)
2020

2121

22+
class ConditionType(StrEnum):
23+
METRIC_CONDITION = "MetricCondition"
24+
25+
2226
class Condition(StrEnum):
2327
EQUAL = "eq"
2428
GREATER_OR_EQUAL = "gte"

0 commit comments

Comments
 (0)