Class ElasticFunctionalityFacadeImpl
- java.lang.Object
-
- com.atlassian.bamboo.agent.elastic.server.ElasticFunctionalityFacadeImpl
-
- All Implemented Interfaces:
ElasticFunctionalityFacade
public class ElasticFunctionalityFacadeImpl extends Object implements ElasticFunctionalityFacade
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.atlassian.bamboo.agent.elastic.server.ElasticFunctionalityFacade
ElasticFunctionalityFacade.Ec2PrivateKeyValidationStatus
-
-
Field Summary
-
Fields inherited from interface com.atlassian.bamboo.agent.elastic.server.ElasticFunctionalityFacade
DEFAULT_ALLOWED_AGENTS
-
-
Constructor Summary
Constructors Constructor Description ElasticFunctionalityFacadeImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddElasticLogEntry(org.apache.log4j.Logger log, String logEntry)voidaddElasticLogEntry(org.apache.logging.log4j.Logger log, String logEntry)voidadjustElasticInstanceNumbers(@NotNull ElasticInstanceSchedule instanceSchedule)Given theElasticInstanceSchedulestartup or bring down the correct number of agentsprotected voidattemptShutdownInstances(Collection<RemoteElasticInstance> instances, int agentsToShutdown, ElasticImageConfiguration elasticImageConfiguration)voidcleanupCredentials()Cleanup EC2 credentials and disable EC2 support@NotNull StringgetKeyPairName()intgetMaxConcurrentInstances()@NotNull io.atlassian.fugue.Either<ElasticFunctionalityFacade.Ec2PrivateKeyValidationStatus,Optional<String>>getPassword(RemoteElasticInstance instance)@NotNull StringgetPkFileLocation()@NotNull io.atlassian.fugue.Either<ElasticFunctionalityFacade.Ec2PrivateKeyValidationStatus,File>getPrivateKeyLocation()Returns the location of the AWS private keybooleanisElasticSupportEnabled()booleanisElasticSupportPossible(@NotNull ErrorCollection errorCollection)voidpersistTunnelDataOfInstance(@NotNull ElasticAgentDefinition pipelineDefinition)Persist data related to tunnel configuration of an elastic instance.voidpostConstruct()voidrecheckElasticSupportEnabledFlag()voidrestoreAgent(@NotNull ElasticAgentDefinition elasticAgentDefinition, @NotNull com.amazonaws.services.ec2.model.Instance instance, @NotNull com.atlassian.aws.AWSAccount awsAccount)voidsetElasticSupportEnabled(boolean elasticSupportEnabled)Enable/disable Elastic Bamboo functionalityvoidshutdownAllInstances()voidshutdownInstance(@NotNull RemoteElasticInstance elasticInstance)voidshutdownInstance(String instanceId)voidstartupAgents(@NotNull Collection<ElasticImageConfiguration> elasticImageConfigurations)Starts the given number of agentsvoidupdateAgentPendingStatus(@NotNull String instanceId)Set the agent pending status to true for the given instance idbooleanvalidateAgentCreation(int numAgentsRequired, ErrorCollection errorCollection)Validates whether the requested number of agents can be created and adds any errors to the error collection.
-
-
-
Method Detail
-
postConstruct
@PostConstruct public void postConstruct()
-
recheckElasticSupportEnabledFlag
public void recheckElasticSupportEnabledFlag()
- Specified by:
recheckElasticSupportEnabledFlagin interfaceElasticFunctionalityFacade
-
shutdownInstance
public void shutdownInstance(@NotNull @NotNull RemoteElasticInstance elasticInstance)- Specified by:
shutdownInstancein interfaceElasticFunctionalityFacade
-
shutdownInstance
public void shutdownInstance(String instanceId) throws com.atlassian.aws.AWSException
- Specified by:
shutdownInstancein interfaceElasticFunctionalityFacade- Throws:
com.atlassian.aws.AWSException
-
shutdownAllInstances
public void shutdownAllInstances()
- Specified by:
shutdownAllInstancesin interfaceElasticFunctionalityFacade
-
startupAgents
@Transactional public void startupAgents(@NotNull @NotNull Collection<ElasticImageConfiguration> elasticImageConfigurations) throws com.atlassian.aws.AWSExceptionStarts the given number of agents- Specified by:
startupAgentsin interfaceElasticFunctionalityFacade- Throws:
com.atlassian.aws.AWSException
-
restoreAgent
public void restoreAgent(@NotNull @NotNull ElasticAgentDefinition elasticAgentDefinition, @NotNull @NotNull com.amazonaws.services.ec2.model.Instance instance, @NotNull @NotNull com.atlassian.aws.AWSAccount awsAccount)- Specified by:
restoreAgentin interfaceElasticFunctionalityFacade
-
persistTunnelDataOfInstance
@Nullable public void persistTunnelDataOfInstance(@NotNull @NotNull ElasticAgentDefinition pipelineDefinition)Description copied from interface:ElasticFunctionalityFacadePersist data related to tunnel configuration of an elastic instance.- Specified by:
persistTunnelDataOfInstancein interfaceElasticFunctionalityFacade
-
isElasticSupportEnabled
public boolean isElasticSupportEnabled()
- Specified by:
isElasticSupportEnabledin interfaceElasticFunctionalityFacade- Returns:
- true, if elastic support is turned on
-
isElasticSupportPossible
public boolean isElasticSupportPossible(@NotNull @NotNull ErrorCollection errorCollection)- Specified by:
isElasticSupportPossiblein interfaceElasticFunctionalityFacade- Returns:
- true, if all preconditions for turning elastic support on are met
-
setElasticSupportEnabled
public void setElasticSupportEnabled(boolean elasticSupportEnabled)
Description copied from interface:ElasticFunctionalityFacadeEnable/disable Elastic Bamboo functionality- Specified by:
setElasticSupportEnabledin interfaceElasticFunctionalityFacade- Parameters:
elasticSupportEnabled- Specifies if Elastc Baboo shall be enabled or disabled.
-
validateAgentCreation
public boolean validateAgentCreation(int numAgentsRequired, ErrorCollection errorCollection)Description copied from interface:ElasticFunctionalityFacadeValidates whether the requested number of agents can be created and adds any errors to the error collection.- Specified by:
validateAgentCreationin interfaceElasticFunctionalityFacade- Parameters:
numAgentsRequired- - number of agents to be createderrorCollection- - error collection to add any validation errors to.
-
updateAgentPendingStatus
public void updateAgentPendingStatus(@NotNull @NotNull String instanceId)Description copied from interface:ElasticFunctionalityFacadeSet the agent pending status to true for the given instance id- Specified by:
updateAgentPendingStatusin interfaceElasticFunctionalityFacade
-
addElasticLogEntry
public void addElasticLogEntry(org.apache.log4j.Logger log, String logEntry)- Specified by:
addElasticLogEntryin interfaceElasticFunctionalityFacade
-
addElasticLogEntry
public void addElasticLogEntry(org.apache.logging.log4j.Logger log, String logEntry)- Specified by:
addElasticLogEntryin interfaceElasticFunctionalityFacade
-
adjustElasticInstanceNumbers
@Transactional public void adjustElasticInstanceNumbers(@NotNull @NotNull ElasticInstanceSchedule instanceSchedule) throws com.atlassian.aws.AWSExceptionDescription copied from interface:ElasticFunctionalityFacadeGiven theElasticInstanceSchedulestartup or bring down the correct number of agents- Specified by:
adjustElasticInstanceNumbersin interfaceElasticFunctionalityFacade- Throws:
com.atlassian.aws.AWSException
-
attemptShutdownInstances
protected void attemptShutdownInstances(Collection<RemoteElasticInstance> instances, int agentsToShutdown, ElasticImageConfiguration elasticImageConfiguration)
-
getMaxConcurrentInstances
public int getMaxConcurrentInstances()
- Specified by:
getMaxConcurrentInstancesin interfaceElasticFunctionalityFacade- Returns:
- max number of elastic instances allowed for this instance. It's based on license restrictions.
-
getPkFileLocation
@NotNull public @NotNull String getPkFileLocation()
- Specified by:
getPkFileLocationin interfaceElasticFunctionalityFacade
-
getPrivateKeyLocation
@NotNull public @NotNull io.atlassian.fugue.Either<ElasticFunctionalityFacade.Ec2PrivateKeyValidationStatus,File> getPrivateKeyLocation()
Description copied from interface:ElasticFunctionalityFacadeReturns the location of the AWS private key- Specified by:
getPrivateKeyLocationin interfaceElasticFunctionalityFacade- Returns:
-
getPassword
@NotNull public @NotNull io.atlassian.fugue.Either<ElasticFunctionalityFacade.Ec2PrivateKeyValidationStatus,Optional<String>> getPassword(RemoteElasticInstance instance)
- Specified by:
getPasswordin interfaceElasticFunctionalityFacade
-
getKeyPairName
@NotNull public @NotNull String getKeyPairName()
- Specified by:
getKeyPairNamein interfaceElasticFunctionalityFacade
-
cleanupCredentials
public void cleanupCredentials()
Description copied from interface:ElasticFunctionalityFacadeCleanup EC2 credentials and disable EC2 support- Specified by:
cleanupCredentialsin interfaceElasticFunctionalityFacade
-
-