Documentation
¶
Index ¶
- Constants
- Variables
- func FinalTTL(ttl time.Duration) *time.Duration
- func NewHardcoded(logger lager.Logger, workerDB SaveWorkerDB, clock c.Clock, gardenAddr string, ...) ifrit.RunFunc
- type Client
- type Container
- type ContainerRootFSStrategy
- type ContainerSpec
- type GardenConnectionFactory
- type GardenWorkerDB
- type HostRootFSStrategy
- type Identifier
- type Image
- type ImageArtifactReplicationStrategy
- type ImageFactory
- type ImageFetchingDelegate
- type ImageMetadata
- type ImageSpec
- type ImageVolumeAndMetadata
- type MalformedMetadataError
- type Metadata
- type MultiWorkerError
- type MultipleContainersError
- type MultipleWorkersFoundContainerError
- type NoCompatibleWorkersError
- type NoopImageFetchingDelegate
- type OutputStrategy
- type ResourceCacheStrategy
- type RetryableConnection
- type SaveWorkerDB
- type Sleeper
- type Strategy
- type Volume
- type VolumeClient
- type VolumeFactory
- type VolumeFactoryDB
- type VolumeIdentifier
- type VolumeMount
- type VolumeProperties
- type VolumeSpec
- type Worker
- type WorkerDB
- type WorkerProvider
- type WorkerSpec
Constants ¶
View Source
const ContainerTTL = 5 * time.Minute
View Source
const RawRootFSScheme = "raw"
View Source
const VolumeTTL = 5 * time.Minute
Variables ¶
View Source
var ( ErrNoWorkers = errors.New("no workers") ErrMissingWorker = errors.New("worker for container is missing") )
View Source
var ErrIncompatiblePlatform = errors.New("incompatible platform")
View Source
var ErrMismatchedTags = errors.New("mismatched tags")
View Source
var ErrMissingVolume = errors.New("volume mounted to container is missing")
View Source
var ErrMultipleWorkersWithName = errors.New("More than one worker has given worker name")
View Source
var ErrNoVolumeManager = errors.New("worker does not support volume management")
View Source
var ErrTeamMismatch = errors.New("mismatched team")
View Source
var ErrUnsupportedResourceType = errors.New("unsupported resource type")
View Source
var ErrVolumeExpiredImmediately = errors.New("volume expired immediately after saving")
Functions ¶
func NewHardcoded ¶
Types ¶
type Client ¶
type Client interface {
CreateContainer(
lager.Logger,
<-chan os.Signal,
ImageFetchingDelegate,
Identifier,
Metadata,
ContainerSpec,
atc.ResourceTypes,
) (Container, error)
FindContainerForIdentifier(lager.Logger, Identifier) (Container, bool, error)
LookupContainer(lager.Logger, string) (Container, bool, error)
FindResourceTypeByPath(path string) (atc.WorkerResourceType, bool)
FindVolume(lager.Logger, VolumeSpec) (Volume, bool, error)
CreateVolume(logger lager.Logger, vs VolumeSpec, teamID int) (Volume, error)
ListVolumes(lager.Logger, VolumeProperties) ([]Volume, error)
LookupVolume(lager.Logger, string) (Volume, bool, error)
Satisfying(WorkerSpec, atc.ResourceTypes) (Worker, error)
AllSatisfying(WorkerSpec, atc.ResourceTypes) ([]Worker, error)
GetWorker(workerName string) (Worker, error)
}
func NewPool ¶
func NewPool(provider WorkerProvider) Client
type ContainerRootFSStrategy ¶
type ContainerRootFSStrategy struct {
Parent Volume
}
type ContainerSpec ¶
type ContainerSpec struct {
Platform string
Tags []string
TeamID int
ImageSpec ImageSpec
Ephemeral bool
Env []string
// Not Copy-on-Write. Used for a single mount in Get containers.
Inputs []VolumeMount
// Copy-on-Write. Used for mounting multiple resources into a Put container.
Outputs []VolumeMount
// Optional user to run processes as. Overwrites the one specified in the docker image.
User string
}
func (ContainerSpec) WorkerSpec ¶
func (spec ContainerSpec) WorkerSpec() WorkerSpec
type GardenConnectionFactory ¶
type GardenConnectionFactory interface {
BuildConnection() gconn.Connection
}
func NewGardenConnectionFactory ¶
func NewGardenConnectionFactory( db transport.TransportDB, logger lager.Logger, workerName string, retryPolicy transport.RetryPolicy, ) GardenConnectionFactory
type GardenWorkerDB ¶
type GardenWorkerDB interface {
CreateContainer(container db.Container, ttl time.Duration, maxLifetime time.Duration, volumeHandles []string) (db.SavedContainer, error)
GetContainer(handle string) (db.SavedContainer, bool, error)
UpdateExpiresAtOnContainer(handle string, ttl time.Duration) error
ReapContainer(string) error
FindWorkerCheckResourceTypeVersion(workerName string, checkType string) (string, bool, error)
InsertVolume(db.Volume) error
SetVolumeTTL(string, time.Duration) error
GetVolumeTTL(string) (time.Duration, bool, error)
GetVolumesByIdentifier(db.VolumeIdentifier) ([]db.SavedVolume, error)
}
type HostRootFSStrategy ¶
type Identifier ¶
type Identifier db.ContainerIdentifier
type ImageArtifactReplicationStrategy ¶
type ImageArtifactReplicationStrategy struct {
Name string
}
type ImageFactory ¶
type ImageFactory interface {
NewImage(
logger lager.Logger,
cancel <-chan os.Signal,
imageResource atc.ImageResource,
id Identifier,
metadata Metadata,
tags atc.Tags,
teamID int,
resourceTypes atc.ResourceTypes,
workerClient Client,
delegate ImageFetchingDelegate,
privileged bool,
) Image
}
type ImageFetchingDelegate ¶
type ImageFetchingDelegate interface {
Stderr() io.Writer
ImageVersionDetermined(VolumeIdentifier) error
}
type ImageMetadata ¶
type ImageSpec ¶
type ImageSpec struct {
ResourceType string
ImageURL string
ImageResource *atc.ImageResource
ImageVolumeAndMetadata ImageVolumeAndMetadata
Privileged bool
}
type ImageVolumeAndMetadata ¶
type ImageVolumeAndMetadata struct {
Volume Volume
MetadataReader io.ReadCloser
}
type MalformedMetadataError ¶
type MalformedMetadataError struct {
UnmarshalError error
}
func (MalformedMetadataError) Error ¶
func (err MalformedMetadataError) Error() string
type Metadata ¶
type Metadata db.ContainerMetadata
type MultiWorkerError ¶
type MultiWorkerError struct {
// contains filtered or unexported fields
}
func (*MultiWorkerError) AddError ¶
func (mwe *MultiWorkerError) AddError(workerName string, err error)
func (MultiWorkerError) Error ¶
func (err MultiWorkerError) Error() string
func (MultiWorkerError) Errors ¶
func (mwe MultiWorkerError) Errors() map[string]error
type MultipleContainersError ¶
type MultipleContainersError struct {
Handles []string
}
func (MultipleContainersError) Error ¶
func (err MultipleContainersError) Error() string
type MultipleWorkersFoundContainerError ¶
type MultipleWorkersFoundContainerError struct {
Names []string
}
func (MultipleWorkersFoundContainerError) Error ¶
func (err MultipleWorkersFoundContainerError) Error() string
type NoCompatibleWorkersError ¶
type NoCompatibleWorkersError struct {
Spec WorkerSpec
Workers []Worker
}
func (NoCompatibleWorkersError) Error ¶
func (err NoCompatibleWorkersError) Error() string
type NoopImageFetchingDelegate ¶
type NoopImageFetchingDelegate struct{}
func (NoopImageFetchingDelegate) ImageVersionDetermined ¶
func (NoopImageFetchingDelegate) ImageVersionDetermined(VolumeIdentifier) error
func (NoopImageFetchingDelegate) Stderr ¶
func (NoopImageFetchingDelegate) Stderr() io.Writer
type OutputStrategy ¶
type OutputStrategy struct {
Name string
}
type ResourceCacheStrategy ¶
type RetryableConnection ¶
type RetryableConnection struct {
gconn.Connection
}
func NewRetryableConnection ¶
func NewRetryableConnection(connection gconn.Connection) *RetryableConnection
type SaveWorkerDB ¶
type SaveWorkerDB interface {
SaveWorker(db.WorkerInfo, time.Duration) (db.SavedWorker, error)
}
type Volume ¶
type Volume interface {
baggageclaim.Volume
// a noop method to ensure things aren't just returning baggageclaim.Volume
HeartbeatingToDB()
}
type VolumeClient ¶
type VolumeClient interface {
FindVolume(lager.Logger, VolumeSpec) (Volume, bool, error)
CreateVolume(logger lager.Logger, vs VolumeSpec, teamID int) (Volume, error)
ListVolumes(lager.Logger, VolumeProperties) ([]Volume, error)
LookupVolume(lager.Logger, string) (Volume, bool, error)
}
func NewVolumeClient ¶
func NewVolumeClient( baggageclaimClient baggageclaim.Client, db GardenWorkerDB, volumeFactory VolumeFactory, workerName string, ) VolumeClient
type VolumeFactory ¶
func NewVolumeFactory ¶
func NewVolumeFactory(db VolumeFactoryDB, clock clock.Clock) VolumeFactory
type VolumeFactoryDB ¶
type VolumeIdentifier ¶
type VolumeIdentifier db.VolumeIdentifier
type VolumeMount ¶
type VolumeProperties ¶
type VolumeSpec ¶
type VolumeSpec struct {
Strategy Strategy
Properties VolumeProperties
Privileged bool
TTL time.Duration
}
type Worker ¶
type Worker interface {
Client
ActiveContainers() int
Description() string
Name() string
Uptime() time.Duration
IsOwnedByTeam() bool
}
func NewGardenWorker ¶
func NewGardenWorker( gardenClient garden.Client, baggageclaimClient baggageclaim.Client, volumeClient VolumeClient, volumeFactory VolumeFactory, imageFactory ImageFactory, db GardenWorkerDB, provider WorkerProvider, clock clock.Clock, activeContainers int, resourceTypes []atc.WorkerResourceType, platform string, tags atc.Tags, teamID int, name string, startTime int64, httpProxyURL string, httpsProxyURL string, noProxy string, ) Worker
type WorkerDB ¶
type WorkerDB interface {
Workers() ([]db.SavedWorker, error)
GetWorker(string) (db.SavedWorker, bool, error)
CreateContainer(container db.Container, ttl time.Duration, maxLifetime time.Duration, volumeHandles []string) (db.SavedContainer, error)
GetContainer(string) (db.SavedContainer, bool, error)
FindContainerByIdentifier(db.ContainerIdentifier) (db.SavedContainer, bool, error)
FindWorkerCheckResourceTypeVersion(workerName string, checkType string) (string, bool, error)
UpdateExpiresAtOnContainer(handle string, ttl time.Duration) error
ReapContainer(handle string) error
InsertVolume(db.Volume) error
GetVolumesByIdentifier(db.VolumeIdentifier) ([]db.SavedVolume, error)
GetVolumeTTL(volumeHandle string) (time.Duration, bool, error)
ReapVolume(handle string) error
SetVolumeTTL(string, time.Duration) error
SetVolumeSizeInBytes(string, int64) error
}
type WorkerProvider ¶
type WorkerProvider interface {
Workers() ([]Worker, error)
GetWorker(string) (Worker, bool, error)
FindContainerForIdentifier(Identifier) (db.SavedContainer, bool, error)
GetContainer(string) (db.SavedContainer, bool, error)
ReapContainer(string) error
}
func NewDBWorkerProvider ¶
func NewDBWorkerProvider( logger lager.Logger, db WorkerDB, dialer gconn.DialerFunc, retryPolicy transport.RetryPolicy, imageFactory ImageFactory, ) WorkerProvider
type WorkerSpec ¶
func (WorkerSpec) Description ¶
func (spec WorkerSpec) Description() string
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
transportfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
|
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
Click to show internal directories.
Click to hide internal directories.