Class RemoteAgentAuthenticationManagerImpl
- java.lang.Object
-
- com.atlassian.bamboo.buildqueue.manager.RemoteAgentAuthenticationManagerImpl
-
- All Implemented Interfaces:
RemoteAgentAuthenticationManager
public class RemoteAgentAuthenticationManagerImpl extends Object implements RemoteAgentAuthenticationManager
Default implementation ofRemoteAgentAuthenticationManager
.- Since:
- 3.4
-
-
Constructor Summary
Constructors Constructor Description RemoteAgentAuthenticationManagerImpl(AdministrationConfigurationAccessor administrationConfigurationAccessor, AdministrationConfigurationPersister administrationConfigurationPersister, AgentManager agentManager, RemoteAgentAuthenticationDao agentAuthenticationDao, com.atlassian.event.api.EventPublisher eventPublisher, com.atlassian.cache.CacheManager cacheManager, int agentHeartbeatIntervalSeconds)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
approveAuthentications(@NotNull Iterable<RemoteAgentAuthentication> authentications)
Approve all authentications from the list.@NotNull Iterable<RemoteAgentAuthentication>
getAllAuthentications()
Get all agent authentications known to this Bamboo server.RemoteAgentAuthentication
getAuthentication(UUID uuid)
Get first remote agent authentication matching the IP and UUID.@Nullable RemoteAgentAuthentication
getAuthentication(UUID uuid, String ip)
Get remote agent authentication matching the IP and UUID.@NotNull Iterable<RemoteAgentAuthentication>
getAuthentications(com.google.common.base.Predicate<RemoteAgentAuthentication> filter)
Get authentication filtered by given filter.@NotNull org.apache.commons.lang3.tuple.Pair<RemoteAgentAuthentication,Boolean>
getOrCreatePendingAuthentication(@NotNull UUID uuid, @NotNull String ip, @Nullable Long agentId, boolean strictAuthEnabled)
Create a new pending authentication for given IP address and UUID.boolean
isAuthenticatedAgentIp(@NotNull String ip)
Returns true if the given IP address matches one of the already authenticated remote agent IP patterns.boolean
isAuthenticatedAgentIp(@NotNull InetAddress inetAddress)
Returns true if the given IP address matches one of the already authenticated remote agent IP patterns.boolean
isRemoteAgentAuthenticationEnabled()
Checks whether the remote agent authentication is currently enabled.void
onNodePromotedEvent(NodePromotedEvent event)
void
revokeAgentAuthentications(@NotNull Iterable<RemoteAgentAuthentication> authentications)
Revoke approval for given agent authentications.void
setRemoteAgentAuthenticationEnabled(boolean isAuthenticationEnabled)
Sets the remote agent authentication to globally enabled/disabled.void
updateIp(@NotNull UUID uuid, @NotNull String newIp)
Update IP of an approved authentication with given uuid.
-
-
-
Constructor Detail
-
RemoteAgentAuthenticationManagerImpl
public RemoteAgentAuthenticationManagerImpl(AdministrationConfigurationAccessor administrationConfigurationAccessor, AdministrationConfigurationPersister administrationConfigurationPersister, AgentManager agentManager, RemoteAgentAuthenticationDao agentAuthenticationDao, com.atlassian.event.api.EventPublisher eventPublisher, com.atlassian.cache.CacheManager cacheManager, int agentHeartbeatIntervalSeconds)
-
-
Method Detail
-
onNodePromotedEvent
@EventListener public void onNodePromotedEvent(NodePromotedEvent event)
-
isRemoteAgentAuthenticationEnabled
public boolean isRemoteAgentAuthenticationEnabled()
Description copied from interface:RemoteAgentAuthenticationManager
Checks whether the remote agent authentication is currently enabled.- Specified by:
isRemoteAgentAuthenticationEnabled
in interfaceRemoteAgentAuthenticationManager
- Returns:
true
, if remote agent authentication is enabled,false
otherwise
-
setRemoteAgentAuthenticationEnabled
public void setRemoteAgentAuthenticationEnabled(boolean isAuthenticationEnabled) throws Exception
Description copied from interface:RemoteAgentAuthenticationManager
Sets the remote agent authentication to globally enabled/disabled.- Specified by:
setRemoteAgentAuthenticationEnabled
in interfaceRemoteAgentAuthenticationManager
- Parameters:
isAuthenticationEnabled
-true
if remote agent authentication should be enabled,false
otherwise.- Throws:
Exception
- on any error
-
getAllAuthentications
@NotNull public @NotNull Iterable<RemoteAgentAuthentication> getAllAuthentications()
Description copied from interface:RemoteAgentAuthenticationManager
Get all agent authentications known to this Bamboo server.
The list is sorted first by the authentication status (unapproved first), then by IP address.
- Specified by:
getAllAuthentications
in interfaceRemoteAgentAuthenticationManager
- Returns:
- all agent authentications
-
getAuthentications
@NotNull public @NotNull Iterable<RemoteAgentAuthentication> getAuthentications(com.google.common.base.Predicate<RemoteAgentAuthentication> filter)
Description copied from interface:RemoteAgentAuthenticationManager
Get authentication filtered by given filter.- Specified by:
getAuthentications
in interfaceRemoteAgentAuthenticationManager
- Parameters:
filter
- predicate to filter authentications- Returns:
- list of authentications matching the filter
-
getAuthentication
@Nullable public @Nullable RemoteAgentAuthentication getAuthentication(UUID uuid, String ip)
Description copied from interface:RemoteAgentAuthenticationManager
Get remote agent authentication matching the IP and UUID. If not found,
null
will be returned.The returned authentication (if found) will have UUID matching the uuid parameter and IP address either equal to ip parameter or a wildcard mask that matches the ip parameter. Persisted (approved) authentications will be queried in preference to the authentications pending approval.
- Specified by:
getAuthentication
in interfaceRemoteAgentAuthenticationManager
- Parameters:
uuid
- UUIDip
- IP address- Returns:
- remote agent authentication matching the request, or
null
-
getAuthentication
public RemoteAgentAuthentication getAuthentication(UUID uuid)
Description copied from interface:RemoteAgentAuthenticationManager
Get first remote agent authentication matching the IP and UUID. If not found,
null
will be returned.The returned authentication (if found) will have UUID matching the uuid parameter. Persisted (approved) authentications will be queried in preference to the authentications pending approval.
- Specified by:
getAuthentication
in interfaceRemoteAgentAuthenticationManager
- Parameters:
uuid
- UUID- Returns:
- remote agent authentication with matching UUID, or
null
-
getOrCreatePendingAuthentication
@NotNull public @NotNull org.apache.commons.lang3.tuple.Pair<RemoteAgentAuthentication,Boolean> getOrCreatePendingAuthentication(@NotNull @NotNull UUID uuid, @NotNull @NotNull String ip, @Nullable @Nullable Long agentId, boolean strictAuthEnabled)
Description copied from interface:RemoteAgentAuthenticationManager
Create a new pending authentication for given IP address and UUID. Or return an existing (approved or not approved) authentication.
If an approved authentication matching given IP and UUID already exists, it will be returned.
If a pending authentication with given UUID exists, it will be replaced by the new authentication with given uuid and ip.
- Specified by:
getOrCreatePendingAuthentication
in interfaceRemoteAgentAuthenticationManager
- Parameters:
uuid
- UUIDip
- IP address- Returns:
- new authentication pending approval, or an existing approved authentication. The boolean flag that will be
true
if an existing authentication (pending or approved) with the same UUID and matching IP was found, andfalse
otherwise (meaning new authentication created) - See Also:
RemoteAgentAuthentications.matching(java.util.UUID, String)
-
approveAuthentications
public void approveAuthentications(@NotNull @NotNull Iterable<RemoteAgentAuthentication> authentications)
Description copied from interface:RemoteAgentAuthenticationManager
Approve all authentications from the list.
For each authentication in the list this method will:
- remove any pending authentication with matching UUID
- if an approved authentication with matching UUID already exists, it's IP address will be persistently updated to the new authentication's IP address value
- if no approved authentication exists, a new approved authentication with given UUID and IP will be persisted
- Specified by:
approveAuthentications
in interfaceRemoteAgentAuthenticationManager
- Parameters:
authentications
- authentications to approve
-
revokeAgentAuthentications
public void revokeAgentAuthentications(@NotNull @NotNull Iterable<RemoteAgentAuthentication> authentications)
Description copied from interface:RemoteAgentAuthenticationManager
Revoke approval for given agent authentications.
Not approved authentications will be silently skipped.
- Specified by:
revokeAgentAuthentications
in interfaceRemoteAgentAuthenticationManager
- Parameters:
authentications
- authentications to disapprove
-
updateIp
public void updateIp(@NotNull @NotNull UUID uuid, @NotNull @NotNull String newIp)
Description copied from interface:RemoteAgentAuthenticationManager
Update IP of an approved authentication with given uuid.
If no corresponding authentication is found, no action will be taken.
- Specified by:
updateIp
in interfaceRemoteAgentAuthenticationManager
- Parameters:
uuid
- UUID of an approved authentication to updatenewIp
- new IP address of the authentication
-
isAuthenticatedAgentIp
public boolean isAuthenticatedAgentIp(@NotNull @NotNull String ip)
Description copied from interface:RemoteAgentAuthenticationManager
Returns true if the given IP address matches one of the already authenticated remote agent IP patterns. Note that this method will also work for proxy IP addresses. Usage ofRemoteAgentAuthenticationManager.isAuthenticatedAgentIp(InetAddress)
is preferred over this method.- Specified by:
isAuthenticatedAgentIp
in interfaceRemoteAgentAuthenticationManager
-
isAuthenticatedAgentIp
public boolean isAuthenticatedAgentIp(@NotNull @NotNull InetAddress inetAddress)
Description copied from interface:RemoteAgentAuthenticationManager
Returns true if the given IP address matches one of the already authenticated remote agent IP patterns. Note that this method will also work for proxy IP addresses.- Specified by:
isAuthenticatedAgentIp
in interfaceRemoteAgentAuthenticationManager
-
-