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 {
}