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]
