com.atlassian.bamboo.buildqueue.manager
Interface LocalAgentManager

All Known Implementing Classes:
LocalAgentManagerImpl

public interface LocalAgentManager

Manages the LocalBuildAgent and PipelineDefinition funnily enough. The class is fully synchronized.


Method Summary
 void abandonBuild(BuildAgent remoteAgent, boolean agentStartingUp)
           
 boolean allowNewElasticAgent()
          Allow an elastic agent to register and come online? Based on licensing restrictions.
 boolean allowNewElasticAgents(int numOfAgentsToCreate)
          Allow a specified number of elastic agents to register and come online? Based on licensing restrictions.
 boolean allowNewLocalAgent()
          Allow a local agent to come online? Based on licensing restrictions.
 boolean allowNewRemoteAgent()
          Allow a remote agent to register and come online? Based on licensing restrictions.
 boolean allowNewRemoteAgents(int numAgentsToCreate)
          Allow a specified number of remote agents to register and come online? Based on licensing restrictions.
 boolean checkPipelinesAreDisabled()
           
 void createDefaultAgent()
          sets up a default local agent if no local agent exists
 void createLocalAgent(LocalAgentDefinition pipelineDefinition)
          Create a new local agent.
 void disableAllAgents()
          Disable all pipelines
 void enableAllAgents()
          Enable all pipelines
<T> T
executeIfIdle(java.util.concurrent.Callable<T> callable)
          Executes a given Callable only if no builds are in progress.
 java.util.Map<java.lang.Long,PipelineDefinition> findAllAgentsForAgentIds(java.util.Collection<java.lang.Long> agentIds)
          Returns a Map of PipelineDefinitions keyed by their id
 java.util.Collection<BuildAgent> getActiveAndEnabledAgents()
          Returns agents that are enabled and online
 BuildAgent getAgent(long agentId)
           
 PipelineDefinition getAgentDefinition(java.lang.Long agentId)
           
 PipelineDefinition getAgentDefinitionByName(java.lang.String name)
          Retrieve a pipelineDefinition by name.
 java.util.List<PipelineDefinition> getAgentDefinitionsWithNameLike(java.lang.String likeName)
          Retrun a list of agents whose name is like the provided string.
 java.util.List<BuildAgent> getAllAgents()
           
 java.util.List<ElasticAgentDefinition> getAllElasticAgentDefinitions()
          Retrieve all elastic agent definitions from db.
 java.util.List<LocalBuildAgent> getAllLocalAgents()
          Returns all LocalBuildAgent objects
 java.util.List<BuildAgent> getAllNonElasticAgents()
           
 java.util.List<PipelineDefinition> getAllPersistedAgentDefinitions()
          Retrieves a list of all agent definitions stored in the database.
 java.util.List<BuildAgent> getAllRemoteAgents()
          Gets all remote agents in the system.
 java.util.List<BuildAgent> getAllRemoteAgents(boolean onlineOnly)
          Get remote agents.
 java.util.Collection<BuildAgent> getBusyBuildAgents()
          Gets a collection agents that are currently building or cancelling a build
 java.util.Collection<BuildAgent> getExecutableAgents(RequirementSet requirementSet, boolean includeDisabled)
          Gets all agents which can run a given RequirementSet
 ExecutableAgentsMatrix getExecutableAgentsMatrix(RequirementSet requirementSet, boolean includeDisabled)
          Returns a matrix of how many agents match each requirement in the set.
 java.util.Collection<ElasticImageConfiguration> getExecutableImages(RequirementSet requirementSet)
          Retrieves a list of all images which satisfy the given requirements set.
 LocalBuildAgent getLocalAgent(long pipelineId)
          Returns the pipeline that matches the passed id
 java.util.List<BuildAgent> getOnlineElasticAgents()
          Retrieve all online elastic build agents.
 void initAgents()
          Inits the local agents Must be ran before any other methods.
 void removeAgent(long agentId)
          Removes the passed agent
 void saveElasticPipeline(ElasticAgentDefinition pipelineDefinition)
          Stores the elastic PipelineDefinition
 void savePipeline(PipelineDefinition pipelineDefinition)
          Stores the PipelineDefinition.
 void startLocalAgents()
          Starts all current LocalBuildAgent objects
 void stopAgent(BuildAgent agent)
          Performs any other operations required when an agent goes offline, such as updating the status and shutdown time.
 void stopLocalAgents()
          Stops all LocalBuildAgent
 

Method Detail

createDefaultAgent

void createDefaultAgent()
sets up a default local agent if no local agent exists


initAgents

void initAgents()
Inits the local agents Must be ran before any other methods.


startLocalAgents

void startLocalAgents()
Starts all current LocalBuildAgent objects


stopLocalAgents

void stopLocalAgents()
                     throws java.lang.InterruptedException
Stops all LocalBuildAgent

Throws:
java.lang.InterruptedException

getAllLocalAgents

@NotNull
java.util.List<LocalBuildAgent> getAllLocalAgents()
Returns all LocalBuildAgent objects

Returns:
A copied collection of LocalBuildAgent objects, or an empty collection if none exists.

getAllRemoteAgents

@NotNull
java.util.List<BuildAgent> getAllRemoteAgents()
Gets all remote agents in the system. They can be offline.

Returns:
all remote agents.

getAllRemoteAgents

@NotNull
java.util.List<BuildAgent> getAllRemoteAgents(boolean onlineOnly)
Get remote agents.

Parameters:
onlineOnly - - only return those agents which are online currently.
Returns:

getAllElasticAgentDefinitions

@NotNull
java.util.List<ElasticAgentDefinition> getAllElasticAgentDefinitions()
Retrieve all elastic agent definitions from db.

Returns:
list of ElasticAgents

getOnlineElasticAgents

@NotNull
java.util.List<BuildAgent> getOnlineElasticAgents()
Retrieve all online elastic build agents.

Returns:

getAllAgents

@NotNull
java.util.List<BuildAgent> getAllAgents()

getAllNonElasticAgents

@NotNull
java.util.List<BuildAgent> getAllNonElasticAgents()

getBusyBuildAgents

@NotNull
java.util.Collection<BuildAgent> getBusyBuildAgents()
Gets a collection agents that are currently building or cancelling a build

Returns:
Collection of BuildAgent

getActiveAndEnabledAgents

@NotNull
java.util.Collection<BuildAgent> getActiveAndEnabledAgents()
Returns agents that are enabled and online

Returns:
Collection of BuildAgent

getExecutableAgents

@NotNull
java.util.Collection<BuildAgent> getExecutableAgents(RequirementSet requirementSet,
                                                             boolean includeDisabled)
Gets all agents which can run a given RequirementSet

Returns:

getExecutableImages

@NotNull
java.util.Collection<ElasticImageConfiguration> getExecutableImages(@NotNull
                                                                            RequirementSet requirementSet)
Retrieves a list of all images which satisfy the given requirements set.

Parameters:
requirementSet - to check
Returns:
Any configured ElasticImageConfiguration which can build the requirement set (currently this can be 1 or none)

savePipeline

void savePipeline(PipelineDefinition pipelineDefinition)
Stores the PipelineDefinition. Updates any caches so calls to getLocalAgent(long) will return the LocalBuildAgent returns with the new definition

Parameters:
pipelineDefinition - - Must not be null

saveElasticPipeline

void saveElasticPipeline(@NotNull
                         ElasticAgentDefinition pipelineDefinition)
Stores the elastic PipelineDefinition

Parameters:
pipelineDefinition - - Must not be null

getLocalAgent

LocalBuildAgent getLocalAgent(long pipelineId)
Returns the pipeline that matches the passed id

Parameters:
pipelineId -
Returns:
Matching LocalBuildAgent object. Null if pipeline does not exist

getAgent

@Nullable
BuildAgent getAgent(long agentId)

getAgentDefinition

@Nullable
PipelineDefinition getAgentDefinition(@NotNull
                                               java.lang.Long agentId)

findAllAgentsForAgentIds

java.util.Map<java.lang.Long,PipelineDefinition> findAllAgentsForAgentIds(@NotNull
                                                                          java.util.Collection<java.lang.Long> agentIds)
Returns a Map of PipelineDefinitions keyed by their id

Parameters:
agentIds -
Returns:
agentMap

disableAllAgents

void disableAllAgents()
Disable all pipelines


enableAllAgents

void enableAllAgents()
Enable all pipelines


checkPipelinesAreDisabled

boolean checkPipelinesAreDisabled()
Returns:
whether or not all pipelines are disabled

executeIfIdle

<T> T executeIfIdle(java.util.concurrent.Callable<T> callable)
                throws java.lang.Exception

Executes a given Callable only if no builds are in progress. Builds are prevented from starting while the Callable executes.

Parameters:
callable - the Callable to be executed
Returns:
the result of callable
Throws:
BambooBusyException - if builds are in progress
java.lang.Exception - if thrown by callable

createLocalAgent

void createLocalAgent(LocalAgentDefinition pipelineDefinition)
                      throws BambooLicenseException
Create a new local agent.

Parameters:
pipelineDefinition -
Throws:
BambooLicenseException

removeAgent

void removeAgent(long agentId)
                 throws java.util.concurrent.TimeoutException
Removes the passed agent

Parameters:
agentId -
Throws:
java.util.concurrent.TimeoutException

getExecutableAgentsMatrix

@NotNull
ExecutableAgentsMatrix getExecutableAgentsMatrix(@NotNull
                                                         RequirementSet requirementSet,
                                                         boolean includeDisabled)
Returns a matrix of how many agents match each requirement in the set. Also adds the total number of agents that matches the set

Parameters:
requirementSet -
includeDisabled -
Returns:

allowNewRemoteAgent

boolean allowNewRemoteAgent()
Allow a remote agent to register and come online? Based on licensing restrictions. The method takes into consideration the number of agents "reserved" for pending elastic instances.

Returns:
true if a new agent is allowed, otherise false

allowNewRemoteAgents

boolean allowNewRemoteAgents(int numAgentsToCreate)
Allow a specified number of remote agents to register and come online? Based on licensing restrictions. The method takes into consideration the number of agents "reserved" for pending elastic instances.

Returns:
true if a specified number agents is allowed, otherise false

allowNewElasticAgent

boolean allowNewElasticAgent()
Allow an elastic agent to register and come online? Based on licensing restrictions.

Returns:
true if a new agent is allowed, otherise false

allowNewElasticAgents

boolean allowNewElasticAgents(int numOfAgentsToCreate)
Allow a specified number of elastic agents to register and come online? Based on licensing restrictions.

Returns:
true if a specified number agents is allowed, otherise false

allowNewLocalAgent

boolean allowNewLocalAgent()
Allow a local agent to come online? Based on licensing restrictions.

Returns:
true if a new local agent is allowed, otherwise false

stopAgent

void stopAgent(@NotNull
               BuildAgent agent)
Performs any other operations required when an agent goes offline, such as updating the status and shutdown time.

Parameters:
agent - to be stopped

getAllPersistedAgentDefinitions

java.util.List<PipelineDefinition> getAllPersistedAgentDefinitions()
Retrieves a list of all agent definitions stored in the database.

Returns:
List

abandonBuild

void abandonBuild(@NotNull
                  BuildAgent remoteAgent,
                  boolean agentStartingUp)

getAgentDefinitionByName

@Nullable
PipelineDefinition getAgentDefinitionByName(@NotNull
                                                     java.lang.String name)
Retrieve a pipelineDefinition by name. Names should be unique.

Parameters:
name - of the agent to find
Returns:
the agent that has the given name.

getAgentDefinitionsWithNameLike

@NotNull
java.util.List<PipelineDefinition> getAgentDefinitionsWithNameLike(@NotNull
                                                                           java.lang.String likeName)
Retrun a list of agents whose name is like the provided string. Uses hibernate's "like" so % to mark wild card.

Parameters:
likeName - the string to match
Returns:
List of Pipeline Definitions


Copyright © 2010 Atlassian. All Rights Reserved.