Browse Source

调整资源规格接口

pull/53/head
JeshuaRen 4 months ago
parent
commit
d522548d35
3 changed files with 96 additions and 5 deletions
  1. +8
    -1
      sdks/pcmscheduler/client.go
  2. +54
    -4
      sdks/pcmscheduler/jobset.go
  3. +34
    -0
      sdks/pcmscheduler/models.go

+ 8
- 1
sdks/pcmscheduler/client.go View File

@@ -12,7 +12,7 @@ type response[T any] struct {
Data T `json:"data"` Data T `json:"data"`
} }


type respons2[T any] struct {
type response2[T any] struct {
Code int `json:"code"` Code int `json:"code"`
Message string `json:"msg"` Message string `json:"msg"`
Data T `json:"data"` Data T `json:"data"`
@@ -29,6 +29,13 @@ func (r *response[T]) ToError() *sdks.CodeMessageError {
} }
} }


func (r *response2[T]) ToError() *sdks.CodeMessageError {
return &sdks.CodeMessageError{
Code: fmt.Sprintf("%d", r.Code),
Message: r.Message,
}
}

type Client struct { type Client struct {
baseURL string baseURL string
} }


+ 54
- 4
sdks/pcmscheduler/jobset.go View File

@@ -155,7 +155,7 @@ func (c *Client) CreateInferenceJob(req CreateAIJobReq, token string) (*CreateIn


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 respons2[CreateInferenceJobResp]
var codeResp response2[CreateInferenceJobResp]
if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil { if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
return nil, fmt.Errorf("parsing response: %w", err) return nil, fmt.Errorf("parsing response: %w", err)
} }
@@ -195,7 +195,7 @@ func (c *Client) StopInferenceJob(req StopInferenceJobReq, token string) error {


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 respons2[CreateInferenceJobResp]
var codeResp response2[CreateInferenceJobResp]
if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil { if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
return fmt.Errorf("parsing response: %w", err) return fmt.Errorf("parsing response: %w", err)
} }
@@ -228,7 +228,7 @@ func (c *Client) CreateJob(req CreateAIJobReq, token string) (*CreateJobResp, er


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 respons2[CreateJobResp]
var codeResp response2[CreateJobResp]
if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil { if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
return nil, fmt.Errorf("parsing response: %w", err) return nil, fmt.Errorf("parsing response: %w", err)
} }
@@ -280,7 +280,7 @@ func (c *Client) RunJob(req RunJobReq, token string) error {


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 respons2[string]
var codeResp response2[string]
if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil { if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
return fmt.Errorf("parsing response: %w", err) return fmt.Errorf("parsing response: %w", err)
} }
@@ -327,3 +327,53 @@ func (c *Client) CancelJob(req CancelJobReq) error {


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

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

type GetResourceSpecResp struct {
Total int64 `json:"total"`
PageNum int64 `json:"pageNum"`
PageSize int64 `json:"pageSize"`
List []ResourceDetail `json:"list"`
}

func (c *Client) GetResourceSpec(req GetResourceSpecReq, token string) ([]ResourceDetail, int64, error) {
targetUrl, err := url.JoinPath(c.baseURL, "core/ai/resourceSpec/page")
if err != nil {
return nil, 0, err
}
resp, err := http2.GetJSON(targetUrl, http2.RequestParam{
Query: req,
Header: map[string]string{
"Authorization": token,
},
})

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

if err != nil {
return nil, 0, err
}
contType := resp.Header.Get("Content-Type")
if strings.Contains(contType, http2.ContentTypeJSON) {

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

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

return nil, 0, codeResp.ToError()
}

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

+ 34
- 0
sdks/pcmscheduler/models.go View File

@@ -131,6 +131,40 @@ type TmpResourceData struct {
Available UnitValue[float64] `json:"available"` Available UnitValue[float64] `json:"available"`
} }


type ResourceDetail struct {
ID DataID `json:"id"`
SourceKey string `json:"sourceKey"`
Type ResourceType `json:"type"`
Name string `json:"name"`
TotalCount int64 `json:"totalCount"`
AvailableCount int64 `json:"availableCount"`
ChangeType int64 `json:"changeType"`
Status int64 `json:"status"`
Region string `json:"region"`
ClusterID schsdk.ClusterID `json:"clusterId"`
CostPerUnit float64 `json:"costPerUnit"`
CostType string `json:"costType"`
Tag string `json:"tag"`
UserID cdssdk.UserID `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"`
}

type ResourceData interface { type ResourceData interface {
Noop() Noop()
} }


Loading…
Cancel
Save