From 504cadb6002e3a50cb0fc7ffe06b874a7a119693 Mon Sep 17 00:00:00 2001 From: wubijie Date: Tue, 23 Jan 2024 09:26:48 +0800 Subject: [PATCH] Modify the configuration file delivery interface --- .../server/controller/configinstance.go | 12 ++++---- configmanage/server/internal/repofile.go | 22 ++++++++++++-- configmanage/server/router/router.go | 3 +- configmanage/server/service/repo.go | 30 +++++++++++++++---- 4 files changed, 52 insertions(+), 15 deletions(-) diff --git a/configmanage/server/controller/configinstance.go b/configmanage/server/controller/configinstance.go index a1657f50..4655f305 100644 --- a/configmanage/server/controller/configinstance.go +++ b/configmanage/server/controller/configinstance.go @@ -129,16 +129,18 @@ func LoadConfigHandler(c *gin.Context) { func ApplyConfigHandler(c *gin.Context) { //TODO:修改请求的参数 query := &struct { - UUID string `json:"uuid"` + ConfigInfoUUID string `json:"configinfouuid"` + UUID string `json:"uuid"` }{} err := c.ShouldBindJSON(query) if err != nil { response.Fail(c, "parameter error", err.Error()) return } + logger.Debug("start configuration apply") - //获取Configinfo - ci, err := service.GetInfoByUUID(query.UUID) + //获取ConfigInstance + ci, err := service.GetInfoByUUID(query.ConfigInfoUUID) if err != nil { logger.Error(err.Error()) response.Fail(c, "get configinfo fail:", err.Error()) @@ -148,8 +150,8 @@ func ApplyConfigHandler(c *gin.Context) { //解析对应配置管理的参数 switch ci.Type { case global.Repo: - //TODO:解析参数,data可以传输文件uuid,其余信息从数据库查询 repoconfig := &service.RepoConfig{ + UUID: query.UUID, ConfigInfoUUID: ci.UUID, } result, err := repoconfig.Apply() @@ -158,7 +160,7 @@ func ApplyConfigHandler(c *gin.Context) { response.Fail(c, result, err.Error()) return } - response.Success(c, nil, "Add repo config success") + response.Success(c, nil, "apply repo config success") case global.Host: diff --git a/configmanage/server/internal/repofile.go b/configmanage/server/internal/repofile.go index 395d38b6..bf0e5361 100644 --- a/configmanage/server/internal/repofile.go +++ b/configmanage/server/internal/repofile.go @@ -22,8 +22,26 @@ func (rf *RepoFile) Add() error { return db.MySQL().Save(&rf).Error } -func GetRepoFileByInfoUUID(uuid string) (RepoFile, error) { +func GetRepoFileByInfoUUID(uuid string, isindex interface{}) (RepoFile, error) { var file RepoFile - err := db.MySQL().Where("config_info_uuid=? && is_index = 1", uuid).Find(&file).Error + if isindex != nil { + err := db.MySQL().Where("config_info_uuid=? && is_index = ?", uuid, isindex).Find(&file).Error + return file, err + } + err := db.MySQL().Where("config_info_uuid=?", uuid).Find(&file).Error return file, err } + +func GetRepoFileByUUID(uuid string) (RepoFile, error) { + var file RepoFile + err := db.MySQL().Where("uuid=?", uuid).Find(&file).Error + return file, err +} + +func (rf *RepoFile) UpdateByuuid() error { + err := db.MySQL().Table("repo_file").Where("config_info_uuid=?", rf.ConfigInfoUUID).Update("is_index", 0).Error + if err != nil { + return err + } + return db.MySQL().Table("repo_file").Where("uuid=?", rf.UUID).Update("is_index", 1).Error +} diff --git a/configmanage/server/router/router.go b/configmanage/server/router/router.go index d3025401..0d06a58d 100644 --- a/configmanage/server/router/router.go +++ b/configmanage/server/router/router.go @@ -21,7 +21,6 @@ func RegisterAPIs(router *gin.Engine) { { pg.POST("/add", controller.AddConfigHandler) pg.GET("/load", controller.LoadConfigHandler) - //pg.POST("/apply", controller.ApplyConfigHandler) - + pg.POST("/apply", controller.ApplyConfigHandler) } } diff --git a/configmanage/server/service/repo.go b/configmanage/server/service/repo.go index 9a37482d..68d92362 100644 --- a/configmanage/server/service/repo.go +++ b/configmanage/server/service/repo.go @@ -43,7 +43,7 @@ func (rc *RepoConfig) Record() error { } func (rc *RepoConfig) Load() error { - rf, err := internal.GetRepoFileByInfoUUID(rc.ConfigInfoUUID) + rf, err := internal.GetRepoFileByInfoUUID(rc.ConfigInfoUUID, true) if err != nil { return err } @@ -56,10 +56,14 @@ func (rc *RepoConfig) Load() error { func (rc *RepoConfig) Apply() (json.RawMessage, error) { //从数据库获取下发的信息 - err := rc.Load() + rf, err := internal.GetRepoFileByUUID(rc.UUID) if err != nil { return nil, err } + if rf.ConfigInfoUUID != rc.ConfigInfoUUID || rf.UUID != rc.UUID { + return nil, errors.New("数据库不存在此配置") + } + batchids, err := internal.GetConfigBatchByUUID(rc.ConfigInfoUUID) if err != nil { return nil, err @@ -73,14 +77,25 @@ func (rc *RepoConfig) Apply() (json.RawMessage, error) { return nil, err } - //TODO:从rc中解析下发的文件内容,逐一进行下发 + //从rc中解析下发的文件内容,逐一进行下发 + Repofiles := struct { + Name string `json:"name"` + File string `json:"file"` + Path string `json:"path"` + }{} + err = json.Unmarshal(rf.Content, &Repofiles) + if err != nil { + return nil, err + } de := Deploy{ Deploy_BatchIds: batchids, Deploy_DepartIds: departids, Deploy_NodeUUIds: nodes, + Deploy_Path: Repofiles.Path, + Deploy_FileName: Repofiles.Name, + Deploy_Text: Repofiles.File, } url := "http://" + client.GetClient().Server() + "/api/v1/pluginapi/file_deploy" - fmt.Println(url) r, err := httputils.Post(url, &httputils.Params{ Body: de, }) @@ -98,8 +113,11 @@ func (rc *RepoConfig) Apply() (json.RawMessage, error) { if resp.Code != http.StatusOK { return nil, errors.New(resp.Message) } - if resp.Data != nil { + + if string(resp.Data) != "null" { return resp.Data, errors.New(resp.Message) } - return nil, nil + //下发成功修改数据库应用版本 + err = rf.UpdateByuuid() + return nil, err } -- Gitee