From 8e9a9af5f017c3facc77fb4d64209cfaeb1a72be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E7=81=BF?= Date: Mon, 3 Jul 2023 15:52:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=84=9A=E6=9C=AC=E6=89=A7=E8=A1=8Cfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bean/vo/request/task_manage.go | 1 + src/service/task_manage.go | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/bean/vo/request/task_manage.go b/src/bean/vo/request/task_manage.go index b030dde..bc5e275 100644 --- a/src/bean/vo/request/task_manage.go +++ b/src/bean/vo/request/task_manage.go @@ -37,4 +37,5 @@ type ExecScriptReq struct { Type int `form:"type"` //脚本额外变量类型1yaml 2json Value string `form:"value"` //脚本额外变量值 Script string `form:"script"` //执行脚本 + ScriptUrl string `form:"script_url"` //执行脚本url } diff --git a/src/service/task_manage.go b/src/service/task_manage.go index 2c7edbe..a82f542 100644 --- a/src/service/task_manage.go +++ b/src/service/task_manage.go @@ -1,15 +1,19 @@ package service import ( + "context" "errors" "fmt" "github.com/ghodss/yaml" json "github.com/json-iterator/go" + "github.com/minio/minio-go/v7" "gitlab.wodcloud.com/smart-operation/so-operation-api/src/bean/entity" "gitlab.wodcloud.com/smart-operation/so-operation-api/src/bean/vo/request" "gitlab.wodcloud.com/smart-operation/so-operation-api/src/bean/vo/response" "gitlab.wodcloud.com/smart-operation/so-operation-api/src/common/client" + "gitlab.wodcloud.com/smart-operation/so-operation-api/src/common/conf" "gitlab.wodcloud.com/smart-operation/so-operation-api/src/pkg/beagle/resp" + "io" "os" "os/exec" "time" @@ -174,6 +178,21 @@ func (t *TaskManageSvc) ListTaskManage(req request.ListTaskManageReq) (total int } func (t *TaskManageSvc) ExecScript(req request.ExecScriptReq) (data interface{}, err error) { + if req.ScriptUrl != "" { + minioClient, err := client.GetMinioConnect() + if err != nil { + return nil, resp.DbConnectError.WithError(err) + } + object, err := minioClient.GetObject(context.Background(), conf.Options.MinioBucket, req.ScriptUrl, minio.GetObjectOptions{}) + if err != nil { + return nil, resp.FileExecError.WithError(err) + } + obj, err := io.ReadAll(object) + if err != nil { + return nil, resp.FileExecError.WithError(err) + } + req.Script = string(obj) + } var script map[string]interface{} j2, err := yaml.YAMLToJSON([]byte(req.Script)) if err != nil { @@ -181,7 +200,7 @@ func (t *TaskManageSvc) ExecScript(req request.ExecScriptReq) (data interface{}, } err = json.Unmarshal(j2, &script) if err != nil { - return nil, resp.MarshalError.WithError(err) + return nil, resp.MarshalError.WithError(errors.New("yaml格式错误")) } if script["host"] == "all" { script["host"] = fmt.Sprintf("%s%d", AnsibleGroup, req.HostGroupId) -- 2.26.0