diff --git a/configmanage/server/controller/configinstance.go b/configmanage/server/controller/configinstance.go index 8e22b7abd1bd2273e1c406fbc844a8c7f8ef671a..81b1469cc69f5f692a1279c04e4e01a36498164a 100644 --- a/configmanage/server/controller/configinstance.go +++ b/configmanage/server/controller/configinstance.go @@ -84,10 +84,10 @@ func AddConfigHandler(c *gin.Context) { return } //收集机器的配置信息 - err = repoconfig.Collect() + result, err := repoconfig.Collect() if err != nil { logger.Error("failed to collect repofile: %s", err.Error()) - response.Fail(c, "failed to collect repofile:", err.Error()) + response.Fail(c, result, err.Error()) return } logger.Debug("add repoconfig success") diff --git a/configmanage/server/service/configinstance.go b/configmanage/server/service/configinstance.go index cd47bc993e536b9eeec60a7bf970774b8c8df64d..e33b610fd66d51dc2aa2234162e0fcd92be418cb 100644 --- a/configmanage/server/service/configinstance.go +++ b/configmanage/server/service/configinstance.go @@ -70,7 +70,7 @@ type Config interface { // 配置加载 Load() error // 单机采集数据 - Collect() error + Collect() ([]NodeResult, error) // 依据agent uuid进行配置下发 Apply() ([]NodeResult, error) } diff --git a/configmanage/server/service/repo.go b/configmanage/server/service/repo.go index e7d61fa18264a3ea2360284e1529f8d3ef6b53fa..0ba86e7a6908f8aa649422862db6dfd8d97cbdea 100644 --- a/configmanage/server/service/repo.go +++ b/configmanage/server/service/repo.go @@ -174,10 +174,10 @@ func (rc *RepoConfig) Apply() ([]NodeResult, error) { return results, errors.New("failed to apply repo config") } -func (rc *RepoConfig) Collect() error { +func (rc *RepoConfig) Collect() ([]NodeResult, error) { ci, err := GetConfigByUUID(rc.ConfigInfoUUID) if err != nil { - return err + return nil, err } //发请求获取配置详情 @@ -199,25 +199,25 @@ func (rc *RepoConfig) Collect() error { Body: p, }) if err != nil { - return err + return nil, err } if r.StatusCode != http.StatusOK { - return errors.New("server process error:" + strconv.Itoa(r.StatusCode)) + return nil, errors.New("server process error:" + strconv.Itoa(r.StatusCode)) } resp := &common.CommonResult{} if err := json.Unmarshal(r.Body, resp); err != nil { - return err + return nil, err } if resp.Code != http.StatusOK { - return errors.New(resp.Message) + return nil, errors.New(resp.Message) } data := []common.NodeResult{} if err := resp.ParseData(&data); err != nil { - return err + return nil, err } - result := "" + results := []NodeResult{} for _, v := range data { if v.Error == "" { file, _ := json.Marshal(v.Data) @@ -232,15 +232,26 @@ func (rc *RepoConfig) Collect() error { err = rf.Add() if err != nil { logger.Error("failed to add repoconfig: %s", err.Error()) + results = append(results, NodeResult{ + Type: global.Repo, + NodeUUID: v.UUID, + Detail: "failed to collect repo config to db", + Result: false, + Err: err.Error()}) } } else { - result = result + v.UUID + ":" + v.Error + "\n" + results = append(results, NodeResult{ + Type: global.Repo, + NodeUUID: v.UUID, + Detail: "failed to collect repo config:" + v.Data.(string), + Result: false, + Err: v.Error}) } } - if result != "" { - return errors.New(result + "failed to collect repo config") + if results != nil { + return results, errors.New("failed to collect repo config") } - return nil + return nil, nil } func GetRepoFileByInfoUUID(uuid string, isindex interface{}) (RepoFile, error) {