63 lines
1.5 KiB
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() {
|
|
}
|