agent/kickvmhandle/taskhandle.go (56 lines of code) (raw):
package kickvmhandle
import (
"errors"
"github.com/aliyun/aliyun_assist_client/agent/log"
"github.com/aliyun/aliyun_assist_client/agent/taskengine"
)
// type:agent
var taskRoute map[string]handleFunc
func init () {
taskRoute = map[string]handleFunc{
"run": runTask,
"stop": stopTask,
}
}
func runTask(params []string) error {
log.GetLogger().Println("runTask")
if len(params) < 1 {
return errors.New("params error")
}
go func() {
taskengine.Fetch(true, params[0], taskengine.NormalTaskType) }()
return nil
}
func stopTask(params []string) error {
log.GetLogger().Println("stopTask")
if len(params) < 1 {
return errors.New("params error")
}
go func() {
taskengine.Fetch(true, params[0], taskengine.NormalTaskType) }()
return nil
}
type TaskHandle struct {
action string
params []string
}
func NewTaskHandle(action string, params []string) *TaskHandle{
return &TaskHandle{
action: action,
params: params,
}
}
func (h *TaskHandle) DoAction() error{
if v, ok := taskRoute[h.action]; ok {
v(h.params)
} else {
return errors.New("no action found")
}
return nil
}
func (h *TaskHandle) CheckAction() bool{
if _, ok := taskRoute[h.action]; ok {
return true
} else {
return false
}
}