diff --git a/server/db/redisdao.go b/server/db/redisdao.go index d7694e25be091b0e1340833f0964b5de6d60770d..d18cc87f2018fc1179aaab122cb6ecf0bfbf3448 100644 --- a/server/db/redisdao.go +++ b/server/db/redisdao.go @@ -17,8 +17,8 @@ type RedisExportTarget struct { } func AddRedisExporter(ret RedisExportTarget) error { - if len(ret.MachineUUID) == 0 { - return fmt.Errorf("机器不能为空") + if len(ret.MachineUUID) == 0 || len(ret.MachineIP) == 0 { + return fmt.Errorf("机器uuid和ip都不能为空") } return MySQL().Save(&ret).Error } diff --git a/server/httphandler/agent.go b/server/httphandler/agent.go index 51cd4f3effadf9d17d04a7a52c6c48f56e351b8c..5ac9c81b7f0b5411b994e32d2cd7c6e48b0aa7b9 100644 --- a/server/httphandler/agent.go +++ b/server/httphandler/agent.go @@ -18,9 +18,9 @@ func InstallRedisExporter(c *gin.Context) { return } - ret, err := service.Install(¶m) - if err != nil { - response.Fail(c, nil, err.Error()) + ret, failRet, err := service.Install(¶m) + if err != nil || failRet != nil { + response.Fail(c, failRet, err.Error()) return } response.Success(c, ret, "安装成功") @@ -32,9 +32,9 @@ func UnInstallRedisExporter(c *gin.Context) { response.Fail(c, nil, err.Error()) return } - ret, err := service.UnInstall(¶m) - if err != nil { - response.Fail(c, nil, err.Error()) + ret, failRet, err := service.UnInstall(¶m) + if err != nil || failRet != nil { + response.Fail(c, failRet, err.Error()) return } response.Success(c, ret, "卸载成功") diff --git a/server/service/agent.go b/server/service/agent.go index e9d2410b8cf238ac8b8652d7c6e1358233dea3ec..b86c6cca99526bf8df8c72d7160afcf2a1092813 100644 --- a/server/service/agent.go +++ b/server/service/agent.go @@ -27,49 +27,51 @@ func FormatData(cmdResults []*client.CmdResult) ([]db.RedisExportTarget, error) return ret, nil } -func Install(param *common.Batch) ([]db.RedisExportTarget, error) { +func Install(param *common.Batch) ([]db.RedisExportTarget, []db.RedisExportTarget, error) { cmd := "yum install -y redis_exporter && systemctl start redis_exporter" cmdResults, err := global.GlobalClient.RunCommand(param, cmd) if err != nil { - return nil, err + return nil, nil, err } ret, err := FormatData(cmdResults) if err != nil { - return nil, err + return nil, nil, err } - + var failRet []db.RedisExportTarget for _, tm := range ret { if tm.Status == "ok" { tm.Status = global.StatusInstall } err = db.AddRedisExporter(tm) if err != nil { + failRet = append(failRet, tm) logger.Error(err.Error()) } } - return ret, nil + return ret, failRet, nil } -func UnInstall(param *common.Batch) ([]db.RedisExportTarget, error) { +func UnInstall(param *common.Batch) ([]db.RedisExportTarget, []db.RedisExportTarget, error) { cmd := "systemctl stop redis_exporter && yum autoremove -y redis_exporter" cmdResults, err := global.GlobalClient.RunCommand(param, cmd) if err != nil { - return nil, err + return nil, nil, err } ret, err := FormatData(cmdResults) if err != nil { - return nil, err + return nil, nil, err } - + var failRet []db.RedisExportTarget for _, tm := range ret { if tm.Status == "ok" { err = db.UpdateStatus(tm.MachineUUID) if err != nil { + failRet = append(failRet, tm) logger.Error(err.Error()) } } } - return ret, nil + return ret, failRet, nil } func Restart(param *common.Batch) ([]db.RedisExportTarget, error) { diff --git a/server/service/agent_test.go b/server/service/agent_test.go deleted file mode 100644 index 32ec85131f378d37817ca7f6dafc1217c1eb90a0..0000000000000000000000000000000000000000 --- a/server/service/agent_test.go +++ /dev/null @@ -1,23 +0,0 @@ -package service - -import ( - "fmt" - "testing" - - "gitee.com/openeuler/PilotGo-plugins/sdk/common" -) - -func TestInstall(t *testing.T) { - - //var param *common.Batch - param := &common.Batch{ - BatchUUID: "001", - DepartmentIDs: []string{"2", "15"}, - MachineUUIDs: []string{"b6acfeec-375c-4856-5610-0cdgef8cdgf4 ", "336d63a9-ca45-4b44-8577-c3fa0c0a46e9"}, - } - _, err := Install(param) - if err != nil { - fmt.Println(err) - } - fmt.Println("ok") -}