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

yiyang0203 pushed a commit to branch HDDS-5713
in repository https://gitbox.apache.org/repos/asf/ozone.git

commit 86a9abb95929c54613ffc9a0eb0682e2f90ebe73
Author: Stephen O'Donnell <[email protected]>
AuthorDate: Tue Feb 6 10:38:43 2024 +0000

    HDDS-10299. [DiskBalancer] Status command should output all statuses by 
default (#6170)
    
    Co-authored-by: S O'Donnell <[email protected]>
---
 ...inerLocationProtocolServerSideTranslatorPB.java |  4 +++-
 .../cli/datanode/DiskBalancerStatusSubcommand.java | 22 ++++------------------
 2 files changed, 7 insertions(+), 19 deletions(-)

diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
index ec7b486795..d369006f39 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
@@ -1326,7 +1326,9 @@ public final class 
StorageContainerLocationProtocolServerSideTranslatorPB
     case status:
       infoProtoList = impl.getDiskBalancerStatus(
           Optional.of(request.getHostsList()),
-          Optional.of(request.getStatus()),
+          // If an optional proto enum field is not set, it will return the 
first
+          // enum value. So, we need to check if the field is set.
+          request.hasStatus() ? Optional.of(request.getStatus()) : 
Optional.empty(),
           clientVersion);
       break;
     default:
diff --git 
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerStatusSubcommand.java
 
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerStatusSubcommand.java
index 84dd3abe95..ffb3cd4367 100644
--- 
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerStatusSubcommand.java
+++ 
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerStatusSubcommand.java
@@ -27,12 +27,8 @@ import picocli.CommandLine.Option;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 import java.util.Optional;
-import java.util.Set;
 
 /**
  * Handler to get disk balancer status.
@@ -44,12 +40,9 @@ import java.util.Set;
     versionProvider = HddsVersionProvider.class)
 public class DiskBalancerStatusSubcommand extends ScmSubcommand {
 
-  private final Set<String> stateSet =
-      new HashSet<>(Arrays.asList("RUNNING", "STOPPED", "UNKNOWN"));
-
   @Option(names = {"-s", "--state"},
-      description = "RUNNING, STOPPED, UNKNOWN. Default state is RUNNING.")
-  private String state = "RUNNING";
+      description = "Display only datanodes with the given status: RUNNING, 
STOPPED, UNKNOWN.")
+  private HddsProtos.DiskBalancerRunningStatus state = null;
 
   @CommandLine.Option(names = {"-d", "--datanodes"},
       description = "Get diskBalancer status on specific datanodes.")
@@ -57,17 +50,10 @@ public class DiskBalancerStatusSubcommand extends 
ScmSubcommand {
 
   @Override
   public void execute(ScmClient scmClient) throws IOException {
-    if (state != null && !stateSet.contains(state.toUpperCase(Locale.ROOT))) {
-      System.err.println("Unsupported state: " + state);
-    }
-
-    assert state != null;
     List<HddsProtos.DatanodeDiskBalancerInfoProto> resultProto =
         scmClient.getDiskBalancerStatus(
-            hosts.size() == 0 ? Optional.empty() : Optional.of(hosts),
-            Optional.of(HddsProtos.DiskBalancerRunningStatus.valueOf(
-                state.toUpperCase(Locale.ROOT)))
-            );
+            hosts.isEmpty() ? Optional.empty() : Optional.of(hosts),
+            state == null ? Optional.empty() : Optional.of(state));
 
     System.out.println(generateStatus(resultProto));
   }


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

Reply via email to