diff --git a/configmanage/server/controller/configinstance.go b/configmanage/server/controller/configinstance.go index 204cd37945a068c9b3a00c76969a9a3618e6f00d..d97619bf02777d9810df80117cd017133678698e 100644 --- a/configmanage/server/controller/configinstance.go +++ b/configmanage/server/controller/configinstance.go @@ -495,10 +495,61 @@ func UpdateConfigHandler(c *gin.Context) { // 获取对应配置管理的参数 switch ci.Type { case global.Repo: + // 解析参数 + repoconfig := &service.RepoConfig{} + if err := json.Unmarshal(query.Data, repoconfig); err != nil { + logger.Error("failed to parse repoconfig parameter: %s", err.Error()) + response.Fail(c, "failed to parse repoconfig parameter:", err.Error()) + return + } + + files := []common.File{} + if err := json.Unmarshal([]byte(repoconfig.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)) + } + + // 查询此配置的内容 + rf, err := service.GetRepoFileByInfoUUID(ci.UUID, nil) + if err != nil { + logger.Error("failed to parse repoconfig parameter: %s", err.Error()) + response.Fail(c, "failed to parse repoconfig parameter:", err.Error()) + return + } + + // 更新参数 + repoconfig.UUID = rf.UUID + repoconfig.ConfigInfoUUID = ci.UUID + repoconfig.IsActive = false + repoconfig.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 = repoconfig.Record() + if err != nil { + logger.Error("failed to add repoconfig: %s", err.Error()) + response.Fail(c, "failed to add repoconfig:", err.Error()) + return + } + logger.Debug("add repoconfig success") + response.Success(c, nil, "Add repo config success") + case global.Host: + case global.SSH: + case global.SSHD: + case global.Sysctl: + default: response.Fail(c, nil, "Unknown type of configinfo:"+query.UUID) } diff --git a/configmanage/server/service/repo.go b/configmanage/server/service/repo.go index 165dcb423fb68fad5b09803eec90816e9cce234c..91bc61921bcd420d36548f888797f95ebc998ce1 100644 --- a/configmanage/server/service/repo.go +++ b/configmanage/server/service/repo.go @@ -236,6 +236,10 @@ func (rc *RepoConfig) Collect() error { return nil } +func GetRepoFileByInfoUUID(uuid string, isindex interface{}) (RepoFile, error) { + return internal.GetRepoFileByInfoUUID(uuid, isindex) +} + // 根据配置uuid获取所有配置文件 func GetRopeFilesByConfigUUID(uuid string) ([]RepoFile, error) { return internal.GetRopeFilesByConfigUUID(uuid)