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

63 lines
1.5 KiB
Go

package event
import (
"gitlink.org.cn/cloudream/common/pkgs/future"
"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 OperateInstanceFuture = *future.SetValueFuture[OperateInstanceResult]
type InstanceOperate struct {
Info InstanceOperateInfo
Result OperateInstanceFuture
}
type OperateInstanceResult struct {
OperateResult string
Err error
JobID schsdk.JobID
FilesUploadScheme schsdk.JobFilesUploadScheme
}
type InstanceOperateInfo interface {
Instance()
}
type InstanceInfoBase struct{}
func (i *InstanceInfoBase) Instance() {}
var InstanceOperateInfoTypeUnion = types.NewTypeUnion[InstanceOperateInfo](
(*InstanceCreateInfo)(nil),
(*InstanceUpdateInfo)(nil),
)
var _ = serder.UseTypeUnionInternallyTagged(&InstanceOperateInfoTypeUnion, "type")
type InstanceCreateInfo struct {
serder.Metadata `union:"Create"`
InstanceInfoBase
DataSet schsdk.JobFileInfo
}
type InstanceUpdateInfo struct {
serder.Metadata `union:"Update"`
InstanceInfoBase
Type string `json:"type"`
Info schsdk.UpdateMultiInstanceJobInfo `json:"info"`
PackageID cdssdk.PackageID `json:"packageID"`
}
func NewInstanceOperate(info InstanceOperateInfo, future OperateInstanceFuture) *InstanceOperate {
return &InstanceOperate{
Info: info,
Result: future,
}
}
func (s *InstanceOperate) Noop() {
}