Reviewed-on: https://git.openi.org.cn/OpenI/aiforge/pulls/577 Reviewed-by: ychao_1983 <ychao_1983@sina.com>tags/v1.21.12.1
| @@ -151,23 +151,42 @@ type TaskPod struct { | |||||
| TaskRoleStatus struct { | TaskRoleStatus struct { | ||||
| Name string `json:"name"` | Name string `json:"name"` | ||||
| } `json:"taskRoleStatus"` | } `json:"taskRoleStatus"` | ||||
| TaskStatuses []struct { | |||||
| TaskIndex int `json:"taskIndex"` | |||||
| PodUID string `json:"podUid"` | |||||
| PodIP string `json:"podIp"` | |||||
| PodName string `json:"podName"` | |||||
| ContainerID string `json:"containerId"` | |||||
| ContainerIP string `json:"containerIp"` | |||||
| ContainerGpus string `json:"containerGpus"` | |||||
| State string `json:"state"` | |||||
| StartAt time.Time `json:"startAt"` | |||||
| FinishedAt time.Time `json:"finishedAt"` | |||||
| ExitCode int `json:"exitCode"` | |||||
| ExitDiagnostics string `json:"exitDiagnostics"` | |||||
| RetriedCount int `json:"retriedCount"` | |||||
| StartTime string | |||||
| FinishedTime string | |||||
| } `json:"taskStatuses"` | |||||
| //TaskStatuses []struct { | |||||
| // TaskIndex int `json:"taskIndex"` | |||||
| // PodUID string `json:"podUid"` | |||||
| // PodIP string `json:"podIp"` | |||||
| // PodName string `json:"podName"` | |||||
| // ContainerID string `json:"containerId"` | |||||
| // ContainerIP string `json:"containerIp"` | |||||
| // ContainerGpus string `json:"containerGpus"` | |||||
| // State string `json:"state"` | |||||
| // StartAt time.Time `json:"startAt"` | |||||
| // FinishedAt time.Time `json:"finishedAt"` | |||||
| // ExitCode int `json:"exitCode"` | |||||
| // ExitDiagnostics string `json:"exitDiagnostics"` | |||||
| // RetriedCount int `json:"retriedCount"` | |||||
| // StartTime string | |||||
| // FinishedTime string | |||||
| //} `json:"taskStatuses"` | |||||
| TaskStatuses []TaskStatuses `json:"taskStatuses"` | |||||
| } | |||||
| type TaskStatuses struct { | |||||
| TaskIndex int `json:"taskIndex"` | |||||
| PodUID string `json:"podUid"` | |||||
| PodIP string `json:"podIp"` | |||||
| PodName string `json:"podName"` | |||||
| ContainerID string `json:"containerId"` | |||||
| ContainerIP string `json:"containerIp"` | |||||
| ContainerGpus string `json:"containerGpus"` | |||||
| State string `json:"state"` | |||||
| StartAt time.Time `json:"startAt"` | |||||
| FinishedAt time.Time `json:"finishedAt"` | |||||
| ExitCode int `json:"exitCode"` | |||||
| ExitDiagnostics string `json:"exitDiagnostics"` | |||||
| RetriedCount int `json:"retriedCount"` | |||||
| StartTime string | |||||
| FinishedTime string | |||||
| } | } | ||||
| type TaskInfo struct { | type TaskInfo struct { | ||||
| @@ -281,17 +281,30 @@ func CloudBrainShow(ctx *context.Context) { | |||||
| if result != nil { | if result != nil { | ||||
| jobRes, _ := models.ConvertToJobResultPayload(result.Payload) | jobRes, _ := models.ConvertToJobResultPayload(result.Payload) | ||||
| jobRes.Resource.Memory = strings.ReplaceAll(jobRes.Resource.Memory, "Mi", "MB") | jobRes.Resource.Memory = strings.ReplaceAll(jobRes.Resource.Memory, "Mi", "MB") | ||||
| ctx.Data["result"] = jobRes | |||||
| taskRoles := jobRes.TaskRoles | taskRoles := jobRes.TaskRoles | ||||
| taskRes, _ := models.ConvertToTaskPod(taskRoles[cloudbrain.SubTaskName].(map[string]interface{})) | |||||
| ctx.Data["taskRes"] = taskRes | |||||
| task.Status = taskRes.TaskStatuses[0].State | |||||
| task.ContainerID = taskRes.TaskStatuses[0].ContainerID | |||||
| task.ContainerIp = taskRes.TaskStatuses[0].ContainerIP | |||||
| err = models.UpdateJob(task) | |||||
| if err != nil { | |||||
| ctx.Data["error"] = err.Error() | |||||
| if jobRes.JobStatus.State != string(models.JobFailed) { | |||||
| taskRes, _ := models.ConvertToTaskPod(taskRoles[cloudbrain.SubTaskName].(map[string]interface{})) | |||||
| ctx.Data["taskRes"] = taskRes | |||||
| task.Status = taskRes.TaskStatuses[0].State | |||||
| task.ContainerID = taskRes.TaskStatuses[0].ContainerID | |||||
| task.ContainerIp = taskRes.TaskStatuses[0].ContainerIP | |||||
| err = models.UpdateJob(task) | |||||
| if err != nil { | |||||
| ctx.Data["error"] = err.Error() | |||||
| } | |||||
| } else { | |||||
| task.Status = jobRes.JobStatus.State | |||||
| taskRes := models.TaskPod{TaskStatuses: []models.TaskStatuses{ | |||||
| { | |||||
| State: jobRes.JobStatus.State, | |||||
| }, | |||||
| }} | |||||
| ctx.Data["taskRes"] = taskRes | |||||
| jobRes.JobStatus.StartTime = time.Unix(int64(task.CreatedUnix), 0).Format("2006-01-02 15:04:05") | |||||
| jobRes.JobStatus.EndTime = time.Unix(int64(task.UpdatedUnix), 0).Format("2006-01-02 15:04:05") | |||||
| } | } | ||||
| ctx.Data["result"] = jobRes | |||||
| } | } | ||||
| ctx.Data["task"] = task | ctx.Data["task"] = task | ||||
| @@ -351,7 +364,7 @@ func CloudBrainStop(ctx *context.Context) { | |||||
| return | return | ||||
| } | } | ||||
| if task.Status == string(models.JobStopped) { | |||||
| if task.Status == string(models.JobStopped) || task.Status == string(models.JobFailed) { | |||||
| log.Error("the job(%s) has been stopped", task.JobName, ctx.Data["msgID"]) | log.Error("the job(%s) has been stopped", task.JobName, ctx.Data["msgID"]) | ||||
| ctx.ServerError("the job has been stopped", errors.New("the job has been stopped")) | ctx.ServerError("the job has been stopped", errors.New("the job has been stopped")) | ||||
| return | return | ||||
| @@ -337,9 +337,9 @@ | |||||
| 调试 | 调试 | ||||
| </a> | </a> | ||||
| <form id="stopForm-{{.JobID}}" action="{{if eq .Status "STOPPED"}}javascript:void(0){{else}}{{$.Link}}/{{.JobID}}/stop{{end}}" method="post" style="margin-left:-1px;"> | |||||
| <form id="stopForm-{{.JobID}}" action="{{if ((eq .Status "STOPPED") or (eq .Status "FAILED"))}}javascript:void(0){{else}}{{$.Link}}/{{.JobID}}/stop{{end}}" method="post" style="margin-left:-1px;"> | |||||
| {{$.CsrfTokenHtml}} | {{$.CsrfTokenHtml}} | ||||
| <a class="ui basic {{if eq .Status "STOPPED"}}disabled {{else}}blue {{end}}button" onclick="document.getElementById('stopForm-{{.JobID}}').submit();"> | |||||
| <a class="ui basic {{if ((eq .Status "STOPPED") or (eq .Status "FAILED"))}}disabled {{else}}blue {{end}}button" onclick="document.getElementById('stopForm-{{.JobID}}').submit();"> | |||||
| 停止 | 停止 | ||||
| </a> | </a> | ||||
| </form> | </form> | ||||