58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
|
|
# coding: utf-8
|
||
|
|
|
||
|
|
import sys
|
||
|
|
import os
|
||
|
|
import traceback
|
||
|
|
import argparse
|
||
|
|
|
||
|
|
os.chdir('/www/server/panel/')
|
||
|
|
sys.path.insert(0, "/www/server/panel/class/")
|
||
|
|
sys.path.insert(0, "/www/server/panel/")
|
||
|
|
if "/www/server/panel/class" not in sys.path:
|
||
|
|
sys.path.insert(0, "/www/server/panel/class")
|
||
|
|
import public
|
||
|
|
|
||
|
|
parser = argparse.ArgumentParser()
|
||
|
|
parser.add_argument("--task_type", type=str, required=True, help="Task type")
|
||
|
|
parser.add_argument("--task_id", type=int, required=True, help="Task ID")
|
||
|
|
parser.add_argument("--exclude_nodes", type=str, help="Exclude nodes")
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
task_type, task_id = args.task_type, args.task_id
|
||
|
|
ex_ids = []
|
||
|
|
if args.exclude_nodes:
|
||
|
|
ex_ids = [int(i) for i in args.exclude_nodes.split(",")]
|
||
|
|
|
||
|
|
|
||
|
|
pid_file = "{}/logs/executor_log/{}_{}_0.pid".format(public.get_panel_path(), task_type, task_id)
|
||
|
|
with open(pid_file, "w") as f:
|
||
|
|
f.write(str(os.getpid()))
|
||
|
|
|
||
|
|
def cmd_task(main_id: int, log_id: int = 0):
|
||
|
|
from mod.project.node.task_flow.command_task import CMDTask
|
||
|
|
_task = CMDTask(main_id, log_id, print)
|
||
|
|
_task.start()
|
||
|
|
|
||
|
|
def file_task(main_id: int, exclude_nodes: list, log_id: int = 0):
|
||
|
|
from mod.project.node.task_flow.file_task import SelfFiletransferTask
|
||
|
|
_task = SelfFiletransferTask(main_id, exclude_nodes, log_id)
|
||
|
|
_task.start()
|
||
|
|
|
||
|
|
def flow_task(main_id: int):
|
||
|
|
from mod.project.node.task_flow.flow import FlowTask
|
||
|
|
_task = FlowTask(main_id)
|
||
|
|
_task.start()
|
||
|
|
|
||
|
|
try:
|
||
|
|
if task_type == "command":
|
||
|
|
cmd_task(task_id)
|
||
|
|
elif task_type == "file":
|
||
|
|
file_task(task_id, ex_ids)
|
||
|
|
elif task_type == "flow":
|
||
|
|
flow_task(task_id)
|
||
|
|
|
||
|
|
except:
|
||
|
|
traceback.print_exc()
|
||
|
|
with open('/tmp/node_flow_task.log', 'w') as f:
|
||
|
|
f.write(traceback.format_exc())
|
||
|
|
os.remove(pid_file)
|