com.atlassian.bamboo.buildqueue.manager
Interface RemoteAgentAuthenticationManager

All Known Implementing Classes:
RemoteAgentAuthenticationManagerImpl

public interface RemoteAgentAuthenticationManager

Manages remote agent authentication.

This manager keeps track of two types of authentication requests: the ones pending approval (not approved) and the ones already approved. ONLY approved authentications are stored persistently.

Authentications are uniquely identified by their UUID, meaning there can never be two approved authentications with the same UUID, or two authentications pending approval with the same UUID. This also means that if an authentication gets approved with UUID associated with some other previously approved authentication, the latter will be replaced with the newly approved authentication.

IP of approved (persisted) authentications can be updated. Wildcard characters (*,?) can be used to match authentications.

Since:
3.4

Method Summary
 void approveAuthentications(java.lang.Iterable<RemoteAgentAuthentication> authentications)
          

Approve all authentications from the list.

 java.lang.Iterable<RemoteAgentAuthentication> getAllAuthentications()
          

Get all agent authentications known to this Bamboo server.

 RemoteAgentAuthentication getAuthentication(java.util.UUID uuid)
          

Get first remote agent authentication matching the IP and UUID.

 RemoteAgentAuthentication getAuthentication(java.util.UUID uuid, java.lang.String ip)
          

Get remote agent authentication matching the IP and UUID.

 java.lang.Iterable<RemoteAgentAuthentication> getAuthentications(com.google.common.base.Predicate<RemoteAgentAuthentication> filter)
          Get authentication filtered by given filter.
 com.atlassian.fugue.Pair<RemoteAgentAuthentication,java.lang.Boolean> getOrCreatePendingAuthentication(java.util.UUID uuid, java.lang.String ip)
          

Create a new pending authentication for given IP address and UUID.

 boolean isRemoteAgentAuthenticationEnabled()
          Checks whether the remote agent authentication is currently enabled.
 void revokeAgentAuthentications(java.lang.Iterable<RemoteAgentAuthentication> authentications)
          

Revoke approval for given agent authentications.

 void setRemoteAgentAuthenticationEnabled(boolean isAuthenticationEnabled)
          Sets the remote agent authentication to globally enabled/disabled.
 void updateIp(java.util.UUID uuid, java.lang.String newIp)
          

Update IP of an approved authentication with given uuid.

 

Method Detail

setRemoteAgentAuthenticationEnabled

void setRemoteAgentAuthenticationEnabled(boolean isAuthenticationEnabled)
                                         throws java.lang.Exception
Sets the remote agent authentication to globally enabled/disabled.

Parameters:
isAuthenticationEnabled - true if remote agent authentication should be enabled, false otherwise.
Throws:
java.lang.Exception - on any error

isRemoteAgentAuthenticationEnabled

boolean isRemoteAgentAuthenticationEnabled()
Checks whether the remote agent authentication is currently enabled.

Returns:
true, if remote agent authentication is enabled, false otherwise

getAllAuthentications

@NotNull
java.lang.Iterable<RemoteAgentAuthentication> getAllAuthentications()

Get all agent authentications known to this Bamboo server.

The list is sorted first by the authentication status (unapproved first), then by IP address.

Returns:
all agent authentications

getAuthentications

@NotNull
java.lang.Iterable<RemoteAgentAuthentication> getAuthentications(com.google.common.base.Predicate<RemoteAgentAuthentication> filter)
Get authentication filtered by given filter.

Parameters:
filter - predicate to filter authentications
Returns:
list of authentications matching the filter

getAuthentication

@Nullable
RemoteAgentAuthentication getAuthentication(java.util.UUID uuid,
                                                     java.lang.String ip)

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.

Parameters:
uuid - UUID
ip - IP address
Returns:
remote agent authentication matching the request, or null

getAuthentication

@Nullable
RemoteAgentAuthentication getAuthentication(java.util.UUID uuid)

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.

Parameters:
uuid - UUID
Returns:
remote agent authentication with matching UUID, or null

getOrCreatePendingAuthentication

@NotNull
com.atlassian.fugue.Pair<RemoteAgentAuthentication,java.lang.Boolean> getOrCreatePendingAuthentication(@NotNull
                                                                                                               java.util.UUID uuid,
                                                                                                               @NotNull
                                                                                                               java.lang.String ip)

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.

Parameters:
uuid - UUID
ip - 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, and false otherwise (meaning new authentication created)
Throws:
java.lang.NullPointerException - if any of the arguments is null
See Also:
RemoteAgentAuthentications.matching(java.util.UUID, String)

approveAuthentications

void approveAuthentications(@NotNull
                            java.lang.Iterable<RemoteAgentAuthentication> authentications)

Approve all authentications from the list.

For each authentication in the list this method will:

Parameters:
authentications - authentications to approve

revokeAgentAuthentications

void revokeAgentAuthentications(@NotNull
                                java.lang.Iterable<RemoteAgentAuthentication> authentications)

Revoke approval for given agent authentications.

Not approved authentications will be silently skipped.

Parameters:
authentications - authentications to disapprove

updateIp

void updateIp(@NotNull
              java.util.UUID uuid,
              @NotNull
              java.lang.String newIp)

Update IP of an approved authentication with given uuid.

If no corresponding authentication is found, no action will be taken.

Parameters:
uuid - UUID of an approved authentication to update
newIp - new IP address of the authentication


Copyright © 2013 Atlassian Software Systems Pty Ltd. All Rights Reserved.