From b29348c42742ddd66881a37c4e3d4d886daab92d Mon Sep 17 00:00:00 2001 From: wubijie Date: Fri, 1 Nov 2024 10:55:36 +0800 Subject: [PATCH] add ConfigInfo to uuid function --- .../server/controller/configinstance.go | 2 + configmanage/server/controller/lists.go | 50 ++++++++++++++++++- configmanage/server/internal/repofile.go | 7 +++ configmanage/server/router/router.go | 8 ++- configmanage/server/service/repo.go | 6 +++ 5 files changed, 71 insertions(+), 2 deletions(-) diff --git a/configmanage/server/controller/configinstance.go b/configmanage/server/controller/configinstance.go index c5a2fe88..0ff1efad 100644 --- a/configmanage/server/controller/configinstance.go +++ b/configmanage/server/controller/configinstance.go @@ -13,6 +13,7 @@ import ( "openeuler.org/PilotGo/configmanage-plugin/service" ) +// AddConfigHandler 添加配置管理 func AddConfigHandler(c *gin.Context) { query := &struct { Type string `json:"type"` @@ -105,6 +106,7 @@ func AddConfigHandler(c *gin.Context) { } } +// 加载数据库中存储的正在使用的配置文件信息 func LoadConfigHandler(c *gin.Context) { //TODO:修改请求的参数 query := &struct { diff --git a/configmanage/server/controller/lists.go b/configmanage/server/controller/lists.go index 7eb4099f..02a7e2e2 100644 --- a/configmanage/server/controller/lists.go +++ b/configmanage/server/controller/lists.go @@ -1,6 +1,7 @@ package controller import ( + "gitee.com/openeuler/PilotGo/sdk/logger" "gitee.com/openeuler/PilotGo/sdk/response" "github.com/gin-gonic/gin" "openeuler.org/PilotGo/configmanage-plugin/global" @@ -20,7 +21,8 @@ func ConfigTypeListHandler(c *gin.Context) { response.Success(c, result, "get config type success") } -func ConfigHandler(c *gin.Context) { +// 分页获取所有configinfo列表 +func ConfigInfosHandler(c *gin.Context) { p := &PaginationQ{} // 将查询参数绑定到分页查询对象 p 中 err := c.ShouldBindQuery(p) @@ -39,3 +41,49 @@ func ConfigHandler(c *gin.Context) { response.Success(c, p, "get config success") } + +// 根据列表中的configinfo_uuid获取某一个config信息 +func ConfigInfoHandler(c *gin.Context) { + //TODO:修改请求的参数 + query := &struct { + UUID string `json:"uuid"` + }{} + 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: %s", err.Error()) + response.Fail(c, "get configinfo fail:", err.Error()) + return + } + // 获取对应配置管理的参数 + switch ci.Type { + case global.Repo: + // 获取有关配置的所有文件信息 + repofiles, err := service.GetRopeFilesByCinfigUUID(ci.UUID) + if err != nil { + logger.Error("failed to get repoconfig file:s %s", err.Error()) + response.Fail(c, "failed to get repoconfig files", err.Error()) + return + } + logger.Debug("load repoconfig success") + response.Success(c, repofiles, "load 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/internal/repofile.go b/configmanage/server/internal/repofile.go index 3a3c90a2..446c6fcd 100644 --- a/configmanage/server/internal/repofile.go +++ b/configmanage/server/internal/repofile.go @@ -49,3 +49,10 @@ func (rf *RepoFile) UpdateByuuid() error { } return db.MySQL().Table("repo_file").Where("uuid=?", rf.UUID).Update("is_index", 1).Error } + +// 根据配置uuid获取所有配置文件 +func GetRopeFilesByCinfigUUID(uuid string) ([]RepoFile, error) { + var files []RepoFile + err := db.MySQL().Where("config_info_uuid=?", uuid).Find(&files).Error + return files, err +} diff --git a/configmanage/server/router/router.go b/configmanage/server/router/router.go index 2f7e05ff..68624e6a 100644 --- a/configmanage/server/router/router.go +++ b/configmanage/server/router/router.go @@ -23,10 +23,16 @@ func RegisterAPIs(router *gin.Engine) { { // 提供配置文件类型的列表 list.GET("/config_type", controller.ConfigTypeListHandler) - list.GET("/config", controller.ConfigHandler) + // 提供配置列表 + list.GET("/config_infos", controller.ConfigInfosHandler) + // 根据列表中的configinfo_uuid获取某一个config信息 + list.GET("/config_info", controller.ConfigInfoHandler) } + // 添加配置管理 api.POST("/add", controller.AddConfigHandler) + // 根据列表中的configinfo_uuid获取某一个具体的正在使用的config信息 api.GET("/load", controller.LoadConfigHandler) + // 下发配置管理 api.POST("/apply", controller.ApplyConfigHandler) } } diff --git a/configmanage/server/service/repo.go b/configmanage/server/service/repo.go index 6fd7f405..423920e8 100644 --- a/configmanage/server/service/repo.go +++ b/configmanage/server/service/repo.go @@ -127,6 +127,7 @@ func (rc *RepoConfig) Apply() (json.RawMessage, error) { if err := resp.ParseData(&data); err != nil { return nil, err } + // 将执行失败的机器信息和原因添加到结果字符串中 for _, v := range data { if v.Error != "" { result = result + v.UUID + ":" + v.Error + "\n" @@ -210,3 +211,8 @@ func (rc *RepoConfig) Collect() error { } return nil } + +// 根据配置uuid获取所有配置文件 +func GetRopeFilesByCinfigUUID(uuid string) ([]RepoFile, error) { + return internal.GetRopeFilesByCinfigUUID(uuid) +} -- Gitee