JCC-CSScheduler/manager/internal/jobmgr/event/advisor_task_updated.go

47 lines
1.0 KiB
Go

package event
import advtsk "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/advisor/task"
// advisor上报任务进度
type AdvisorTaskUpdated struct {
FullTaskID string
TaskStatus advtsk.AdvTaskStatus
}
func NewAdvisorTaskUpdated(fullTaskID string, taskStatus advtsk.AdvTaskStatus) *AdvisorTaskUpdated {
return &AdvisorTaskUpdated{
FullTaskID: fullTaskID,
TaskStatus: taskStatus,
}
}
func AssertAdvisorTaskStatus[T advtsk.AdvTaskStatus](evt Event, fullTaskID string) (T, error) {
var ret T
if evt == nil {
return ret, ErrUnconcernedTask
}
if reportTaskStatus, ok := evt.(*AdvisorTaskUpdated); ok {
if reportTaskStatus.FullTaskID != fullTaskID {
return ret, ErrUnconcernedTask
}
status, ok := reportTaskStatus.TaskStatus.(T)
if !ok {
return ret, ErrUnconcernedTask
}
return status, nil
}
if taskTimeout, ok := evt.(*AdvisorTaskTimeout); ok {
if taskTimeout.FullTaskID != fullTaskID {
return ret, ErrUnconcernedTask
}
return ret, ErrTaskTimeout
}
return ret, ErrUnconcernedTask
}