prow/deck/jobs/jobs.go
func (ja *JobAgent) GetJobLog(job, id string) ([]byte, error) {
	j, err := ja.GetProwJob(job, id)
	if err != nil {
		return nil, fmt.Errorf("error getting prowjob: %v", err)
	}
	if j.Spec.Agent == prowapi.KubernetesAgent {
		client, ok := ja.pkcs[j.ClusterAlias()]
		if !ok {
			return nil, fmt.Errorf("cannot get logs for prowjob %q with agent %q: unknown cluster alias %q", j.ObjectMeta.Name, j.Spec.Agent, j.ClusterAlias())
		}
		return client.GetLogs(j.Status.PodName, &coreapi.PodLogOptions{Container: kube.TestContainerName})
	}
	for _, agentToTmpl := range ja.config().Deck.ExternalAgentLogs {
		if agentToTmpl.Agent != string(j.Spec.Agent) {
			continue
		}
		if !agentToTmpl.Selector.Matches(labels.Set(j.ObjectMeta.Labels)) {
			continue
		}
		var b bytes.Buffer
		if err := agentToTmpl.URLTemplate.Execute(&b, &j); err != nil {
			return nil, fmt.Errorf("cannot execute URL template for prowjob %q with agent %q: %v", j.ObjectMeta.Name, j.Spec.Agent, err)
		}
		resp, err := http.Get(b.String())
		if err != nil {
			return nil, err
		}
		defer resp.Body.Close()
		return ioutil.ReadAll(resp.Body)

	}
	return nil, fmt.Errorf("cannot get logs for prowjob %q with agent %q: the agent is missing from the prow config file", j.ObjectMeta.Name, j.Spec.Agent)
}
func (ja *JobAgent) GetJobLog(job, id string) ([]byte, error) {
	j, err := ja.GetProwJob(job, id)
	if err != nil {
		return nil, fmt.Errorf("error getting prowjob: %v", err)
	}
	if j.Spec.Agent == prowapi.KubernetesAgent {
		client, ok := ja.pkcs[j.ClusterAlias()]
		if !ok {
			return nil, fmt.Errorf("cannot get logs for prowjob %q with agent %q: unknown cluster alias %q", j.ObjectMeta.Name, j.Spec.Agent, j.ClusterAlias())
		}
		return client.GetLogs(j.Status.PodName, &coreapi.PodLogOptions{Container: kube.TestContainerName})
	}
	for _, agentToTmpl := range ja.config().Deck.ExternalAgentLogs {
		if agentToTmpl.Agent != string(j.Spec.Agent) {
			continue
		}
		if !agentToTmpl.Selector.Matches(labels.Set(j.ObjectMeta.Labels)) {
			continue
		}
		var b bytes.Buffer
		if err := agentToTmpl.URLTemplate.Execute(&b, &j); err != nil {
			return nil, fmt.Errorf("cannot execute URL template for prowjob %q with agent %q: %v", j.ObjectMeta.Name, j.Spec.Agent, err)
		}
		resp, err := http.Get(b.String())
		if err != nil {
			return nil, err
		}
		defer resp.Body.Close()
		return ioutil.ReadAll(resp.Body)

	}
	return nil, fmt.Errorf("cannot get logs for prowjob %q with agent %q: the agent is missing from the prow config file", j.ObjectMeta.Name, j.Spec.Agent)
}
func ( ja * JobAgent ) GetJobLog ( job , id string ) ( [ ] byte , error ) { j , err := ja . GetProwJob ( job , id ) if err != nil { return nil , fmt . Errorf ( " " , err ) } if j . Spec . Agent == prowapi . KubernetesAgent { client , ok := ja . pkcs [ j . ClusterAlias ( ) ] if ! ok { return nil , fmt . Errorf ( " " , j . ObjectMeta . Name , j . Spec . Agent , j . ClusterAlias ( ) ) } return client . GetLogs ( j . Status . PodName , & coreapi . PodLogOptions { Container : kube . TestContainerName } ) } for _ , agentToTmpl := range ja . config ( ) . Deck . ExternalAgentLogs { if agentToTmpl . Agent != string ( j . Spec . Agent ) { continue } if ! agentToTmpl . Selector . Matches ( labels . Set ( j . ObjectMeta . Labels ) ) { continue } var b bytes . Buffer if err := agentToTmpl . URLTemplate . Execute ( & b , & j ) ; err != nil { return nil , fmt . Errorf ( " " , j . ObjectMeta . Name , j . Spec . Agent , err ) } resp , err := http . Get ( b . String ( ) ) if err != nil { return nil , err } defer resp . Body . Close ( ) return ioutil . ReadAll ( resp . Body ) } return nil , fmt . Errorf ( " " , j . ObjectMeta . Name , j . Spec . Agent ) }
// GetJobLog returns the job logs, works for both kubernetes and jenkins agent types.
GetJobLog returns the job logs works for both kubernetes and jenkins agent types .