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

     1  package present
     2  
     3  import (
     4  	"github.com/pf-qiu/concourse/v6/atc"
     5  	"github.com/pf-qiu/concourse/v6/atc/db"
     6  )
     7  
     8  func Volume(volume db.CreatedVolume) (atc.Volume, error) {
     9  	resourceType, err := volume.ResourceType()
    10  	if err != nil {
    11  		return atc.Volume{}, err
    12  	}
    13  
    14  	baseResourceType, err := volume.BaseResourceType()
    15  	if err != nil {
    16  		return atc.Volume{}, err
    17  	}
    18  
    19  	pipelineID, pipelineRef, jobName, stepName, err := volume.TaskIdentifier()
    20  	if err != nil {
    21  		return atc.Volume{}, err
    22  	}
    23  
    24  	return atc.Volume{
    25  		ID:                   volume.Handle(),
    26  		Type:                 string(volume.Type()),
    27  		WorkerName:           volume.WorkerName(),
    28  		ContainerHandle:      volume.ContainerHandle(),
    29  		Path:                 volume.Path(),
    30  		ParentHandle:         volume.ParentHandle(),
    31  		PipelineID:           pipelineID,
    32  		PipelineName:         pipelineRef.Name,
    33  		PipelineInstanceVars: pipelineRef.InstanceVars,
    34  		JobName:              jobName,
    35  		StepName:             stepName,
    36  		ResourceType:         toVolumeResourceType(resourceType),
    37  		BaseResourceType:     toVolumeBaseResourceType(baseResourceType),
    38  	}, nil
    39  }
    40  
    41  func toVolumeResourceType(dbResourceType *db.VolumeResourceType) *atc.VolumeResourceType {
    42  	if dbResourceType == nil {
    43  		return nil
    44  	}
    45  
    46  	if dbResourceType.WorkerBaseResourceType != nil {
    47  		return &atc.VolumeResourceType{
    48  			BaseResourceType: toVolumeBaseResourceType(dbResourceType.WorkerBaseResourceType),
    49  			Version:          dbResourceType.Version,
    50  		}
    51  	}
    52  
    53  	if dbResourceType.ResourceType != nil {
    54  		resourceType := toVolumeResourceType(dbResourceType.ResourceType)
    55  		return &atc.VolumeResourceType{
    56  			ResourceType: resourceType,
    57  			Version:      dbResourceType.Version,
    58  		}
    59  	}
    60  
    61  	return nil
    62  }
    63  
    64  func toVolumeBaseResourceType(dbResourceType *db.UsedWorkerBaseResourceType) *atc.VolumeBaseResourceType {
    65  	if dbResourceType == nil {
    66  		return nil
    67  	}
    68  
    69  	return &atc.VolumeBaseResourceType{
    70  		Name:    dbResourceType.Name,
    71  		Version: dbResourceType.Version,
    72  	}
    73  }