You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by ad...@apache.org on 2023/04/01 13:51:35 UTC

[ozone] branch master updated: HDDS-8185. Implement JSON output for datanode list (#4508)

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

adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new 7b570dfa7a HDDS-8185. Implement JSON output for datanode list (#4508)
7b570dfa7a is described below

commit 7b570dfa7a23661a30b071bcf3502699e5cc6341
Author: jyotirmoy-gh <69...@users.noreply.github.com>
AuthorDate: Sat Apr 1 19:21:28 2023 +0530

    HDDS-8185. Implement JSON output for datanode list (#4508)
---
 .../hadoop/hdds/scm/cli/datanode/ListInfoSubcommand.java | 16 +++++++++++++++-
 .../dist/src/main/smoketest/admincli/datanode.robot      |  6 ++++++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/ListInfoSubcommand.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/ListInfoSubcommand.java
index 6e6e3cf0ec..08daa1fa71 100644
--- a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/ListInfoSubcommand.java
+++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/ListInfoSubcommand.java
@@ -24,6 +24,7 @@ import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
 import org.apache.hadoop.hdds.scm.cli.ScmSubcommand;
 import org.apache.hadoop.hdds.scm.client.ScmClient;
 import org.apache.hadoop.hdds.scm.pipeline.Pipeline;
+import org.apache.hadoop.hdds.server.JsonUtils;
 import picocli.CommandLine;
 
 import java.io.IOException;
@@ -65,6 +66,11 @@ public class ListInfoSubcommand extends ScmSubcommand {
       defaultValue = "")
   private String nodeState;
 
+  @CommandLine.Option(names = { "--json" },
+       description = "Show info in json format",
+       defaultValue = "false")
+  private boolean json;
+
   private List<Pipeline> pipelines;
 
 
@@ -88,7 +94,15 @@ public class ListInfoSubcommand extends ScmSubcommand {
       allNodes = allNodes.filter(p -> p.getHealthState().toString()
           .compareToIgnoreCase(nodeState) == 0);
     }
-    allNodes.forEach(this::printDatanodeInfo);
+
+    if (json) {
+      List<DatanodeWithAttributes> datanodeList = allNodes.collect(
+              Collectors.toList());
+      System.out.print(
+              JsonUtils.toJsonStringWithDefaultPrettyPrinter(datanodeList));
+    } else {
+      allNodes.forEach(this::printDatanodeInfo);
+    }
   }
 
   private List<DatanodeWithAttributes> getAllNodes(ScmClient scmClient)
diff --git a/hadoop-ozone/dist/src/main/smoketest/admincli/datanode.robot b/hadoop-ozone/dist/src/main/smoketest/admincli/datanode.robot
index b4ab5bf25c..9f31afb254 100644
--- a/hadoop-ozone/dist/src/main/smoketest/admincli/datanode.robot
+++ b/hadoop-ozone/dist/src/main/smoketest/admincli/datanode.robot
@@ -62,3 +62,9 @@ Incomplete command
 #List datanodes on unknown host
 #    ${output} =         Execute And Ignore Error     ozone admin --verbose datanode list --scm unknown-host
 #                        Should contain   ${output}   Invalid host name
+
+List datanodes as JSON
+    ${output} =         Execute          ozone admin datanode list --json | jq -r '.'
+                        Should contain   ${output}    datanodeDetails
+                        Should contain   ${output}    healthState
+                        Should contain   ${output}    opState


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org