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/03/15 14:29:08 UTC

[airavata-mft] branch master updated: Fetching transfer status from command line client

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 da1a9c7  Fetching transfer status from command line client
da1a9c7 is described below

commit da1a9c7ff243ba04f8868b749fe238bdacaafdb7
Author: Dimuthu Wannipurage <di...@gmail.com>
AuthorDate: Tue Mar 15 10:24:48 2022 -0400

    Fetching transfer status from command line client
---
 .../airavata/mft/agent/TransportMediator.java      |  4 +-
 .../airavata/mft/command/line/CommandLineUtil.java | 20 ++++++
 .../line/sub/transfer/TransferStateSubCommand.java | 73 ++++++++++++++++++++++
 .../line/sub/transfer/TransferSubCommand.java      |  2 +-
 4 files changed, 96 insertions(+), 3 deletions(-)

diff --git a/agent/src/main/java/org/apache/airavata/mft/agent/TransportMediator.java b/agent/src/main/java/org/apache/airavata/mft/agent/TransportMediator.java
index b51c9b1..7526d5d 100644
--- a/agent/src/main/java/org/apache/airavata/mft/agent/TransportMediator.java
+++ b/agent/src/main/java/org/apache/airavata/mft/agent/TransportMediator.java
@@ -67,10 +67,10 @@ public class TransportMediator {
                 long start = System.currentTimeMillis();
 
                 onStatusCallback.accept(transferId, new TransferState()
-                        .setPercentage(100)
+                        .setPercentage(0)
                         .setState("RUNNING")
                         .setUpdateTimeMils(System.currentTimeMillis())
-                        .setDescription("Transfer successfully completed"));
+                        .setDescription("Transfer is ongoing"));
 
                 Optional<IncomingStreamingConnector> inStreamingConnectorOp = ConnectorResolver
                         .resolveIncomingStreamingConnector(request.getSourceType());
diff --git a/command-line/src/main/java/org/apache/airavata/mft/command/line/CommandLineUtil.java b/command-line/src/main/java/org/apache/airavata/mft/command/line/CommandLineUtil.java
new file mode 100644
index 0000000..44efeb5
--- /dev/null
+++ b/command-line/src/main/java/org/apache/airavata/mft/command/line/CommandLineUtil.java
@@ -0,0 +1,20 @@
+package org.apache.airavata.mft.command.line;
+
+public final class CommandLineUtil {
+
+    public static void printTable(int[] columnWidths, String[][] content) {
+        for (String[] row : content) {
+            for (int i = 0; i < columnWidths.length; i++) {
+                System.out.print("|");
+                for (int loc = 0; loc < columnWidths[i]; loc++) {
+                    if (row[i].length() > loc) {
+                        System.out.print(row[i].charAt(loc));
+                    } else {
+                        System.out.print(" ");
+                    }
+                }
+            }
+            System.out.println("|");
+        }
+    }
+}
diff --git a/command-line/src/main/java/org/apache/airavata/mft/command/line/sub/transfer/TransferStateSubCommand.java b/command-line/src/main/java/org/apache/airavata/mft/command/line/sub/transfer/TransferStateSubCommand.java
new file mode 100644
index 0000000..6c160b1
--- /dev/null
+++ b/command-line/src/main/java/org/apache/airavata/mft/command/line/sub/transfer/TransferStateSubCommand.java
@@ -0,0 +1,73 @@
+package org.apache.airavata.mft.command.line.sub.transfer;
+
+import org.apache.airavata.mft.api.client.MFTApiClient;
+import org.apache.airavata.mft.api.service.TransferStateApiRequest;
+import org.apache.airavata.mft.api.service.TransferStateApiResponse;
+import org.apache.airavata.mft.command.line.CommandLineUtil;
+import org.apache.airavata.mft.common.AuthToken;
+import picocli.CommandLine;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.Callable;
+
+@CommandLine.Command(name = "state", description = "Returns state of a transfer")
+public class TransferStateSubCommand implements Callable<Integer> {
+    @CommandLine.Option(names = {"-a", "--all"}, description = "All transfer states")
+    private boolean all;
+
+    @CommandLine.Parameters(index = "0", description = "Transfer Id")
+    private String transferId;
+
+    @Override
+    public Integer call() throws Exception {
+
+        MFTApiClient mftApiClient = MFTApiClient.MFTApiClientBuilder.newBuilder().build();
+
+        AuthToken token = AuthToken.newBuilder().build();
+        int[] columnWidth = {15, 15, 35, 10};
+
+
+        if (!all) {
+            TransferStateApiResponse transferState = mftApiClient.getTransferClient().getTransferState(
+                    TransferStateApiRequest.newBuilder()
+                            .setMftAuthorizationToken(token)
+                            .setTransferId(transferId).build());
+
+
+            String[][] content = new String[2][4];
+            String[] headers = {"UPDATE TIME", "STATE", "DESCRIPTION", "PERCENTAGE"};
+            content[0] = headers;
+
+            content[1][0] = transferState.getUpdateTimeMils() + "";
+            content[1][1] = transferState.getState();
+            content[1][2] = transferState.getDescription();
+            content[1][3] = transferState.getPercentage() + "";
+
+            CommandLineUtil.printTable(columnWidth, content);
+
+        } else {
+            Iterator<TransferStateApiResponse> transferStates = mftApiClient.getTransferClient().getTransferStates(TransferStateApiRequest.newBuilder()
+                    .setMftAuthorizationToken(token).setTransferId(transferId).build());
+
+            List<TransferStateApiResponse> states = new ArrayList<>();
+            while (transferStates.hasNext()) {
+                states.add(transferStates.next());
+            }
+            String[][] content = new String[states.size() + 1][4];
+            String[] headers = {"UPDATE TIME", "STATE", "DESCRIPTION", "PERCENTAGE"};
+            content[0] = headers;
+            for (int i = 1; i <= states.size(); i ++) {
+                TransferStateApiResponse transferState = states.get(i -1);
+                content[i][0] = transferState.getUpdateTimeMils() + "";
+                content[i][1] = transferState.getState();
+                content[i][2] = transferState.getDescription();
+                content[i][3] = transferState.getPercentage() + "";
+            }
+            CommandLineUtil.printTable(columnWidth, content);
+
+        }
+        return 0;
+    }
+}
diff --git a/command-line/src/main/java/org/apache/airavata/mft/command/line/sub/transfer/TransferSubCommand.java b/command-line/src/main/java/org/apache/airavata/mft/command/line/sub/transfer/TransferSubCommand.java
index e3b0a4f..86ccc5b 100644
--- a/command-line/src/main/java/org/apache/airavata/mft/command/line/sub/transfer/TransferSubCommand.java
+++ b/command-line/src/main/java/org/apache/airavata/mft/command/line/sub/transfer/TransferSubCommand.java
@@ -3,6 +3,6 @@ package org.apache.airavata.mft.command.line.sub.transfer;
 import picocli.CommandLine;
 
 @CommandLine.Command(name = "transfer", description = "Data transfer operations",
-        subcommands = {SubmitTransferSubCommand.class})
+        subcommands = {SubmitTransferSubCommand.class, TransferStateSubCommand.class})
 public class TransferSubCommand {
 }