This repository has been archived by the owner on Mar 24, 2022. It is now read-only.
/
scanner_factory.go
91 lines (79 loc) · 2.6 KB
/
scanner_factory.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 radar
import (
"time"
"code.cloudfoundry.org/clock"
"github.com/concourse/atc/creds"
"github.com/concourse/atc/db"
"github.com/concourse/atc/resource"
)
// ScannerFactory is the same interface as resourceserver/server.go
// They are in two places because there would be cyclic dependencies otherwise
// go:generate counterfeiter . ScannerFactory
type ScannerFactory interface {
NewResourceScanner(dbPipeline db.Pipeline) Scanner
NewResourceTypeScanner(dbPipeline db.Pipeline) Scanner
}
type scannerFactory struct {
resourceFactory resource.ResourceFactory
resourceConfigCheckSessionFactory db.ResourceConfigCheckSessionFactory
resourceTypeCheckingInterval time.Duration
resourceCheckingInterval time.Duration
externalURL string
variablesFactory creds.VariablesFactory
}
var ContainerExpiries = db.ContainerOwnerExpiries{
GraceTime: 2 * time.Minute,
Min: 5 * time.Minute,
Max: 1 * time.Hour,
}
func NewScannerFactory(
resourceFactory resource.ResourceFactory,
resourceConfigCheckSessionFactory db.ResourceConfigCheckSessionFactory,
resourceTypeCheckingInterval time.Duration,
resourceCheckingInterval time.Duration,
externalURL string,
variablesFactory creds.VariablesFactory,
) ScannerFactory {
return &scannerFactory{
resourceFactory: resourceFactory,
resourceConfigCheckSessionFactory: resourceConfigCheckSessionFactory,
resourceCheckingInterval: resourceCheckingInterval,
resourceTypeCheckingInterval: resourceTypeCheckingInterval,
externalURL: externalURL,
variablesFactory: variablesFactory,
}
}
func (f *scannerFactory) NewResourceScanner(dbPipeline db.Pipeline) Scanner {
variables := f.variablesFactory.NewVariables(dbPipeline.TeamName(), dbPipeline.Name())
resourceTypeScanner := NewResourceTypeScanner(
clock.NewClock(),
f.resourceFactory,
f.resourceConfigCheckSessionFactory,
f.resourceTypeCheckingInterval,
dbPipeline,
f.externalURL,
variables,
)
return NewResourceScanner(
clock.NewClock(),
f.resourceFactory,
f.resourceConfigCheckSessionFactory,
f.resourceCheckingInterval,
dbPipeline,
f.externalURL,
variables,
resourceTypeScanner,
)
}
func (f *scannerFactory) NewResourceTypeScanner(dbPipeline db.Pipeline) Scanner {
variables := f.variablesFactory.NewVariables(dbPipeline.TeamName(), dbPipeline.Name())
return NewResourceTypeScanner(
clock.NewClock(),
f.resourceFactory,
f.resourceConfigCheckSessionFactory,
f.resourceTypeCheckingInterval,
dbPipeline,
f.externalURL,
variables,
)
}