151 lines
3.8 KiB
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
|
|
}
|