Browse Source

Merge pull request '多实例任务' (#45) from feature_rzs into master

pull/47/head
Sydonian 1 year ago
parent
commit
82c0d3e0a0
3 changed files with 151 additions and 40 deletions
  1. +31
    -5
      sdks/scheduler/models.go
  2. +119
    -33
      sdks/unifyops/unifyops.go
  3. +1
    -2
      utils/config/config.go

+ 31
- 5
sdks/scheduler/models.go View File

@@ -9,6 +9,7 @@ import (
const (
JobTypeNormal = "Normal"
JobTypeResource = "Resource"
JobTypeInstance = "Instance"

FileInfoTypePackage = "Package"
FileInfoTypeLocalFile = "LocalFile"
@@ -36,6 +37,8 @@ type JobInfo interface {
var JobInfoTypeUnion = types.NewTypeUnion[JobInfo](
(*NormalJobInfo)(nil),
(*DataReturnJobInfo)(nil),
(*MultiInstanceJobInfo)(nil),
(*InstanceJobInfo)(nil),
)
var _ = serder.UseTypeUnionInternallyTagged(&JobInfoTypeUnion, "type")

@@ -65,6 +68,25 @@ type DataReturnJobInfo struct {
TargetLocalJobID string `json:"targetLocalJobID"`
}

type MultiInstanceJobInfo struct {
serder.Metadata `union:"MultiInstance"`
JobInfoBase
Type string `json:"type"`
Files JobFilesInfo `json:"files"`
Runtime JobRuntimeInfo `json:"runtime"`
Resources JobResourcesInfo `json:"resources"`
}

type InstanceJobInfo struct {
serder.Metadata `union:"Instance"`
JobInfoBase
Type string `json:"type"`
LocalJobID string `json:"multiInstJobID"`
Files JobFilesInfo `json:"files"`
Runtime JobRuntimeInfo `json:"runtime"`
Resources JobResourcesInfo `json:"resources"`
}

type JobFilesInfo struct {
Dataset JobFileInfo `json:"dataset"`
Code JobFileInfo `json:"code"`
@@ -78,7 +100,7 @@ type JobFileInfo interface {
var FileInfoTypeUnion = types.NewTypeUnion[JobFileInfo](
(*PackageJobFileInfo)(nil),
(*LocalJobFileInfo)(nil),
(*ResourceJobFileInfo)(nil),
(*DataReturnJobFileInfo)(nil),
(*ImageJobFileInfo)(nil),
)
var _ = serder.UseTypeUnionInternallyTagged(&FileInfoTypeUnion, "type")
@@ -101,11 +123,11 @@ type LocalJobFileInfo struct {
LocalPath string `json:"localPath"`
}

type ResourceJobFileInfo struct {
serder.Metadata `union:"Resource"`
type DataReturnJobFileInfo struct {
serder.Metadata `union:"DataReturn"`
JobFileInfoBase
Type string `json:"type"`
ResourceLocalJobID string `json:"resourceLocalJobID"`
Type string `json:"type"`
DataReturnLocalJobID string `json:"dataReturnLocalJobID"`
}

type ImageJobFileInfo struct {
@@ -140,6 +162,10 @@ type JobSetFilesUploadScheme struct {
LocalFileSchemes []LocalFileUploadScheme `json:"localFileUploadSchemes"`
}

type JobFilesUploadScheme struct {
LocalFileSchemes []LocalFileUploadScheme `json:"localFileUploadSchemes"`
}

type LocalFileUploadScheme struct {
LocalPath string `json:"localPath"`
UploadToCDSNodeID *cdssdk.NodeID `json:"uploadToCDSNodeID"`


+ 119
- 33
sdks/unifyops/unifyops.go View File

@@ -223,41 +223,127 @@ func (c *Client) GetMemoryData(node GetOneResourceDataReq) (*MemoryResourceData,
}

func (c *Client) GetIndicatorData(node GetOneResourceDataReq) (*[]ResourceData, error) {
url, err := url.JoinPath(c.baseURL, "/cmdb/resApi/getIndicatorData")
if err != nil {
return nil, err
//url, err := url.JoinPath(c.baseURL, "/cmdb/resApi/getIndicatorData")
//if err != nil {
// return nil, err
//}
//resp, err := myhttp.PostJSON(url, myhttp.RequestParam{
// Body: node,
//})
//if err != nil {
// return nil, err
//}
//
//contType := resp.Header.Get("Content-Type")
//if strings.Contains(contType, myhttp.ContentTypeJSON) {
//
// var codeResp response[[]map[string]any]
// if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
// return nil, fmt.Errorf("parsing response: %w", err)
// }
//
// if codeResp.Code != CORRECT_CODE {
// return nil, codeResp.ToError()
// }
//
// var ret []ResourceData
// for _, mp := range codeResp.Data {
// var data ResourceData
// err := serder.MapToObject(mp, &data)
// if err != nil {
// return nil, err
// }
// ret = append(ret, data)
// }
//
// return &ret, nil
//}
//
//return nil, fmt.Errorf("unknow response content type: %s", contType)

return mockData()
}

func mockData() (*[]ResourceData, error) {
var ret []ResourceData

cpuResourceData := CPUResourceData{
Name: ResourceTypeCPU,
Total: UnitValue[int64]{
Value: 100,
Unit: "",
},
Available: UnitValue[int64]{
Value: 100,
Unit: "",
},
}
resp, err := myhttp.PostJSON(url, myhttp.RequestParam{
Body: node,
})
if err != nil {
return nil, err
ret = append(ret, &cpuResourceData)

npuResourceData := NPUResourceData{
Name: ResourceTypeNPU,
Total: UnitValue[int64]{
Value: 100,
Unit: "",
},
Available: UnitValue[int64]{
Value: 100,
Unit: "",
},
}

contType := resp.Header.Get("Content-Type")
if strings.Contains(contType, myhttp.ContentTypeJSON) {

var codeResp response[[]map[string]any]
if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
return nil, fmt.Errorf("parsing response: %w", err)
}

if codeResp.Code != CORRECT_CODE {
return nil, codeResp.ToError()
}

var ret []ResourceData
for _, mp := range codeResp.Data {
var data ResourceData
err := serder.MapToObject(mp, &data)
if err != nil {
return nil, err
}
ret = append(ret, data)
}

return &ret, nil
ret = append(ret, &npuResourceData)

gpuResourceData := GPUResourceData{
Name: ResourceTypeGPU,
Total: UnitValue[int64]{
Value: 100,
Unit: "",
},
Available: UnitValue[int64]{
Value: 100,
Unit: "",
},
}
ret = append(ret, &gpuResourceData)

mluResourceData := MLUResourceData{
Name: ResourceTypeMLU,
Total: UnitValue[int64]{
Value: 100,
Unit: "",
},
Available: UnitValue[int64]{
Value: 100,
Unit: "",
},
}
ret = append(ret, &mluResourceData)

storageResourceData := StorageResourceData{
Name: ResourceTypeStorage,
Total: UnitValue[float64]{
Value: 100,
Unit: "GB",
},
Available: UnitValue[float64]{
Value: 100,
Unit: "GB",
},
}
ret = append(ret, &storageResourceData)

memoryResourceData := MemoryResourceData{
Name: ResourceTypeMemory,
Total: UnitValue[float64]{
Value: 100,
Unit: "GB",
},
Available: UnitValue[float64]{
Value: 100,
Unit: "GB",
},
}
ret = append(ret, &memoryResourceData)

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

+ 1
- 2
utils/config/config.go View File

@@ -3,10 +3,9 @@ package config
import (
"encoding/json"
"fmt"
"github.com/imdario/mergo"
"os"
"path/filepath"

"github.com/imdario/mergo"
)

// Load 加载配置文件


Loading…
Cancel
Save