From 226d377fc957bc296f19186a439502420eace432 Mon Sep 17 00:00:00 2001 From: zhanghan Date: Tue, 14 Oct 2025 16:00:12 +0800 Subject: [PATCH] Modify the execution method function of the agent script --- .../internal/module/common/exec/exec.go | 45 +++++++++++++++++++ .../module/job_action/controller/exec.go | 29 ++++++++++++ .../internal/module/job_action/router.go | 13 ++++++ .../module/job_history/controller/action.go | 5 +++ .../module/job_history/controller/workflow.go | 1 + .../internal/module/job_history/router.go | 13 ++++++ automation/server/internal/router/router.go | 4 +- 7 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 automation/server/internal/module/common/exec/exec.go create mode 100644 automation/server/internal/module/job_action/controller/exec.go create mode 100644 automation/server/internal/module/job_action/router.go create mode 100644 automation/server/internal/module/job_history/controller/action.go create mode 100644 automation/server/internal/module/job_history/controller/workflow.go create mode 100644 automation/server/internal/module/job_history/router.go diff --git a/automation/server/internal/module/common/exec/exec.go b/automation/server/internal/module/common/exec/exec.go new file mode 100644 index 00000000..fea138b7 --- /dev/null +++ b/automation/server/internal/module/common/exec/exec.go @@ -0,0 +1,45 @@ +package exec + +import ( + "bytes" + "crypto/tls" + "encoding/json" + "fmt" + "net/http" +) + +type ScriptsRun struct { + JobId string + ScriptType string + ScriptContent string + Params string + TimeOut int +} + +func ExecScript(ip string, sr ScriptsRun) { + addr := fmt.Sprintf("http://%s:8277/plugin/automation/script/exec", ip) + dataMarshed, err := json.Marshal(sr) + if err != nil { + fmt.Printf("Error marshaling JSON: %v\n", err) + return + } + request, err := http.NewRequest("POST", addr, bytes.NewBuffer(dataMarshed)) + if err != nil { + fmt.Printf("Error creating request: %v\n", err) + return + } + request.Header.Set("Content-Type", "application/json") + client := &http.Client{ + Transport: &http.Transport{ + TLSClientConfig: &tls.Config{ + InsecureSkipVerify: true, + }, + }, + } + response, err := client.Do(request) + if err != nil { + fmt.Printf("Error making request: %v\n", err) + return + } + defer response.Body.Close() +} diff --git a/automation/server/internal/module/job_action/controller/exec.go b/automation/server/internal/module/job_action/controller/exec.go new file mode 100644 index 00000000..796b77c5 --- /dev/null +++ b/automation/server/internal/module/job_action/controller/exec.go @@ -0,0 +1,29 @@ +package controller + +import ( + "fmt" + + "gitee.com/openeuler/PilotGo/sdk/response" + "github.com/gin-gonic/gin" + "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/job_action/service" +) + +func ExecScriptHandler(c *gin.Context) { + var sr struct { + IPs []string `json:"IPs"` + ScriptID string `json:"script_id"` + Params string `json:"params"` + TimeOutSec int `json:"timeoutSec"` + } + if err := c.ShouldBindJSON(&sr); err != nil { + response.Fail(c, nil, err.Error()) + return + } + + err := service.ExecScript(sr.IPs, sr.ScriptID, sr.Params, sr.TimeOutSec) + if err != nil { + response.Fail(c, nil, fmt.Sprintf("下发脚本任务失败: %s", err.Error())) + return + } + response.Success(c, nil, "success") +} diff --git a/automation/server/internal/module/job_action/router.go b/automation/server/internal/module/job_action/router.go new file mode 100644 index 00000000..e77982de --- /dev/null +++ b/automation/server/internal/module/job_action/router.go @@ -0,0 +1,13 @@ +package jobaction + +import ( + "github.com/gin-gonic/gin" + "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/job_action/controller" +) + +func JobActionHandler(router *gin.RouterGroup) { + api := router.Group("/action") + { + api.POST("/exec", controller.ExecScriptHandler) + } +} diff --git a/automation/server/internal/module/job_history/controller/action.go b/automation/server/internal/module/job_history/controller/action.go new file mode 100644 index 00000000..296079cd --- /dev/null +++ b/automation/server/internal/module/job_history/controller/action.go @@ -0,0 +1,5 @@ +package controller + +import "github.com/gin-gonic/gin" + +func JobActionHistory(c *gin.Context) {} diff --git a/automation/server/internal/module/job_history/controller/workflow.go b/automation/server/internal/module/job_history/controller/workflow.go new file mode 100644 index 00000000..b0b429f8 --- /dev/null +++ b/automation/server/internal/module/job_history/controller/workflow.go @@ -0,0 +1 @@ +package controller diff --git a/automation/server/internal/module/job_history/router.go b/automation/server/internal/module/job_history/router.go new file mode 100644 index 00000000..f5289114 --- /dev/null +++ b/automation/server/internal/module/job_history/router.go @@ -0,0 +1,13 @@ +package scriptlibrary + +import ( + "github.com/gin-gonic/gin" + "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/job_history/controller" +) + +func JobHistoryHandler(router *gin.RouterGroup) { + api := router.Group("/jobhistory") + { + api.POST("/add", controller.JobActionHistory) + } +} diff --git a/automation/server/internal/router/router.go b/automation/server/internal/router/router.go index 8a41871d..b0cf200c 100644 --- a/automation/server/internal/router/router.go +++ b/automation/server/internal/router/router.go @@ -9,6 +9,7 @@ import ( "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/global" "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/enum" dangerousrule "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/dangerous_rule" + jobaction "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/job_action" jobworkflow "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/job_workflow" scriptlibrary "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/script_library" "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/service" @@ -32,10 +33,11 @@ func initRouters() *gin.Engine { // 注册各自的路由模块 api := Router.Group("/plugin/automation") + enum.EnumHandler(api) scriptlibrary.ScriptLibraryHandler(api) dangerousrule.DangerousRuleHandler(api) jobworkflow.WorkflowHandler(api) - enum.EnumHandler(api) + jobaction.JobActionHandler(api) return Router } -- Gitee