diff --git a/atune/server/controller/task.go b/atune/server/controller/task.go index 0bbe7a45f2ae48c88354df6093969510e6e8463c..17d7b1e06561d9ed3104139235d2d248516ad90a 100644 --- a/atune/server/controller/task.go +++ b/atune/server/controller/task.go @@ -22,3 +22,36 @@ func TaskLists(c *gin.Context) { response.DataPagination(c, data, total, query) } + +func DeleteTask(c *gin.Context) { + taskdel := struct { + TaskID []int `json:"ids"` + }{} + if err := c.Bind(&taskdel); err != nil { + response.Fail(c, nil, "parameter error") + return + } + + if err := service.DeleteTask(taskdel.TaskID); err != nil { + response.Fail(c, nil, err.Error()) + return + } + response.Success(c, nil, "已删除调优对象模板") +} + +func SearchTask(c *gin.Context) { + search := c.Query("search") + + query := &response.PaginationQ{} + if err := c.ShouldBindQuery(query); err != nil { + response.Fail(c, nil, err.Error()) + return + } + + data, total, err := service.SearchTask(search, query) + if err != nil { + response.Fail(c, nil, err.Error()) + return + } + response.DataPagination(c, data, total, query) +} diff --git a/atune/server/dao/taskdao.go b/atune/server/dao/taskdao.go index e22849f6b4ddc4336d2dcad791fe35ca3b8caecd..96906519426d58f9b56db6e537c4a6e0fa01f6cd 100644 --- a/atune/server/dao/taskdao.go +++ b/atune/server/dao/taskdao.go @@ -39,3 +39,30 @@ func UpdateTask(dbtaskid int) error { } return nil } + +func DeleteTask(taskId int) error { + var task model.Tasks + + // 手动删除关联的 RunResults 数据 + if err := db.MySQL().Unscoped().Where("task_id = ?", taskId).Delete(&model.RunResult{}).Error; err != nil { + return err + } + + if err := db.MySQL().Unscoped().Where("id = ?", taskId).Delete(&task).Error; err != nil { + return err + } + return nil +} + +func SearchTask(search string, query *response.PaginationQ) ([]*model.Tasks, int64, error) { + var task []*model.Tasks + if err := db.MySQL().Limit(query.PageSize).Offset((query.Page-1)*query.PageSize).Where("task_name LIKE ? OR script LIKE ? OR task_status LIKE ?", "%"+search+"%", "%"+search+"%", "%"+search+"%").Find(&task).Error; err != nil { + return nil, 0, err + } + + var total int64 + if err := db.MySQL().Where("task_name LIKE ? OR script LIKE ? OR task_status LIKE ?", "%"+search+"%", "%"+search+"%", "%"+search+"%").Model(&task).Count(&total).Error; err != nil { + return nil, 0, err + } + return task, total, nil +} diff --git a/atune/server/go.mod b/atune/server/go.mod index b5c65386d0214a4c24df788005d07875ac47c5c2..9a4026bfd3c0204af31759307f948b89713364ba 100644 --- a/atune/server/go.mod +++ b/atune/server/go.mod @@ -3,7 +3,7 @@ module openeuler.org/PilotGo/atune-plugin go 1.18 require ( - gitee.com/openeuler/PilotGo/sdk v0.0.0-20231225071221-260195e4ee3e + gitee.com/openeuler/PilotGo/sdk v0.0.0-20231227075111-fc150174f73a github.com/gin-gonic/gin v1.9.1 gopkg.in/yaml.v2 v2.4.0 gorm.io/driver/mysql v1.5.1 diff --git a/atune/server/go.sum b/atune/server/go.sum index ac3c66b8dd8ca0f231633513be638079efe071ba..7c7a7c5fe1ade9522390617df9d04b85ffdb08a7 100644 --- a/atune/server/go.sum +++ b/atune/server/go.sum @@ -4,6 +4,14 @@ gitee.com/openeuler/PilotGo/sdk v0.0.0-20231220075944-c00326991801 h1:D7DF8kmhHZ gitee.com/openeuler/PilotGo/sdk v0.0.0-20231220075944-c00326991801/go.mod h1:zEVmY3l48/CvR2kIM3DJpD/jWTG1qkOxRoHJii/D0us= gitee.com/openeuler/PilotGo/sdk v0.0.0-20231225071221-260195e4ee3e h1:UKsQvDsAqPY/Zsgi58wzsLwPikS66e+wH6oeEGGMx80= gitee.com/openeuler/PilotGo/sdk v0.0.0-20231225071221-260195e4ee3e/go.mod h1:zEVmY3l48/CvR2kIM3DJpD/jWTG1qkOxRoHJii/D0us= +gitee.com/openeuler/PilotGo/sdk v0.0.0-20231226100554-760a57ca0a35 h1:fkTHiDG25bsB9Kt6ruZkFjteA4Ppekk+TJz8xgXD7uI= +gitee.com/openeuler/PilotGo/sdk v0.0.0-20231226100554-760a57ca0a35/go.mod h1:zEVmY3l48/CvR2kIM3DJpD/jWTG1qkOxRoHJii/D0us= +gitee.com/openeuler/PilotGo/sdk v0.0.0-20231227031908-2bcdb8153727 h1:WhtjNRVlIts1sNAP3FPQ+LhD6UPqt2jYGaCBbtQdOeA= +gitee.com/openeuler/PilotGo/sdk v0.0.0-20231227031908-2bcdb8153727/go.mod h1:zEVmY3l48/CvR2kIM3DJpD/jWTG1qkOxRoHJii/D0us= +gitee.com/openeuler/PilotGo/sdk v0.0.0-20231227070920-c289614a2e10 h1:RUbvPYH43bj1Ebu3w32oWdoQLOvlJRfQVzRE319uu/Q= +gitee.com/openeuler/PilotGo/sdk v0.0.0-20231227070920-c289614a2e10/go.mod h1:zEVmY3l48/CvR2kIM3DJpD/jWTG1qkOxRoHJii/D0us= +gitee.com/openeuler/PilotGo/sdk v0.0.0-20231227075111-fc150174f73a h1:vCMqSAe5nX8dX1tGH1MwTlMWljcziEV6Gw83Gu6KYqE= +gitee.com/openeuler/PilotGo/sdk v0.0.0-20231227075111-fc150174f73a/go.mod h1:zEVmY3l48/CvR2kIM3DJpD/jWTG1qkOxRoHJii/D0us= github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= diff --git a/atune/server/model/common.go b/atune/server/model/common.go index b5f1c27afdf7e968465700a9bc7f7ca20167b788..a62292636e7640eb3ef01cf0fbcd5ac104d026c8 100644 --- a/atune/server/model/common.go +++ b/atune/server/model/common.go @@ -33,6 +33,6 @@ type Tasks struct { TaskStatus string `json:"task_status"` CreateTime string `json:"create_time"` UpdateTime string `json:"update_time"` - RunResults []RunResult `gorm:"foreignKey:TaskID" json:"results"` + RunResults []RunResult `gorm:"foreignKey:TaskID;constraint:OnDelete:CASCADE;" json:"results"` Tune Tunes `gorm:"foreignKey:TuneID;constraint:OnUpdate:CASCADE,OnDelete:RESTRICT;" json:"tune"` } diff --git a/atune/server/router/router.go b/atune/server/router/router.go index 80a7ddc2500c40280b315137b6103573e083f530..2b977e087eb76862b42193f2404b8b89a3a2911b 100644 --- a/atune/server/router/router.go +++ b/atune/server/router/router.go @@ -58,6 +58,9 @@ func registerAPIs(router *gin.Engine) { task := router.Group("/plugin/" + plugin.GlobalClient.PluginInfo.Name) { task.GET("tasks", controller.TaskLists) + + task.DELETE("task_delete", controller.DeleteTask) + task.GET("task_search", controller.SearchTask) } restune := router.Group("/plugin/" + plugin.GlobalClient.PluginInfo.Name) diff --git a/atune/server/service/taskservice.go b/atune/server/service/taskservice.go index 91d7684b3c0681b590c481d854294eb5f42b8606..660bdd197a27f6826b7625c12f39d6b5dcf0b204 100644 --- a/atune/server/service/taskservice.go +++ b/atune/server/service/taskservice.go @@ -2,6 +2,7 @@ package service import ( "errors" + "strconv" "time" "gitee.com/openeuler/PilotGo/sdk/logger" @@ -46,3 +47,23 @@ func SaveTask(cmd string, task_name string, uuids []string, tuneId int) (int, er } return taskid, nil } +func DeleteTask(taskId []int) error { + if len(taskId) == 0 { + return errors.New("请输入调优模板ID") + } + + for _, tid := range taskId { + if err := dao.DeleteTask(tid); err != nil { + logger.Error("%v", strconv.Itoa(tid)+"未删除成功") + } + } + return nil +} + +func SearchTask(search string, query *response.PaginationQ) ([]*model.Tasks, int, error) { + if data, total, err := dao.SearchTask(search, query); err != nil { + return nil, 0, err + } else { + return data, int(total), nil + } +} diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/common/script.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/common/script.go index f63e6da065d7959106040c1853a0bd583d7b639f..8c6144536e7ae5d19ea9033bcc791c5f9c1c7601 100644 --- a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/common/script.go +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/common/script.go @@ -16,5 +16,4 @@ type CmdResult struct { type CmdStruct struct { Batch *Batch `json:"batch"` Command string `json:"command"` - CmdType string `json:"cmd_type"` } diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/client.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/client.go index 850f0d5c0b4bdd48857bcd15127a45c3d2994398..c35c46054a03d0853a519bd3ed67893c24133717 100644 --- a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/client.go +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/client.go @@ -95,7 +95,6 @@ func (client *Client) RegisterHandlers(router *gin.Engine) { // TODO: start command result process service client.startEventProcessor() client.startCommandResultProcessor() - client.SendHeartbeat() } func (client *Client) OnGetTags(callback GetTagsCallback) { diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/handler.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/handler.go index 2ad545b170e80a832edf221383ccaf87543ec7bd..a720319fcc8a12aa348347468a76c1c4481af824 100644 --- a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/handler.go +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/handler.go @@ -66,8 +66,13 @@ func BindHandler(c *gin.Context) { response.Fail(c, gin.H{"status": false}, "client信息错误") return } - client.server = strings.Split(c.Request.RemoteAddr, ":")[0] + ":" + port - + server := strings.Split(c.Request.RemoteAddr, ":")[0] + ":" + port + if client.server == "" { + client.server = server + } else if client.server != "" && client.server != server { + logger.Error("已有PilotGo-server与此插件绑定") + } + client.sendHeartBeat() response.Success(c, nil, "bind server success") } diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/heartbeat.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/heartbeat.go index 2c393a19e67c299263a5202fd181f42ff811ee05..b0e16977a8017cc6617767819fc22648306fbe7b 100644 --- a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/heartbeat.go +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/heartbeat.go @@ -21,8 +21,8 @@ type PluginStatus struct { LastConnect time.Time } -func (client *Client) SendHeartbeat() { - clientID := client.PluginInfo.Url + "+" + client.PluginInfo.Name +func (client *Client) sendHeartBeat() { + clientID := client.PluginInfo.Url go func() { for { err := client.sendHeartbeat(clientID) @@ -36,9 +36,9 @@ func (client *Client) SendHeartbeat() { func (client *Client) sendHeartbeat(clientID string) error { p := &struct { - ClientID string `json:"clientID"` + PluginUrl string `json:"clientID"` }{ - ClientID: clientID, + PluginUrl: clientID, } ServerUrl := "http://" + client.Server() + "/api/v1/pluginapi/heartbeat" diff --git a/atune/server/vendor/modules.txt b/atune/server/vendor/modules.txt index b2f9c0bddb0771cc0f3a08b89a8a926c5912cfbb..127ad19d5cf3e688c3cd74154457f6eedcd578bf 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-20231225071221-260195e4ee3e +# gitee.com/openeuler/PilotGo/sdk v0.0.0-20231227075111-fc150174f73a ## explicit; go 1.17 gitee.com/openeuler/PilotGo/sdk/common gitee.com/openeuler/PilotGo/sdk/logger