Class VirtualAgentDistributor
- java.lang.Object
-
- jetbrains.buildServer.serverSide.impl.buildDistribution.VirtualAgentDistributor
-
- All Implemented Interfaces:
Distributor<VirtualAgent>
public class VirtualAgentDistributor extends Object implements Distributor<VirtualAgent>
Distributes queued builds between virtual agents.The main method is
getCompatibleCandidates(jetbrains.buildServer.serverSide.buildDistribution.QueuedBuildInfo, java.util.Set<jetbrains.buildServer.serverSide.impl.virtualAgent.VirtualAgent>)
: for each queued build it looks for the best virtual agent - that is starting (VirtualAgent
) or that can start (StartableAgentType
); it doesn't look for already started agents (that is assumed to done by other distributors).- Author:
- Eugene Petrenko, Leonid Bushuev
-
-
Constructor Summary
Constructors Constructor Description VirtualAgentDistributor(Supplier<Collection<StartableAgentType>> startableAgentsSupplier, BuildAgentsComparatorProvider comparatorsProvider, ExtensionHolder extensionHolder, boolean emulationMode)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
canProcessQueuedBuild(QueuedBuildInfo qbi, Map<QueuedBuildInfo,WaitReason> waitReasons)
Distributor could skip a buildWaitReason
filterAvailableAgents(BuildDistributorInput distributorInput, QueuedBuildInfo queuedBuild, List<VirtualAgent> canRunOn, Map<QueuedBuildInfo,SBuildAgent> distributedBuilds, Map<String,Object> customData)
Could filter available agents todo why it's not performed in getCompatibleCandidates()?CompatibleAgentsResult<VirtualAgent>
getCompatibleCandidates(QueuedBuildInfo queuedBuild, Set<VirtualAgent> distributed)
Should return an incapsulated list of compatible agents or a WaitReason why the build cannot be startedString
getName()
void
sortAvailableAgents(List<VirtualAgent> canRunOn, QueuedBuildInfo queuedBuildInfo)
Sorts agents available for the queued build, so that the most preferred agents were first in the list
-
-
-
Constructor Detail
-
VirtualAgentDistributor
public VirtualAgentDistributor(@NotNull Supplier<Collection<StartableAgentType>> startableAgentsSupplier, @NotNull BuildAgentsComparatorProvider comparatorsProvider, @NotNull ExtensionHolder extensionHolder, boolean emulationMode)
-
-
Method Detail
-
getCompatibleCandidates
@NotNull public CompatibleAgentsResult<VirtualAgent> getCompatibleCandidates(@NotNull QueuedBuildInfo queuedBuild, @NotNull Set<VirtualAgent> distributed)
Description copied from interface:Distributor
Should return an incapsulated list of compatible agents or a WaitReason why the build cannot be started- Specified by:
getCompatibleCandidates
in interfaceDistributor<VirtualAgent>
- Returns:
- CompatibleAgentsResult
-
filterAvailableAgents
public WaitReason filterAvailableAgents(@NotNull BuildDistributorInput distributorInput, @NotNull QueuedBuildInfo queuedBuild, @NotNull List<VirtualAgent> canRunOn, @NotNull Map<QueuedBuildInfo,SBuildAgent> distributedBuilds, @NotNull Map<String,Object> customData)
Description copied from interface:Distributor
Could filter available agents todo why it's not performed in getCompatibleCandidates()?- Specified by:
filterAvailableAgents
in interfaceDistributor<VirtualAgent>
- Returns:
-
sortAvailableAgents
public void sortAvailableAgents(@NotNull List<VirtualAgent> canRunOn, @NotNull QueuedBuildInfo queuedBuildInfo)
Description copied from interface:Distributor
Sorts agents available for the queued build, so that the most preferred agents were first in the list- Specified by:
sortAvailableAgents
in interfaceDistributor<VirtualAgent>
-
canProcessQueuedBuild
public boolean canProcessQueuedBuild(@NotNull QueuedBuildInfo qbi, @NotNull Map<QueuedBuildInfo,WaitReason> waitReasons)
Description copied from interface:Distributor
Distributor could skip a build- Specified by:
canProcessQueuedBuild
in interfaceDistributor<VirtualAgent>
- Returns:
- false if build should be skipped
-
getName
@NotNull public String getName()
- Specified by:
getName
in interfaceDistributor<VirtualAgent>
-
-