errose28 commented on code in PR #8050:
URL: https://github.com/apache/ozone/pull/8050#discussion_r1989770192


##########
hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/ListSubcommand.java:
##########
@@ -90,11 +95,35 @@ public class ListSubcommand extends ScmSubcommand {
   }
 
 
-  private void outputContainerInfo(ContainerInfo containerInfo)
-      throws IOException {
-    // Print container report info.
+  private void outputContainerInfo(ContainerInfo containerInfo) throws 
IOException {
+    // Original behavior - just print the container JSON
     System.out.println(WRITER.writeValueAsString(containerInfo));
   }
+  
+  private void outputContainerInfoAsJsonMember(ContainerInfo containerInfo, 
boolean isFirst,
+      boolean isLast) throws IOException {
+    // JSON array format with proper brackets and commas
+    if (isFirst) {
+      // Start of array
+      System.out.print("[");

Review Comment:
   Let's use Jackson's `SequenceWriter` for this similar to what is done in 
#7944. We may need to duplicate some minor changes to `JsonUtils` here but that 
should be ok and we can resolve it on the next reverse merge into reconciler 
branch.
   



##########
hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/ListSubcommand.java:
##########
@@ -76,6 +76,11 @@ public class ListSubcommand extends ScmSubcommand {
       description = "Container replication (ONE, THREE for Ratis, " +
           "rs-6-3-1024k for EC)")
   private String replication;
+  
+  @Option(names = {"--json"},
+      description = "Output the entire list in JSON array format",

Review Comment:
   The original is still json (and can still be streamed into jq), it just 
doesn't represent a valid json file if it is saved that way. In that sense I 
think the flag here is confusing. I would just make json list the default and 
only behavior. We did something similar in HDDS-5824 and did not consider it a 
breaking change, since the original was a "bug". With 2.0 coming up such a 
change makes sense as well.



##########
hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/ListSubcommand.java:
##########
@@ -76,6 +76,11 @@ public class ListSubcommand extends ScmSubcommand {
       description = "Container replication (ONE, THREE for Ratis, " +
           "rs-6-3-1024k for EC)")
   private String replication;
+  
+  @Option(names = {"--json"},
+      description = "Output the entire list in JSON array format",

Review Comment:
   Existing acceptance tests would need to be updated to account for this.



##########
hadoop-ozone/dist/src/main/smoketest/admincli/container.robot:
##########
@@ -96,6 +96,33 @@ List all containers from a particular container ID
     ${output} =         Execute          ozone admin container list --all 
--start 1
                         Should contain   ${output}   OPEN
 
+List containers in JSON array format
+    ${output} =         Execute          ozone admin container list --json | 
jq -r '.'
+                        Should Start With   ${output}   [

Review Comment:
   This way of testing works, but a jq query to do the same test might be more 
robust (although failure messages may be more confusing):
   `ozone admin container list --json | jq '.[] | .containerID'` then ensure 
that we actually get content in the output.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@ozone.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@ozone.apache.org
For additional commands, e-mail: issues-h...@ozone.apache.org

Reply via email to