diff --git a/configmanage/server/controller/configinstance.go b/configmanage/server/controller/configinstance.go index 0ff1efad15eeb9e405b49e4deb9fb46ced5f7199..557b279ca2d96fcb92e16cbc45c23fb51497dad3 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 74a32e94c50d94c6ddf4f02f34706020157436af..6fc40556cce6412ad07c9e183a0ab50d2b7bef74 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 bf29ca500b7e66f72155bd20a70ab0e9d7fd9e27..e17570780bd387d10cec2fddb82ed4d9912e60d5 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 6d43c3366ca3e6c323c783077e9aa02280048c57..32559fc71dcacc31430f0a0edde0da83a79f5722 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 ad945ce97caf91229e895e552e89832a6e367f7f..18bd7ce3d9b7ce68e1eb8ad0cf7874ab3edac47c 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") -}