(node_data: dict)
| 1054 | |
| 1055 | |
| 1056 | def monitor_node_once(node_data: dict): |
| 1057 | from mod.project.node.dbutil import Node, ServerNodeDB, ServerMonitorRepo |
| 1058 | from mod.project.node.nodeutil.ssh_wrap import SSHApi |
| 1059 | from mod.base.ssh_executor import test_ssh_config |
| 1060 | try: |
| 1061 | if node_data["app_key"] == "local" and node_data["api_key"] == "local": |
| 1062 | return |
| 1063 | node_data["error"] = json.loads(node_data["error"]) |
| 1064 | node_data["ssh_conf"] = json.loads(node_data["ssh_conf"]) |
| 1065 | node, err = Node.from_dict(node_data) |
| 1066 | if err: |
| 1067 | public.print_log("节点数据解析错误:{}".format(err)) |
| 1068 | return |
| 1069 | |
| 1070 | if node_data["lpver"]: |
| 1071 | srv = LPanelNode(node.address, node.api_key, node.lpver) |
| 1072 | elif node.api_key or node.app_key: |
| 1073 | srv = ServerNode(node.address, node.api_key, node.app_key) |
| 1074 | else: |
| 1075 | srv =SSHApi(**node_data["ssh_conf"]) |
| 1076 | |
| 1077 | data, err = srv.get_net_work() |
| 1078 | if err: |
| 1079 | node.error_num += 1 |
| 1080 | node.error = { |
| 1081 | "msg": err, |
| 1082 | "time": int(time.time()) |
| 1083 | } |
| 1084 | if node.error_num >= 2: |
| 1085 | node.status = 0 |
| 1086 | ServerMonitorRepo().remove_cache(node.id) |
| 1087 | |
| 1088 | ServerNodeDB().update_node(node) |
| 1089 | |
| 1090 | else: |
| 1091 | if node.error_num > 0: |
| 1092 | node.error_num = 0 |
| 1093 | node.error = {} |
| 1094 | node.status = 1 |
| 1095 | ServerNodeDB().update_node(node) |
| 1096 | |
| 1097 | if data: |
| 1098 | repo = ServerMonitorRepo() |
| 1099 | repo.save_server_status(node.id, data) |
| 1100 | if repo.is_reboot_wait(node.server_ip): |
| 1101 | repo.set_wait_reboot(node.server_ip, False) |
| 1102 | if not node_data["ssh_test"] and not node_data["ssh_conf"] and not isinstance(srv, SSHApi): |
| 1103 | ssh_key, err = srv.read_ssh_key() |
| 1104 | if err: |
| 1105 | public.print_log("获取SSH密钥失败:{}".format(err)) |
| 1106 | return |
| 1107 | port = srv.get_sshd_port() |
| 1108 | if not port: |
| 1109 | public.print_log("获取SSH服务端口失败") |
| 1110 | return |
| 1111 | |
| 1112 | conf = { |
| 1113 | "host": srv.node_server_ip, |
no test coverage detected