in controller/src/main/java/org/apache/airavata/mft/controller/TransferDispatcher.java [134:193]
public void handleTransferRequest(String transferId,
TransferApiRequest transferRequest,
AgentTransferRequest.Builder agentTransferRequestTemplate,
String consulKey) throws Exception{
if (this.agentOrchestrator.isAnAgentDeploying(consulKey)) {
logger.info("Ignoring handling transfer id {} as it is already in optimizing stage", transferId);
return;
}
logger.info("Handling transfer id {} with consul key {}", transferId, consulKey);
List<String> liveAgentIds = mftConsulClient.getLiveAgentIds();
Map<String, Integer> targetAgentsMap = transferRequest.getTargetAgentsMap();
List<String> userProvidedAgents = liveAgentIds.stream().filter(targetAgentsMap::containsKey).collect(Collectors.toList());
AgentTransferRequest.Builder agentTransferRequestBuilder = agentTransferRequestTemplate.clone();
agentTransferRequestBuilder.setRequestId(UUID.randomUUID().toString());
for (EndpointPaths ep : transferRequest.getEndpointPathsList()) {
agentTransferRequestBuilder.addEndpointPaths(org.apache.airavata.mft.agent.stub.EndpointPaths.newBuilder()
.setSourcePath(ep.getSourcePath())
.setDestinationPath(ep.getDestinationPath()).buildPartial());
}
AgentTransferRequest agentTransferRequest = agentTransferRequestBuilder.build();
if (transferRequest.getOptimizeTransferPath()) {
boolean agentLaunching = agentOrchestrator.tryLaunchingAgent(
transferId, transferRequest,
agentTransferRequest,
consulKey);
if (!agentLaunching) {
logger.warn("No optimizing path is available. Moving user provided agents");
submitTransferToAgent(userProvidedAgents, transferId,
transferRequest,
agentTransferRequest,
consulKey);
}
} else if (userProvidedAgents.isEmpty()) {
if (liveAgentIds.isEmpty()) {
logger.warn("No live agent available to perform the transfer.");
return;
}
logger.info("No agent selection criteria was provided. Going with the local agent");
// TODO select the local agent
submitTransferToAgent(liveAgentIds, transferId,
transferRequest,
agentTransferRequest,
consulKey);
} else {
submitTransferToAgent(userProvidedAgents, transferId,
transferRequest,
agentTransferRequest,
consulKey);
}
}