|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- // Copyright 2016 The Gogs Authors. All rights reserved.
- // Copyright 2018 The Gitea Authors. All rights reserved.
- // Use of this source code is governed by a MIT-style
- // license that can be found in the LICENSE file.
-
- package repo
-
- import (
- "code.gitea.io/gitea/modules/log"
- "net/http"
- "time"
-
- "code.gitea.io/gitea/models"
- "code.gitea.io/gitea/modules/cloudbrain"
- "code.gitea.io/gitea/modules/context"
- )
-
- // cloudbrain get job task by jobid
- func GetCloudbrainTask(ctx *context.APIContext) {
- // swagger:operation GET /repos/{owner}/{repo}/cloudbrain/{jobid} cloudbrain jobTask
- // ---
- // summary: Get a single task
- // produces:
- // - application/json
- // parameters:
- // - name: owner
- // in: path
- // description: owner of the repo
- // type: string
- // required: true
- // - name: repo
- // in: path
- // description: name of the repo
- // type: string
- // required: true
- // - name: jobid
- // in: path
- // description: id of cloudbrain jobid
- // type: string
- // required: true
- // responses:
- // "200":
-
- // "$ref": "#/responses/Label"
-
- var (
- err error
- )
-
- jobID := ctx.Params(":jobid")
- repoID := ctx.Repo.Repository.ID
- job, err := models.GetRepoCloudBrainByJobID(repoID, jobID)
- if err != nil {
- ctx.NotFound(err)
- return
- }
- jobResult, err := cloudbrain.GetJob(jobID)
- if err != nil {
- ctx.NotFound(err)
- return
- }
- result, err := models.ConvertToJobResultPayload(jobResult.Payload)
- if err != nil {
- ctx.NotFound(err)
- return
- }
-
- taskRoles := result.TaskRoles
- taskRes, _ := models.ConvertToTaskPod(taskRoles[cloudbrain.SubTaskName].(map[string]interface{}))
-
- job.ContainerIp = taskRes.TaskStatuses[0].ContainerIP
- job.ContainerID = taskRes.TaskStatuses[0].ContainerID
- job.Status = taskRes.TaskStatuses[0].State
-
- if result.JobStatus.State != string(models.JobWaiting) {
- err = models.UpdateJob(job)
- if err != nil {
- log.Error("UpdateJob failed:", err)
- }
- }
-
- ctx.JSON(http.StatusOK, map[string]interface{}{
- "JobID": result.Config.JobID,
- "JobStatus": result.JobStatus.State,
- "SubState": result.JobStatus.SubState,
- "CreatedTime": time.Unix(result.JobStatus.CreatedTime/1000, 0).Format("2006-01-02 15:04:05"),
- "CompletedTime": time.Unix(result.JobStatus.CompletedTime/1000, 0).Format("2006-01-02 15:04:05"),
- })
-
- }
|