67 lines
1.8 KiB
Go
67 lines
1.8 KiB
Go
package jobmod
|
|
|
|
import (
|
|
"gitlink.org.cn/cloudream/common/pkgs/types"
|
|
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
|
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
|
"gitlink.org.cn/cloudream/common/utils/serder"
|
|
)
|
|
|
|
type JobBodyDumpType string
|
|
|
|
// 导出的任务体的状态,需要能被序列化
|
|
type JobBodyDump interface {
|
|
// 仅为了区分整个仓库中拥有同名函数的接口,不要调用这个函数
|
|
getType() JobBodyDumpType
|
|
}
|
|
|
|
var _ = serder.UseTypeUnionExternallyTagged(types.Ref(types.NewTypeUnion[JobBodyDump](
|
|
(*NormalJobDump)(nil),
|
|
(*DataReturnJobDump)(nil),
|
|
(*InstanceJobDump)(nil),
|
|
(*MultiInstanceJobDump)(nil),
|
|
)))
|
|
|
|
type NormalJobDump struct {
|
|
serder.Metadata `union:"NormalJob"`
|
|
Type JobBodyDumpType `json:"type"`
|
|
TargetCCID schsdk.CCID `json:"targetCCID"`
|
|
Files JobFiles `json:"files"`
|
|
}
|
|
|
|
func (d *NormalJobDump) getType() JobBodyDumpType {
|
|
return d.Type
|
|
}
|
|
|
|
type DataReturnJobDump struct {
|
|
serder.Metadata `union:"DataReturnJob"`
|
|
Type JobBodyDumpType `json:"type"`
|
|
DataReturnPackageID cdssdk.PackageID `json:"dataReturnPackageID"`
|
|
}
|
|
|
|
func (d *DataReturnJobDump) getType() JobBodyDumpType {
|
|
return d.Type
|
|
}
|
|
|
|
type InstanceJobDump struct {
|
|
serder.Metadata `union:"InstanceJob"`
|
|
Type JobBodyDumpType `json:"type"`
|
|
TargetCCID schsdk.CCID `json:"targetCCID"`
|
|
Files JobFiles `json:"files"`
|
|
}
|
|
|
|
func (d *InstanceJobDump) getType() JobBodyDumpType {
|
|
return d.Type
|
|
}
|
|
|
|
type MultiInstanceJobDump struct {
|
|
serder.Metadata `union:"MultiInstanceJob"`
|
|
Type JobBodyDumpType `json:"type"`
|
|
TargetCCID schsdk.CCID `json:"targetCCID"`
|
|
Files JobFiles `json:"files"`
|
|
}
|
|
|
|
func (d *MultiInstanceJobDump) getType() JobBodyDumpType {
|
|
return d.Type
|
|
}
|