@@ -333,7 +333,7 @@ def get_attrs(
333
333
incident_map [incident .id ] = serialize (incident , user = user )
334
334
335
335
serialized_alert_rules = serialize (alert_rules , user = user )
336
- serialized_map_by_id = {
336
+ serialized_alert_rule_map_by_id = {
337
337
serialized_alert ["id" ]: serialized_alert for serialized_alert in serialized_alert_rules
338
338
}
339
339
@@ -348,12 +348,26 @@ def get_attrs(
348
348
349
349
for item in item_list :
350
350
item_id = str (item .id )
351
- if item_id in serialized_map_by_id :
352
- serialized_alert_rule = serialized_map_by_id [item_id ]
351
+ if item_id in serialized_alert_rule_map_by_id :
352
+ # This is a metric alert rule
353
+ serialized_alert_rule = serialized_alert_rule_map_by_id [item_id ]
353
354
if "latestIncident" in self .expand :
354
- serialized_alert_rule ["latestIncident" ] = incident_map .get (item .incident_id )
355
+ # Eg. we _have_ an incident
356
+ try :
357
+ serialized_alert_rule ["latestIncident" ] = incident_map .get (item .incident_id )
358
+ except AttributeError as e :
359
+ logger .exception (
360
+ "incident serialization error" ,
361
+ extra = {
362
+ "exception" : e ,
363
+ "alert_rule_id" : item_id ,
364
+ "is_metric_alert" : isinstance (item , AlertRule ),
365
+ "is_issue_alert" : isinstance (item , Rule ),
366
+ },
367
+ )
355
368
results [item ] = serialized_alert_rule
356
369
elif item_id in serialized_issue_rule_map_by_id :
370
+ # This is an issue alert rule
357
371
results [item ] = serialized_issue_rule_map_by_id [item_id ]
358
372
else :
359
373
logger .error (
0 commit comments