From b936b4b0f1d4fe306ceaf8a6b20bbce475a66892 Mon Sep 17 00:00:00 2001 From: JeshuaRen <270813223@qq.com> Date: Thu, 27 Mar 2025 15:08:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=9F=A5=E8=AF=A2=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdks/hpc/job.go | 20 +++--- sdks/pcmscheduler/jobset.go | 6 +- sdks/pcmscheduler/models.go | 124 ++++++++---------------------------- 3 files changed, 38 insertions(+), 112 deletions(-) diff --git a/sdks/hpc/job.go b/sdks/hpc/job.go index df7f714..2bc4c23 100644 --- a/sdks/hpc/job.go +++ b/sdks/hpc/job.go @@ -9,7 +9,7 @@ import ( "strings" ) -type CreateJobReq struct { +type CreateHPCJobReq struct { Name string `json:"name"` ClusterID schsdk.ClusterID `json:"clusterId"` Backend string `json:"backend"` @@ -19,14 +19,14 @@ type CreateJobReq struct { Parameters map[string]string `json:"parameters"` } -type HPCParameter struct { - JobName string `json:"jobName"` - Partition string `json:"partition"` - Ntasks string `json:"ntasks"` - Nodes string `json:"nodes"` - BamFile string `json:"bamFile"` - InputFile string `json:"inputFile"` -} +//type HPCParameter struct { +// JobName string `json:"jobName"` +// Partition string `json:"partition"` +// Ntasks string `json:"ntasks"` +// Nodes string `json:"nodes"` +// BamFile string `json:"bamFile"` +// InputFile string `json:"inputFile"` +//} type CreateJobResp struct { Backend string `json:"backend"` @@ -39,7 +39,7 @@ type HPCJobInfo struct { TaskID string `json:"taskId"` } -func (c *Client) CreateJob(req CreateJobReq, token string) (*CreateJobResp, error) { +func (c *Client) CreateJob(req CreateHPCJobReq, token string) (*CreateJobResp, error) { targetUrl, err := url.JoinPath(c.baseURL, "/hpc/commitHpcTask") if err != nil { return nil, err diff --git a/sdks/pcmscheduler/jobset.go b/sdks/pcmscheduler/jobset.go index e6b8b41..87a6cfe 100644 --- a/sdks/pcmscheduler/jobset.go +++ b/sdks/pcmscheduler/jobset.go @@ -61,7 +61,7 @@ type CreateInferenceJobResp struct { TaskId string `json:"taskId"` } -type CreateJobReq struct { +type CreatePCMJobReq struct { Name string `json:"name"` Description string `json:"description"` JobResources schsdk.JobResources `json:"jobResources"` @@ -125,7 +125,7 @@ type ScheduleData struct { ClusterIDs []schsdk.ClusterID `json:"clusterIDs"` } -func (c *Client) CreateInferenceJob(req CreateJobReq, token string) (*CreateInferenceJobResp, error) { +func (c *Client) CreateInferenceJob(req CreatePCMJobReq, token string) (*CreateInferenceJobResp, error) { targetUrl, err := url.JoinPath(c.baseURL, "inference/createTask") if err != nil { return nil, err @@ -159,7 +159,7 @@ func (c *Client) CreateInferenceJob(req CreateJobReq, token string) (*CreateInfe } -func (c *Client) CreateJob(req CreateJobReq, token string) (*CreateJobResp, error) { +func (c *Client) CreateJob(req CreatePCMJobReq, token string) (*CreateJobResp, error) { targetUrl, err := url.JoinPath(c.baseURL, "schedule/createTask") if err != nil { return nil, err diff --git a/sdks/pcmscheduler/models.go b/sdks/pcmscheduler/models.go index b6895cd..c7b22bd 100644 --- a/sdks/pcmscheduler/models.go +++ b/sdks/pcmscheduler/models.go @@ -2,6 +2,7 @@ package sch import ( "gitlink.org.cn/cloudream/common/pkgs/types" + "gitlink.org.cn/cloudream/common/sdks/hpc" schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler" cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" "gitlink.org.cn/cloudream/common/utils/serder" @@ -239,122 +240,47 @@ type ResourceRange struct { Ids []string `json:"ids"` } -type QueryTaskResultReq struct { - TaskID string `json:"taskID" binding:"required"` - UserID cdssdk.UserID `json:"userID" binding:"required"` - PackageID cdssdk.PackageID `json:"packageID" binding:"required"` -} - -type PCMJobData struct { - ID string `json:"id"` - CreatedAt time.Time `json:"created_at"` - Param string `json:"param"` -} - type JobInfo struct { - Name string `json:"name"` - Description string `json:"description,optional"` - JobResources JobResources `json:"jobResources"` - DataDistributeData DataDistributeData `json:"dataDistributes"` - ResultFile ResultFile `json:"resultFile"` + TaskID string `json:"taskID"` + JobSubmitInfo JobSubmitInfo `json:"jobSubmitInfo"` + ResultFiles []ResultFile `json:"resultFiles"` } type ResultFile struct { - CommonPrefixes []interface{} `json:"commonPrefixes"` - Objects []Object `json:"objects"` -} - -// Object 表示对象结构体 -type Object struct { - ObjectID int `json:"objectID"` - PackageID int `json:"packageID"` - Path string `json:"path"` - Size string `json:"size"` - FileHash string `json:"fileHash"` - Redundancy Redundancy `json:"redundancy"` - CreateTime time.Time `json:"createTime"` - UpdateTime time.Time `json:"updateTime"` -} - -// Redundancy 表示冗余信息结构体 -type Redundancy struct { - Type string `json:"type"` - RepCount int `json:"repCount"` -} - -type DataDistributeData struct { - Dataset []DataItem `json:"dataset"` - Code []DataItem `json:"code"` - Image []DataItem `json:"image"` - Model []DataItem `json:"model"` -} - -// DataItem 定义 dataDistributes 中的数据项结构体 -type DataItem struct { - DataName string `json:"dataName"` - PackageID int `json:"packageID"` - PackageName string `json:"packageName"` - ResourceFile string `json:"resourceFile"` - Clusters []DataDetail `json:"clusters"` + ClusterID schsdk.ClusterID `json:"clusterID"` + Objects []cdssdk.Object `json:"objects"` } -type JobResources struct { - ScheduleStrategy string `json:"scheduleStrategy"` - Clusters []*JobClusterInfo `json:"clusters"` +type JobSubmitInfo interface { + Noop() } -type JobClusterInfo struct { - ClusterID string `json:"clusterID"` - Resources []map[string]interface{} `json:"resources,optional"` - Runtime JobRuntimeInfo `json:"runtime,optional"` +type JobSubmitInfoBase struct { } -type JobRuntimeInfo struct { - Command string `json:"command,optional"` - Envs map[string]interface{} `json:"envs,optional"` - Params map[string]interface{} `json:"params,optional"` -} +var JobSubmitInfoTypeUnion = types.NewTypeUnion[JobSubmitInfo]( + (*PCMJobSubmitInfo)(nil), + (*HPCJobSubmitInfo)(nil), +) -// Engine 定义 engine 结构体 -type Engine struct { - EngineName string `json:"EngineName"` - EngineVersion string `json:"EngineVersion"` - ImageUrl string `json:"ImageUrl"` - InstallSysPackages bool `json:"InstallSysPackages"` -} +var _ = serder.UseTypeUnionInternallyTagged(&JobSubmitInfoTypeUnion, "type") -// bindingCluster 定义根结构体 -type BindingParam struct { - Name string `json:"name"` - Description string `json:"description"` - Engine Engine `json:"engine"` - CodeDir string `json:"codeDir"` - BootFile string `json:"bootFile"` - Branch string `json:"branch"` - Platform string `json:"platform"` - UserID int `json:"userID"` - PackageId int `json:"packageId"` - BucketID int `json:"bucketID"` -} +func (d *JobSubmitInfoBase) Noop() {} -// bindingCluster 定义根结构体 -type BindingCluster struct { - BindingId int `json:"binding_id"` - ClusterId string `json:"cluster_id"` - Status string `json:"status"` - Param string `json:"param"` +type PCMJobSubmitInfo struct { + serder.Metadata `union:"pcm"` + JobSubmitInfoBase + Type string `json:"type"` + Info CreatePCMJobReq `json:"info"` } -/*type TaskResult struct { - Name string `json:"name"` - Description string `json:"description"` - DataDistribute DataDistribute `json:"dataDistributes"` +type HPCJobSubmitInfo struct { + serder.Metadata `union:"hpc"` + JobSubmitInfoBase + Type string `json:"type"` + Info hpc.CreateHPCJobReq `json:"info"` } -type ClusterResources struct { - ClusterId string `json:"clusterId"` -}*/ - type Range struct { Min float64 `json:"min"` Max float64 `json:"max"`