2022-04-20 16:46:30 +01:00
|
|
|
import datetime
|
|
|
|
|
2022-03-10 14:26:22 +00:00
|
|
|
from app.extensions import db
|
|
|
|
from app.models import Alarm
|
|
|
|
|
|
|
|
|
|
|
|
def _get_alarm(target: str,
|
|
|
|
alarm_type: str,
|
2022-04-20 16:46:30 +01:00
|
|
|
*,
|
2022-03-10 14:26:22 +00:00
|
|
|
proxy_id=None,
|
2022-04-20 16:46:30 +01:00
|
|
|
origin_id=None,
|
2022-03-10 14:26:22 +00:00
|
|
|
create_if_missing=True):
|
|
|
|
if target == "proxy":
|
|
|
|
alarm = Alarm.query.filter(
|
|
|
|
Alarm.target == "proxy",
|
|
|
|
Alarm.alarm_type == alarm_type,
|
|
|
|
Alarm.proxy_id == proxy_id
|
|
|
|
).first()
|
2022-04-20 16:46:30 +01:00
|
|
|
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
|
2022-04-20 16:46:30 +01:00
|
|
|
alarm.state_changed = datetime.datetime.utcnow()
|
2022-03-10 14:26:22 +00:00
|
|
|
if target == "proxy":
|
|
|
|
alarm.proxy_id = proxy_id
|
2022-04-20 16:46:30 +01:00
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
def get_proxy_alarm(proxy_id: int, alarm_type: str):
|
2022-04-20 16:46:30 +01:00
|
|
|
return _get_alarm("proxy", alarm_type, proxy_id=proxy_id)
|