From ca70604d25e4ddd27834da9da161d5a7ce0d7a81 Mon Sep 17 00:00:00 2001 From: zhanghan Date: Mon, 25 Dec 2023 16:31:54 +0800 Subject: [PATCH] Delete useless query script execution interfaces; Modify the return result processing function --- atune/server/controller/runresult.go | 28 ++++++-------------- atune/server/dao/runresultdao.go | 18 +++++++++++-- atune/server/service/resultservice.go | 37 ++++++++++----------------- atune/server/vendor/modules.txt | 2 +- 4 files changed, 38 insertions(+), 47 deletions(-) diff --git a/atune/server/controller/runresult.go b/atune/server/controller/runresult.go index f8a1e80d..4d5fd56c 100644 --- a/atune/server/controller/runresult.go +++ b/atune/server/controller/runresult.go @@ -16,17 +16,22 @@ func RunCommand(c *gin.Context) { response.Fail(c, nil, "parameter error") return } + dbtaskid, err := service.SaveTask(d.Command, d.CmdType, d.Batch.MachineUUIDs) + if err != nil { + response.Fail(c, nil, err.Error()) + return + } - run_result := func(result []*common.RunResult) { + run_result := func(result []*common.CmdResult) { for _, res := range result { logger.Info("结果:%v", *res) - if err := service.ProcessResult(res, d.Command); err != nil { + if err := service.ProcessResult(res, d.Command, dbtaskid); err != nil { logger.Error("处理结果失败:%v", err.Error()) } } } - err := plugin.GlobalClient.RunCommandAsync(d.Batch, d.Command, run_result) + err = plugin.GlobalClient.RunCommandAsync(d.Batch, d.Command, run_result) if err != nil { logger.Error("远程调用失败:%v", err.Error()) response.Fail(c, nil, err.Error()) @@ -35,23 +40,6 @@ func RunCommand(c *gin.Context) { response.Success(c, nil, "指令下发完成") } -func QueryResults(c *gin.Context) { - query := &response.PaginationQ{} - err := c.ShouldBindQuery(query) - if err != nil { - response.Fail(c, nil, err.Error()) - return - } - - data, total, err := service.QueryResults(query) - if err != nil { - response.Fail(c, nil, err.Error()) - return - } - - response.DataPagination(c, data, total, query) -} - func DeleteResult(c *gin.Context) { resultdel := struct { ResultID []int `json:"ids"` diff --git a/atune/server/dao/runresultdao.go b/atune/server/dao/runresultdao.go index d5b014a8..48ea85fc 100644 --- a/atune/server/dao/runresultdao.go +++ b/atune/server/dao/runresultdao.go @@ -26,14 +26,28 @@ func SaveRusult(result *model.RunResult) error { return nil } -func UpdateResult(machine_uuid string, result *model.RunResult) error { +func UpdateResult(dbtaskid int, machine_uuid string, result *model.RunResult) error { var r model.RunResult - if err := db.MySQL().Model(&r).Where("machine_uuid = ?", machine_uuid).Updates(&result).Error; err != nil { + if err := db.MySQL().Model(&r).Where("task_id = ? AND machine_uuid = ?", dbtaskid, machine_uuid).Updates(&result).Error; err != nil { return err } return nil } +// 列中包含false,是false,表明远程命令未更新完成 +func IsUpdateAll() (bool, error) { + var count int64 + if err := db.MySQL().Model(&model.RunResult{}).Where("is_update = ?", false).Count(&count).Error; err != nil { + return false, err + } + + if count > 0 { + return false, nil + } else { + return true, nil + } +} + func DeleteResult(resultId int) error { var r model.RunResult if err := db.MySQL().Where("id = ?", resultId).Unscoped().Delete(&r).Error; err != nil { diff --git a/atune/server/service/resultservice.go b/atune/server/service/resultservice.go index ca420e6c..2e973f4b 100644 --- a/atune/server/service/resultservice.go +++ b/atune/server/service/resultservice.go @@ -11,14 +11,6 @@ import ( "openeuler.org/PilotGo/atune-plugin/model" ) -func QueryResults(query *response.PaginationQ) ([]*model.RunResult, int, error) { - if data, total, err := dao.QueryResults(query); err != nil { - return nil, 0, err - } else { - return data, int(total), nil - } -} - func DeleteResult(resultId []int) error { if len(resultId) == 0 { return errors.New("请输入删除的ID") @@ -31,28 +23,25 @@ func DeleteResult(resultId []int) error { } return nil } -func ProcessResult(res *common.RunResult, command string) error { +func ProcessResult(res *common.CmdResult, command string, dbtaskid int) error { result := &model.RunResult{ - MachineUUID: res.CmdResult.MachineUUID, - MachineIP: res.CmdResult.MachineIP, - Command: command, - RetCode: res.CmdResult.RetCode, - Stdout: res.CmdResult.Stdout, - Stderr: res.CmdResult.Stderr, - ResponseError: res.Error.(string), + MachineIP: res.MachineIP, + RetCode: res.RetCode, + Stdout: res.Stdout, + Stderr: res.Stderr, + IsUpdate: true, } - ok, err := dao.IsExistCommandResult(res.CmdResult.MachineUUID, command) - if ok && err == nil { - if Err := dao.UpdateResult(res.CmdResult.MachineUUID, result); Err != nil { - return errors.New("更新命令执行结果失败:" + Err.Error()) - } + if err := dao.UpdateResult(dbtaskid, res.MachineUUID, result); err != nil { + return errors.New("更新命令执行结果失败:" + err.Error()) } - if !ok && err == nil { - if Err := dao.SaveRusult(result); Err != nil { - return errors.New("保存命令执行结果失败:" + Err.Error()) + + if ok, err := dao.IsUpdateAll(); ok && err == nil { + if err := dao.UpdateTask(dbtaskid); err != nil { + return errors.New("更新任务列表失败:" + err.Error()) } } + return nil } diff --git a/atune/server/vendor/modules.txt b/atune/server/vendor/modules.txt index 4f693b80..b2f9c0bd 100644 --- a/atune/server/vendor/modules.txt +++ b/atune/server/vendor/modules.txt @@ -1,4 +1,4 @@ -# gitee.com/openeuler/PilotGo/sdk v0.0.0-20231218035738-e5355d2a2d29 +# gitee.com/openeuler/PilotGo/sdk v0.0.0-20231225071221-260195e4ee3e ## explicit; go 1.17 gitee.com/openeuler/PilotGo/sdk/common gitee.com/openeuler/PilotGo/sdk/logger -- Gitee