package hpc import ( "fmt" 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 { Name string `json:"name"` ClusterID schsdk.ClusterID `json:"clusterId"` Backend string `json:"backend"` App string `json:"app"` OperateType string `json:"operateType"` //Parameters HPCParameter `json:"parameters"` 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 CreateJobResp struct { Backend string `json:"backend"` JobInfo HPCJobInfo `json:"jobInfo"` } type HPCJobInfo struct { JobDir string `json:"jobDir"` JobID string `json:"jobId"` TaskID string `json:"taskId"` } func (c *Client) CreateJob(req CreateHPCJobReq, token string) (*CreateJobResp, error) { targetUrl, err := url.JoinPath(c.baseURL, "/hpc/commitHpcTask") if err != nil { return nil, err } resp, err := http2.PostJSON(targetUrl, http2.RequestParam{ Body: req, 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[CreateJobResp] 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) }