sreejasahithi commented on code in PR #10681:
URL: https://github.com/apache/ozone/pull/10681#discussion_r3544730853


##########
hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/ContainerBalancerStatusSubcommand.java:
##########
@@ -60,50 +60,84 @@ public void execute(ScmClient scmClient) throws IOException 
{
     boolean isRunning = response.getIsRunning();
     ContainerBalancerStatusInfoProto balancerStatusInfo = 
response.getContainerBalancerStatusInfo();
     if (isRunning) {
-      Instant startedAtInstant = 
Instant.ofEpochSecond(balancerStatusInfo.getStartedAt());
-      LocalDateTime dateTime =
-          LocalDateTime.ofInstant(startedAtInstant, ZoneId.systemDefault());
       System.out.println("ContainerBalancer is Running.");
+    } else if (response.hasContainerBalancerStatusInfo()) {
+      System.out.println("ContainerBalancer is Not Running.");
+      if (balancerStatusInfo.hasStopReason()) {
+        System.out.printf("Stop reason: %s%n", 
balancerStatusInfo.getStopReason());
+      }
+    } else {
+      System.out.println("ContainerBalancer is Not Running.");
+    }
 
-      if (isVerbose()) {
-        System.out.printf("Started at: %s %s%n",
-            dateTime.toLocalDate().format(DateTimeFormatter.ISO_LOCAL_DATE),
-            dateTime.toLocalTime().format(DateTimeFormatter.ISO_LOCAL_TIME));
-        Duration balancingDuration = Duration.between(startedAtInstant, 
OffsetDateTime.now());
-        System.out.printf("Balancing duration: %s%n%n", 
getPrettyDuration(balancingDuration));
-        
System.out.println(getConfigurationPrettyString(balancerStatusInfo.getConfiguration()));
-        List<ContainerBalancerTaskIterationStatusInfoProto> 
iterationsStatusInfoList
-            = balancerStatusInfo.getIterationsStatusInfoList();
+    if (isVerbose() && response.hasContainerBalancerStatusInfo()) {
+      printVerboseStatusInfo(balancerStatusInfo, isRunning);
+    }
+  }
 
-        System.out.println("Current iteration info:");
-        ContainerBalancerTaskIterationStatusInfoProto 
currentIterationStatistic = iterationsStatusInfoList.stream()
-            .filter(it -> it.getIterationResult().isEmpty())
-            .findFirst()
-            .orElse(null);
-        if (currentIterationStatistic == null) {
-          System.out.println("-");
-          System.out.println();
-        } else {
-          System.out.println(
-              getPrettyIterationStatusInfo(currentIterationStatistic)
-          );
-        }
+  private void printVerboseStatusInfo(ContainerBalancerStatusInfoProto 
balancerStatusInfo, boolean isRunning) {
+    Instant startedAtInstant = 
Instant.ofEpochSecond(balancerStatusInfo.getStartedAt());
+    LocalDateTime startedAtDateTime =
+        LocalDateTime.ofInstant(startedAtInstant, ZoneId.systemDefault());
+    System.out.printf("Started at: %s %s%n",
+        
startedAtDateTime.toLocalDate().format(DateTimeFormatter.ISO_LOCAL_DATE),
+        
startedAtDateTime.toLocalTime().format(DateTimeFormatter.ISO_LOCAL_TIME));
 
+    Instant endInstant = balancerStatusInfo.hasStoppedAt()
+        ? Instant.ofEpochSecond(balancerStatusInfo.getStoppedAt())
+        : OffsetDateTime.now().toInstant();
+    if (balancerStatusInfo.hasStoppedAt()) {
+      LocalDateTime stoppedAtDateTime =
+          LocalDateTime.ofInstant(endInstant, ZoneId.systemDefault());
+      System.out.printf("Stopped at: %s %s%n",
+          
stoppedAtDateTime.toLocalDate().format(DateTimeFormatter.ISO_LOCAL_DATE),
+          
stoppedAtDateTime.toLocalTime().format(DateTimeFormatter.ISO_LOCAL_TIME));
+    }
+    Duration balancingDuration = Duration.between(startedAtInstant, 
endInstant);
+    System.out.printf("Balancing duration: %s%n%n", 
getPrettyDuration(balancingDuration));
+    
System.out.println(getConfigurationPrettyString(balancerStatusInfo.getConfiguration()));
+    List<ContainerBalancerTaskIterationStatusInfoProto> 
iterationsStatusInfoList = 
+        balancerStatusInfo.getIterationsStatusInfoList();
 
-        if (verboseWithHistory) {
-          System.out.println("Iteration history list:");
-          System.out.println(
-              iterationsStatusInfoList
-                  .stream()
-                  .filter(it -> !it.getIterationResult().isEmpty())
-                  .map(this::getPrettyIterationStatusInfo)
-                  .collect(Collectors.joining(System.lineSeparator()))
-          );
-        }
+    if (isRunning) {
+      System.out.println("Current iteration info:");
+      ContainerBalancerTaskIterationStatusInfoProto currentIterationStatistic 
= iterationsStatusInfoList.stream()
+          .filter(it -> it.getIterationResult().isEmpty())
+          .findFirst()
+          .orElse(null);
+      if (currentIterationStatistic == null) {
+        System.out.println("-");
+        System.out.println();
+      } else {
+        System.out.println(
+            getPrettyIterationStatusInfo(currentIterationStatistic)
+        );
       }
-
     } else {
-      System.out.println("ContainerBalancer is Not Running.");
+      System.out.println("Last iteration info:");

Review Comment:
   I had initially kept the duplicate thinking "Last iteration info" will show 
the last iteration details and history will show details of all completed 
including the last iteration. But your right that duplication is confusing.



##########
hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/ContainerBalancerStatusSubcommand.java:
##########
@@ -60,50 +60,84 @@ public void execute(ScmClient scmClient) throws IOException 
{
     boolean isRunning = response.getIsRunning();
     ContainerBalancerStatusInfoProto balancerStatusInfo = 
response.getContainerBalancerStatusInfo();
     if (isRunning) {
-      Instant startedAtInstant = 
Instant.ofEpochSecond(balancerStatusInfo.getStartedAt());
-      LocalDateTime dateTime =
-          LocalDateTime.ofInstant(startedAtInstant, ZoneId.systemDefault());
       System.out.println("ContainerBalancer is Running.");
+    } else if (response.hasContainerBalancerStatusInfo()) {

Review Comment:
   Agree, will keep this for a follow up jira. and keep the current PR focused 
on post stop status.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to