Merge pull request '取消任务添加api接口' (#25) from zhangweiii/pcm-hpc:master into master

This commit is contained in:
zhangweiii 2024-11-26 15:58:50 +08:00
commit 2271dfabaf
2 changed files with 66 additions and 0 deletions

View File

@ -16,6 +16,7 @@ func InitRouter() *gin.Engine {
namespace := apiv1.Group("job")
namespace.POST("/submit", v1.SubmitJob)
namespace.GET("/info", v1.JobInfo)
namespace.DELETE("/cancel", v1.CancelJob)
}
return r

View File

@ -28,6 +28,14 @@ type JobInfoReq struct {
JobId string `json:"jobId" form:"jobId"`
}
type JobCancelReq struct {
Server string `json:"server" form:"server""`
Version string `json:"version" form:"version""`
Username string `json:"username" form:"username"`
Token string `json:"token" form:"token"`
JobId string `json:"jobId" form:"jobId"`
}
type SubmitJobResp struct {
Meta struct {
Plugin struct {
@ -49,6 +57,24 @@ type SubmitJobResp struct {
JobSubmitUserMsg string `json:"job_submit_user_msg"`
}
type Job struct {
Meta struct {
Plugin struct {
Type string `json:"type"`
Name string `json:"name"`
} `json:"plugin"`
Slurm struct {
Version struct {
Major int `json:"major"`
Micro int `json:"micro"`
Minor int `json:"minor"`
} `json:"version"`
Release string `json:"release"`
} `json:"Slurm"`
} `json:"meta"`
Errors []interface{} `json:"errors"`
}
type JobOptions struct {
Script string `json:"script"`
Job *JobProperties `json:"job"`
@ -136,3 +162,42 @@ func JobInfo(ctx *gin.Context) {
json.Unmarshal(body, &resp)
ResponseData(ctx, &resp)
}
func CancelJob(ctx *gin.Context) {
var req JobCancelReq
if err := ctx.ShouldBindQuery(&req); err != nil {
Response(ctx, http.StatusBadRequest, "invalid request params.", "")
return
}
url := req.Server + "/slurm/" + req.Version + "/job/" + req.JobId
client := &http.Client{}
request, err := http.NewRequest("DELETE", url, nil)
if err != nil {
fmt.Println(err)
return
}
request.Header.Add("Accept", "*/*")
request.Header.Add("Host", req.Server)
request.Header.Add("X-SLURM-USER-NAME", req.Username)
request.Header.Add("X-SLURM-USER-TOKEN", req.Token)
request.Header.Add("Cookie", "X-SLURM-USER-NAME=;X-SLURM-USER-TOKEN=")
request.Header.Add("Content-Type", "application/json")
res, err := client.Do(request)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
Response(ctx, http.StatusInternalServerError, "rest api error.", err.Error())
return
}
var job Job
json.Unmarshal(body, &job)
ResponseData(ctx, &job)
}