JCC-CSScheduler/common/pkgs/mq/manager/job.go

190 lines
5.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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...)
}