This is an automated email from the ASF dual-hosted git repository.
dimuthuupe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/airavata-mft.git
The following commit(s) were added to refs/heads/develop by this push:
new 44e8cd9 Auto selecting target agents when non is specified for http
download
44e8cd9 is described below
commit 44e8cd91f5f92cddfb73bb56d080227d47d28d0f
Author: Dimuthu Wannipurage <[email protected]>
AuthorDate: Mon Jul 12 18:23:03 2021 -0400
Auto selecting target agents when non is specified for http download
---
.../airavata/mft/api/handler/MFTApiHandler.java | 25 +++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
diff --git
a/api/service/src/main/java/org/apache/airavata/mft/api/handler/MFTApiHandler.java
b/api/service/src/main/java/org/apache/airavata/mft/api/handler/MFTApiHandler.java
index c3a9840..29f144b 100644
---
a/api/service/src/main/java/org/apache/airavata/mft/api/handler/MFTApiHandler.java
+++
b/api/service/src/main/java/org/apache/airavata/mft/api/handler/MFTApiHandler.java
@@ -22,6 +22,7 @@ import com.google.protobuf.util.JsonFormat;
import io.grpc.stub.StreamObserver;
import org.apache.airavata.mft.admin.MFTConsulClient;
import org.apache.airavata.mft.admin.SyncRPCClient;
+import org.apache.airavata.mft.admin.models.AgentInfo;
import org.apache.airavata.mft.admin.models.TransferState;
import org.apache.airavata.mft.admin.models.rpc.SyncRPCRequest;
import org.apache.airavata.mft.admin.models.rpc.SyncRPCResponse;
@@ -97,8 +98,13 @@ public class MFTApiHandler extends
MFTApiServiceGrpc.MFTApiServiceImplBase {
public void submitHttpDownload(HttpDownloadApiRequest request,
StreamObserver<HttpDownloadApiResponse> responseObserver) {
try {
// TODO : Automatically derive agent if the target agent is empty
+
+ logger.info("Processing submit http download for resource {}",
request.getSourceResourceId());
+
+ String targetAgent = derriveTargetAgent(request.getTargetAgent());
+
SyncRPCRequest.SyncRPCRequestBuilder requestBuilder =
SyncRPCRequest.SyncRPCRequestBuilder.builder()
- .withAgentId(request.getTargetAgent())
+ .withAgentId(targetAgent)
.withMessageId(UUID.randomUUID().toString())
.withMethod("submitHttpDownload")
.withParameter("resourceId", request.getSourceResourceId())
@@ -294,4 +300,21 @@ public class MFTApiHandler extends
MFTApiServiceGrpc.MFTApiServiceImplBase {
responseObserver.onError(new Exception("Failed to fetch directory
resource metadata", e));
}
}
+
+ private String derriveTargetAgent(String targetAgent) throws Exception {
+ if (targetAgent.isEmpty()) {
+ List<String> liveAgentIds = mftConsulClient.getLiveAgentIds();
+ if (liveAgentIds.isEmpty()) {
+ throw new Exception("No agent is available to perform the
operation");
+ }
+ targetAgent = liveAgentIds.get(0);
+ logger.info("Using agent {} for processing the operation",
targetAgent);
+ } else {
+ Optional<AgentInfo> agentInfo =
mftConsulClient.getAgentInfo(targetAgent);
+ if (agentInfo.isEmpty()) {
+ throw new Exception("Target agent " + targetAgent + " is not
available");
+ }
+ }
+ return targetAgent;
+ }
}