[ Agent ] [ Executor ] 优化Excuetor部分的代码

This commit is contained in:
zeaslity
2023-08-14 10:43:22 +08:00
parent 92390b4d6f
commit 7ca5e232bf
4 changed files with 31 additions and 26 deletions

View File

@@ -64,7 +64,7 @@ func Execute(em *ExecutionMessage) ([]string, error) {
// 归一化错误和日志
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)

View File

@@ -36,33 +36,37 @@ func AllOutputCommandExecutor(singleLineCommand []string) ([]string, error) {
// result
var resultSlice []string
var resultError error
cmd := exec.Command(singleLineCommand[0], singleLineCommand[1:]...)
stdout, err := cmd.StdoutPipe()
if err != nil {
log.ErrorF("command %v stdout error => %v", singleLineCommand, err)
resultError = err
}
stderr, err := cmd.StderrPipe()
if err != nil {
log.ErrorF("command %v stderr error => %v", singleLineCommand, err)
resultError = err
}
if err := cmd.Start(); err != nil {
log.ErrorF("command %v runtime error => %v", singleLineCommand, err)
}
resultSlice = append(resultSlice, "👇👇👇 命令 输出 信息如下 👇👇👇")
resultSlice = append(resultSlice, collectOutput(stdout, resultSlice)...)
resultSlice = append(resultSlice, "👇👇👇 命令 错误 信息如下 👇👇👇")
resultSlice = append(resultSlice, collectOutput(stderr, resultSlice)...)
resultSlice = append(resultSlice, "↓↓↓ 命令 输出 如下 ↓↓↓")
resultSlice = collectOutput(stdout, resultSlice)
resultSlice = append(resultSlice, "↓↓↓ 命令 错误 如下 ↓↓↓")
resultSlice = collectOutput(stderr, resultSlice)
if err := cmd.Wait(); err != nil {
log.ErrorF("command %v result error => %v", singleLineCommand, err)
resultError = err
}
log.DebugF("real time exec result are %v", resultSlice)
return resultSlice, nil
return resultSlice, resultError
}
func realTimeOutput(r io.Reader) {

View File

@@ -128,14 +128,18 @@ func executorOMHandler(octopusMessage *OctopusMessage) {
// 交给后端的实际处理器处理, 再次策略
resultLog, err := executor.Execute(executionMessage)
if err != nil {
if err == nil {
octopusMessage.ResultCode = "200"
} else {
octopusMessage.ResultCode = "300"
}
// send back the result log
octopusMessage.Result = resultLog
// 消息返回逻辑
if executionMessage.NeedResultReplay {
// send back the result log
octopusMessage.Result = resultLog
}
octopusMessage.ACTime = utils.ParseDateTimeTime()
// Send

View File

@@ -1,8 +1,7 @@
package io.wdd.rpc.scheduler.service.script;
import io.wdd.rpc.execute.ExecutionMessage;
import io.wdd.rpc.message.OctopusMessage;
import io.wdd.rpc.execute.service.ExecutionService;
import io.wdd.rpc.scheduler.beans.ScriptSchedulerDTO;
import io.wdd.rpc.scheduler.config.QuartzSchedulerUtils;
import lombok.extern.slf4j.Slf4j;
@@ -22,7 +21,7 @@ import java.util.stream.Collectors;
public class AgentApplyScheduledScript {
@Resource
AsyncExecutionService asyncExecutionService;
ExecutionService executionService;
@Resource
QuartzSchedulerUtils quartzSchedulerUtils;
@@ -52,27 +51,25 @@ public class AgentApplyScheduledScript {
.stream()
.map(
targetMachine -> {
OctopusMessage octopusMessage = asyncExecutionService
.AsyncCallSendCommandToAgent(
targetMachine,
finalScriptType,
null,
null,
completeCommandList,
false,
null,
false
);
// OctopusMessage octopusMessage = executionService
// .SendCommandToAgent(
// targetMachine,
// finalScriptType,
// null,
// null,
// completeCommandList,
// false,
// false
// );
String resultKey = ((ExecutionMessage) octopusMessage.getContent()).getResultKey();
// 构建Map
futureResultKeyMap.put(
targetMachine,
resultKey
"todo 2023年8月14日"
);
return resultKey;
return "todo 2023年8月14日";
}
)
.collect(Collectors.toList());