添加告警配置

main
周平 11 months ago
parent 469b04438c
commit 85b1e044d0

@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
from typing import List, Dict, Any
from sqlalchemy import text
from website.db_mysql import get_session, to_json_list, to_json
class EnterpriseNodeAlertRepository(object):
def get_all(self) -> List[Dict]:
with get_session() as session:
sql = text(
"""SELECT * FROM `enterprise_alert` WHERE `enterprise_node_id`=:enterprise_node_id ORDER BY `created_at` DESC;"""
)
cursor = session.execute(
sql, {"enterprise_node_id": self.enterprise_node_id}
)
def get_one(self, enterprise_suid: str, enterprise_node_id: int) -> Dict | None:
with get_session() as session:
sql = text(
"""SELECT * FROM `enterprise_alert` WHERE `enterprise_suid`=:enterprise_suid and `node_id`=:node_id;"""
)
cursor = session.execute(
sql, {"enterprise_suid": enterprise_suid, "node_id": enterprise_node_id}
)
return to_json(cursor)
def update_or_inert(self, data: Dict) -> None:
with get_session() as session:
sql = text(
"""
INSERT INTO `enterprise_alert` (`enterprise_suid`, `node_id`, `node_suid`, `is_sms`, `sms_to`, `is_email`, `email_to`, `freq`)
VALUES (:enterprise_suid, :node_id, :node_suid, :is_sms, :sms_to, :is_email, :email_to, :freq)
ON DUPLICATE KEY UPDATE
`node_suid`=:node_suid, `is_sms`=:is_sms, `sms_to`=:sms_to, `is_email`=:is_email, `email_to`=:email_to, `freq`=:freq
WHERE `enterprise_suid` = :enterprise_suid AND `node_id` = :node_id;
"""
)
session.execute(sql, data)
session.commit()

@ -8,8 +8,5 @@ handlers = [
("/enterprise/model/deployment/add", handler.AddHandler),
("/enterprise/model/deployment/info", handler.InfoHandler),
("/enterprise/model/deployment/edit", handler.EditHandler),
]
page_handlers = [
]
page_handlers = []

@ -6,14 +6,15 @@ from website.handlers.enterprise_device import handler
handlers = [
("/enterprise/device/classification/add", handler.DeviceClassificationAddHandler),
("/enterprise/device/classification", handler.DeviceClassificationHandler),
("/enterprise/device/classification/delete", handler.DeviceClassificationDeleteHandler),
(
"/enterprise/device/classification/delete",
handler.DeviceClassificationDeleteHandler,
),
("/enterprise/entity/nodes/device/add", handler.DeviceAddHandler),
("/enterprise/entity/nodes/device/edit", handler.DeviceEditHandler),
("/enterprise/entity/nodes/device/delete", handler.DeviceDeleteHandler),
("/enterprise/entity/nodes/device/list", handler.DeviceListHandler),
("/enterprise/entity/nodes/device/list/simple", handler.DeviceListSimpleHandler),
("/enterprise/entity/nodes/device/info", handler.DeviceInfoHandler),
]
page_handlers = [
]
page_handlers = []

@ -9,6 +9,7 @@ from website.db.enterprise_busi_model import (
enterprise_busi_model_node_device as DB_BusiModelNodeDevice,
)
from website.db.enterprise_device import enterprise_device as DB_Device
from website.db.enterprise_node import enterprise_node_alert as DB_NodeAlert
from website.util import shortuuid
@ -380,3 +381,100 @@ class BusimodelDeployHandler(APIHandler):
db_busi_model_node_device.batch_insert_record(records)
self.finish()
class AlertHandler(APIHandler):
"""
- 描述企业节点节点信息 -> 设备列表 -> 告警设置信息
- 请求方式post
- 请求参数
> - node_id, int, 节点id
- 返回值
```
{
"is_sms": 1, # 是否sms
"sms_to": "xxxx", # 短信联系人
"is_email": 1, # 是否email
"email_to": "xxx", # 邮件联系人
"freq": "T", # T/每次D/每天W/每周M/每月
}
```
"""
@authenticated
def post(self):
node_id = self.get_int_argument("node_id")
if not node_id:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
db_node = DB_Node.EnterpriseNodeRepository()
node = db_node.get_node_by_id(node_id)
if not node:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "节点不存在")
node_suid = node["suid"]
row = db_node.get_entity_suid_by_node_id(node_id)
entity_suid = row["entity_suid"]
db_alert = DB_NodeAlert.EnterpriseNodeAlertRepository()
data = db_alert.get_one(entity_suid, node_suid)
self.finish(
{
"is_sms": data["is_sms"],
"sms_to": data["sms_to"],
"is_email": data["is_email"],
"email_to": data["email_to"],
"freq": data["freq"],
}
)
class AlertConfigHandler(APIHandler):
"""
- 描述企业节点节点信息 -> 设备列表 -> 告警设置更新配置
- 请求方式post
- 请求参数
> - node_id, int, 节点id
> - is_sms, int, 是否sms, 1/0/
> - sms_to, string, 短信联系人
> - is_email, int, 是否email1/0/
> - email_to, string, 邮件联系人
> - freq, string, 频次, T/每次D/每天W/每周M/每月
- 返回值
"""
@authenticated
def post(self):
node_id = self.get_int_argument("node_id")
is_sms = self.get_int_argument("is_sms", 0)
sms_to = self.get_escaped_argument("sms_to", "")
is_email = self.get_int_argument("is_email", 0)
email_to = self.get_escaped_argument("email_to", "")
freq = self.get_escaped_argument("freq", "T")
if not node_id:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
if freq not in ("T", "D", "W", "M"):
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
db_node = DB_Node.EnterpriseNodeRepository()
node = db_node.get_node_by_id(node_id)
if not node:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "节点不存在")
node_suid = node["suid"]
row = db_node.get_entity_suid_by_node_id(node_id)
entity_suid = row["entity_suid"]
insert_data = {
"entity_suid": entity_suid,
"node_id": node_id,
"node_suid": node_suid,
"is_sms": is_sms,
"sms_to": sms_to,
"is_email": is_email,
"email_to": email_to,
"freq": freq,
}
db_alert = DB_NodeAlert.EnterpriseNodeAlertRepository()
db_alert.update_or_inert(insert_data)
self.finish()

@ -2,18 +2,16 @@
from website.handlers.enterprise_node import handler
handlers = [
('/enterprise/entity/nodes/add', handler.AddHandler),
('/enterprise/entity/nodes/edit', handler.EditHandler),
('/enterprise/entity/nodes', handler.TreeHandler),
('/enterprise/entity/nodes/info', handler.InfoHandler),
('/enterprise/entity/nodes/delete', handler.DeleteHandler),
("/enterprise/entity/nodes/add", handler.AddHandler),
("/enterprise/entity/nodes/edit", handler.EditHandler),
("/enterprise/entity/nodes", handler.TreeHandler),
("/enterprise/entity/nodes/info", handler.InfoHandler),
("/enterprise/entity/nodes/delete", handler.DeleteHandler),
("/enterprise/entity/nodes/busimodel", handler.BusimodelHandler),
("/enterprise/entity/nodes/busimodel/info", handler.BusimodelInfoHandler),
("/enterprise/entity/nodes/busimodel/deploy", handler.BusimodelDeployHandler),
("/enterprise/entity/nodes/alert", handler.AlertHandler),
("/enterprise/entity/nodes/alert/config", handler.AlertConfigHandler),
]
page_handlers = [
]
page_handlers = []

Loading…
Cancel
Save