Compare commits

...

21 Commits

Author SHA1 Message Date
  JeshuaRen 0909339fca Merge pull request '优化资源范围查询接口' (#63) from feature_zj into feature_rzs 2 months ago
  jagger 18b888a473 优化资源范围查询接口 2 months ago
  JeshuaRen ee0c7039a7 Merge pull request '通算任务增加字段' (#62) from feature_zj into feature_rzs 2 months ago
  jagger 2da6786da6 通算任务增加字段 2 months ago
  JeshuaRen 616e218d26 调整获取资源参数 2 months ago
  JeshuaRen 6d15842cf5 add log2 2 months ago
  JeshuaRen c6287b66e9 add log 2 months ago
  JeshuaRen 74b0746b0b 结果查询增加状态码输出 2 months ago
  JeshuaRen 3ad637f178 log fix 2 months ago
  JeshuaRen bfee415471 优化日志输出 2 months ago
  JeshuaRen d3e291705f Merge branch 'feature_rzs' of https://gitlink.org.cn/cloudream/common into feature_rzs 2 months ago
  JeshuaRen 9618968c58 修复查询绑定接口bug 2 months ago
  jagger 2363237008 Merge remote-tracking branch 'origin/feature_rzs' into feature_rzs 2 months ago
  jagger eb80edf60f 新增任务重调接口及相关逻辑 2 months ago
  JeshuaRen 7d386362c4 新增数据集个数统计功能 2 months ago
  JeshuaRen 320b2a1b1c 调整数据查询接口,增加集群筛选 2 months ago
  JeshuaRen 34873d1483 保存任务创建信息 2 months ago
  JeshuaRen f9db58b364 调整任务列表、查询绑定接口 3 months ago
  JeshuaRen 928e01cd05 优化场景合并接口 3 months ago
  JeshuaRen e68431c447 Merge branch 'feature_rzs' of https://gitlink.org.cn/cloudream/common into feature_rzs 3 months ago
  JeshuaRen 6b715af403 绑定数据集参数调整 3 months ago
12 changed files with 163 additions and 32 deletions
Split 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"
TaskNotFound = "TaskNotFound"
Unauthorized = "Unauthorized"
UnknownError = "UnknownError"
)

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

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

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

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

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

// type T2 struct {


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

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

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

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

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)

}

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

import (
"time"

"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"
"time"
)

type ResourceType string
@@ -523,3 +524,12 @@ type PublicLevel struct {
Type string `json:"type" binding:"required"`
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"`
JobSetID schsdk.JobSetID `gorm:"column:jobset_id" json:"jobSetID"`
LocalJobID string `gorm:"column:local_job_id" json:"localJobID"`
Info string `gorm:"column:info" json:"info"`
Param string `gorm:"column:param" json:"param"`
Token string `gorm:"column:token" json:"token"`
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 {
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 {
@@ -236,9 +238,6 @@ func (c *Client) QueryAITrainLog(req QueryAITrainLogReq, token string) (*QueryAI
return nil, err
}

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

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

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

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


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

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

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

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

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

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

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

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 {
@@ -459,6 +466,9 @@ func (c *Client) BindModel(req BindReq, token string) (*BindResp, error) {
return nil, err
}

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

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

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

contType := resp.Header.Get("Content-Type")
if strings.Contains(contType, http2.ContentTypeJSON) {
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)
}

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



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

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

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

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

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 {
@@ -520,8 +524,9 @@ func (ClusterImageCard) TableName() string {
}

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 {
@@ -532,6 +537,7 @@ var QueryBindingDataParamTypeUnion = types.NewTypeUnion[QueryBindingDataParam](
(*PrivateLevel)(nil),
(*ApplyLevel)(nil),
(*PublicLevel)(nil),
(*CommonDataParam)(nil),
)

var _ = serder.UseTypeUnionInternallyTagged(&QueryBindingDataParamTypeUnion, "type")
@@ -564,3 +570,11 @@ type PublicLevel struct {
Type string `json:"type" binding:"required"`
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"`
}

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

func (Folder) TableName() string {
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"`
Args []string `json:"args,omitempty"`
Envs []interface{} `json:"envs,omitempty"`
Capacity int32 `json:"capacity,omitempty"`
}

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

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

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


Loading…
Cancel
Save