190 lines
5.7 KiB
Go
190 lines
5.7 KiB
Go
package manager
|
||
|
||
import (
|
||
"gitlink.org.cn/cloudream/common/pkgs/mq"
|
||
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
||
jobmod "gitlink.org.cn/cloudream/scheduler/common/models/job"
|
||
)
|
||
|
||
type JobService interface {
|
||
SubmitJobSet(msg *SubmitJobSet) (*SubmitJobSetResp, *mq.CodeMessage)
|
||
|
||
JobSetLocalFileUploaded(msg *JobSetLocalFileUploaded) (*JobSetLocalFileUploadedResp, *mq.CodeMessage)
|
||
|
||
GetServiceList(msg *GetServiceList) (*GetServiceListResp, *mq.CodeMessage)
|
||
|
||
GetJobSetDump(msg *GetJobSetDump) (*GetJobSetDumpResp, *mq.CodeMessage)
|
||
|
||
CreateInstance(msg *CreateInstance) (*CreateInstanceResp, *mq.CodeMessage)
|
||
|
||
QueryRunningModels(msg *AvailableNodes) (*schsdk.RunningModelResp, *mq.CodeMessage)
|
||
|
||
ECSNodeRunningInfo(msg *schsdk.ECSNodeRunningInfoReq) (*schsdk.ECSNodeRunningInfoResp, *mq.CodeMessage)
|
||
}
|
||
|
||
// 提交任务集
|
||
var _ = Register(Service.SubmitJobSet)
|
||
|
||
var _ = Register(Service.CreateInstance)
|
||
|
||
var _ = Register(Service.QueryRunningModels)
|
||
|
||
var _ = Register(Service.ECSNodeRunningInfo)
|
||
|
||
type SubmitJobSet struct {
|
||
mq.MessageBodyBase
|
||
JobSet schsdk.JobSetInfo `json:"jobSet"`
|
||
PreScheduleScheme jobmod.JobSetPreScheduleScheme `json:"preScheduleScheme"`
|
||
}
|
||
type SubmitJobSetResp struct {
|
||
mq.MessageBodyBase
|
||
JobSetID schsdk.JobSetID `json:"jobSetID"`
|
||
}
|
||
|
||
func NewSubmitJobSet(jobSet schsdk.JobSetInfo, preScheduleScheme jobmod.JobSetPreScheduleScheme) *SubmitJobSet {
|
||
return &SubmitJobSet{
|
||
JobSet: jobSet,
|
||
PreScheduleScheme: preScheduleScheme,
|
||
}
|
||
}
|
||
func NewSubmitJobSetResp(jobSetID schsdk.JobSetID) *SubmitJobSetResp {
|
||
return &SubmitJobSetResp{
|
||
JobSetID: jobSetID,
|
||
}
|
||
}
|
||
func (c *Client) SubmitJobSet(msg *SubmitJobSet, opts ...mq.RequestOption) (*SubmitJobSetResp, error) {
|
||
return mq.Request(Service.SubmitJobSet, c.roundTripper, msg, opts...)
|
||
}
|
||
|
||
type CreateInstance struct {
|
||
mq.MessageBodyBase
|
||
JobSetID schsdk.JobSetID
|
||
DataSet schsdk.JobFileInfo
|
||
}
|
||
|
||
type CreateInstanceResp struct {
|
||
mq.MessageBodyBase
|
||
InstanceID schsdk.JobID `json:"instanceID"`
|
||
UploadScheme schsdk.JobFilesUploadScheme `json:"uploadScheme"`
|
||
}
|
||
|
||
func NewCreateInstance(jobSetID schsdk.JobSetID, dataSet schsdk.JobFileInfo) *CreateInstance {
|
||
return &CreateInstance{
|
||
JobSetID: jobSetID,
|
||
DataSet: dataSet,
|
||
}
|
||
}
|
||
|
||
func NewCreateInstanceResp(InstanceID schsdk.JobID, UploadScheme schsdk.JobFilesUploadScheme) *CreateInstanceResp {
|
||
return &CreateInstanceResp{
|
||
InstanceID: InstanceID,
|
||
UploadScheme: UploadScheme,
|
||
}
|
||
}
|
||
|
||
func NewAvailableNodesResp(nodes map[string]schsdk.RunningModelInfo) *schsdk.RunningModelResp {
|
||
return &schsdk.RunningModelResp{
|
||
RunningModels: nodes,
|
||
}
|
||
}
|
||
|
||
func (c *Client) CreateInstance(instance *CreateInstance, opts ...mq.RequestOption) (*CreateInstanceResp, error) {
|
||
return mq.Request(Service.CreateInstance, c.roundTripper, instance, opts...)
|
||
}
|
||
|
||
type AvailableNodes struct {
|
||
mq.MessageBodyBase
|
||
}
|
||
|
||
func (c *Client) QueryRunningModels(msg *AvailableNodes, opts ...mq.RequestOption) (*schsdk.RunningModelResp, error) {
|
||
return mq.Request(Service.QueryRunningModels, c.roundTripper, msg, opts...)
|
||
}
|
||
|
||
func (c *Client) ECSNodeRunningInfo(msg *schsdk.ECSNodeRunningInfoReq, opts ...mq.RequestOption) (*schsdk.ECSNodeRunningInfoResp, error) {
|
||
return mq.Request(Service.ECSNodeRunningInfo, c.roundTripper, msg, opts...)
|
||
}
|
||
|
||
// JobSet中需要使用的一个文件上传完成
|
||
var _ = Register(Service.JobSetLocalFileUploaded)
|
||
|
||
type JobSetLocalFileUploaded struct {
|
||
mq.MessageBodyBase
|
||
JobSetID schsdk.JobSetID `json:"jobSetID"`
|
||
LocalPath string `json:"localPath"`
|
||
Error string `json:"error"` // 如果上传文件失败,那么这个字段说明了失败原因
|
||
PackageID cdssdk.PackageID `json:"packageID"` // 如果上传文件成功,那么这个字段是上传之后得到的PackageID
|
||
}
|
||
type JobSetLocalFileUploadedResp struct {
|
||
mq.MessageBodyBase
|
||
}
|
||
|
||
func NewJobSetLocalFileUploaded(jobSetID schsdk.JobSetID, localPath string, err string, packageID cdssdk.PackageID) *JobSetLocalFileUploaded {
|
||
return &JobSetLocalFileUploaded{
|
||
JobSetID: jobSetID,
|
||
LocalPath: localPath,
|
||
Error: err,
|
||
PackageID: packageID,
|
||
}
|
||
}
|
||
func NewJobSetLocalFileUploadedResp() *JobSetLocalFileUploadedResp {
|
||
return &JobSetLocalFileUploadedResp{}
|
||
}
|
||
func (c *Client) JobSetLocalFileUploaded(msg *JobSetLocalFileUploaded, opts ...mq.RequestOption) (*JobSetLocalFileUploadedResp, error) {
|
||
return mq.Request(Service.JobSetLocalFileUploaded, c.roundTripper, msg, opts...)
|
||
}
|
||
|
||
var _ = Register(Service.GetJobSetDump)
|
||
|
||
// 获取任务集的状态
|
||
type GetJobSetDump struct {
|
||
mq.MessageBodyBase
|
||
JobSetID schsdk.JobSetID `json:"jobSetID"`
|
||
}
|
||
type GetJobSetDumpResp struct {
|
||
mq.MessageBodyBase
|
||
Jobs []jobmod.JobDump `json:"jobs"`
|
||
}
|
||
|
||
func ReqGetJobSetDump(jobSetID schsdk.JobSetID) *GetJobSetDump {
|
||
return &GetJobSetDump{
|
||
JobSetID: jobSetID,
|
||
}
|
||
}
|
||
|
||
func RespGetJobSetDump(jobs []jobmod.JobDump) *GetJobSetDumpResp {
|
||
return &GetJobSetDumpResp{
|
||
Jobs: jobs,
|
||
}
|
||
}
|
||
|
||
func (c *Client) GetJobSetDump(msg *GetJobSetDump, opts ...mq.RequestOption) (*GetJobSetDumpResp, error) {
|
||
return mq.Request(Service.GetJobSetDump, c.roundTripper, msg, opts...)
|
||
}
|
||
|
||
type GetServiceList struct {
|
||
mq.MessageBodyBase
|
||
JobSetID schsdk.JobSetID `json:"jobSetID"`
|
||
}
|
||
|
||
type GetServiceListResp struct {
|
||
mq.MessageBodyBase
|
||
ServiceList []schsdk.JobSetServiceInfo `json:"serviceList"`
|
||
}
|
||
|
||
func NewGetServiceList(jobSetID schsdk.JobSetID) *GetServiceList {
|
||
return &GetServiceList{
|
||
JobSetID: jobSetID,
|
||
}
|
||
}
|
||
|
||
func NewGetServiceListResp(serviceList []schsdk.JobSetServiceInfo) *GetServiceListResp {
|
||
return &GetServiceListResp{
|
||
ServiceList: serviceList,
|
||
}
|
||
}
|
||
|
||
func (c *Client) GetServiceList(msg *GetServiceList, opts ...mq.RequestOption) (*GetServiceListResp, error) {
|
||
return mq.Request(Service.GetServiceList, c.roundTripper, msg, opts...)
|
||
}
|