| @@ -441,6 +441,10 @@ type NotebookActionResult struct { | |||||
| PreviousState string `json:"previous_state"` | PreviousState string `json:"previous_state"` | ||||
| } | } | ||||
| type NotebookDelResult struct { | |||||
| InstanceID string `json:"instance_id"` | |||||
| } | |||||
| func Cloudbrains(opts *CloudbrainsOptions) ([]*Cloudbrain, int64, error) { | func Cloudbrains(opts *CloudbrainsOptions) ([]*Cloudbrain, int64, error) { | ||||
| sess := x.NewSession() | sess := x.NewSession() | ||||
| defer sess.Close() | defer sess.Close() | ||||
| @@ -205,3 +205,42 @@ sendjob: | |||||
| return &result, nil | return &result, nil | ||||
| } | } | ||||
| func DelJob(jobID string) (*models.NotebookDelResult, error) { | |||||
| checkSetting() | |||||
| client := getRestyClient() | |||||
| var result models.NotebookDelResult | |||||
| retry := 0 | |||||
| sendjob: | |||||
| res, err := client.R(). | |||||
| SetHeader("Content-Type", "application/json"). | |||||
| SetAuthToken(TOKEN). | |||||
| SetResult(&result). | |||||
| Delete(HOST + "/v1/" + setting.ProjectID + urlNotebook + "/" + jobID) | |||||
| if err != nil { | |||||
| return &result, fmt.Errorf("resty DelJob: %v", err) | |||||
| } | |||||
| if res.StatusCode() == http.StatusUnauthorized && retry < 1 { | |||||
| retry++ | |||||
| _ = getToken() | |||||
| goto sendjob | |||||
| } | |||||
| var response models.NotebookResult | |||||
| err = json.Unmarshal(res.Body(), &response) | |||||
| if err != nil { | |||||
| log.Error("json.Unmarshal failed: %s", err.Error()) | |||||
| return &result, fmt.Errorf("son.Unmarshal failed: %s", err.Error()) | |||||
| } | |||||
| if len(response.ErrorCode) != 0 { | |||||
| log.Error("DelJob failed(%s): %s", response.ErrorCode, response.ErrorMsg) | |||||
| return &result, fmt.Errorf("DelJob failed(%s): %s", response.ErrorCode, response.ErrorMsg) | |||||
| } | |||||
| return &result, nil | |||||
| } | |||||
| @@ -185,8 +185,6 @@ func ModelArtsStop(ctx *context.Context) { | |||||
| return | return | ||||
| } | } | ||||
| log.Info("pre(%s), current(%s)", res.PreviousState, res.CurrentStatus) | |||||
| task.Status = res.CurrentStatus | task.Status = res.CurrentStatus | ||||
| err = models.UpdateJob(task) | err = models.UpdateJob(task) | ||||
| if err != nil { | if err != nil { | ||||
| @@ -211,6 +209,13 @@ func ModelArtsDel(ctx *context.Context) { | |||||
| return | return | ||||
| } | } | ||||
| _, err = modelarts.DelJob(jobID) | |||||
| if err != nil { | |||||
| log.Error("DelJob(%s) failed:%v", task.JobName, err.Error()) | |||||
| ctx.ServerError("DelJob failed", err) | |||||
| return | |||||
| } | |||||
| err = models.DeleteJob(task) | err = models.DeleteJob(task) | ||||
| if err != nil { | if err != nil { | ||||
| ctx.ServerError("DeleteJob failed", err) | ctx.ServerError("DeleteJob failed", err) | ||||