lego-monitoring/src/lego_monitoring/alerting/current.py

26 lines
781 B
Python

from typing import Optional
from .alert import Alert
from .enum import AlertType, Severity
class CurrentAlerts(list[Alert]):
def get_severity(self) -> Optional[Severity]:
max_severity = None
for a in self:
if max_severity is None or a.severity > max_severity:
max_severity = a.severity
return a.severity
def get_types(self) -> set[AlertType]:
types = set()
for a in self:
types.add(a.alert_type)
return types
def update(self, alerts: list[Alert]) -> tuple[Optional[Severity], Optional[Severity]]:
old_severity = self.get_severity()
self.clear()
self.extend(alerts)
new_severity = self.get_severity()
return (old_severity, new_severity)