in packages/cli/internal/pkg/cli/logs_workflow.go [77:136]
func (o *logsWorkflowOpts) Execute() error {
err := o.setRunId()
if err != nil {
if errors.Is(err, noRunsFoundError) {
log.Info().Msgf("Workflow '%s' has not been run yet", o.workflowName)
return nil
}
return err
}
log.Debug().Msgf("Showing logs for workflow run '%s'", o.runId)
runLog, err := o.workflowManager.GetRunLog(o.runId)
if err != nil {
return err
}
var jobIds []string
if o.taskId != "" {
if !containsTaskId(o.taskId, runLog.Tasks) {
log.Info().Msgf("Task `%s` does not exist for run `%s`", o.taskId, o.runId)
return nil
}
jobIds = []string{o.taskId}
} else if o.allTasks || o.failedTasks {
jobIds, err = o.getJobIds(runLog.Tasks)
if err != nil {
return err
}
} else {
printRunLog(runLog)
return nil
}
if len(jobIds) == 0 {
log.Info().Msgf("No logs available for run '%s'. Please try again later.", o.runId)
return nil
}
notCachedJobIds := filterCachedJobIds(jobIds)
totalJobs := len(jobIds)
notCachedJobs := len(notCachedJobIds)
cachedJobs := totalJobs - notCachedJobs
if cachedJobs > 0 {
log.Info().Msgf("%d of %d jobs were cached. Logs are not available for cached jobs", cachedJobs, totalJobs)
}
if notCachedJobs == 0 {
return nil
}
streamNames, err := o.getStreamsForJobs(notCachedJobIds)
if err != nil {
return err
}
logGroupName := "/aws/batch/job"
if o.tail {
return o.followLogStreams(logGroupName, streamNames...)
} else {
return o.displayLogStreams(logGroupName, o.startTime, o.endTime, o.filter, streamNames...)
}
}