sysom1/sysom_server/sysom_diagnosis/service_scripts/rca_pre.py

49 lines
1.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from .base import DiagnosisPreProcessor, DiagnosisTask, DiagnosisJob
from sysom_utils import SysomFramework
# 创建一个 GClient 用于访问 sysom-api 服务
g_client = SysomFramework.gclient("sysom_rca")
# 调用 sysom-api 服务的接口获取主机列表
#res = g_client.get("/api/v1/host/")
# 输出主机列表
#print(res.json())
class PreProcessor(DiagnosisPreProcessor):
"""Command diagnosis
Just invoke command in target instance and get stdout result
Args:
DiagnosisPreProcessor (_type_): _description_
"""
def get_diagnosis_cmds(self, params: dict) -> DiagnosisTask:
rca_type = params.get("rca_type", "rca")
ts = params.get("time", "")
base_item = params.get("base_item", "")
machine_ip = params.get("instance", "")
print ("\n\n",rca_type,ts,base_item,machine_ip,"\n\n")
retrca = g_client.post("/api/v1/rca/rca_entry",json={"rca_type":rca_type,"timestamp":ts,"base_item":base_item,"machine_ip":machine_ip})
print ("\n\n",retrca.json(),"\n\n")
try:
retrca_dict = retrca.json()
except:
retrca_dict = {"success":False,"errmsg":"rca_pre error!","dist":[]}
pass
return DiagnosisTask(
# 离线模式不需要在节点上执行,所以此处 instance 和 cmd 指定为空即可
jobs=[DiagnosisJob(instance="", cmd="")],
# 开启离线模式
offline_mode=True,
# 返回离线诊断的结果(数组中的每一项,最后都会传递到 DiagnosisJobResult.stdout
offline_results=[
retrca_dict
]
)