mirror of https://github.com/openspug/spug
82 lines
2.9 KiB
Python
82 lines
2.9 KiB
Python
# Copyright: (c) OpenSpug Organization. https://github.com/openspug/spug
|
|
# Copyright: (c) <spug.dev@gmail.com>
|
|
# Released under the AGPL-3.0 License.
|
|
from libs.utils import human_datetime
|
|
from libs.spug import Notification
|
|
import json
|
|
|
|
|
|
def send_fail_notify(task, msg=None):
|
|
rst_notify = json.loads(task.rst_notify)
|
|
mode = rst_notify.get('mode')
|
|
url = rst_notify.get('value')
|
|
if mode != '0' and url:
|
|
_do_notify(task, mode, url, msg)
|
|
|
|
|
|
def _do_notify(task, mode, url, msg):
|
|
if mode == '1':
|
|
texts = [
|
|
'## <font color="#f90202">任务执行失败通知</font> ## ',
|
|
f'**任务名称:** {task.name} ',
|
|
f'**任务类型:** {task.type} ',
|
|
f'**描述信息:** {msg or "请在任务计划执行历史中查看详情"} ',
|
|
f'**发生时间:** {human_datetime()} ',
|
|
'> 来自 Spug运维平台'
|
|
]
|
|
data = {
|
|
'msgtype': 'markdown',
|
|
'markdown': {
|
|
'title': '任务执行失败通知',
|
|
'text': '\n\n'.join(texts)
|
|
},
|
|
'at': {
|
|
'isAtAll': True
|
|
}
|
|
}
|
|
Notification.handle_request(url, data, 'dd')
|
|
elif mode == '2':
|
|
data = {
|
|
'task_id': task.id,
|
|
'task_name': task.name,
|
|
'task_type': task.type,
|
|
'message': msg or '请在任务计划执行历史中查看详情',
|
|
'created_at': human_datetime()
|
|
}
|
|
Notification.handle_request(url, data)
|
|
elif mode == '3':
|
|
texts = [
|
|
'## <font color="warning">任务执行失败通知</font>',
|
|
f'任务名称: {task.name}',
|
|
f'任务类型: {task.type}',
|
|
f'描述信息: {msg or "请在任务计划执行历史中查看详情"}',
|
|
f'发生时间: {human_datetime()}',
|
|
'> 来自 Spug运维平台'
|
|
]
|
|
data = {
|
|
'msgtype': 'markdown',
|
|
'markdown': {
|
|
'content': '\n'.join(texts)
|
|
}
|
|
}
|
|
Notification.handle_request(url, data, 'wx')
|
|
elif mode == '4':
|
|
data = {
|
|
'msg_type': 'post',
|
|
'content': {
|
|
'post': {
|
|
'zh_cn': {
|
|
'title': '任务执行失败通知',
|
|
'content': [
|
|
[{'tag': 'text', 'text': f'任务名称: {task.name}'}],
|
|
[{'tag': 'text', 'text': f'任务类型: {task.type}'}],
|
|
[{'tag': 'text', 'text': f'描述信息: {msg or "请在任务计划执行历史中查看详情"}'}],
|
|
[{'tag': 'text', 'text': f'发生时间: {human_datetime()}'}],
|
|
[{'tag': 'at', 'user_id': 'all'}],
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Notification.handle_request(url, data, 'fs')
|