commander/taskinterface/taskmanager.go (24 lines of code) (raw):
package taskinterface
import (
"github.com/aliyun/aliyun_assist_client/commander/taskerrors"
)
// Task is an abstract interface for commander-side commander-agent ipc
type Task interface {
// PreCheck checks run-time env
PreCheck() *taskerrors.TaskError
ExtraLubanParams() string
// Use content to build input params for task execute;
// If input params invalid, prepare returns error
Prepare(content string) *taskerrors.TaskError
// Task run based on PreCheck-params and Prepare-content
// Task run can be sync or async
Run()
// Task Cancel, if nothing to do just return
Cancel() *taskerrors.TaskError
// Task Dispose
Dispose() *taskerrors.TaskError
Cleanup() *taskerrors.TaskError
}
// TaskManager is an abstract interface for commander-side commander-agent ipc
type TaskManager interface {
// NewTask create task with input params
NewTask(submissionId string, commandType string, timeout int, workingDir string, userName string, annotation map[string]string) (Task, *taskerrors.TaskError)
// LoadTask return task by submissionId
LoadTask(submissionId string) (Task, *taskerrors.TaskError)
// TaskCount returns live task count in TaskManager
TaskCount() int
// PreCheckTask precheck task by submissionId
PreCheckTask(submissionId string) *taskerrors.TaskError
// PrepareTask prepare task with content by submissionId
PrepareTask(submissionId string, content string) *taskerrors.TaskError
// Run will run task by submissionId;
// RunTask rely on inner task.run, run can be sync or async
RunTask(submissionId string) *taskerrors.TaskError
// Cancel cancel task by submissionId
CancelTask(submissionId string) *taskerrors.TaskError
// CleanupTask cleanup task by submissionId
CleanupTask(submissionId string) *taskerrors.TaskError
// Dispose dispose task by submissionId
DisposeTask(submissionId string) *taskerrors.TaskError
}