本文整理汇总了Golang中github.com/concourse/atc/worker.Worker类的典型用法代码示例。如果您正苦于以下问题:Golang Worker类的具体用法?Golang Worker怎么用?Golang Worker使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Worker类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: VolumeOn
func (src *containerSource) VolumeOn(w worker.Worker) (baggageclaim.Volume, bool, error) {
if baggageclaimClient, found := w.VolumeManager(); len(src.volumeHandle) > 0 && found {
volume, found, err := baggageclaimClient.LookupVolume(src.logger, src.volumeHandle)
if err != nil {
return nil, false, err
}
return volume, found, nil
}
return nil, false, nil
}
示例2: VolumeOn
// VolumeOn locates the cache for the GetStep's resource and version on the
// given worker.
func (step *GetStep) VolumeOn(worker worker.Worker) (baggageclaim.Volume, bool, error) {
vm, hasVM := worker.VolumeManager()
if !hasVM {
return nil, false, nil
}
return step.cacheIdentifier.FindOn(step.logger.Session("volume-on"), vm)
}
示例3: InitWithSources
func (tracker *tracker) InitWithSources(
logger lager.Logger,
metadata Metadata,
session Session,
typ ResourceType,
tags atc.Tags,
sources map[string]ArtifactSource,
) (Resource, []string, error) {
logger = logger.Session("init-with-sources")
logger.Debug("start")
defer logger.Debug("done")
container, found, err := tracker.workerClient.FindContainerForIdentifier(logger, session.ID)
if err != nil {
logger.Error("failed-to-look-for-existing-container", err)
return nil, nil, err
}
if found {
logger.Debug("found-existing-container", lager.Data{"container": container.Handle()})
missingNames := []string{}
for name, _ := range sources {
missingNames = append(missingNames, name)
}
return NewResource(container), missingNames, nil
}
resourceSpec := worker.ResourceTypeContainerSpec{
Type: string(typ),
Ephemeral: session.Ephemeral,
Tags: tags,
Env: metadata.Env(),
}
compatibleWorkers, err := tracker.workerClient.AllSatisfying(resourceSpec.WorkerSpec())
if err != nil {
return nil, nil, err
}
// find the worker with the most volumes
mounts := []worker.VolumeMount{}
missingSources := []string{}
var chosenWorker worker.Worker
for _, w := range compatibleWorkers {
candidateMounts := []worker.VolumeMount{}
missing := []string{}
for name, source := range sources {
volume, found, err := source.VolumeOn(w)
if err != nil {
return nil, nil, err
}
if found {
candidateMounts = append(candidateMounts, worker.VolumeMount{
Volume: volume,
MountPath: ResourcesDir("put/" + name),
})
} else {
missing = append(missing, name)
}
}
if len(candidateMounts) >= len(mounts) {
for _, mount := range mounts {
mount.Volume.Release(0)
}
mounts = candidateMounts
missingSources = missing
chosenWorker = w
} else {
for _, mount := range candidateMounts {
mount.Volume.Release(0)
}
}
}
resourceSpec.Mounts = mounts
container, err = chosenWorker.CreateContainer(logger, session.ID, resourceSpec)
if err != nil {
logger.Error("failed-to-create-container", err)
return nil, nil, err
}
logger.Info("created", lager.Data{"container": container.Handle()})
for _, mount := range mounts {
mount.Volume.Release(0)
}
return NewResource(container), missingSources, nil
}
示例4: VolumeOn
func (src *containerSource) VolumeOn(w worker.Worker) (worker.Volume, bool, error) {
return w.LookupVolume(src.logger, src.volumeHandle)
}