Fix get log issue of Periodic job

Use the latest error or success execution as the periodic job log

Signed-off-by: wang yan <wangyan@vmware.com>
This commit is contained in:
wang yan 2019-04-29 15:24:40 +08:00
parent 56c7d55c73
commit 02c7cbeec2
2 changed files with 19 additions and 4 deletions

View File

@ -108,7 +108,7 @@ func (d *DefaultClient) GetJobLog(uuid string) ([]byte, error) {
// GetExecutions ... // GetExecutions ...
func (d *DefaultClient) GetExecutions(periodicJobID string) ([]job.Stats, error) { func (d *DefaultClient) GetExecutions(periodicJobID string) ([]job.Stats, error) {
url := fmt.Sprintf("%s/api/v1/jobs/%s/executions", d.endpoint, periodicJobID) url := fmt.Sprintf("%s/api/v1/jobs/%s/executions?page_number=1&page_size=100", d.endpoint, periodicJobID)
req, err := http.NewRequest(http.MethodGet, url, nil) req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -169,7 +169,8 @@ func (aj *AJAPI) getLog(id int64) {
aj.SendNotFoundError(errors.New("Failed to get Job")) aj.SendNotFoundError(errors.New("Failed to get Job"))
return return
} }
jobID := job.UUID
var jobID string
// to get the latest execution job id, then to query job log. // to get the latest execution job id, then to query job log.
if job.Kind == common_job.JobKindPeriodic { if job.Kind == common_job.JobKindPeriodic {
exes, err := utils_core.GetJobServiceClient().GetExecutions(job.UUID) exes, err := utils_core.GetJobServiceClient().GetExecutions(job.UUID)
@ -178,10 +179,24 @@ func (aj *AJAPI) getLog(id int64) {
return return
} }
if len(exes) == 0 { if len(exes) == 0 {
aj.SendNotFoundError(errors.New("no execution log ")) aj.SendNotFoundError(errors.New("no execution log found"))
return return
} }
jobID = exes[0].Info.JobID // get the latest terminal status execution.
for _, exe := range exes {
if exe.Info.Status == "Error" || exe.Info.Status == "Success" {
jobID = exe.Info.JobID
break
}
}
// no execution found
if jobID == "" {
aj.SendNotFoundError(errors.New("no execution log found"))
return
}
} else {
jobID = job.UUID
} }
logBytes, err := utils_core.GetJobServiceClient().GetJobLog(jobID) logBytes, err := utils_core.GetJobServiceClient().GetJobLog(jobID)