majuna/app/alarms.py

47 lines
1.4 KiB
Python
Raw Normal View History

import datetime
2022-05-16 11:44:03 +01:00
from typing import Optional
2022-03-10 14:26:22 +00:00
from app.extensions import db
2022-04-22 14:01:16 +01:00
from app.models.alarms import Alarm
2022-03-10 14:26:22 +00:00
def _get_alarm(target: str,
alarm_type: str,
*,
2022-05-16 11:44:03 +01:00
proxy_id: Optional[int] = None,
origin_id: Optional[int] = None,
create_if_missing: bool = True) -> Optional[Alarm]:
alarm: Optional[Alarm]
2022-03-10 14:26:22 +00:00
if target == "proxy":
alarm = Alarm.query.filter(
Alarm.target == "proxy",
Alarm.alarm_type == alarm_type,
Alarm.proxy_id == proxy_id
).first()
elif target == "origin":
alarm = Alarm.query.filter(
Alarm.target == "origin",
Alarm.alarm_type == alarm_type,
Alarm.proxy_id == origin_id
).first()
else:
return None
2022-03-10 14:26:22 +00:00
if create_if_missing and alarm is None:
alarm = Alarm()
alarm.target = target
alarm.alarm_type = alarm_type
alarm.state_changed = datetime.datetime.utcnow()
2022-03-10 14:26:22 +00:00
if target == "proxy":
alarm.proxy_id = proxy_id
if target == "origin":
alarm.origin_id = origin_id
2022-03-10 14:26:22 +00:00
db.session.add(alarm)
db.session.commit()
return alarm
2022-05-16 11:44:03 +01:00
def get_proxy_alarm(proxy_id: int, alarm_type: str) -> Alarm:
alarm = _get_alarm("proxy", alarm_type, proxy_id=proxy_id)
assert(alarm is not None)
return alarm