Compare commits

...

20 Commits

Author SHA1 Message Date
  jagger 18b888a473 优化资源范围查询接口 9 months ago
  JeshuaRen ee0c7039a7 Merge pull request '通算任务增加字段' (#62) from feature_zj into feature_rzs 9 months ago
  jagger 2da6786da6 通算任务增加字段 9 months ago
  JeshuaRen 616e218d26 调整获取资源参数 9 months ago
  JeshuaRen 6d15842cf5 add log2 9 months ago
  JeshuaRen c6287b66e9 add log 9 months ago
  JeshuaRen 74b0746b0b 结果查询增加状态码输出 9 months ago
  JeshuaRen 3ad637f178 log fix 9 months ago
  JeshuaRen bfee415471 优化日志输出 9 months ago
  JeshuaRen d3e291705f Merge branch 'feature_rzs' of https://gitlink.org.cn/cloudream/common into feature_rzs 9 months ago
  JeshuaRen 9618968c58 修复查询绑定接口bug 9 months ago
  jagger 2363237008 Merge remote-tracking branch 'origin/feature_rzs' into feature_rzs 9 months ago
  jagger eb80edf60f 新增任务重调接口及相关逻辑 9 months ago
  JeshuaRen 7d386362c4 新增数据集个数统计功能 9 months ago
  JeshuaRen 320b2a1b1c 调整数据查询接口,增加集群筛选 10 months ago
  JeshuaRen 34873d1483 保存任务创建信息 10 months ago
  JeshuaRen f9db58b364 调整任务列表、查询绑定接口 10 months ago
  JeshuaRen 928e01cd05 优化场景合并接口 10 months ago
  JeshuaRen e68431c447 Merge branch 'feature_rzs' of https://gitlink.org.cn/cloudream/common into feature_rzs 10 months ago
  JeshuaRen 6b715af403 绑定数据集参数调整 10 months ago
12 changed files with 163 additions and 32 deletions
Unified View
  1. +1
    -0
      consts/errorcode/error_code.go
  2. +4
    -2
      sdks/cloud/job.go
  3. +39
    -2
      sdks/hpc/job.go
  4. +11
    -1
      sdks/hpc/models.go
  5. +1
    -0
      sdks/pcmscheduler/job.go
  6. +8
    -6
      sdks/pcmscheduler/jobmgr.go
  7. +23
    -7
      sdks/pcmscheduler/jobset.go
  8. +28
    -14
      sdks/pcmscheduler/models.go
  9. +5
    -0
      sdks/pcmscheduler/uploader_models.go
  10. +34
    -0
      sdks/scheduler/jcweaver_models.go
  11. +1
    -0
      sdks/scheduler/models.go
  12. +8
    -0
      utils/serder/serder.go

+ 1
- 0
consts/errorcode/error_code.go View File

@@ -8,4 +8,5 @@ const (
BadArgument = "BadArgument" BadArgument = "BadArgument"
TaskNotFound = "TaskNotFound" TaskNotFound = "TaskNotFound"
Unauthorized = "Unauthorized" Unauthorized = "Unauthorized"
UnknownError = "UnknownError"
) )

+ 4
- 2
sdks/cloud/job.go View File

@@ -2,11 +2,12 @@ package cloud


import ( import (
"fmt" "fmt"
"net/url"
"strings"

schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler" schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
"gitlink.org.cn/cloudream/common/utils/http2" "gitlink.org.cn/cloudream/common/utils/http2"
"gitlink.org.cn/cloudream/common/utils/serder" "gitlink.org.cn/cloudream/common/utils/serder"
"net/url"
"strings"
) )


//type CreateParam struct { //type CreateParam struct {
@@ -40,6 +41,7 @@ type CreateCloudJobReq struct {
MountPath string `json:"mountPath,omitempty"` MountPath string `json:"mountPath,omitempty"`
Args []string `json:"args,omitempty"` Args []string `json:"args,omitempty"`
Envs []interface{} `json:"envs,omitempty"` Envs []interface{} `json:"envs,omitempty"`
Capacity int32 `json:"capacity,omitempty"`
} }


// type T2 struct { // type T2 struct {


+ 39
- 2
sdks/hpc/job.go View File

@@ -2,11 +2,12 @@ package hpc


import ( import (
"fmt" "fmt"
"net/url"
"strings"

schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler" schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
"gitlink.org.cn/cloudream/common/utils/http2" "gitlink.org.cn/cloudream/common/utils/http2"
"gitlink.org.cn/cloudream/common/utils/serder" "gitlink.org.cn/cloudream/common/utils/serder"
"net/url"
"strings"
) )


type CreateHPCJobReq struct { type CreateHPCJobReq struct {
@@ -81,3 +82,39 @@ func (c *Client) CreateJob(req CreateHPCJobReq, token string) (*CreateJobResp, e
return nil, fmt.Errorf("unknow response content type: %s", contType) return nil, fmt.Errorf("unknow response content type: %s", contType)


} }

func (c *Client) GetHPCAppClusters(app string, token string) (*AppClusterResp, error) {
targetUrl, err := url.JoinPath(c.baseURL, "/hpc/getHpcAppCluster")
if err != nil {
return nil, err
}

resp, err := http2.GetForm(targetUrl, http2.RequestParam{
Query: map[string]string{
"app": app,
},
Header: map[string]string{
"Authorization": token,
},
})
if err != nil {
return nil, err
}

contType := resp.Header.Get("Content-Type")
if strings.Contains(contType, http2.ContentTypeJSON) {
var codeResp respons2[AppClusterResp]
if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
return nil, fmt.Errorf("parsing response: %w", err)
}

if codeResp.Code == ResponseCodeOK {
return &codeResp.Data, nil
}

return nil, fmt.Errorf("error: %s", codeResp.Message)
}

return nil, fmt.Errorf("unknow response content type: %s", contType)

}

+ 11
- 1
sdks/hpc/models.go View File

@@ -1,11 +1,12 @@
package hpc package hpc


import ( import (
"time"

"gitlink.org.cn/cloudream/common/pkgs/types" "gitlink.org.cn/cloudream/common/pkgs/types"
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler" schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
"gitlink.org.cn/cloudream/common/utils/serder" "gitlink.org.cn/cloudream/common/utils/serder"
"time"
) )


type ResourceType string type ResourceType string
@@ -523,3 +524,12 @@ type PublicLevel struct {
Type string `json:"type" binding:"required"` Type string `json:"type" binding:"required"`
Info DataBinding `json:"info"` // 可选,用于精细筛选,功能暂未实现 Info DataBinding `json:"info"` // 可选,用于精细筛选,功能暂未实现
} }

type AppClusterResp struct {
List []struct {
Id string `json:"id"`
Name string `json:"name"`
Nickname string `json:"nickname"`
Region string `json:"region"`
} `json:"list"`
}

+ 1
- 0
sdks/pcmscheduler/job.go View File

@@ -12,6 +12,7 @@ type PCMJob struct {
UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"` UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
JobSetID schsdk.JobSetID `gorm:"column:jobset_id" json:"jobSetID"` JobSetID schsdk.JobSetID `gorm:"column:jobset_id" json:"jobSetID"`
LocalJobID string `gorm:"column:local_job_id" json:"localJobID"` LocalJobID string `gorm:"column:local_job_id" json:"localJobID"`
Info string `gorm:"column:info" json:"info"`
Param string `gorm:"column:param" json:"param"` Param string `gorm:"column:param" json:"param"`
Token string `gorm:"column:token" json:"token"` Token string `gorm:"column:token" json:"token"`
CreatedAt time.Time `gorm:"column:created_at" json:"createdAt"` CreatedAt time.Time `gorm:"column:created_at" json:"createdAt"`


+ 8
- 6
sdks/pcmscheduler/jobmgr.go View File

@@ -10,9 +10,11 @@ import (
) )


type QueryTasksReq struct { type QueryTasksReq struct {
PageNum int64 `form:"pageNum"`
PageSize int64 `form:"pageSize"`
Type int64 `form:"type"`
PageNum int64 `form:"pageNum"`
PageSize int64 `form:"pageSize"`
Type int64 `form:"type"`
Name string `form:"name"`
Status string `form:"status"`
} }


type QueryTasksResp struct { type QueryTasksResp struct {
@@ -236,9 +238,6 @@ func (c *Client) QueryAITrainLog(req QueryAITrainLogReq, token string) (*QueryAI
return nil, err return nil, err
} }


//req.AdapterID = "1777144940459986944"
//req.InstanceNum = "0"

resp, err := http2.GetJSON(targetUrl, http2.RequestParam{ resp, err := http2.GetJSON(targetUrl, http2.RequestParam{
Query: req, Query: req,
Header: map[string]string{ Header: map[string]string{
@@ -249,6 +248,9 @@ func (c *Client) QueryAITrainLog(req QueryAITrainLogReq, token string) (*QueryAI
return nil, err return nil, err
} }


//all, err := io.ReadAll(resp.Body)
//println(string(all))

contType := resp.Header.Get("Content-Type") contType := resp.Header.Get("Content-Type")
if strings.Contains(contType, http2.ContentTypeJSON) { if strings.Contains(contType, http2.ContentTypeJSON) {
var codeResp response[QueryAITrainLogResp] var codeResp response[QueryAITrainLogResp]


+ 23
- 7
sdks/pcmscheduler/jobset.go View File

@@ -2,12 +2,15 @@ package sch


import ( import (
"fmt" "fmt"
"io"
"net/url"
"strings"

"gitlink.org.cn/cloudream/common/pkgs/logger"
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler" schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
"gitlink.org.cn/cloudream/common/utils/http2" "gitlink.org.cn/cloudream/common/utils/http2"
"gitlink.org.cn/cloudream/common/utils/serder" "gitlink.org.cn/cloudream/common/utils/serder"
"net/url"
"strings"
) )


type GetClusterInfoReq struct { type GetClusterInfoReq struct {
@@ -226,6 +229,9 @@ func (c *Client) CreateJob(req CreateAIJobReq, token string) (*CreateJobResp, er
return nil, err return nil, err
} }


//all, err := io.ReadAll(resp.Body)
//println(string(all))

contType := resp.Header.Get("Content-Type") contType := resp.Header.Get("Content-Type")
if strings.Contains(contType, http2.ContentTypeJSON) { if strings.Contains(contType, http2.ContentTypeJSON) {
var codeResp response2[CreateJobResp] var codeResp response2[CreateJobResp]
@@ -329,11 +335,12 @@ func (c *Client) CancelJob(req CancelJobReq) error {
} }


type GetResourceSpecReq struct { type GetResourceSpecReq struct {
ClusterID schsdk.ClusterID `form:"clusterId"`
Tag string `form:"tag"`
PageNum int64 `form:"pageNum"`
PageSize int64 `form:"pageSize"`
Status string `form:"status"`
ClusterID schsdk.ClusterID `form:"clusterId"`
Tag string `form:"tag"`
PageNum int64 `form:"pageNum"`
PageSize int64 `form:"pageSize"`
Status string `form:"status"`
ClusterType string `form:"clusterType"`
} }


type GetResourceSpecResp struct { type GetResourceSpecResp struct {
@@ -459,6 +466,9 @@ func (c *Client) BindModel(req BindReq, token string) (*BindResp, error) {
return nil, err return nil, err
} }


//all, err := io.ReadAll(resp.Body)
//println(string(all))

contType := resp.Header.Get("Content-Type") contType := resp.Header.Get("Content-Type")
if strings.Contains(contType, http2.ContentTypeJSON) { if strings.Contains(contType, http2.ContentTypeJSON) {
var codeResp response2[BindResp] var codeResp response2[BindResp]
@@ -492,6 +502,9 @@ func (c *Client) BindDataSet(req BindReq, token string) (*BindResp, error) {
return nil, err return nil, err
} }


//all, err := io.ReadAll(resp.Body)
//println(string(all))

contType := resp.Header.Get("Content-Type") contType := resp.Header.Get("Content-Type")
if strings.Contains(contType, http2.ContentTypeJSON) { if strings.Contains(contType, http2.ContentTypeJSON) {
var codeResp response2[BindResp] var codeResp response2[BindResp]
@@ -506,6 +519,9 @@ func (c *Client) BindDataSet(req BindReq, token string) (*BindResp, error) {
return nil, fmt.Errorf("error: %s", codeResp.Message) return nil, fmt.Errorf("error: %s", codeResp.Message)
} }


all, err := io.ReadAll(resp.Body)
logger.Errorf("BindDataSet error: %s, url: %s", string(all), targetUrl)

return nil, fmt.Errorf("unknow response content type: %s", contType) return nil, fmt.Errorf("unknow response content type: %s", contType)
} }




+ 28
- 14
sdks/pcmscheduler/models.go View File

@@ -66,6 +66,10 @@ const (
ChildrenType = "children" ChildrenType = "children"
ParentType = "parent" ParentType = "parent"


CreateType = "create"
CloneType = "clone"
InsertType = "insert"

PlatformSugon = "sugon" PlatformSugon = "sugon"
PlatformOpenI = "OpenI" PlatformOpenI = "OpenI"
PlatformModelArts = "ModelArts" PlatformModelArts = "ModelArts"
@@ -154,24 +158,24 @@ type ResourceDetail struct {
CostPerUnit float64 `json:"costPerUnit"` CostPerUnit float64 `json:"costPerUnit"`
CostType string `json:"costType"` CostType string `json:"costType"`
Tag string `json:"tag"` Tag string `json:"tag"`
UserID cdssdk.UserID `json:"userId"`
UserID string `json:"userId"`
CreateTime string `json:"createTime"` CreateTime string `json:"createTime"`
UpdateTime string `json:"updateTime"` UpdateTime string `json:"updateTime"`
BaseResourceSpecs []ResourceSpec `json:"baseResourceSpecs"` BaseResourceSpecs []ResourceSpec `json:"baseResourceSpecs"`
} }


type ResourceSpec struct { type ResourceSpec struct {
ID DataID `json:"id"`
ResourceSpecId DataID `json:"resourceSpecId"`
Type ResourceType `json:"type"`
Name string `json:"name"`
TotalValue float64 `json:"totalValue"`
TotalUnit string `json:"totalUnit"`
AvailableValue float64 `json:"availableValue"`
AvailableUnit string `json:"availableUnit"`
UserID cdssdk.UserID `json:"userId"`
CreateTime string `json:"createTime"`
UpdateTime string `json:"updateTime"`
ID DataID `json:"id"`
ResourceSpecId DataID `json:"resourceSpecId"`
Type ResourceType `json:"type"`
Name string `json:"name"`
TotalValue float64 `json:"totalValue"`
TotalUnit string `json:"totalUnit"`
AvailableValue float64 `json:"availableValue"`
AvailableUnit string `json:"availableUnit"`
UserID string `json:"userId"`
CreateTime string `json:"createTime"`
UpdateTime string `json:"updateTime"`
} }


type ResourceData interface { type ResourceData interface {
@@ -520,8 +524,9 @@ func (ClusterImageCard) TableName() string {
} }


type QueryBindingFilters struct { type QueryBindingFilters struct {
Status string `json:"status"`
Name string `json:"name"`
Status string `json:"status"`
Name string `json:"name"`
ClusterIDs []schsdk.ClusterID `json:"clusterIDs"`
} }


type QueryBindingDataParam interface { type QueryBindingDataParam interface {
@@ -532,6 +537,7 @@ var QueryBindingDataParamTypeUnion = types.NewTypeUnion[QueryBindingDataParam](
(*PrivateLevel)(nil), (*PrivateLevel)(nil),
(*ApplyLevel)(nil), (*ApplyLevel)(nil),
(*PublicLevel)(nil), (*PublicLevel)(nil),
(*CommonDataParam)(nil),
) )


var _ = serder.UseTypeUnionInternallyTagged(&QueryBindingDataParamTypeUnion, "type") var _ = serder.UseTypeUnionInternallyTagged(&QueryBindingDataParamTypeUnion, "type")
@@ -564,3 +570,11 @@ type PublicLevel struct {
Type string `json:"type" binding:"required"` Type string `json:"type" binding:"required"`
Info schsdk.DataBinding `json:"info"` // 可选,用于精细筛选,功能暂未实现 Info schsdk.DataBinding `json:"info"` // 可选,用于精细筛选,功能暂未实现
} }

type CommonDataParam struct {
serder.Metadata `union:"common"`
QueryBindingDataParamBase
Type string `json:"type" binding:"required"`
UserID cdssdk.UserID `json:"userID" binding:"required"`
BindingIDs []int64 `json:"bindingIDs" binding:"required"`
}

+ 5
- 0
sdks/pcmscheduler/uploader_models.go View File

@@ -91,6 +91,11 @@ type Folder struct {
CreateTime time.Time `gorm:"column:create_time" json:"createTime"` CreateTime time.Time `gorm:"column:create_time" json:"createTime"`
} }


type BindingCount struct {
Count int64 `gorm:"column:count" json:"count"`
DataType string `gorm:"column:data_type" json:"dataType"`
}

func (Folder) TableName() string { func (Folder) TableName() string {
return "folders" return "folders"
} }


+ 34
- 0
sdks/scheduler/jcweaver_models.go View File

@@ -0,0 +1,34 @@
package schsdk

import (
"gitlink.org.cn/cloudream/common/pkgs/types"
"gitlink.org.cn/cloudream/common/utils/serder"
)

type JCWNodeInfos struct {
Jobs []JobInfo `json:"jobs"`
}

type JCWNode interface {
}

var JCWNodeTypeUnion = types.NewTypeUnion[JCWNode](
(*JCWAITrainNode)(nil),
)
var _ = serder.UseTypeUnionInternallyTagged(&JCWNodeTypeUnion, "type")

type JCWNodeBase struct {
LocalJobID string `json:"id"`
Name string `json:"name"`
}

type JCWAITrainNode struct {
serder.Metadata `union:"Normal"`
JobInfoBase
Type string `json:"type"`
Files JobFilesInfo `json:"files"`
Runtime JobRuntimeInfo `json:"runtime"`
Resources JobResourcesInfo `json:"resources"`
Services JobServicesInfo `json:"services"`
ModelJobInfo ModelJobInfo `json:"modelJobInfo"`
}

+ 1
- 0
sdks/scheduler/models.go View File

@@ -228,6 +228,7 @@ type CloudJobInfo struct {
MountPath string `json:"mountPath,omitempty"` MountPath string `json:"mountPath,omitempty"`
Args []string `json:"args,omitempty"` Args []string `json:"args,omitempty"`
Envs []interface{} `json:"envs,omitempty"` Envs []interface{} `json:"envs,omitempty"`
Capacity int32 `json:"capacity,omitempty"`
} }


type NotifyJobInfo struct { type NotifyJobInfo struct {


+ 8
- 0
utils/serder/serder.go View File

@@ -97,6 +97,14 @@ func ObjectToJSON(obj any) ([]byte, error) {
return json.Marshal(obj) return json.Marshal(obj)
} }


func ObjectToJSONString(obj any) string {
marshal, err := json.Marshal(obj)
if err != nil {
return err.Error()
}
return string(marshal)
}

// 将对象转为JSON字符串。如果需要支持解析TypeUnion类型,则使用"Ex"结尾的同名函数。 // 将对象转为JSON字符串。如果需要支持解析TypeUnion类型,则使用"Ex"结尾的同名函数。
func ObjectToJSONStream(obj any) io.ReadCloser { func ObjectToJSONStream(obj any) io.ReadCloser {
pr, pw := io.Pipe() pr, pw := io.Pipe()


Loading…
Cancel
Save