[ Agent ] [ Executor ] 优化Excuetor部分的代码
This commit is contained in:
@@ -64,7 +64,7 @@ func Execute(em *ExecutionMessage) ([]string, error) {
|
|||||||
|
|
||||||
// 归一化错误和日志
|
// 归一化错误和日志
|
||||||
if err != nil {
|
if err != nil {
|
||||||
resultLog = append(resultLog, fmt.Sprintf("Error: %s", err.Error()))
|
resultLog = append(resultLog, "↓↓↓ 命令 Error 如下 ↓↓↓", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
commandResult := fmt.Sprintf("Excution Comand are=> %v, Executor Result: %v", realCommand, resultLog)
|
commandResult := fmt.Sprintf("Excution Comand are=> %v, Executor Result: %v", realCommand, resultLog)
|
||||||
|
|||||||
@@ -36,33 +36,37 @@ func AllOutputCommandExecutor(singleLineCommand []string) ([]string, error) {
|
|||||||
|
|
||||||
// result
|
// result
|
||||||
var resultSlice []string
|
var resultSlice []string
|
||||||
|
var resultError error
|
||||||
|
|
||||||
cmd := exec.Command(singleLineCommand[0], singleLineCommand[1:]...)
|
cmd := exec.Command(singleLineCommand[0], singleLineCommand[1:]...)
|
||||||
stdout, err := cmd.StdoutPipe()
|
stdout, err := cmd.StdoutPipe()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.ErrorF("command %v stdout error => %v", singleLineCommand, err)
|
log.ErrorF("command %v stdout error => %v", singleLineCommand, err)
|
||||||
|
resultError = err
|
||||||
}
|
}
|
||||||
stderr, err := cmd.StderrPipe()
|
stderr, err := cmd.StderrPipe()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.ErrorF("command %v stderr error => %v", singleLineCommand, err)
|
log.ErrorF("command %v stderr error => %v", singleLineCommand, err)
|
||||||
|
resultError = err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := cmd.Start(); err != nil {
|
if err := cmd.Start(); err != nil {
|
||||||
log.ErrorF("command %v runtime error => %v", singleLineCommand, err)
|
log.ErrorF("command %v runtime error => %v", singleLineCommand, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
resultSlice = append(resultSlice, "👇👇👇 命令 输出 信息如下 👇👇👇")
|
resultSlice = append(resultSlice, "↓↓↓ 命令 输出 如下 ↓↓↓")
|
||||||
resultSlice = append(resultSlice, collectOutput(stdout, resultSlice)...)
|
resultSlice = collectOutput(stdout, resultSlice)
|
||||||
resultSlice = append(resultSlice, "👇👇👇 命令 错误 信息如下 👇👇👇")
|
resultSlice = append(resultSlice, "↓↓↓ 命令 错误 如下 ↓↓↓")
|
||||||
resultSlice = append(resultSlice, collectOutput(stderr, resultSlice)...)
|
resultSlice = collectOutput(stderr, resultSlice)
|
||||||
|
|
||||||
if err := cmd.Wait(); err != nil {
|
if err := cmd.Wait(); err != nil {
|
||||||
log.ErrorF("command %v result error => %v", singleLineCommand, err)
|
log.ErrorF("command %v result error => %v", singleLineCommand, err)
|
||||||
|
resultError = err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.DebugF("real time exec result are %v", resultSlice)
|
log.DebugF("real time exec result are %v", resultSlice)
|
||||||
|
|
||||||
return resultSlice, nil
|
return resultSlice, resultError
|
||||||
}
|
}
|
||||||
|
|
||||||
func realTimeOutput(r io.Reader) {
|
func realTimeOutput(r io.Reader) {
|
||||||
|
|||||||
@@ -128,14 +128,18 @@ func executorOMHandler(octopusMessage *OctopusMessage) {
|
|||||||
|
|
||||||
// 交给后端的实际处理器处理, 再次策略
|
// 交给后端的实际处理器处理, 再次策略
|
||||||
resultLog, err := executor.Execute(executionMessage)
|
resultLog, err := executor.Execute(executionMessage)
|
||||||
if err != nil {
|
if err == nil {
|
||||||
octopusMessage.ResultCode = "200"
|
octopusMessage.ResultCode = "200"
|
||||||
} else {
|
} else {
|
||||||
octopusMessage.ResultCode = "300"
|
octopusMessage.ResultCode = "300"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 消息返回逻辑
|
||||||
|
if executionMessage.NeedResultReplay {
|
||||||
// send back the result log
|
// send back the result log
|
||||||
octopusMessage.Result = resultLog
|
octopusMessage.Result = resultLog
|
||||||
|
}
|
||||||
|
|
||||||
octopusMessage.ACTime = utils.ParseDateTimeTime()
|
octopusMessage.ACTime = utils.ParseDateTimeTime()
|
||||||
|
|
||||||
// Send
|
// Send
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
package io.wdd.rpc.scheduler.service.script;
|
package io.wdd.rpc.scheduler.service.script;
|
||||||
|
|
||||||
|
|
||||||
import io.wdd.rpc.execute.ExecutionMessage;
|
import io.wdd.rpc.execute.service.ExecutionService;
|
||||||
import io.wdd.rpc.message.OctopusMessage;
|
|
||||||
import io.wdd.rpc.scheduler.beans.ScriptSchedulerDTO;
|
import io.wdd.rpc.scheduler.beans.ScriptSchedulerDTO;
|
||||||
import io.wdd.rpc.scheduler.config.QuartzSchedulerUtils;
|
import io.wdd.rpc.scheduler.config.QuartzSchedulerUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -22,7 +21,7 @@ import java.util.stream.Collectors;
|
|||||||
public class AgentApplyScheduledScript {
|
public class AgentApplyScheduledScript {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
AsyncExecutionService asyncExecutionService;
|
ExecutionService executionService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
QuartzSchedulerUtils quartzSchedulerUtils;
|
QuartzSchedulerUtils quartzSchedulerUtils;
|
||||||
@@ -52,27 +51,25 @@ public class AgentApplyScheduledScript {
|
|||||||
.stream()
|
.stream()
|
||||||
.map(
|
.map(
|
||||||
targetMachine -> {
|
targetMachine -> {
|
||||||
OctopusMessage octopusMessage = asyncExecutionService
|
// OctopusMessage octopusMessage = executionService
|
||||||
.AsyncCallSendCommandToAgent(
|
// .SendCommandToAgent(
|
||||||
targetMachine,
|
// targetMachine,
|
||||||
finalScriptType,
|
// finalScriptType,
|
||||||
null,
|
// null,
|
||||||
null,
|
// null,
|
||||||
completeCommandList,
|
// completeCommandList,
|
||||||
false,
|
// false,
|
||||||
null,
|
// false
|
||||||
false
|
// );
|
||||||
);
|
|
||||||
|
|
||||||
String resultKey = ((ExecutionMessage) octopusMessage.getContent()).getResultKey();
|
|
||||||
|
|
||||||
// 构建Map
|
// 构建Map
|
||||||
futureResultKeyMap.put(
|
futureResultKeyMap.put(
|
||||||
targetMachine,
|
targetMachine,
|
||||||
resultKey
|
"todo 2023年8月14日"
|
||||||
);
|
);
|
||||||
|
|
||||||
return resultKey;
|
return "todo 2023年8月14日";
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|||||||
Reference in New Issue
Block a user