in lib/metric-config-parser/metric_config_parser/alert.py [0:0]
def merge(self, other: "AlertsSpec"):
"""
Merge another alert spec into the current one.
The `other` AlertsSpec overwrites existing keys.
"""
for alert_name, alert_definition in other.definitions.items():
if alert_name in self.definitions:
for key in attr.fields_dict(type(self.definitions[alert_name])):
if key == "metrics":
self.definitions[alert_name].metrics += alert_definition.metrics
else:
setattr(
self.definitions[alert_name],
key,
getattr(alert_definition, key)
or getattr(self.definitions[alert_name], key),
)
else:
self.definitions[alert_name] = alert_definition
self.definitions.update(other.definitions)