From c378c9fa6ea20e258ee05d5c17273b00a6278e35 Mon Sep 17 00:00:00 2001 From: wubijie Date: Mon, 4 Nov 2024 13:47:03 +0800 Subject: [PATCH] Add and add hostconfig logic --- .../server/controller/configinstance.go | 38 +++++++++++++++++++ configmanage/server/service/configinstance.go | 4 ++ .../server/service/configinstance_test.go | 37 +++++++++++++++++- configmanage/server/service/host_test.go | 28 ++++++++++++++ configmanage/server/service/repo_test.go | 19 ---------- 5 files changed, 106 insertions(+), 20 deletions(-) diff --git a/configmanage/server/controller/configinstance.go b/configmanage/server/controller/configinstance.go index 0ff1efad..557b279c 100644 --- a/configmanage/server/controller/configinstance.go +++ b/configmanage/server/controller/configinstance.go @@ -94,6 +94,44 @@ func AddConfigHandler(c *gin.Context) { response.Success(c, nil, "Add repo config success") case global.Host: + // 解析参数 + hostconfig := &service.HostConfig{} + if err := json.Unmarshal(query.Data, hostconfig); err != nil { + logger.Error("failed to parse hostconfig parameter: %s", err.Error()) + response.Fail(c, "failed to parse hostconfig parameter:", err.Error()) + return + } + + files := []common.File{} + if err := json.Unmarshal([]byte(hostconfig.Content), &files); err != nil { + logger.Error("failed to parse file parameter: %s", err.Error()) + response.Fail(c, "failed to parse file parameter:", err.Error()) + return + } + for i, v := range files { + files[i].Content = base64.StdEncoding.EncodeToString([]byte(v.Content)) + } + + hostconfig.UUID = uuid.New().String() + hostconfig.ConfigInfoUUID = ci.UUID + hostconfig.IsActive = false + hostconfig.Content, err = json.Marshal(files) + if err != nil { + logger.Error("Error encoding JSON:: %s", err.Error()) + response.Fail(c, "Error encoding JSON:", err.Error()) + return + } + + // 将参数添加到数据库 + err = hostconfig.Record() + if err != nil { + logger.Error("failed to add hostconfig: %s", err.Error()) + response.Fail(c, "failed to add hostconfig:", err.Error()) + return + } + + logger.Debug("add hostconfig success") + response.Success(c, nil, "Add host config success") case global.SSH: diff --git a/configmanage/server/service/configinstance.go b/configmanage/server/service/configinstance.go index 74a32e94..6fc40556 100644 --- a/configmanage/server/service/configinstance.go +++ b/configmanage/server/service/configinstance.go @@ -34,6 +34,10 @@ func Init() error { if err != nil { return err } + err = db.MySQL().Set("gorm:table_options", "ENGINE=InnoDB CHARACTER SET utf8mb4").AutoMigrate(&internal.HostFile{}) + if err != nil { + return err + } return nil } diff --git a/configmanage/server/service/configinstance_test.go b/configmanage/server/service/configinstance_test.go index bf29ca50..e1757078 100644 --- a/configmanage/server/service/configinstance_test.go +++ b/configmanage/server/service/configinstance_test.go @@ -6,10 +6,29 @@ import ( "testing" "github.com/google/uuid" + "openeuler.org/PilotGo/configmanage-plugin/config" + "openeuler.org/PilotGo/configmanage-plugin/db" "openeuler.org/PilotGo/configmanage-plugin/global" ) -func TestConfigInstance_Add(t *testing.T) { +func TestMain(m *testing.M) { + fmt.Println("begin") + err := config.Init(".././config.yaml") + if err != nil { + fmt.Printf("load config error: %s\n", err) + os.Exit(-1) + } + err = db.MysqldbInit(config.Config().Mysql) + if err != nil { + fmt.Printf("init database error: %s\n", err) + os.Exit(-1) + } + Init() + m.Run() + fmt.Println("end") +} + +func TestConfigInstanceTypeRepo_Add(t *testing.T) { ci := &ConfigInstance{ UUID: uuid.New().String(), Type: global.Repo, @@ -52,3 +71,19 @@ func TestGetInfos(t *testing.T) { } fmt.Println(total, data) } + +func TestConfigInstanceTypeHost_Add(t *testing.T) { + ci := &ConfigInstance{ + UUID: uuid.New().String(), + Type: global.Host, + Description: "test-host-description", + BatchIds: []int{4, 5}, + DepartIds: []int{40, 50}, + Nodes: []string{"22222222-5f8e-42df-b2d0-49bf55cfeb56"}, + } + err := ci.Add() + if err != nil { + fmt.Printf("Add() error = %v, want nil", err) + os.Exit(-1) + } +} diff --git a/configmanage/server/service/host_test.go b/configmanage/server/service/host_test.go index 6d43c336..32559fc7 100644 --- a/configmanage/server/service/host_test.go +++ b/configmanage/server/service/host_test.go @@ -1 +1,29 @@ package service + +import ( + "encoding/json" + "fmt" + "os" + "testing" + + "github.com/google/uuid" +) + +func TestHostConfig_Record(t *testing.T) { + // 设置测试数据 + hc := &HostConfig{ + UUID: uuid.New().String(), + ConfigInfoUUID: "158e0acf-159b-4876-83b1-fa5f3d6460b1", + Content: json.RawMessage(`{"test": "test"}`), + Path: "/host", + Name: "host.txt", + IsActive: false, + } + + // 调用被测试的函数 + err := hc.Record() + if err != nil { + fmt.Printf("record error: %s\n", err) + os.Exit(-1) + } +} diff --git a/configmanage/server/service/repo_test.go b/configmanage/server/service/repo_test.go index ad945ce9..18bd7ce3 100644 --- a/configmanage/server/service/repo_test.go +++ b/configmanage/server/service/repo_test.go @@ -7,8 +7,6 @@ import ( "testing" "github.com/google/uuid" - "openeuler.org/PilotGo/configmanage-plugin/config" - "openeuler.org/PilotGo/configmanage-plugin/db" ) func TestRepoConfig_Record(t *testing.T) { @@ -59,20 +57,3 @@ func TestGetRopeFilesByNode(t *testing.T) { } fmt.Println(len(rcs)) } - -func TestMain(m *testing.M) { - fmt.Println("begin") - err := config.Init(".././config.yaml") - if err != nil { - fmt.Printf("load config error: %s\n", err) - os.Exit(-1) - } - err = db.MysqldbInit(config.Config().Mysql) - if err != nil { - fmt.Printf("init database error: %s\n", err) - os.Exit(-1) - } - Init() - m.Run() - fmt.Println("end") -} -- Gitee