Documentation
¶
Index ¶
- Constants
- Variables
- func Close(c io.Closer)
- func Rollback(tx Tx)
- func SetupConnectionRetryingDriver(delegateDriverName, sqlDataSource, newDriverName string)
- type BaseResourceType
- type BaseResourceTypeFactory
- type Build
- type BuildFactory
- type BuildInput
- type BuildOutput
- type BuildPreparation
- type BuildPreparationStatus
- type BuildStatus
- type Cause
- type ConfigVersion
- type Conn
- type ConnectionSession
- type ConnectionTracker
- type Container
- type ContainerMetadata
- type ContainerOwner
- func NewBuildStepContainerOwner(buildID int, planID atc.PlanID) ContainerOwner
- func NewImageCheckContainerOwner(container CreatingContainer) ContainerOwner
- func NewImageGetContainerOwner(container CreatingContainer) ContainerOwner
- func NewResourceConfigCheckSessionContainerOwner(resourceConfigCheckSession ResourceConfigCheckSession, teamID int) ContainerOwner
- type ContainerOwnerExpiries
- type ContainerRepository
- type ContainerState
- type ContainerType
- type CreatedContainer
- type CreatedVolume
- type CreatingContainer
- type CreatingVolume
- type Dashboard
- type DashboardJob
- type DestroyingContainer
- type DestroyingVolume
- type ErrCustomResourceTypeVersionNotFound
- type ErrResourceNotFound
- type ErrVolumeMarkCreatedFailed
- type ErrVolumeMarkStateFailed
- type EventSource
- type FailedContainer
- type FailedVolume
- type FirstLoggedBuildIDDecreasedError
- type Job
- type JobFactory
- type Jobs
- type MissingInputReasons
- type NotificationsBus
- type Notifier
- type Page
- type Pagination
- type Pipe
- type Pipeline
- type PipelineFactory
- type PipelinePausedState
- type Resource
- type ResourceCache
- type ResourceCacheFactory
- type ResourceCacheLifecycle
- type ResourceCacheUser
- type ResourceConfig
- type ResourceConfigCheckSession
- type ResourceConfigCheckSessionFactory
- type ResourceConfigCheckSessionLifecycle
- type ResourceConfigFactory
- type ResourceFactory
- type ResourceMetadataField
- type ResourceMetadataFields
- type ResourceNotFoundError
- type ResourceType
- type ResourceTypeNotFoundError
- type ResourceTypes
- type ResourceVersion
- type Resources
- type SavedVersionedResource
- type SavedVersionedResources
- type Team
- type TeamFactory
- type Tx
- type UsedBaseResourceType
- type UsedResourceCache
- type UsedResourceConfig
- type UsedWorkerBaseResourceType
- type UsedWorkerResourceCache
- type UsedWorkerResourceCerts
- type UsedWorkerResourceType
- type UsedWorkerTaskCache
- type VersionedResource
- type VolumeRepository
- type VolumeResourceType
- type VolumeState
- type VolumeType
- type Worker
- type WorkerBaseResourceType
- type WorkerBaseResourceTypeAlreadyExistsError
- type WorkerBaseResourceTypeFactory
- type WorkerFactory
- type WorkerLifecycle
- type WorkerResourceCache
- type WorkerResourceCerts
- type WorkerResourceType
- type WorkerState
- type WorkerTaskCache
- type WorkerTaskCacheFactory
Constants ¶
const ( NoVerionsSatisfiedPassedConstraints string = "no versions satisfy passed constraints" NoVersionsAvailable string = "no versions available" )
const ( ContainerStateCreated = "created" ContainerStateCreating = "creating" ContainerStateDestroying = "destroying" ContainerStateFailed = "failed" )
const ( WorkerStateRunning = WorkerState("running") WorkerStateStalled = WorkerState("stalled") WorkerStateLanding = WorkerState("landing") WorkerStateLanded = WorkerState("landed") WorkerStateRetiring = WorkerState("retiring") )
Variables ¶
var ( ErrVolumeCannotBeDestroyedWithChildrenPresent = errors.New("volume cannot be destroyed as children are present") ErrVolumeStateTransitionFailed = errors.New("could not transition volume state") ErrVolumeMissing = errors.New("volume no longer in db") ErrInvalidResourceCache = errors.New("invalid resource cache") )
var ( ErrWorkerNotPresent = errors.New("worker-not-present-in-db") ErrCannotPruneRunningWorker = errors.New("worker-not-stalled-for-pruning") )
var ErrBaseResourceTypeAlreadyExists = errors.New("base-resource-type-already-exists")
var ErrBuildDisappeared = errors.New("build-disappeared-from-db")
var ErrBuildEventStreamClosed = errors.New("build event stream closed")
var ErrConfigComparisonFailed = errors.New("comparison with existing config failed during save")
var ErrContainerDisappeared = errors.New("container disappeared from db")
var ErrEncryptedWithUnknownKey = errors.New("row encrypted with neither old nor new key")
var ErrEndOfBuildEventStream = errors.New("end of build event stream")
var ErrResourceCacheAlreadyExists = errors.New("resource-cache-already-exists")
var ErrResourceCacheDisappeared = errors.New("resource-cache-disappeared")
var ErrResourceConfigAlreadyExists = errors.New("resource config already exists")
var ErrResourceConfigDisappeared = errors.New("resource config disappeared")
var ErrResourceConfigParentDisappeared = errors.New("resource config parent disappeared")
var ErrSafeRetryCreateOrUpdate = errors.New("failed-to-run-safe-create-or-update-retrying")
var ErrSafeRetryFindOrCreate = errors.New("failed-to-run-safe-find-or-create-retrying")
var ErrWorkerBaseResourceTypeDisappeared = errors.New("worker base resource type disappeared")
var ErrWorkerResourceTypeNotFound = errors.New("worker resource type no longer exists (stale?)")
var GlobalConnectionTracker = NewConnectionTracker()
Functions ¶
func Close ¶
Close ignores errors, and should used with defer. makes errcheck happy that those errs are captured
func Rollback ¶
func Rollback(tx Tx)
Rollback ignores errors, and should be used with defer. makes errcheck happy that those errs are captured
func SetupConnectionRetryingDriver ¶
func SetupConnectionRetryingDriver(delegateDriverName, sqlDataSource, newDriverName string)
Types ¶
type BaseResourceType ¶
type BaseResourceType struct {
Name string // The name of the type, e.g. 'git'.
}
BaseResourceType represents a resource type provided by workers.
It is created via worker registration. All creates are upserts.
It is removed by gc.BaseResourceTypeCollector, once there are no references to it from worker_base_resource_types.
func (BaseResourceType) Find ¶
func (brt BaseResourceType) Find(tx Tx) (*UsedBaseResourceType, bool, error)
func (BaseResourceType) FindOrCreate ¶
func (brt BaseResourceType) FindOrCreate(tx Tx) (*UsedBaseResourceType, error)
FindOrCreate looks for an existing BaseResourceType and creates it if it doesn't exist. It returns a UsedBaseResourceType.
Note that if the BaseResourceType already existed, there's a chance that it will be garbage-collected before the referencing ResourceConfig can be created and used.
This method can return ErrBaseResourceTypeAlreadyExists if two concurrent FindOrCreates clashed. The caller should retry from the start of the transaction.
type BaseResourceTypeFactory ¶
type BaseResourceTypeFactory interface {
Find(name string) (*UsedBaseResourceType, bool, error)
}
func NewBaseResourceTypeFactory ¶
func NewBaseResourceTypeFactory(conn Conn) BaseResourceTypeFactory
type Build ¶
type Build interface {
ID() int
Name() string
JobID() int
JobName() string
PipelineID() int
PipelineName() string
TeamID() int
TeamName() string
Engine() string
EngineMetadata() string
PublicPlan() *json.RawMessage
Status() BuildStatus
StartTime() time.Time
EndTime() time.Time
ReapTime() time.Time
Tracker() string
IsManuallyTriggered() bool
IsScheduled() bool
IsRunning() bool
Reload() (bool, error)
AcquireTrackingLock(logger lager.Logger, interval time.Duration) (lock.Lock, bool, error)
TrackedBy(peerURL string) error
Interceptible() (bool, error)
Preparation() (BuildPreparation, bool, error)
Start(string, string, atc.Plan) (bool, error)
FinishWithError(cause error) error
Finish(BuildStatus) error
SetInterceptible(bool) error
Events(uint) (EventSource, error)
SaveEvent(event atc.Event) error
SaveInput(input BuildInput) error
SaveOutput(vr VersionedResource) error
UseInputs(inputs []BuildInput) error
Resources() ([]BuildInput, []BuildOutput, error)
GetVersionedResources() (SavedVersionedResources, error)
SaveImageResourceVersion(*UsedResourceCache) error
Pipeline() (Pipeline, bool, error)
Delete() (bool, error)
MarkAsAborted() error
AbortNotifier() (Notifier, error)
Schedule() (bool, error)
}
type BuildFactory ¶
type BuildFactory interface {
Build(int) (Build, bool, error)
VisibleBuilds([]string, Page) ([]Build, Pagination, error)
PublicBuilds(Page) ([]Build, Pagination, error)
GetAllStartedBuilds() ([]Build, error)
// TODO: move to BuildLifecycle, new interface (see WorkerLifecycle)
MarkNonInterceptibleBuilds() error
}
func NewBuildFactory ¶
func NewBuildFactory(conn Conn, lockFactory lock.LockFactory) BuildFactory
type BuildInput ¶
type BuildInput struct {
Name string
VersionedResource
FirstOccurrence bool
}
type BuildOutput ¶
type BuildOutput struct {
VersionedResource
}
type BuildPreparation ¶
type BuildPreparation struct {
BuildID int
PausedPipeline BuildPreparationStatus
PausedJob BuildPreparationStatus
MaxRunningBuilds BuildPreparationStatus
Inputs map[string]BuildPreparationStatus
InputsSatisfied BuildPreparationStatus
MissingInputReasons MissingInputReasons
}
type BuildPreparationStatus ¶
type BuildPreparationStatus string
const ( BuildPreparationStatusUnknown BuildPreparationStatus = "unknown" BuildPreparationStatusBlocking BuildPreparationStatus = "blocking" BuildPreparationStatusNotBlocking BuildPreparationStatus = "not_blocking" )
type BuildStatus ¶
type BuildStatus string
const ( BuildStatusPending BuildStatus = "pending" BuildStatusStarted BuildStatus = "started" BuildStatusAborted BuildStatus = "aborted" BuildStatusSucceeded BuildStatus = "succeeded" BuildStatusFailed BuildStatus = "failed" BuildStatusErrored BuildStatus = "errored" )
type ConfigVersion ¶
type ConfigVersion int
ConfigVersion is a sequence identifier used for compare-and-swap
type Conn ¶
type Conn interface {
Bus() NotificationsBus
EncryptionStrategy() encryption.Strategy
Ping() error
Driver() driver.Driver
Begin() (Tx, error)
Exec(query string, args ...interface{}) (sql.Result, error)
Prepare(query string) (*sql.Stmt, error)
Query(query string, args ...interface{}) (*sql.Rows, error)
QueryRow(query string, args ...interface{}) squirrel.RowScanner
SetMaxIdleConns(n int)
SetMaxOpenConns(n int)
Stats() sql.DBStats
Close() error
Name() string
}
func Open ¶
func Open(logger lager.Logger, sqlDriver string, sqlDataSource string, newKey *encryption.Key, oldKey *encryption.Key, connectionName string, lockFactory lock.LockFactory) (Conn, error)
type ConnectionSession ¶
type ConnectionSession struct {
// contains filtered or unexported fields
}
func (*ConnectionSession) Release ¶
func (session *ConnectionSession) Release()
type ConnectionTracker ¶
type ConnectionTracker struct {
// contains filtered or unexported fields
}
func NewConnectionTracker ¶
func NewConnectionTracker() *ConnectionTracker
func (*ConnectionTracker) Current ¶
func (tracker *ConnectionTracker) Current() []string
func (*ConnectionTracker) Track ¶
func (tracker *ConnectionTracker) Track() *ConnectionSession
type Container ¶
type Container interface {
ID() int
Handle() string
WorkerName() string
Metadata() ContainerMetadata
}
type ContainerMetadata ¶
type ContainerMetadata struct {
Type ContainerType
StepName string
Attempt string
WorkingDirectory string
User string
PipelineID int
JobID int
BuildID int
PipelineName string
JobName string
BuildName string
}
func (ContainerMetadata) SQLMap ¶
func (metadata ContainerMetadata) SQLMap() map[string]interface{}
func (*ContainerMetadata) ScanTargets ¶
func (metadata *ContainerMetadata) ScanTargets() []interface{}
type ContainerOwner ¶
type ContainerOwner interface {
Find(conn Conn) (sq.Eq, bool, error)
Create(tx Tx, workerName string) (map[string]interface{}, error)
}
ContainerOwner designates the data the container should reference that identifies its lifecycle. When the owner goes away, the container should be garbage collected.
func NewBuildStepContainerOwner ¶
func NewBuildStepContainerOwner( buildID int, planID atc.PlanID, ) ContainerOwner
NewBuildStepContainerOwner references a step within a build. When the build becomes non-interceptible or disappears, the container can be removed.
func NewImageCheckContainerOwner ¶
func NewImageCheckContainerOwner( container CreatingContainer, ) ContainerOwner
NewImageCheckContainerOwner references a container whose image resource this container is checking. When the referenced container transitions to another state, or disappears, the container can be removed.
func NewImageGetContainerOwner ¶
func NewImageGetContainerOwner( container CreatingContainer, ) ContainerOwner
NewImageGetContainerOwner references a container whose image resource this container is fetching. When the referenced container transitions to another state, or disappears, the container can be removed.
func NewResourceConfigCheckSessionContainerOwner ¶
func NewResourceConfigCheckSessionContainerOwner( resourceConfigCheckSession ResourceConfigCheckSession, teamID int, ) ContainerOwner
NewResourceConfigCheckSessionContainerOwner references a resource config and worker base resource type, with an expiry. When the resource config or worker base resource type disappear, or the expiry is reached, the container can be removed.
type ContainerOwnerExpiries ¶
type ContainerRepository ¶
type ContainerRepository interface {
FindOrphanedContainers() ([]CreatingContainer, []CreatedContainer, []DestroyingContainer, error)
DestroyFailedContainers() (int, error)
FindDestroyingContainers(workerName string) ([]string, error)
RemoveDestroyingContainers(workerName string, currentHandles []string) (int, error)
}
func NewContainerRepository ¶
func NewContainerRepository(conn Conn) ContainerRepository
type ContainerState ¶
type ContainerState string
type ContainerType ¶
type ContainerType string
const ( ContainerTypeCheck ContainerType = "check" ContainerTypeGet ContainerType = "get" ContainerTypePut ContainerType = "put" ContainerTypeTask ContainerType = "task" )
func ContainerTypeFromString ¶
func ContainerTypeFromString(containerType string) (ContainerType, error)
type CreatedContainer ¶
type CreatedContainer interface {
Container
Discontinue() (DestroyingContainer, error)
Destroying() (DestroyingContainer, error)
IsHijacked() bool
MarkAsHijacked() error
}
type CreatedVolume ¶
type CreatedVolume interface {
Handle() string
Path() string
Type() VolumeType
TeamID() int
CreateChildForContainer(CreatingContainer, string) (CreatingVolume, error)
Destroying() (DestroyingVolume, error)
WorkerName() string
InitializeResourceCache(*UsedResourceCache) error
InitializeTaskCache(int, string, string) error
ContainerHandle() string
ParentHandle() string
ResourceType() (*VolumeResourceType, error)
BaseResourceType() (*UsedWorkerBaseResourceType, error)
TaskIdentifier() (string, string, string, error)
}
type CreatingContainer ¶
type CreatingContainer interface {
Container
Created() (CreatedContainer, error)
Failed() (FailedContainer, error)
}
type CreatingVolume ¶
type CreatingVolume interface {
Handle() string
ID() int
Created() (CreatedVolume, error)
Failed() (FailedVolume, error)
}
type Dashboard ¶
type Dashboard []DashboardJob
type DashboardJob ¶
type DestroyingContainer ¶
type DestroyingVolume ¶
type ErrCustomResourceTypeVersionNotFound ¶
type ErrCustomResourceTypeVersionNotFound struct {
Name string
}
func (ErrCustomResourceTypeVersionNotFound) Error ¶
func (e ErrCustomResourceTypeVersionNotFound) Error() string
type ErrResourceNotFound ¶
type ErrResourceNotFound struct {
Name string
}
func (ErrResourceNotFound) Error ¶
func (e ErrResourceNotFound) Error() string
type ErrVolumeMarkCreatedFailed ¶
type ErrVolumeMarkCreatedFailed struct {
Handle string
}
func (ErrVolumeMarkCreatedFailed) Error ¶
func (e ErrVolumeMarkCreatedFailed) Error() string
type ErrVolumeMarkStateFailed ¶
type ErrVolumeMarkStateFailed struct {
State VolumeState
}
func (ErrVolumeMarkStateFailed) Error ¶
func (e ErrVolumeMarkStateFailed) Error() string
type FailedContainer ¶
type FailedVolume ¶
type FirstLoggedBuildIDDecreasedError ¶
func (FirstLoggedBuildIDDecreasedError) Error ¶
func (e FirstLoggedBuildIDDecreasedError) Error() string
type Job ¶
type Job interface {
ID() int
Name() string
Paused() bool
FirstLoggedBuildID() int
PipelineID() int
PipelineName() string
TeamID() int
TeamName() string
Config() atc.JobConfig
Tags() []string
Reload() (bool, error)
Pause() error
Unpause() error
CreateBuild() (Build, error)
Builds(page Page) ([]Build, Pagination, error)
Build(name string) (Build, bool, error)
FinishedAndNextBuild() (Build, Build, error)
UpdateFirstLoggedBuildID(newFirstLoggedBuildID int) error
EnsurePendingBuildExists() error
GetPendingBuilds() ([]Build, error)
GetIndependentBuildInputs() ([]BuildInput, error)
GetNextBuildInputs() ([]BuildInput, bool, error)
SaveNextInputMapping(inputMapping algorithm.InputMapping) error
SaveIndependentInputMapping(inputMapping algorithm.InputMapping) error
DeleteNextInputMapping() error
SetMaxInFlightReached(bool) error
GetRunningBuildsBySerialGroup(serialGroups []string) ([]Build, error)
GetNextPendingBuildBySerialGroup(serialGroups []string) (Build, bool, error)
}
type JobFactory ¶
func NewJobFactory ¶
func NewJobFactory(conn Conn, lockFactory lock.LockFactory) JobFactory
type MissingInputReasons ¶
func (MissingInputReasons) RegisterNoVersions ¶
func (mir MissingInputReasons) RegisterNoVersions(inputName string)
func (MissingInputReasons) RegisterPassedConstraint ¶
func (mir MissingInputReasons) RegisterPassedConstraint(inputName string)
func (MissingInputReasons) RegisterPinnedVersionUnavailable ¶
func (mir MissingInputReasons) RegisterPinnedVersionUnavailable(inputName string, version string)
type NotificationsBus ¶
type NotificationsBus interface {
Listen(channel string) (chan bool, error)
Notify(channel string) error
Unlisten(channel string, notify chan bool) error
Close() error
}
func NewNotificationsBus ¶
func NewNotificationsBus(listener *pq.Listener, conn *sql.DB) NotificationsBus
type Pagination ¶
type Pipeline ¶
type Pipeline interface {
ID() int
Name() string
TeamID() int
TeamName() string
Groups() atc.GroupConfigs
ConfigVersion() ConfigVersion
Public() bool
Paused() bool
ScopedName(string) string
CheckPaused() (bool, error)
Reload() (bool, error)
Causality(versionedResourceID int) ([]Cause, error)
SetResourceCheckError(Resource, error) error
SaveResourceVersions(atc.ResourceConfig, []atc.Version) error
GetResourceVersions(resourceName string, page Page) ([]SavedVersionedResource, Pagination, bool, error)
GetAllPendingBuilds() (map[string][]Build, error)
GetLatestVersionedResource(resourceName string) (SavedVersionedResource, bool, error)
GetVersionedResourceByVersion(atcVersion atc.Version, resourceName string) (SavedVersionedResource, bool, error)
VersionedResource(versionedResourceID int) (SavedVersionedResource, bool, error)
DisableVersionedResource(versionedResourceID int) error
EnableVersionedResource(versionedResourceID int) error
GetBuildsWithVersionAsInput(versionedResourceID int) ([]Build, error)
GetBuildsWithVersionAsOutput(versionedResourceID int) ([]Build, error)
Builds(page Page) ([]Build, Pagination, error)
DeleteBuildEventsByBuildIDs(buildIDs []int) error
AcquireSchedulingLock(lager.Logger, time.Duration) (lock.Lock, bool, error)
AcquireResourceCheckingLockWithIntervalCheck(
logger lager.Logger,
resourceName string,
usedResourceConfig *UsedResourceConfig,
interval time.Duration,
immediate bool,
) (lock.Lock, bool, error)
AcquireResourceTypeCheckingLockWithIntervalCheck(
logger lager.Logger,
resourceTypeName string,
usedResourceConfig *UsedResourceConfig,
interval time.Duration,
immediate bool,
) (lock.Lock, bool, error)
LoadVersionsDB() (*algorithm.VersionsDB, error)
Resource(name string) (Resource, bool, error)
Resources() (Resources, error)
ResourceTypes() (ResourceTypes, error)
ResourceType(name string) (ResourceType, bool, error)
Job(name string) (Job, bool, error)
Jobs() (Jobs, error)
Dashboard() (Dashboard, error)
Expose() error
Hide() error
Pause() error
Unpause() error
Destroy() error
Rename(string) error
CreateOneOffBuild() (Build, error)
}
type PipelineFactory ¶
type PipelineFactory interface {
VisiblePipelines([]string) ([]Pipeline, error)
AllPipelines() ([]Pipeline, error)
}
func NewPipelineFactory ¶
func NewPipelineFactory(conn Conn, lockFactory lock.LockFactory) PipelineFactory
type PipelinePausedState ¶
type PipelinePausedState string
const ( PipelinePaused PipelinePausedState = "paused" PipelineUnpaused PipelinePausedState = "unpaused" PipelineNoChange PipelinePausedState = "nochange" )
func (PipelinePausedState) Bool ¶
func (state PipelinePausedState) Bool() *bool
type Resource ¶
type Resource interface {
ID() int
Name() string
PipelineName() string
TeamName() string
Type() string
Source() atc.Source
CheckEvery() string
LastChecked() time.Time
Tags() atc.Tags
CheckError() error
Paused() bool
WebhookToken() string
FailingToCheck() bool
SetResourceConfig(int) error
Pause() error
Unpause() error
Reload() (bool, error)
}
type ResourceCache ¶
type ResourceCache struct {
ResourceConfig ResourceConfig // The resource configuration.
Version atc.Version // The version of the resource.
Params atc.Params // The params used when fetching the version.
}
ResourceCache represents an instance of a ResourceConfig's version.
A ResourceCache is created by a `get`, an `image_resource`, or a resource type in a pipeline.
ResourceCaches are garbage-collected by gc.ResourceCacheCollector.
func (ResourceCache) Find ¶
func (cache ResourceCache) Find(tx Tx) (*UsedResourceCache, bool, error)
type ResourceCacheFactory ¶
type ResourceCacheFactory interface {
FindOrCreateResourceCache(
logger lager.Logger,
resourceCacheUser ResourceCacheUser,
resourceTypeName string,
version atc.Version,
source atc.Source,
params atc.Params,
resourceTypes creds.VersionedResourceTypes,
) (*UsedResourceCache, error)
// changing resource cache to interface to allow updates on object is not feasible.
// Since we need to pass it recursively in UsedResourceConfig.
// Also, metadata will be available to us before we create resource cache so this
// method can be removed at that point. See https://github.com/concourse/concourse/issues/534
UpdateResourceCacheMetadata(*UsedResourceCache, []atc.MetadataField) error
ResourceCacheMetadata(*UsedResourceCache) (ResourceMetadataFields, error)
}
func NewResourceCacheFactory ¶
func NewResourceCacheFactory(conn Conn) ResourceCacheFactory
type ResourceCacheLifecycle ¶
type ResourceCacheLifecycle interface {
CleanUsesForFinishedBuilds(lager.Logger) error
CleanBuildImageResourceCaches(lager.Logger) error
CleanUpInvalidCaches(lager.Logger) error
}
func NewResourceCacheLifecycle ¶
func NewResourceCacheLifecycle(conn Conn) ResourceCacheLifecycle
type ResourceCacheUser ¶
type ResourceCacheUser interface {
SQLMap() map[string]interface{}
}
ResourceCacheUser designates the column to set in the resource_cache_users table.
func ForBuild ¶
func ForBuild(id int) ResourceCacheUser
func ForContainer ¶
func ForContainer(id int) ResourceCacheUser
type ResourceConfig ¶
type ResourceConfig struct {
// A resource type provided by a resource.
CreatedByResourceCache *ResourceCache
// A resource type provided by a worker.
CreatedByBaseResourceType *BaseResourceType
// The resource's source configuration.
Source atc.Source
}
ResourceConfig represents a resource type and config source.
Resources in a pipeline, resource types in a pipeline, and `image_resource` fields in a task all result in a reference to a ResourceConfig.
ResourceConfigs are garbage-collected by gc.ResourceConfigCollector.
func (ResourceConfig) Find ¶
func (resourceConfig ResourceConfig) Find(tx Tx) (*UsedResourceConfig, bool, error)
type ResourceConfigCheckSession ¶
type ResourceConfigCheckSession interface {
ID() int
ResourceConfig() *UsedResourceConfig
}
type ResourceConfigCheckSessionFactory ¶
type ResourceConfigCheckSessionFactory interface {
FindOrCreateResourceConfigCheckSession(
logger lager.Logger,
resourceType string,
source atc.Source,
resourceTypes creds.VersionedResourceTypes,
expiries ContainerOwnerExpiries,
) (ResourceConfigCheckSession, error)
}
func NewResourceConfigCheckSessionFactory ¶
func NewResourceConfigCheckSessionFactory(conn Conn, lockFactory lock.LockFactory) ResourceConfigCheckSessionFactory
type ResourceConfigCheckSessionLifecycle ¶
type ResourceConfigCheckSessionLifecycle interface {
CleanInactiveResourceConfigCheckSessions() error
CleanExpiredResourceConfigCheckSessions() error
}
func NewResourceConfigCheckSessionLifecycle ¶
func NewResourceConfigCheckSessionLifecycle(conn Conn) ResourceConfigCheckSessionLifecycle
type ResourceConfigFactory ¶
type ResourceConfigFactory interface {
FindResourceConfig(
logger lager.Logger,
resourceType string,
source atc.Source,
resourceTypes creds.VersionedResourceTypes,
) (*UsedResourceConfig, bool, error)
CleanUnreferencedConfigs() error
}
func NewResourceConfigFactory ¶
func NewResourceConfigFactory(conn Conn, lockFactory lock.LockFactory) ResourceConfigFactory
type ResourceFactory ¶
func NewResourceFactory ¶
func NewResourceFactory(conn Conn, lockFactory lock.LockFactory) ResourceFactory
type ResourceMetadataField ¶
type ResourceMetadataFields ¶
type ResourceMetadataFields []ResourceMetadataField
func NewResourceMetadataFields ¶
func NewResourceMetadataFields(atcm []atc.MetadataField) ResourceMetadataFields
func (ResourceMetadataFields) ToATCMetadata ¶
func (rmf ResourceMetadataFields) ToATCMetadata() []atc.MetadataField
type ResourceNotFoundError ¶
type ResourceNotFoundError struct {
Name string
}
func (ResourceNotFoundError) Error ¶
func (e ResourceNotFoundError) Error() string
type ResourceType ¶
type ResourceTypeNotFoundError ¶
type ResourceTypeNotFoundError struct {
Name string
}
func (ResourceTypeNotFoundError) Error ¶
func (e ResourceTypeNotFoundError) Error() string
type ResourceTypes ¶
type ResourceTypes []ResourceType
func (ResourceTypes) Configs ¶
func (resourceTypes ResourceTypes) Configs() atc.ResourceTypes
func (ResourceTypes) Deserialize ¶
func (resourceTypes ResourceTypes) Deserialize() atc.VersionedResourceTypes
type ResourceVersion ¶
type Resources ¶
type Resources []Resource
func (Resources) Configs ¶
func (resources Resources) Configs() atc.ResourceConfigs
type SavedVersionedResource ¶
type SavedVersionedResources ¶
type SavedVersionedResources []SavedVersionedResource
type Team ¶
type Team interface {
ID() int
Name() string
Admin() bool
Auth() map[string]*json.RawMessage
Delete() error
Rename(string) error
SavePipeline(
pipelineName string,
config atc.Config,
from ConfigVersion,
pausedState PipelinePausedState,
) (Pipeline, bool, error)
Pipeline(pipelineName string) (Pipeline, bool, error)
Pipelines() ([]Pipeline, error)
PublicPipelines() ([]Pipeline, error)
VisiblePipelines() ([]Pipeline, error)
OrderPipelines([]string) error
CreateOneOffBuild() (Build, error)
PrivateAndPublicBuilds(Page) ([]Build, Pagination, error)
Builds(page Page) ([]Build, Pagination, error)
SaveWorker(atcWorker atc.Worker, ttl time.Duration) (Worker, error)
Workers() ([]Worker, error)
FindContainerByHandle(string) (Container, bool, error)
FindContainersByMetadata(ContainerMetadata) ([]Container, error)
FindCheckContainers(lager.Logger, string, string, creds.VariablesFactory) ([]Container, error)
FindCreatedContainerByHandle(string) (CreatedContainer, bool, error)
FindWorkerForContainer(handle string) (Worker, bool, error)
FindWorkerForContainerByOwner(ContainerOwner) (Worker, bool, error)
FindContainerOnWorker(workerName string, owner ContainerOwner) (CreatingContainer, CreatedContainer, error)
CreateContainer(workerName string, owner ContainerOwner, meta ContainerMetadata) (CreatingContainer, error)
UpdateProviderAuth(auth map[string]*json.RawMessage) error
}
type TeamFactory ¶
type TeamFactory interface {
CreateTeam(atc.Team) (Team, error)
FindTeam(string) (Team, bool, error)
GetTeams() ([]Team, error)
GetByID(teamID int) Team
CreateDefaultTeamIfNotExists() (Team, error)
}
func NewTeamFactory ¶
func NewTeamFactory(conn Conn, lockFactory lock.LockFactory) TeamFactory
type Tx ¶
type Tx interface {
Commit() error
Exec(query string, args ...interface{}) (sql.Result, error)
Prepare(query string) (*sql.Stmt, error)
Query(query string, args ...interface{}) (*sql.Rows, error)
QueryRow(query string, args ...interface{}) squirrel.RowScanner
Rollback() error
Stmt(stmt *sql.Stmt) *sql.Stmt
}
type UsedBaseResourceType ¶
UsedBaseResourceType is created whenever a ResourceConfig is used, either for a build, a resource in the pipeline, or a resource type in the pipeline.
So long as the UsedBaseResourceType's ID is referenced by a ResourceConfig that is in use, this guarantees that the BaseResourceType will not be removed. That is to say that its "Use" is vicarious.
type UsedResourceCache ¶
type UsedResourceCache struct {
ID int
ResourceConfig *UsedResourceConfig
Version atc.Version
}
UsedResourceCache is created whenever a ResourceCache is Created and/or Used.
So long as the UsedResourceCache exists, the underlying ResourceCache can not be removed.
UsedResourceCaches become unused by the gc.ResourceCacheCollector, which may then lead to the ResourceCache being garbage-collected.
See FindOrCreateForBuild, FindOrCreateForResource, and FindOrCreateForResourceType for more information on when it becomes unused.
func (*UsedResourceCache) BaseResourceType ¶
func (cache *UsedResourceCache) BaseResourceType() *UsedBaseResourceType
type UsedResourceConfig ¶
type UsedResourceConfig struct {
ID int
CreatedByResourceCache *UsedResourceCache
CreatedByBaseResourceType *UsedBaseResourceType
}
UsedResourceConfig is created whenever a ResourceConfig is Created and/or Used.
So long as the UsedResourceConfig exists, the underlying ResourceConfig can not be removed.
UsedResourceConfigs become unused by the gc.ResourceConfigCollector, which may then lead to the ResourceConfig being garbage-collected.
See FindOrCreateForBuild, FindOrCreateForResource, and FindOrCreateForResourceType for more information on when it becomes unused.
XXX: don't call this Used
func (*UsedResourceConfig) OriginBaseResourceType ¶
func (resourceConfig *UsedResourceConfig) OriginBaseResourceType() *UsedBaseResourceType
type UsedWorkerResourceCache ¶
type UsedWorkerResourceCache struct {
ID int
}
type UsedWorkerResourceCerts ¶
type UsedWorkerResourceCerts struct {
ID int
}
type UsedWorkerResourceType ¶
type UsedWorkerResourceType struct {
ID int
Worker Worker
UsedBaseResourceType *UsedBaseResourceType
}
type UsedWorkerTaskCache ¶
type VersionedResource ¶
type VersionedResource struct {
Resource string
Type string
Version ResourceVersion
Metadata ResourceMetadataFields
}
type VolumeRepository ¶
type VolumeRepository interface {
GetTeamVolumes(teamID int) ([]CreatedVolume, error)
CreateContainerVolume(int, string, CreatingContainer, string) (CreatingVolume, error)
FindContainerVolume(int, string, CreatingContainer, string) (CreatingVolume, CreatedVolume, error)
FindBaseResourceTypeVolume(int, *UsedWorkerBaseResourceType) (CreatingVolume, CreatedVolume, error)
CreateBaseResourceTypeVolume(int, *UsedWorkerBaseResourceType) (CreatingVolume, error)
FindResourceCacheVolume(string, *UsedResourceCache) (CreatedVolume, bool, error)
FindTaskCacheVolume(teamID int, uwtc *UsedWorkerTaskCache) (CreatingVolume, CreatedVolume, error)
CreateTaskCacheVolume(teamID int, uwtc *UsedWorkerTaskCache) (CreatingVolume, error)
FindResourceCertsVolume(workerName string, uwrc *UsedWorkerResourceCerts) (CreatingVolume, CreatedVolume, error)
CreateResourceCertsVolume(workerName string, uwrc *UsedWorkerResourceCerts) (CreatingVolume, error)
FindVolumesForContainer(CreatedContainer) ([]CreatedVolume, error)
GetOrphanedVolumes(workerName string) ([]CreatedVolume, []string, error)
DestroyFailedVolumes() (int, error)
GetDestroyingVolumes(workerName string) ([]string, error)
FindCreatedVolume(handle string) (CreatedVolume, bool, error)
RemoveDestroyingVolumes(workerName string, handles []string) (int, error)
}
func NewVolumeRepository ¶
func NewVolumeRepository(conn Conn) VolumeRepository
type VolumeResourceType ¶
type VolumeResourceType struct {
WorkerBaseResourceType *UsedWorkerBaseResourceType
ResourceType *VolumeResourceType
Version atc.Version
}
type VolumeState ¶
type VolumeState string
const ( VolumeStateCreating VolumeState = "creating" VolumeStateCreated VolumeState = "created" VolumeStateDestroying VolumeState = "destroying" VolumeStateFailed VolumeState = "failed" )
type VolumeType ¶
type VolumeType string
const ( VolumeTypeContainer VolumeType = "container" VolumeTypeResource VolumeType = "resource" VolumeTypeResourceType VolumeType = "resource-type" VolumeTypeResourceCerts VolumeType = "resource-certs" VolumeTypeTaskCache VolumeType = "task-cache" VolumeTypeUknown VolumeType = "unknown" // for migration to life )
type Worker ¶
type Worker interface {
Name() string
Version() *string
State() WorkerState
GardenAddr() *string
BaggageclaimURL() *string
CertsPath() *string
ResourceCerts() (*UsedWorkerResourceCerts, bool, error)
HTTPProxyURL() string
HTTPSProxyURL() string
NoProxy() string
ActiveContainers() int
ResourceTypes() []atc.WorkerResourceType
Platform() string
Tags() []string
TeamID() int
TeamName() string
StartTime() int64
ExpiresAt() time.Time
Reload() (bool, error)
Land() error
Retire() error
Prune() error
Delete() error
}
type WorkerBaseResourceType ¶
func (WorkerBaseResourceType) Find ¶
func (workerBaseResourceType WorkerBaseResourceType) Find(runner sq.Runner) (*UsedWorkerBaseResourceType, bool, error)
type WorkerBaseResourceTypeAlreadyExistsError ¶
type WorkerBaseResourceTypeAlreadyExistsError struct {
WorkerName string
BaseResourceTypeName string
}
func (WorkerBaseResourceTypeAlreadyExistsError) Error ¶
func (e WorkerBaseResourceTypeAlreadyExistsError) Error() string
type WorkerBaseResourceTypeFactory ¶
type WorkerBaseResourceTypeFactory interface {
Find(name string, worker Worker) (*UsedWorkerBaseResourceType, bool, error)
}
func NewWorkerBaseResourceTypeFactory ¶
func NewWorkerBaseResourceTypeFactory(conn Conn) WorkerBaseResourceTypeFactory
type WorkerFactory ¶
type WorkerFactory interface {
GetWorker(name string) (Worker, bool, error)
SaveWorker(atcWorker atc.Worker, ttl time.Duration) (Worker, error)
HeartbeatWorker(worker atc.Worker, ttl time.Duration) (Worker, error)
Workers() ([]Worker, error)
VisibleWorkers([]string) ([]Worker, error)
}
func NewWorkerFactory ¶
func NewWorkerFactory(conn Conn) WorkerFactory
type WorkerLifecycle ¶
type WorkerLifecycle interface {
StallUnresponsiveWorkers() ([]string, error)
LandFinishedLandingWorkers() ([]string, error)
DeleteFinishedRetiringWorkers() ([]string, error)
}
func NewWorkerLifecycle ¶
func NewWorkerLifecycle(conn Conn) WorkerLifecycle
type WorkerResourceCache ¶
type WorkerResourceCache struct {
WorkerName string
ResourceCache *UsedResourceCache
}
func (WorkerResourceCache) Find ¶
func (workerResourceCache WorkerResourceCache) Find(runner sq.Runner) (*UsedWorkerResourceCache, bool, error)
func (WorkerResourceCache) FindOrCreate ¶
func (workerResourceCache WorkerResourceCache) FindOrCreate(tx Tx) (*UsedWorkerResourceCache, error)
type WorkerResourceCerts ¶
func (WorkerResourceCerts) Find ¶
func (workerResourceCerts WorkerResourceCerts) Find(runner sq.BaseRunner) (*UsedWorkerResourceCerts, bool, error)
func (WorkerResourceCerts) FindOrCreate ¶
func (workerResourceCerts WorkerResourceCerts) FindOrCreate(tx Tx) (*UsedWorkerResourceCerts, error)
type WorkerResourceType ¶
type WorkerResourceType struct {
Worker Worker
Image string // The path to the image, e.g. '/opt/concourse/resources/git'.
Version string // The version of the image, e.g. a SHA of the rootfs.
BaseResourceType *BaseResourceType
}
func (WorkerResourceType) FindOrCreate ¶
func (wrt WorkerResourceType) FindOrCreate(tx Tx) (*UsedWorkerResourceType, error)
type WorkerState ¶
type WorkerState string
type WorkerTaskCache ¶
func (WorkerTaskCache) FindOrCreate ¶
func (wtc WorkerTaskCache) FindOrCreate( tx Tx, ) (*UsedWorkerTaskCache, error)
type WorkerTaskCacheFactory ¶
type WorkerTaskCacheFactory interface {
Find(jobID int, stepName string, path string, workerName string) (*UsedWorkerTaskCache, bool, error)
FindOrCreate(jobID int, stepName string, path string, workerName string) (*UsedWorkerTaskCache, error)
}
func NewWorkerTaskCacheFactory ¶
func NewWorkerTaskCacheFactory(conn Conn) WorkerTaskCacheFactory
Source Files
¶
- base_resource_type.go
- base_resource_type_factory.go
- build.go
- build_event_source.go
- build_factory.go
- build_preparation.go
- connection_retrying_driver.go
- connection_tracker.go
- container.go
- container_metadata.go
- container_owner.go
- container_repository.go
- dashboard_job.go
- job.go
- job_factory.go
- log_conn.go
- notifications_bus.go
- notifier.go
- open.go
- pagination.go
- pipe.go
- pipeline.go
- pipeline_factory.go
- pipeline_locks.go
- pipeline_resource.go
- psql.go
- resource.go
- resource_cache.go
- resource_cache_factory.go
- resource_cache_lifecycle.go
- resource_cache_user.go
- resource_config.go
- resource_config_check_session.go
- resource_config_check_session_lifecycle.go
- resource_config_factory.go
- resource_factory.go
- resource_type.go
- safe_find_or_create.go
- scannable.go
- team.go
- team_factory.go
- volume.go
- volume_repository.go
- worker.go
- worker_base_resource_type.go
- worker_base_resource_type_factory.go
- worker_factory.go
- worker_lifecycle.go
- worker_resource_cache.go
- worker_resource_certs.go
- worker_resource_type.go
- worker_task_cache_factory.go
Directories
¶
| Path | Synopsis |
|---|---|
|
Code generated by counterfeiter.
|
Code generated by counterfeiter. |
|
encryptionfakes
Code generated by counterfeiter.
|
Code generated by counterfeiter. |
|
lockfakes
Code generated by counterfeiter.
|
Code generated by counterfeiter. |
|
migrationfakes
Code generated by counterfeiter.
|
Code generated by counterfeiter. |