|
@@ -333,7 +333,7 @@ class CombinedRuleSerializer(Serializer):
|
|
|
incident_map[incident.id] = serialize(incident, user=user)
|
|
|
|
|
|
serialized_alert_rules = serialize(alert_rules, user=user)
|
|
|
- serialized_map_by_id = {
|
|
|
+ serialized_alert_rule_map_by_id = {
|
|
|
serialized_alert["id"]: serialized_alert for serialized_alert in serialized_alert_rules
|
|
|
}
|
|
|
|
|
@@ -348,12 +348,26 @@ class CombinedRuleSerializer(Serializer):
|
|
|
|
|
|
for item in item_list:
|
|
|
item_id = str(item.id)
|
|
|
- if item_id in serialized_map_by_id:
|
|
|
- serialized_alert_rule = serialized_map_by_id[item_id]
|
|
|
+ if item_id in serialized_alert_rule_map_by_id:
|
|
|
+ # This is a metric alert rule
|
|
|
+ serialized_alert_rule = serialized_alert_rule_map_by_id[item_id]
|
|
|
if "latestIncident" in self.expand:
|
|
|
- serialized_alert_rule["latestIncident"] = incident_map.get(item.incident_id)
|
|
|
+ # Eg. we _have_ an incident
|
|
|
+ try:
|
|
|
+ serialized_alert_rule["latestIncident"] = incident_map.get(item.incident_id)
|
|
|
+ except AttributeError as e:
|
|
|
+ logger.exception(
|
|
|
+ "incident serialization error",
|
|
|
+ extra={
|
|
|
+ "exception": e,
|
|
|
+ "alert_rule_id": item_id,
|
|
|
+ "is_metric_alert": isinstance(item, AlertRule),
|
|
|
+ "is_issue_alert": isinstance(item, Rule),
|
|
|
+ },
|
|
|
+ )
|
|
|
results[item] = serialized_alert_rule
|
|
|
elif item_id in serialized_issue_rule_map_by_id:
|
|
|
+ # This is an issue alert rule
|
|
|
results[item] = serialized_issue_rule_map_by_id[item_id]
|
|
|
else:
|
|
|
logger.error(
|