You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
3.1 KiB
Python

from dataclasses import field
from marshmallow_dataclass import dataclass
from marshmallow import validates_schema, ValidationError
from iti.applications.common.utils.schema import BaseSchema, Pagination
from typing import ClassVar, Optional
from apiflask import fields
@dataclass(base_schema=BaseSchema)
class AlertRuleQuery(Pagination):
"""
告警规则信息查询请求
"""
node_id: int = field(
default=None,
metadata={
"required": False,
"metadata": {"example": 1, "description": "节点ID"},
},
)
status: int = field(
default=None,
metadata={
"required": False,
"metadata": {"example": 0, "description": "状态"},
},
)
Schema: ClassVar[BaseSchema] = BaseSchema
class AlertRuleAddRequest(BaseSchema):
"""
告警规则信息添加请求
"""
node_id = fields.Integer(
required=True,
metadata={"example": 1, "description": "节点ID"},
)
rule_name = fields.String(
required=True,
metadata={"example": "告警规则1", "description": "告警规则名称"},
)
alert_rule = fields.String(
required=True,
metadata={"example": "x<4", "description": "告警规则表达式"},
)
alert_text = fields.String(
required=False,
metadata={"example": "节点{{node.title}}告警内容", "description": "告警内容文本模板"},
)
alert_level = fields.Integer(
required=False,
metadata={"example": 0, "description": "告警级别 0-预警,1-一般,2-紧急,3-严重"},
load_default=0,
)
trigger_count = fields.Integer(
required=False,
metadata={"example": 1, "description": "阈值触发次数,超过次数后告警"},
load_default=1,
)
status = fields.Integer(
required=False,
metadata={"example": 1, "description": "状态 1-启用,0-禁用"},
load_default=1,
)
class AlertRuleUpdateRequest(BaseSchema):
"""
告警规则信息更新请求
"""
node_id = fields.Integer(
required=True,
metadata={"example": 1, "description": "节点ID"},
)
rule_name = fields.String(
required=False,
metadata={"example": "告警规则1", "description": "告警规则名称"},
)
alert_rule = fields.String(
required=False,
metadata={"example": "x<4", "description": "告警规则表达式"},
)
alert_text = fields.String(
required=False,
metadata={"example": "节点{{node.title}}告警内容", "description": "告警内容文本模板"},
)
alert_level = fields.Integer(
required=False,
metadata={"example": 0, "description": "告警级别 0-预警,1-一般,2-紧急,3-严重"},
)
trigger_count = fields.Integer(
required=False,
metadata={"example": 1, "description": "阈值触发次数,超过次数后告警"},
load_default=1,
)
status = fields.Integer(
required=False,
metadata={"example": 1, "description": "状态 1-启用,0-禁用"},
load_default=1,
)