JCC-CSScheduler/common/models/job/state.go

151 lines
3.8 KiB
Go

package jobmod
import (
"gitlink.org.cn/cloudream/common/pkgs/types"
pcmsdk "gitlink.org.cn/cloudream/common/sdks/pcm"
"gitlink.org.cn/cloudream/common/utils/serder"
)
type JobStateDumpType string
// 导出的任务状态的数据,需要能被序列化
type JobStateDump interface {
// 仅为了区分整个仓库中拥有同名函数的接口,不要调用这个函数
getType() JobStateDumpType
}
var _ = serder.UseTypeUnionExternallyTagged(types.Ref(types.NewTypeUnion[JobStateDump](
(*AdjustingDump)(nil),
(*CompletedDump)(nil),
(*NormalJobExecutingDump)(nil),
(*DataReturnExecutingDump)(nil),
(*MakeingAdjustSchemeDump)(nil),
(*PreSchedulingDump)(nil),
(*ReadyToAdjustDump)(nil),
(*NormalJobReadyToExecuteDump)(nil),
(*DataReturnReadyToExecuteDump)(nil),
(*WaitTargetCompleteDump)(nil),
)))
// 调整中
type AdjustingDump struct {
serder.Metadata `union:"Adjusting"`
Type JobStateDumpType `json:"type"`
Scheme JobScheduleScheme `json:"scheme"`
}
func (dump *AdjustingDump) getType() JobStateDumpType {
return dump.Type
}
// 任务结束
type CompletedDump struct {
serder.Metadata `union:"Completed"`
Type JobStateDumpType `json:"type"`
Error string `json:"error"`
}
func (dump *CompletedDump) getType() JobStateDumpType {
return dump.Type
}
type MultiInstCreateInitDump struct {
serder.Metadata `union:"MultiInstCreateInit"`
Type JobStateDumpType `json:"type"`
}
func (dump *MultiInstCreateInitDump) getType() JobStateDumpType {
return dump.Type
}
type MultiInstCreateRunningDump struct {
serder.Metadata `union:"MultiInstCreateRunning"`
Type JobStateDumpType `json:"type"`
}
func (dump *MultiInstCreateRunningDump) getType() JobStateDumpType {
return dump.Type
}
// 普通任务执行中
type NormalJobExecutingDump struct {
serder.Metadata `union:"NormalJobExecuting"`
Type JobStateDumpType `json:"type"`
TaskStatus pcmsdk.TaskStatus `json:"taskStatus"`
}
func (dump *NormalJobExecutingDump) getType() JobStateDumpType {
return dump.Type
}
// 回源任务执行中
type DataReturnExecutingDump struct {
serder.Metadata `union:"DataReturnExecuting"`
Type JobStateDumpType `json:"type"`
}
func (dump *DataReturnExecutingDump) getType() JobStateDumpType {
return dump.Type
}
// 制作调整方案中
type MakeingAdjustSchemeDump struct {
serder.Metadata `union:"MakeingAdjustScheme"`
Type JobStateDumpType `json:"type"`
}
func (dump *MakeingAdjustSchemeDump) getType() JobStateDumpType {
return dump.Type
}
// 预调度中
type PreSchedulingDump struct {
serder.Metadata `union:"PreScheduling"`
Type JobStateDumpType `json:"type"`
Scheme JobScheduleScheme `json:"scheme"`
}
func (dump *PreSchedulingDump) getType() JobStateDumpType {
return dump.Type
}
// 准备调整中
type ReadyToAdjustDump struct {
serder.Metadata `union:"ReadyToAdjust"`
Type JobStateDumpType `json:"type"`
}
func (dump *ReadyToAdjustDump) getType() JobStateDumpType {
return dump.Type
}
// 普通任务准备执行中
type NormalJobReadyToExecuteDump struct {
serder.Metadata `union:"NormalJobReadyToExecute"`
Type JobStateDumpType `json:"type"`
}
func (dump *NormalJobReadyToExecuteDump) getType() JobStateDumpType {
return dump.Type
}
// 回源任务准备执行中
type DataReturnReadyToExecuteDump struct {
serder.Metadata `union:"DataReturnReadyToExecute"`
Type JobStateDumpType `json:"type"`
}
func (dump *DataReturnReadyToExecuteDump) getType() JobStateDumpType {
return dump.Type
}
// 等待回源目标完成中
type WaitTargetCompleteDump struct {
serder.Metadata `union:"WaitTargetComplete"`
Type JobStateDumpType `json:"type"`
}
func (dump *WaitTargetCompleteDump) getType() JobStateDumpType {
return dump.Type
}