forked from vmware-archive/atc
/
dependent_get_step.go
91 lines (86 loc) · 2.54 KB
/
dependent_get_step.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package exec
import (
"code.cloudfoundry.org/lager"
"github.com/concourse/atc"
"github.com/concourse/atc/dbng"
"github.com/concourse/atc/resource"
"github.com/concourse/atc/worker"
)
// DependentGetStep represents a Get step whose version is determined by the
// previous step. It is used to fetch the resource version produced by a
// PutStep.
type DependentGetStep struct {
logger lager.Logger
sourceName worker.ArtifactName
resourceConfig atc.ResourceConfig
params atc.Params
stepMetadata StepMetadata
session resource.Session
tags atc.Tags
teamID int
buildID int
delegate ResourceDelegate
resourceFetcher resource.Fetcher
resourceTypes atc.VersionedResourceTypes
dbResourceCacheFactory dbng.ResourceCacheFactory
}
func newDependentGetStep(
logger lager.Logger,
sourceName worker.ArtifactName,
resourceConfig atc.ResourceConfig,
params atc.Params,
stepMetadata StepMetadata,
session resource.Session,
tags atc.Tags,
teamID int,
buildID int,
delegate ResourceDelegate,
resourceFetcher resource.Fetcher,
resourceTypes atc.VersionedResourceTypes,
dbResourceCacheFactory dbng.ResourceCacheFactory,
) DependentGetStep {
return DependentGetStep{
logger: logger,
sourceName: sourceName,
resourceConfig: resourceConfig,
params: params,
stepMetadata: stepMetadata,
session: session,
tags: tags,
teamID: teamID,
buildID: buildID,
delegate: delegate,
resourceFetcher: resourceFetcher,
resourceTypes: resourceTypes,
dbResourceCacheFactory: dbResourceCacheFactory,
}
}
// Using constructs a GetStep that will fetch the version of the resource
// determined by the VersionInfo result of the previous step.
func (step DependentGetStep) Using(prev Step, repo *worker.ArtifactRepository) Step {
var info VersionInfo
prev.Result(&info)
return newGetStep(
step.logger,
step.sourceName,
step.resourceConfig,
info.Version,
step.params,
resource.NewResourceInstance(
resource.ResourceType(step.resourceConfig.Type),
info.Version,
step.resourceConfig.Source,
step.params,
dbng.ForBuild(step.buildID),
step.resourceTypes,
step.dbResourceCacheFactory,
),
step.stepMetadata,
step.session,
step.tags,
step.teamID,
step.delegate,
step.resourceFetcher,
step.resourceTypes,
).Using(prev, repo)
}