From 62712dfbce80df3c2ce3574fa899fd5240f1e591 Mon Sep 17 00:00:00 2001 From: zeaslity Date: Wed, 11 Oct 2023 11:24:27 +0800 Subject: [PATCH] =?UTF-8?q?[=20Agent=20]=20[=20Executor=20]=20-=20?= =?UTF-8?q?=E8=B0=83=E6=95=B4Executor=E9=83=A8=E5=88=86=E7=9A=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- agent-go/executor/AppFunction.go | 3 +- agent-go/executor/BaseFunction.go | 141 ++++++++++++++++++++++++- agent-go/executor/BaseFunction_test.go | 26 ++--- agent-go/executor/CommandExecutor.go | 4 +- 4 files changed, 155 insertions(+), 19 deletions(-) diff --git a/agent-go/executor/AppFunction.go b/agent-go/executor/AppFunction.go index 12cb157..2be9d12 100644 --- a/agent-go/executor/AppFunction.go +++ b/agent-go/executor/AppFunction.go @@ -6,7 +6,8 @@ import ( ) type OctopusFunc interface { - Exec(baseFuncName string, funcArgs ...string) []string + Command(baseFuncName string, funcArgs ...string) []string + Exec(baseFuncName string, funcArgs ...string) (bool, []string) Deploy(appFuncName string, funcArgs ...string) (bool, []string) } diff --git a/agent-go/executor/BaseFunction.go b/agent-go/executor/BaseFunction.go index e0e1d1a..d557bec 100644 --- a/agent-go/executor/BaseFunction.go +++ b/agent-go/executor/BaseFunction.go @@ -8,7 +8,12 @@ import ( ) type BaseFunc interface { - Exec(baseFuncName string, funcArgs ...string) []string + + // Command 返回基础函数的命令行 + Command(baseFuncName string, funcArgs ...string) []string + + // Exec 执行命令行,只返回正确结果 || 错误,日志 + Exec(baseFuncName string, funcArgs ...string) (bool, []string) } type AgentOsOperator struct { @@ -32,8 +37,69 @@ type AgentOsOperator struct { OssOfflinePrefix string } -// Exec 执行基础功能函数 -func (op *AgentOsOperator) Exec(baseFuncName string, funcArgs ...string) []string { +func (op *AgentOsOperator) Exec(baseFuncName string, funcArgs ...string) (bool, []string) { + + resultOk := false + var errorLog []string + + switch baseFuncName { + + case "shutdownFirewall": + resultOk, errorLog = op.shutdownFirewallExec() + break + case "modifyHostname": + resultOk, errorLog = op.modifyHostnameExec(funcArgs) + break + case "enableSwap": + resultOk, errorLog = op.enableSwapExec() + break + case "disableSwap": + resultOk, errorLog = op.disableSwapExec() + break + case "installDocker": + resultOk, errorLog = op.installDockerExec(funcArgs) + break + case "removeDocker": + resultOk, errorLog = op.removeDockerExec() + break + case "removeDockerCompose": + resultOk, errorLog = op.removeDockerComposeExec() + break + case "installDockerCompose": + resultOk, errorLog = op.installDockerComposeExec() + break + case "modifyDockerConfig": + resultOk, errorLog = op.modifyDockerConfigExec(funcArgs) + break + case "installHelm": + resultOk, errorLog = op.installHelmExec() + break + case "installHarbor": + resultOk, errorLog = op.installHarborExec() + break + case "chronyToPublicNTP": + resultOk, errorLog = op.chronyToPublicNTPExec() + break + case "chronyToMaster": + resultOk, errorLog = op.chronyToMasterExec(funcArgs) + break + case "installZSH": + resultOk, errorLog = op.installZSHExec() + break + case "modifySshPort": + resultOk, errorLog = op.modifySshPortExec(funcArgs) + break + case "openBBR": + resultOk, errorLog = op.openBBRExec() + break + default: + resultOk, errorLog = op.okExec(funcArgs) + } + + return resultOk, errorLog +} + +func (op *AgentOsOperator) Command(baseFuncName string, funcArgs ...string) []string { var multiLineCommand [][]string @@ -135,11 +201,21 @@ func (op *AgentOsOperator) shutdownFirewall() [][]string { return shutdownFunc } +func (op *AgentOsOperator) shutdownFirewallExec() (bool, []string) { + + return false, nil +} + func (op *AgentOsOperator) modifyHostname(args []string) [][]string { return [][]string{} } +func (op *AgentOsOperator) modifyHostnameExec(args []string) (bool, []string) { + + return false, nil +} + func (op *AgentOsOperator) enableSwap() [][]string { enableSwapFunc := [][]string{ @@ -158,6 +234,10 @@ func (op *AgentOsOperator) enableSwap() [][]string { return enableSwapFunc } +func (op *AgentOsOperator) enableSwapExec() (bool, []string) { + return false, nil +} + func (op *AgentOsOperator) disableSwap() [][]string { disableSwapFunc := [][]string{ @@ -182,6 +262,10 @@ func (op *AgentOsOperator) disableSwap() [][]string { return disableSwapFunc } +func (op *AgentOsOperator) disableSwapExec() (bool, []string) { + return false, nil +} + func (op *AgentOsOperator) removeDocker() [][]string { removeDockerLine := append(op.RemoveCommandPrefix, []string{ @@ -210,6 +294,10 @@ func (op *AgentOsOperator) removeDocker() [][]string { return removeDockerFunc } +func (op *AgentOsOperator) removeDockerExec() (bool, []string) { + return false, nil +} + func (op *AgentOsOperator) installDocker(args []string) [][]string { // remove docker all staff @@ -323,6 +411,10 @@ func (op *AgentOsOperator) installDocker(args []string) [][]string { return installDockerFunc } +func (op *AgentOsOperator) installDockerExec(args []string) (bool, []string) { + return false, nil +} + func (op *AgentOsOperator) removeDockerCompose() [][]string { installDockerComposeFunc := [][]string{ @@ -335,6 +427,10 @@ func (op *AgentOsOperator) removeDockerCompose() [][]string { return installDockerComposeFunc } +func (op *AgentOsOperator) removeDockerComposeExec() (bool, []string) { + return false, nil +} + func (op *AgentOsOperator) installDockerCompose() [][]string { installDockerComposeFunc := [][]string{ @@ -347,6 +443,9 @@ func (op *AgentOsOperator) installDockerCompose() [][]string { return installDockerComposeFunc } +func (op *AgentOsOperator) installDockerComposeExec() (bool, []string) { + return false, nil +} func (op *AgentOsOperator) installHelm() [][]string { installHelmFunc := [][]string{ { @@ -422,6 +521,10 @@ func (op *AgentOsOperator) installHelm() [][]string { return installHelmFunc } +func (op *AgentOsOperator) installHelmExec() (bool, []string) { + return false, nil +} + func (op *AgentOsOperator) modifyDockerConfig(args []string) [][]string { harborIPAddr := args[0] + ":8033" @@ -454,6 +557,10 @@ func (op *AgentOsOperator) modifyDockerConfig(args []string) [][]string { return modifyDockerConfigFunc } +func (op *AgentOsOperator) modifyDockerConfigExec(args []string) (bool, []string) { + return false, nil +} + func (op *AgentOsOperator) installHarbor() [][]string { installHarborFunc := [][]string{ @@ -520,6 +627,10 @@ func (op *AgentOsOperator) installHarbor() [][]string { return installHarborFunc } +func (op *AgentOsOperator) installHarborExec() (bool, []string) { + return false, nil +} + func (op *AgentOsOperator) chronyToPublicNTP() [][]string { serverIPInV4 := op.AgentServerInfo.ServerIPInV4 @@ -603,6 +714,10 @@ func (op *AgentOsOperator) chronyToPublicNTP() [][]string { return chronyToPublicNTPFunc } +func (op *AgentOsOperator) chronyToPublicNTPExec() (bool, []string) { + return false, nil +} + func (op *AgentOsOperator) chronyToMaster(args []string) [][]string { masterInnerIP := args[0] @@ -640,6 +755,10 @@ func (op *AgentOsOperator) chronyToMaster(args []string) [][]string { return chronyToMasterFunc } +func (op *AgentOsOperator) chronyToMasterExec(args []string) (bool, []string) { + return false, nil +} + func (op *AgentOsOperator) installZSH() [][]string { installZSHFunc := [][]string{ @@ -767,19 +886,35 @@ func (op *AgentOsOperator) installZSH() [][]string { return installZSHFunc } +func (op *AgentOsOperator) installZSHExec() (bool, []string) { + return false, nil +} + func (op *AgentOsOperator) modifySshPort(args []string) [][]string { return [][]string{} } +func (op *AgentOsOperator) modifySshPortExec(args []string) (bool, []string) { + return false, nil +} + func (op *AgentOsOperator) openBBR() [][]string { return [][]string{} } +func (op *AgentOsOperator) openBBRExec() (bool, []string) { + return false, nil +} + func (op *AgentOsOperator) ok(args []string) [][]string { log.InfoF("base function is ok , args are => " + strings.Join(args, " ")) return [][]string{ {"ifconfig"}, } } + +func (op *AgentOsOperator) okExec(args []string) (bool, []string) { + return false, nil +} diff --git a/agent-go/executor/BaseFunction_test.go b/agent-go/executor/BaseFunction_test.go index 358cdaa..3f4f325 100644 --- a/agent-go/executor/BaseFunction_test.go +++ b/agent-go/executor/BaseFunction_test.go @@ -43,18 +43,18 @@ var agentOP = &AgentOsOperator{ func TestBaseFunc(t *testing.T) { - //agentOP.Exec("shutdownFirewall") - //agentOP.Exec("modifyHostname") - //agentOP.Exec("disableSwap") - //agentOP.Exec("enableSwap") - //agentOP.Exec("removeDocker") - agentOP.Exec("installDocker", "20") - //agentOP.Exec("removeDockerCompose") - //agentOP.Exec("installDockerCompose") - //agentOP.Exec("installHelm") - //agentOP.Exec("installHarbor") - //agentOP.Exec("chronyToPublicNTP") - //agentOP.Exec("chronyToMaster", "192.168.0.8") - //agentOP.Exec("installZSH") + //agentOP.Command("shutdownFirewall") + //agentOP.Command("modifyHostname") + //agentOP.Command("disableSwap") + //agentOP.Command("enableSwap") + //agentOP.Command("removeDocker") + agentOP.Command("installDocker", "20") + //agentOP.Command("removeDockerCompose") + //agentOP.Command("installDockerCompose") + //agentOP.Command("installHelm") + //agentOP.Command("installHarbor") + //agentOP.Command("chronyToPublicNTP") + //agentOP.Command("chronyToMaster", "192.168.0.8") + //agentOP.Command("installZSH") } diff --git a/agent-go/executor/CommandExecutor.go b/agent-go/executor/CommandExecutor.go index 66df740..ff0b21e 100644 --- a/agent-go/executor/CommandExecutor.go +++ b/agent-go/executor/CommandExecutor.go @@ -32,7 +32,7 @@ func Execute(em *ExecutionMessage) ([]string, error) { if strings.HasPrefix(em.Type, "BASE") { // base function - resultLog = AgentOsOperatorCache.Exec(em.FuncContent[0], em.FuncContent[1:]...) + resultLog = AgentOsOperatorCache.Command(em.FuncContent[0], em.FuncContent[1:]...) err = nil } else if strings.HasPrefix(em.Type, "APP") { @@ -100,7 +100,7 @@ func PipeLineCommandExecutor(pipeLineCommand [][]string) ([]string, error) { output, err = command.CombinedOutput() if err != nil { - log.ErrorF("Pipeline Command Exec Error => %v", err.Error()) + log.ErrorF("Pipeline Command Command Error => %v", err.Error()) // 收集错误的信息 resultSlice = append(resultSlice, "↓↓↓ 命令 错误 如下 ↓↓↓", string(output))