You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by di...@apache.org on 2022/10/17 03:02:33 UTC

[airavata-mft] branch master updated: Supporting batch transfer submissions

This is an automated email from the ASF dual-hosted git repository.

dimuthuupe pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-mft.git


The following commit(s) were added to refs/heads/master by this push:
     new e304fd1  Supporting batch transfer submissions
e304fd1 is described below

commit e304fd1f3be3637adbdd5cedd4de6cfa24fc2ef8
Author: Dimuthu Wannipurage <di...@gmail.com>
AuthorDate: Sun Oct 16 23:02:25 2022 -0400

    Supporting batch transfer submissions
---
 .../airavata/mft/api/handler/MFTApiHandler.java    | 32 +++++++++++++++++++++-
 api/stub/src/main/proto/MFTTransferApi.proto       | 10 +++++++
 2 files changed, 41 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 08eabab..36aea48 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
@@ -87,7 +87,37 @@ public class MFTApiHandler extends MFTTransferServiceGrpc.MFTTransferServiceImpl
         } catch (Exception e) {
             logger.error("Error in submitting transfer request", e);
             responseObserver.onError(Status.INTERNAL
-                    .withDescription("Failed to submit http download request. " + e.getMessage())
+                    .withDescription("Failed to submit transfer request. " + e.getMessage())
+                    .asException());
+        }
+    }
+
+    @Override
+    public void submitBatchTransfer(BatchTransferApiRequest request, StreamObserver<BatchTransferApiResponse> responseObserver) {
+        try {
+            List<TransferApiRequest> transferRequests = request.getTransferRequestsList();
+
+            BatchTransferApiResponse.Builder responseBuilder = BatchTransferApiResponse.newBuilder();
+            for (TransferApiRequest apiRequest: transferRequests) {
+                String transferId = mftConsulClient.submitTransfer(apiRequest);
+
+                logger.info("Submitted the transfer request {}", transferId);
+
+                mftConsulClient.saveTransferState(transferId, new TransferState()
+                        .setUpdateTimeMils(System.currentTimeMillis())
+                        .setState("RECEIVED").setPercentage(0)
+                        .setPublisher("api")
+                        .setDescription("Received transfer job " + transferId));
+
+                responseBuilder.addTransferIds(transferId);
+            }
+
+            responseObserver.onNext(responseBuilder.build());
+            responseObserver.onCompleted();
+        } catch (Exception e) {
+            logger.error("Error in submitting batch transfer request", e);
+            responseObserver.onError(Status.INTERNAL
+                    .withDescription("Failed to submit batch transfer request. " + e.getMessage())
                     .asException());
         }
     }
diff --git a/api/stub/src/main/proto/MFTTransferApi.proto b/api/stub/src/main/proto/MFTTransferApi.proto
index f62f3a2..13fcf41 100644
--- a/api/stub/src/main/proto/MFTTransferApi.proto
+++ b/api/stub/src/main/proto/MFTTransferApi.proto
@@ -31,6 +31,14 @@ message TransferApiResponse {
     string transferId = 1;
 }
 
+message BatchTransferApiRequest {
+    repeated TransferApiRequest transferRequests = 1;
+}
+
+message BatchTransferApiResponse {
+    repeated string transferIds = 1;
+}
+
 message HttpUploadApiRequest {
     string destinationStorageId = 1;
     string resourcePath = 2;
@@ -115,6 +123,8 @@ service  MFTTransferService {
 
     rpc submitTransfer(TransferApiRequest) returns (TransferApiResponse);
 
+    rpc submitBatchTransfer(BatchTransferApiRequest) returns (BatchTransferApiResponse);
+
     rpc submitHttpUpload(HttpUploadApiRequest) returns (HttpUploadApiResponse);
 
     rpc submitHttpDownload(HttpDownloadApiRequest) returns (HttpDownloadApiResponse);