atask

package
v0.0.0-...-e9de818 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 20, 2024 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Overview

Package atask default agent subtask response format:

{
       "status" : "succeed",      //succeed or failed
       "msg" : "No such file or directory",      //
       "token" : "c5mej1rc77ubvhrfifkg",   //the token
}

Index

Constants

View Source
const (
	AgentRebootType = 1060

	TypeAgentConfig = "Agent_Config"
	TypeAgentTask   = "Agent_Task"
	TypeAgentCtrl   = "Agent_Ctrl"

	TaskStatusCreated = "created" //未执行
	TaskStatusRunning = "running" //执行中

	TaskStatusFinished = "finished"  // only for task status and task inner_status
	TaskStatusStopped  = "cancelled" // only for task status and task inner_status

	TaskStatusFail          = "failed"         // only for subtask status
	TaskStatusSuccess       = "succeed"        // only for subtask status
	TaskStatusResultFail    = "result_failed"  // only for subtask status
	TaskStatusResultSuccess = "result_succeed" // only for subtask status
)
View Source
const AgentJobTimeOut = 60 * 60 // 1 hour

Variables

View Source
var ResMap = map[string]ResFunc{}

Functions

func AgentControlDistribute

func AgentControlDistribute(Jid string, k, v interface{}) (interface{}, error)

AgentControlDistribute for old version config

func AgentControlDistributeV2

func AgentControlDistributeV2(Jid string, k, v interface{}) (interface{}, error)

AgentControlDistributeV2 for new version config

func AgentControlDo

func AgentControlDo(Jid string, args interface{}) (interface{}, error)

AgentControlDo for old version config

func AgentControlDoV2

func AgentControlDoV2(Jid string, args interface{}) (interface{}, error)

AgentControlDoV2 for new version config. config load from task_data

func CancelTask

func CancelTask(taskID string) error

CancelTask cancel a task and set the task_status and inner_status to TaskStatusStopped.

func CreateConfTask

func CreateConfTask(t *AgentTask) (string, int64, error)

func CreateCtrlTask

func CreateCtrlTask(t *AgentTask) (string, int64, error)

func CreateTask

func CreateTask(request *AgentTask, tType string) (string, int64, error)

CreateTask Create a distributed agent task and return taskID, count of subtask, or error.

func CreateTaskAndRun

func CreateTaskAndRun(request *AgentTask, tType string, concurrence int) (string, int64, error)

CreateTaskAndRun Create a distributed agent task and run, return the taskID, count of subtask, or error.

func CreateTaskTask

func CreateTaskTask(t *AgentTask) (string, int64, error)

func DefaultResFunc

func DefaultResFunc(data map[string]interface{})

func GenerateToken

func GenerateToken() string

func GetSubTaskTokenList

func GetSubTaskTokenList(ctx context.Context, taskID string) []string

func Init

func Init()

func PushSubTask

func PushSubTask(data map[string]interface{})

func RegistryResFunc

func RegistryResFunc(dt string, f ResFunc)

func ResFuncOld

func ResFuncOld(data map[string]interface{})

func RunTask

func RunTask(taskID string, rollPercent float64, runCount int, concurrence int) (string, int, error)

RunTask run a task and return jobID, count of subtask, or error. If rollPercent > 0 , use rollPercent, else use runCount. Concurrence controls the concurrency of each manager instance, so the true concurrency is concurrence * number of instances.

func SendFastTask

func SendFastTask(agentID string, taskMsg *AgentTaskMsg, needAgentResp bool, timeout int64, appendData map[string]interface{}) (string, error)

SendFastTask send a task to agent and return taskID if needAgentResp is true.

Types

type AgentJobParam

type AgentJobParam struct {
	ConfigTask *AgentTask
	TODOList   []string
	TaskID     string
	JobID      string
}

type AgentSubTask

type AgentSubTask struct {
	AppendData     map[string]interface{} `json:"append_data" bson:"append_data"`        //创建子任务携带额外信息
	TaskType       string                 `json:"task_type" bson:"task_type" `           //TypeAgentConfig TypeAgentTask TypeAgentCtrl
	TaskDataType   int32                  `json:"task_data_type" bson:"task_data_type" ` //
	AgentID        string                 `json:"agent_id" bson:"agent_id" `
	TaskID         string                 `json:"task_id" bson:"task_id" `
	JobID          string                 `json:"job_id" bson:"job_id" `      //子任务对应jobID(如果有)
	TaskData       interface{}            `json:"task_data" bson:"task_data"` //任务下发ac json body
	TaskUrl        string                 `json:"task_url" bson:"task_url"`   //任务下发ac url
	Token          string                 `json:"token" bson:"token"`
	Status         string                 `json:"status" bson:"status"`         //子任务状态 TaskStatusCreated|TaskStatusRunning|TaskStatusSuccess|TaskStatusFail|TaskStatusResultFail|TaskStatusResultSuccess
	StatusMsg      string                 `json:"status_msg" bson:"status_msg"` //状态说明信息
	InsertTime     int64                  `json:"insert_time" bson:"insert_time"`
	UpdateTime     int64                  `json:"update_time" bson:"update_time"`
	JobTimeOutTime int64                  `json:"job_time_out_time" bson:"job_time_out_time"` //子任务超时时间
	JobStartTime   int64                  `json:"job_start_time" bson:"job_start_time"`       //任务开始时间(指开始下发到AC的时间)
	TaskResult     interface{}            `json:"task_result" bson:"task_result"`             //agent上报数据
	TaskResp       string                 `json:"task_resp" bson:"task_resp"`                 //任务下发ac response
}

type AgentSubTaskToken

type AgentSubTaskToken struct {
	Token string `json:"token" bson:"token"`
}

type AgentTask

type AgentTask struct {
	Tag    string              `json:"tag" bson:"tag"`
	IDList []string            `json:"id_list" bson:"id_list"`
	Filter *common.FilterQuery `json:"filter" bson:"filter"`
	Data   ConfigRequest       `json:"data" binding:"required" bson:"data"`

	TaskName              string `json:"task_name" bson:"task_name"`
	Action                string `json:"action" bson:"action"`
	TaskUser              string `json:"task_user" bson:"task_user"`
	SubTaskRunningTimeout int64  `json:"subtask_running_timeout" bson:"subtask_running_timeout"` //子任务超时时间

	TaskID           string   `json:"task_id" bson:"task_id"`
	TaskType         string   `json:"task_type" bson:"task_type"`       //TypeAgentConfig TypeAgentTask TypeAgentCtrl
	InnerStatus      string   `json:"inner_status" bson:"inner_status"` //记录下发状态
	TaskStatus       string   `json:"task_status" bson:"task_status"`   //记录任务状态
	ToDoList         []string `json:"todo_list" bson:"todo_list"`
	IDCount          float64  `json:"id_count" bson:"id_count"`
	DistributedCount int      `json:"distributed_count" bson:"distributed_count"` //总共下发总数,包括未执行完成的
	JobList          []string `json:"job_list" bson:"job_list"`

	//count from subTask
	SubTaskCreated int `json:"sub_task_created" bson:"sub_task_created"`
	SubTaskRunning int `json:"sub_task_running" bson:"sub_task_running"`
	SubTaskFailed  int `json:"sub_task_failed" bson:"sub_task_failed"`
	SubTaskSucceed int `json:"sub_task_succeed" bson:"sub_task_succeed"`

	CreateTime int64 `json:"create_time" bson:"create_time" bson:"create_time"`
	UpdateTime int64 `json:"update_time" bson:"update_time" bson:"update_time"`
}

func GetTaskByID

func GetTaskByID(taskID string) (*AgentTask, error)

type ResFunc

type ResFunc func(data map[string]interface{})

type SubTaskCount

type SubTaskCount struct {
	ID    string `json:"_id" bson:"_id"`
	Count int    `json:"count" bson:"count"`
}

type TaskResFuc

type TaskResFuc func(subTask *AgentSubTask, err error) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL