-
Notifications
You must be signed in to change notification settings - Fork 0
/
task.go
49 lines (45 loc) · 1.21 KB
/
task.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package api
import (
"github.com/ysqi/atop/common/models"
"github.com/ysqi/atop/server/core"
"gopkg.in/mgo.v2/bson"
)
// TaskController Task相关
type TaskController struct {
atopAPIController
}
// NewTask 创建新的Task任务。
// Task信息需要正常,如何新建任务成功将返回任务ID,否则返回错误信息。
//
//@router /task/new [post]
func (t *TaskController) NewTask() {
task := &models.Task{}
if err := t.UnmarshalBody(task); err != nil {
t.OutputError(err)
return
}
if err := core.TaskMgt.NewTask(task); err != nil {
t.OutputError(err)
return
}
t.OutputSuccess(map[string]string{"taskID": task.ID.Hex()})
}
// Start 执行指定任务,并返回任务推送结果。
// 启动任务前需要保证任务信息存在,且执行命令的服务器Agent也在线。
//
// @router /task/start [post]
func (t *TaskController) Start() {
data := make(map[string]string)
if err := t.UnmarshalBody(&data); err != nil {
t.OutputError(err)
return
}
if taskID, ok := data["taskID"]; !ok {
t.OutputError("缺少参数taskID")
} else if taskID == "" {
t.OutputError("taskID不能为空")
} else {
err := core.TaskMgt.StartTask(bson.ObjectIdHex(taskID))
t.OutputDoResult(err)
}
}