|
- 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 CreateJobReq 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"`
- }
-
- func (c *Client) CreateJob(req CreateJobReq, 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)
-
- }
|