github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/api/present/container.go (about)

     1  package present
     2  
     3  import (
     4  	"encoding/json"
     5  	"time"
     6  
     7  	"github.com/pf-qiu/concourse/v6/atc"
     8  	"github.com/pf-qiu/concourse/v6/atc/db"
     9  )
    10  
    11  func Container(container db.Container, expiresAt time.Time) atc.Container {
    12  	meta := container.Metadata()
    13  
    14  	var pipelineInstanceVars atc.InstanceVars
    15  	_ = json.Unmarshal([]byte(meta.PipelineInstanceVars), &pipelineInstanceVars)
    16  
    17  	atcContainer := atc.Container{
    18  		ID:         container.Handle(),
    19  		WorkerName: container.WorkerName(),
    20  
    21  		Type:  string(meta.Type),
    22  		State: container.State(),
    23  
    24  		PipelineID: meta.PipelineID,
    25  		JobID:      meta.JobID,
    26  		BuildID:    meta.BuildID,
    27  
    28  		PipelineName:         meta.PipelineName,
    29  		PipelineInstanceVars: pipelineInstanceVars,
    30  		JobName:              meta.JobName,
    31  		BuildName:            meta.BuildName,
    32  
    33  		StepName: meta.StepName,
    34  		Attempt:  meta.Attempt,
    35  
    36  		WorkingDirectory: meta.WorkingDirectory,
    37  		User:             meta.User,
    38  	}
    39  
    40  	if !expiresAt.IsZero() {
    41  		atcContainer.ExpiresIn = expiresAt.Sub(time.Now()).Round(time.Second).String()
    42  	}
    43  
    44  	return atcContainer
    45  }