From e6103e607be86ca1074f91b66b64e272a0f69dff Mon Sep 17 00:00:00 2001 From: wubijie Date: Fri, 8 Nov 2024 09:49:50 +0800 Subject: [PATCH] add collect for ssh config --- configmanage/server/service/ssh.go | 68 +++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/configmanage/server/service/ssh.go b/configmanage/server/service/ssh.go index 51541533..3547bab0 100644 --- a/configmanage/server/service/ssh.go +++ b/configmanage/server/service/ssh.go @@ -9,8 +9,10 @@ import ( "time" "gitee.com/openeuler/PilotGo/sdk/common" + "gitee.com/openeuler/PilotGo/sdk/logger" "gitee.com/openeuler/PilotGo/sdk/plugin/client" "gitee.com/openeuler/PilotGo/sdk/utils/httputils" + "github.com/google/uuid" "openeuler.org/PilotGo/configmanage-plugin/internal" ) @@ -163,8 +165,72 @@ func (sc *SSHConfig) Apply() (json.RawMessage, error) { return nil, errors.New(result + "failed to apply SSHConfig") } -// TODO: func (sc *SSHConfig) Collect() error { + ci, err := GetConfigByUUID(sc.ConfigInfoUUID) + if err != nil { + return err + } + + //发请求获取配置详情 + url := "http://" + client.GetClient().Server() + "/api/v1/pluginapi/getnodefiles" + p := struct { + DeployBatch common.Batch `json:"deploybatch"` + Path string `json:"path"` + FileName string `json:"filename"` + }{ + DeployBatch: common.Batch{ + BatchIds: ci.BatchIds, + DepartmentIDs: ci.DepartIds, + MachineUUIDs: ci.Nodes, + }, + Path: sc.Path, + FileName: sc.Name, + } + r, err := httputils.Post(url, &httputils.Params{ + Body: p, + }) + if err != nil { + return err + } + if r.StatusCode != http.StatusOK { + return errors.New("server process error:" + strconv.Itoa(r.StatusCode)) + } + + resp := &common.CommonResult{} + if err := json.Unmarshal(r.Body, resp); err != nil { + return err + } + if resp.Code != http.StatusOK { + return errors.New(resp.Message) + } + + data := []common.NodeResult{} + if err := resp.ParseData(&data); err != nil { + return err + } + result := "" + for _, v := range data { + if v.Error == "" { + file, _ := json.Marshal(v.Data) + rf := RepoFile{ + UUID: uuid.New().String(), + ConfigInfoUUID: sc.ConfigInfoUUID, + Content: file, + Version: fmt.Sprintf("v%s", time.Now().Format("2006-01-02-15-04-05")), + IsFromHost: true, + Hostuuid: v.UUID, + } + err = rf.Add() + if err != nil { + logger.Error("failed to add sshconfig: %s", err.Error()) + } + } else { + result = result + v.UUID + ":" + v.Error + "\n" + } + } + if result != "" { + return errors.New(result + "failed to collect ssh config") + } return nil } -- Gitee