From 315e1f1e3397e88ab8f973a9b50b7dce3d4f2060 Mon Sep 17 00:00:00 2001 From: wubijie Date: Tue, 12 Nov 2024 14:29:27 +0800 Subject: [PATCH] add update configinfo --- .../server/controller/configinstance.go | 59 ++++++++++++++++++- configmanage/server/internal/configinfo.go | 14 ++++- configmanage/server/router/router.go | 2 + 3 files changed, 73 insertions(+), 2 deletions(-) diff --git a/configmanage/server/controller/configinstance.go b/configmanage/server/controller/configinstance.go index 3760edf0..204cd379 100644 --- a/configmanage/server/controller/configinstance.go +++ b/configmanage/server/controller/configinstance.go @@ -353,7 +353,7 @@ func LoadConfigHandler(c *gin.Context) { } } -// TODO: 考虑问价下发和执行命令使用配置 +// TODO: 考虑文件下发和执行命令使用配置 func ApplyConfigHandler(c *gin.Context) { //TODO:修改请求的参数 query := &struct { @@ -446,3 +446,60 @@ func ApplyConfigHandler(c *gin.Context) { response.Fail(c, nil, "Unknown type of configinfo:"+query.UUID) } } + +// 修改某配置信息 +func UpdateConfigHandler(c *gin.Context) { + // 某配置的uuid和类型不可以修改,具体配置中的uuid不可修改 + query := &struct { + UUID string `json:"uuid"` + Type string `json:"type"` + Description string `json:"description"` + BatchIds []int `json:"batchids"` + DepartIds []int `json:"departids"` + Nodes []string `json:"uuids"` + Data json.RawMessage `json:"data"` + }{} + err := c.ShouldBindJSON(query) + if err != nil { + response.Fail(c, "parameter error", err.Error()) + return + } + logger.Debug("load config") + + // 获取ConfigInstance + ci, err := service.GetConfigByUUID(query.UUID) + if err != nil { + logger.Error("failed to get configinfo file: %s", err.Error()) + response.Fail(c, "get configinfo fail:", err.Error()) + return + } + + // 判断类型是否一致,或者数据库 + if ci == nil || ci.Type != query.Type { + response.Fail(c, "configinfo not exist", "") + return + } + + // 更新配置信息 + ci.Description = query.Description + ci.BatchIds = query.BatchIds + ci.DepartIds = query.DepartIds + ci.Nodes = query.Nodes + err = ci.Add() + if err != nil { + logger.Error("failed to update configinstance: %s", err.Error()) + response.Fail(c, "failed to update configinstance:", err.Error()) + return + } + + // 获取对应配置管理的参数 + switch ci.Type { + case global.Repo: + 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/internal/configinfo.go b/configmanage/server/internal/configinfo.go index b0ef046b..f8fba695 100644 --- a/configmanage/server/internal/configinfo.go +++ b/configmanage/server/internal/configinfo.go @@ -10,7 +10,19 @@ type ConfigInfo struct { } func (cm *ConfigInfo) Add() error { - return db.MySQL().Create(cm).Error + sql := ` + INSERT INTO config_info (uuid,type,description) + VALUES (?, ?, ?) + ON DUPLICATE KEY UPDATE + uuid = VALUES(uuid), + type = VALUES(type), + description = VALUES(description); + ` + return db.MySQL().Exec(sql, + cm.UUID, + cm.Type, + cm.Description, + ).Error } func GetInfoByUUID(uuid string) (ConfigInfo, error) { diff --git a/configmanage/server/router/router.go b/configmanage/server/router/router.go index 049fc4e3..bbe15166 100644 --- a/configmanage/server/router/router.go +++ b/configmanage/server/router/router.go @@ -36,5 +36,7 @@ func RegisterAPIs(router *gin.Engine) { api.POST("/load", controller.LoadConfigHandler) // 下发配置管理 api.POST("/apply", controller.ApplyConfigHandler) + // 修改配置信息 + api.POST("/update", controller.UpdateConfigHandler) } } -- Gitee