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 6ba309a359 HDDS-11831. Finer-grained interface for dynamically
registered subcommands (#7514)
6ba309a359 is described below
commit 6ba309a359262ea876bd3e0a94ca1e54be95f613
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Mon Dec 2 14:23:18 2024 +0100
HDDS-11831. Finer-grained interface for dynamically registered subcommands
(#7514)
---
.../hadoop/hdds/cli/ExtensibleParentCommand.java | 56 ++++++++++++++++++++++
.../org/apache/hadoop/hdds/cli/GenericCli.java | 12 +++--
.../apache/hadoop/hdds/cli/AdminSubcommand.java | 23 +++++++++
.../org/apache/hadoop/hdds/cli/OzoneAdmin.java | 10 ++--
.../hdds/scm/cli/ContainerBalancerCommands.java | 13 ++---
.../hdds/scm/cli/ReplicationManagerCommands.java | 13 ++---
.../hadoop/hdds/scm/cli/SafeModeCommands.java | 12 ++---
.../hadoop/hdds/scm/cli/TopologySubcommand.java | 12 ++---
.../hadoop/hdds/scm/cli/cert/CertCommands.java | 12 ++---
.../hdds/scm/cli/container/ContainerCommands.java | 11 ++---
.../hdds/scm/cli/datanode/DatanodeCommands.java | 13 ++---
.../hdds/scm/cli/datanode/StatusSubCommand.java | 10 +---
.../hdds/scm/cli/pipeline/PipelineCommands.java | 12 ++---
.../ozone/admin/nssummary/NSSummaryAdmin.java | 11 ++---
.../org/apache/hadoop/ozone/admin/om/OMAdmin.java | 11 ++---
.../ozone/admin/reconfig/ReconfigureCommands.java | 12 ++---
.../apache/hadoop/ozone/admin/scm/ScmAdmin.java | 12 ++---
17 files changed, 132 insertions(+), 123 deletions(-)
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/cli/ExtensibleParentCommand.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/cli/ExtensibleParentCommand.java
new file mode 100644
index 0000000000..45bbb44005
--- /dev/null
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/cli/ExtensibleParentCommand.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hdds.cli;
+
+import picocli.CommandLine;
+
+import java.util.ServiceLoader;
+
+/**
+ * Interface for parent commands that accept subcommands to be dynamically
registered.
+ * Subcommands should:
+ * <li>implement the interface returned by {@link #subcommandType()}</li>
+ * <li>be annotated with {@code MetaInfServices} parameterized with the same
type</li>
+ */
+public interface ExtensibleParentCommand {
+
+ /** @return The class of the marker interface for subcommands. */
+ Class<?> subcommandType();
+
+ /** Recursively find and add subcommands to {@code cli}. */
+ static void addSubcommands(CommandLine cli) {
+ Object command = cli.getCommand();
+
+ // find and add subcommands
+ if (command instanceof ExtensibleParentCommand) {
+ ExtensibleParentCommand parentCommand = (ExtensibleParentCommand)
command;
+ ServiceLoader<?> subcommands =
ServiceLoader.load(parentCommand.subcommandType());
+ for (Object subcommand : subcommands) {
+ final CommandLine.Command commandAnnotation =
subcommand.getClass().getAnnotation(CommandLine.Command.class);
+ CommandLine subcommandCommandLine = new CommandLine(subcommand);
+ cli.addSubcommand(commandAnnotation.name(), subcommandCommandLine);
+ }
+ }
+
+ // process subcommands recursively
+ for (CommandLine subcommand : cli.getSubcommands().values()) {
+ addSubcommands(subcommand);
+ }
+ }
+
+}
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/cli/GenericCli.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/cli/GenericCli.java
index 4c5f3fdc87..a8ff931b23 100644
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/cli/GenericCli.java
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/cli/GenericCli.java
@@ -52,16 +52,20 @@ public class GenericCli implements Callable<Void>,
GenericParentCommand {
private final CommandLine cmd;
public GenericCli() {
+ this(null);
+ }
+
+ public GenericCli(Class<?> type) {
cmd = new CommandLine(this);
cmd.setExecutionExceptionHandler((ex, commandLine, parseResult) -> {
printError(ex);
return EXECUTION_ERROR_EXIT_CODE;
});
- }
- public GenericCli(Class<?> type) {
- this();
- addSubcommands(getCmd(), type);
+ if (type != null) {
+ addSubcommands(getCmd(), type);
+ }
+ ExtensibleParentCommand.addSubcommands(cmd);
}
private void addSubcommands(CommandLine cli, Class<?> type) {
diff --git
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/cli/AdminSubcommand.java
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/cli/AdminSubcommand.java
new file mode 100644
index 0000000000..b03b75eb8a
--- /dev/null
+++
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/cli/AdminSubcommand.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hdds.cli;
+
+/** Marker interface for subcommands to be added to {@code OzoneAdmin}. */
+public interface AdminSubcommand {
+ // marker
+}
diff --git
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/cli/OzoneAdmin.java
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/cli/OzoneAdmin.java
index cc496a28e7..5a9736e5e5 100644
--- a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/cli/OzoneAdmin.java
+++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/cli/OzoneAdmin.java
@@ -33,19 +33,18 @@ import picocli.CommandLine;
description = "Developer tools for Ozone Admin operations",
versionProvider = HddsVersionProvider.class,
mixinStandardHelpOptions = true)
-public class OzoneAdmin extends GenericCli {
+public class OzoneAdmin extends GenericCli implements ExtensibleParentCommand {
private OzoneConfiguration ozoneConf;
private UserGroupInformation user;
public OzoneAdmin() {
- super(OzoneAdmin.class);
+ super();
}
@VisibleForTesting
public OzoneAdmin(OzoneConfiguration conf) {
- super(OzoneAdmin.class);
ozoneConf = conf;
}
@@ -79,4 +78,9 @@ public class OzoneAdmin extends GenericCli {
return TracingUtil.executeInNewSpan(spanName,
() -> super.execute(argv));
}
+
+ @Override
+ public Class<? extends AdminSubcommand> subcommandType() {
+ return AdminSubcommand.class;
+ }
}
diff --git
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ContainerBalancerCommands.java
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ContainerBalancerCommands.java
index 7f24d843b0..2264f096a2 100644
---
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ContainerBalancerCommands.java
+++
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ContainerBalancerCommands.java
@@ -17,10 +17,9 @@
*/
package org.apache.hadoop.hdds.scm.cli;
+import org.apache.hadoop.hdds.cli.AdminSubcommand;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
-import org.apache.hadoop.hdds.cli.OzoneAdmin;
-import org.apache.hadoop.hdds.cli.SubcommandWithParent;
import org.kohsuke.MetaInfServices;
import picocli.CommandLine.Command;
import picocli.CommandLine.Model.CommandSpec;
@@ -90,9 +89,8 @@ import java.util.concurrent.Callable;
ContainerBalancerStopSubcommand.class,
ContainerBalancerStatusSubcommand.class
})
-@MetaInfServices(SubcommandWithParent.class)
-public class ContainerBalancerCommands implements Callable<Void>,
- SubcommandWithParent {
+@MetaInfServices(AdminSubcommand.class)
+public class ContainerBalancerCommands implements Callable<Void>,
AdminSubcommand {
@Spec
private CommandSpec spec;
@@ -102,9 +100,4 @@ public class ContainerBalancerCommands implements
Callable<Void>,
GenericCli.missingSubcommand(spec);
return null;
}
-
- @Override
- public Class<?> getParentType() {
- return OzoneAdmin.class;
- }
}
diff --git
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ReplicationManagerCommands.java
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ReplicationManagerCommands.java
index cd5aba3a82..a16e522751 100644
---
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ReplicationManagerCommands.java
+++
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ReplicationManagerCommands.java
@@ -19,10 +19,9 @@ package org.apache.hadoop.hdds.scm.cli;
import java.util.concurrent.Callable;
+import org.apache.hadoop.hdds.cli.AdminSubcommand;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
-import org.apache.hadoop.hdds.cli.OzoneAdmin;
-import org.apache.hadoop.hdds.cli.SubcommandWithParent;
import org.kohsuke.MetaInfServices;
import picocli.CommandLine.Command;
@@ -42,9 +41,8 @@ import picocli.CommandLine.Spec;
ReplicationManagerStopSubcommand.class,
ReplicationManagerStatusSubcommand.class
})
-@MetaInfServices(SubcommandWithParent.class)
-public class ReplicationManagerCommands implements Callable<Void>,
- SubcommandWithParent {
+@MetaInfServices(AdminSubcommand.class)
+public class ReplicationManagerCommands implements Callable<Void>,
AdminSubcommand {
@Spec
private CommandSpec spec;
@@ -54,9 +52,4 @@ public class ReplicationManagerCommands implements
Callable<Void>,
GenericCli.missingSubcommand(spec);
return null;
}
-
- @Override
- public Class<?> getParentType() {
- return OzoneAdmin.class;
- }
}
diff --git
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeCommands.java
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeCommands.java
index 6ba7cf2954..49f73e6fae 100644
---
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeCommands.java
+++
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeCommands.java
@@ -19,10 +19,9 @@ package org.apache.hadoop.hdds.scm.cli;
import java.util.concurrent.Callable;
+import org.apache.hadoop.hdds.cli.AdminSubcommand;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
-import org.apache.hadoop.hdds.cli.OzoneAdmin;
-import org.apache.hadoop.hdds.cli.SubcommandWithParent;
import org.kohsuke.MetaInfServices;
import picocli.CommandLine.Command;
@@ -42,8 +41,8 @@ import picocli.CommandLine.Spec;
SafeModeExitSubcommand.class,
SafeModeWaitSubcommand.class
})
-@MetaInfServices(SubcommandWithParent.class)
-public class SafeModeCommands implements Callable<Void>, SubcommandWithParent {
+@MetaInfServices(AdminSubcommand.class)
+public class SafeModeCommands implements Callable<Void>, AdminSubcommand {
@Spec
private CommandSpec spec;
@@ -53,9 +52,4 @@ public class SafeModeCommands implements Callable<Void>,
SubcommandWithParent {
GenericCli.missingSubcommand(spec);
return null;
}
-
- @Override
- public Class<?> getParentType() {
- return OzoneAdmin.class;
- }
}
diff --git
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/TopologySubcommand.java
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/TopologySubcommand.java
index 9ac275fd5c..72bca50693 100644
---
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/TopologySubcommand.java
+++
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/TopologySubcommand.java
@@ -33,9 +33,8 @@ import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import org.apache.hadoop.hdds.cli.AdminSubcommand;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
-import org.apache.hadoop.hdds.cli.OzoneAdmin;
-import org.apache.hadoop.hdds.cli.SubcommandWithParent;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.scm.client.ScmClient;
@@ -56,9 +55,9 @@ import picocli.CommandLine;
description = "Print a tree of the network topology as reported by SCM",
mixinStandardHelpOptions = true,
versionProvider = HddsVersionProvider.class)
-@MetaInfServices(SubcommandWithParent.class)
+@MetaInfServices(AdminSubcommand.class)
public class TopologySubcommand extends ScmSubcommand
- implements SubcommandWithParent {
+ implements AdminSubcommand {
private static final List<HddsProtos.NodeState> STATES = new ArrayList<>();
@@ -137,11 +136,6 @@ public class TopologySubcommand extends ScmSubcommand
}
}
- @Override
- public Class<?> getParentType() {
- return OzoneAdmin.class;
- }
-
// Format
// Location: rack1
// ipAddress(hostName) OperationalState
diff --git
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/cert/CertCommands.java
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/cert/CertCommands.java
index d466c9554a..211e3bb092 100644
---
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/cert/CertCommands.java
+++
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/cert/CertCommands.java
@@ -19,10 +19,9 @@ package org.apache.hadoop.hdds.scm.cli.cert;
import java.util.concurrent.Callable;
+import org.apache.hadoop.hdds.cli.AdminSubcommand;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
-import org.apache.hadoop.hdds.cli.OzoneAdmin;
-import org.apache.hadoop.hdds.cli.SubcommandWithParent;
import org.kohsuke.MetaInfServices;
import picocli.CommandLine.Command;
@@ -43,8 +42,8 @@ import picocli.CommandLine.Spec;
CleanExpiredCertsSubcommand.class,
})
-@MetaInfServices(SubcommandWithParent.class)
-public class CertCommands implements Callable<Void>, SubcommandWithParent {
+@MetaInfServices(AdminSubcommand.class)
+public class CertCommands implements Callable<Void>, AdminSubcommand {
@Spec
private CommandSpec spec;
@@ -54,9 +53,4 @@ public class CertCommands implements Callable<Void>,
SubcommandWithParent {
GenericCli.missingSubcommand(spec);
return null;
}
-
- @Override
- public Class<?> getParentType() {
- return OzoneAdmin.class;
- }
}
diff --git
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/ContainerCommands.java
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/ContainerCommands.java
index 15dd873491..a38b98c53a 100644
---
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/ContainerCommands.java
+++
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/ContainerCommands.java
@@ -19,10 +19,10 @@ package org.apache.hadoop.hdds.scm.cli.container;
import java.util.concurrent.Callable;
+import org.apache.hadoop.hdds.cli.AdminSubcommand;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.cli.OzoneAdmin;
-import org.apache.hadoop.hdds.cli.SubcommandWithParent;
import org.kohsuke.MetaInfServices;
import picocli.CommandLine.Command;
@@ -46,8 +46,8 @@ import picocli.CommandLine.Spec;
ReportSubcommand.class,
UpgradeSubcommand.class
})
-@MetaInfServices(SubcommandWithParent.class)
-public class ContainerCommands implements Callable<Void>, SubcommandWithParent
{
+@MetaInfServices(AdminSubcommand.class)
+public class ContainerCommands implements Callable<Void>, AdminSubcommand {
@Spec
private CommandSpec spec;
@@ -61,11 +61,6 @@ public class ContainerCommands implements Callable<Void>,
SubcommandWithParent {
return null;
}
- @Override
- public Class<?> getParentType() {
- return OzoneAdmin.class;
- }
-
public OzoneAdmin getParent() {
return parent;
}
diff --git
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DatanodeCommands.java
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DatanodeCommands.java
index 8cb2114f57..6c020e46f3 100644
---
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DatanodeCommands.java
+++
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DatanodeCommands.java
@@ -17,10 +17,9 @@
*/
package org.apache.hadoop.hdds.scm.cli.datanode;
+import org.apache.hadoop.hdds.cli.AdminSubcommand;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
-import org.apache.hadoop.hdds.cli.OzoneAdmin;
-import org.apache.hadoop.hdds.cli.SubcommandWithParent;
import org.kohsuke.MetaInfServices;
import picocli.CommandLine;
import picocli.CommandLine.Model.CommandSpec;
@@ -41,10 +40,11 @@ import java.util.concurrent.Callable;
DecommissionSubCommand.class,
MaintenanceSubCommand.class,
RecommissionSubCommand.class,
+ StatusSubCommand.class,
UsageInfoSubcommand.class
})
-@MetaInfServices(SubcommandWithParent.class)
-public class DatanodeCommands implements Callable<Void>, SubcommandWithParent {
+@MetaInfServices(AdminSubcommand.class)
+public class DatanodeCommands implements Callable<Void>, AdminSubcommand {
@Spec
private CommandSpec spec;
@@ -54,9 +54,4 @@ public class DatanodeCommands implements Callable<Void>,
SubcommandWithParent {
GenericCli.missingSubcommand(spec);
return null;
}
-
- @Override
- public Class<?> getParentType() {
- return OzoneAdmin.class;
- }
}
diff --git
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/StatusSubCommand.java
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/StatusSubCommand.java
index 9edcd3425a..b33a5d1ea9 100644
---
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/StatusSubCommand.java
+++
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/StatusSubCommand.java
@@ -19,8 +19,6 @@ package org.apache.hadoop.hdds.scm.cli.datanode;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
-import org.apache.hadoop.hdds.cli.SubcommandWithParent;
-import org.kohsuke.MetaInfServices;
import picocli.CommandLine;
import picocli.CommandLine.Command;
import java.util.concurrent.Callable;
@@ -37,8 +35,7 @@ import java.util.concurrent.Callable;
DecommissionStatusSubCommand.class
})
-@MetaInfServices(SubcommandWithParent.class)
-public class StatusSubCommand implements Callable<Void>, SubcommandWithParent {
+public class StatusSubCommand implements Callable<Void> {
@CommandLine.Spec
private CommandLine.Model.CommandSpec spec;
@@ -48,9 +45,4 @@ public class StatusSubCommand implements Callable<Void>,
SubcommandWithParent {
GenericCli.missingSubcommand(spec);
return null;
}
-
- @Override
- public Class<?> getParentType() {
- return DatanodeCommands.class;
- }
}
diff --git
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/pipeline/PipelineCommands.java
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/pipeline/PipelineCommands.java
index ba7371e621..9c39103556 100644
---
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/pipeline/PipelineCommands.java
+++
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/pipeline/PipelineCommands.java
@@ -19,10 +19,9 @@ package org.apache.hadoop.hdds.scm.cli.pipeline;
import java.util.concurrent.Callable;
+import org.apache.hadoop.hdds.cli.AdminSubcommand;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
-import org.apache.hadoop.hdds.cli.OzoneAdmin;
-import org.apache.hadoop.hdds.cli.SubcommandWithParent;
import org.kohsuke.MetaInfServices;
import picocli.CommandLine.Command;
@@ -44,8 +43,8 @@ import picocli.CommandLine.Spec;
CreatePipelineSubcommand.class,
ClosePipelineSubcommand.class
})
-@MetaInfServices(SubcommandWithParent.class)
-public class PipelineCommands implements Callable<Void>, SubcommandWithParent {
+@MetaInfServices(AdminSubcommand.class)
+public class PipelineCommands implements Callable<Void>, AdminSubcommand {
@Spec
private CommandSpec spec;
@@ -55,9 +54,4 @@ public class PipelineCommands implements Callable<Void>,
SubcommandWithParent {
GenericCli.missingSubcommand(spec);
return null;
}
-
- @Override
- public Class<?> getParentType() {
- return OzoneAdmin.class;
- }
}
diff --git
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/NSSummaryAdmin.java
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/NSSummaryAdmin.java
index 46a311e354..af039cfff6 100644
---
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/NSSummaryAdmin.java
+++
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/NSSummaryAdmin.java
@@ -21,7 +21,7 @@ import org.apache.hadoop.fs.ozone.OzoneClientUtils;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.cli.OzoneAdmin;
-import org.apache.hadoop.hdds.cli.SubcommandWithParent;
+import org.apache.hadoop.hdds.cli.AdminSubcommand;
import org.apache.hadoop.hdds.conf.ConfigurationSource;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.server.http.HttpConfig;
@@ -62,8 +62,8 @@ import static
org.apache.hadoop.hdds.server.http.HttpServer2.HTTP_SCHEME;
QuotaUsageSubCommand.class,
FileSizeDistSubCommand.class
})
-@MetaInfServices(SubcommandWithParent.class)
-public class NSSummaryAdmin extends GenericCli implements SubcommandWithParent
{
+@MetaInfServices(AdminSubcommand.class)
+public class NSSummaryAdmin extends GenericCli implements AdminSubcommand {
@CommandLine.ParentCommand
private OzoneAdmin parent;
@@ -80,11 +80,6 @@ public class NSSummaryAdmin extends GenericCli implements
SubcommandWithParent {
return null;
}
- @Override
- public Class<?> getParentType() {
- return OzoneAdmin.class;
- }
-
private boolean isObjectStoreBucket(OzoneBucket bucket, ObjectStore
objectStore) {
boolean enableFileSystemPaths = getOzoneConfig()
.getBoolean(OMConfigKeys.OZONE_OM_ENABLE_FILESYSTEM_PATHS,
diff --git
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/OMAdmin.java
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/OMAdmin.java
index 3162c55635..9e2e31b6f8 100644
---
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/OMAdmin.java
+++
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/OMAdmin.java
@@ -20,7 +20,7 @@ package org.apache.hadoop.ozone.admin.om;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.cli.OzoneAdmin;
-import org.apache.hadoop.hdds.cli.SubcommandWithParent;
+import org.apache.hadoop.hdds.cli.AdminSubcommand;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.ipc.ProtobufRpcEngine;
import org.apache.hadoop.ipc.RPC;
@@ -63,8 +63,8 @@ import java.util.Collection;
TransferOmLeaderSubCommand.class,
FetchKeySubCommand.class
})
-@MetaInfServices(SubcommandWithParent.class)
-public class OMAdmin extends GenericCli implements SubcommandWithParent {
+@MetaInfServices(AdminSubcommand.class)
+public class OMAdmin extends GenericCli implements AdminSubcommand {
@CommandLine.ParentCommand
private OzoneAdmin parent;
@@ -146,9 +146,4 @@ public class OMAdmin extends GenericCli implements
SubcommandWithParent {
conf.getTrimmedStringCollection(OZONE_OM_SERVICE_IDS_KEY);
return omServiceIds;
}
-
- @Override
- public Class<?> getParentType() {
- return OzoneAdmin.class;
- }
}
diff --git
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/reconfig/ReconfigureCommands.java
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/reconfig/ReconfigureCommands.java
index fc171e52d8..d14102c4e8 100644
---
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/reconfig/ReconfigureCommands.java
+++
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/reconfig/ReconfigureCommands.java
@@ -17,10 +17,10 @@
*/
package org.apache.hadoop.ozone.admin.reconfig;
+import org.apache.hadoop.hdds.cli.AdminSubcommand;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.cli.OzoneAdmin;
-import org.apache.hadoop.hdds.cli.SubcommandWithParent;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.scm.cli.ContainerOperationClient;
import org.apache.hadoop.hdds.scm.client.ScmClient;
@@ -47,9 +47,8 @@ import java.util.concurrent.Callable;
ReconfigureStatusSubcommand.class,
ReconfigurePropertiesSubcommand.class
})
-@MetaInfServices(SubcommandWithParent.class)
-public class ReconfigureCommands implements Callable<Void>,
- SubcommandWithParent {
+@MetaInfServices(AdminSubcommand.class)
+public class ReconfigureCommands implements Callable<Void>, AdminSubcommand {
@CommandLine.ParentCommand
private OzoneAdmin parent;
@@ -87,11 +86,6 @@ public class ReconfigureCommands implements Callable<Void>,
return HddsProtos.NodeType.valueOf(service);
}
- @Override
- public Class<?> getParentType() {
- return OzoneAdmin.class;
- }
-
public boolean isBatchReconfigDatanodes() {
return batchReconfigDatanodes;
}
diff --git
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/ScmAdmin.java
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/ScmAdmin.java
index 98eba154b2..d31f752704 100644
---
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/ScmAdmin.java
+++
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/ScmAdmin.java
@@ -20,7 +20,7 @@ package org.apache.hadoop.ozone.admin.scm;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.cli.OzoneAdmin;
-import org.apache.hadoop.hdds.cli.SubcommandWithParent;
+import org.apache.hadoop.hdds.cli.AdminSubcommand;
import org.kohsuke.MetaInfServices;
import picocli.CommandLine;
import picocli.CommandLine.Model.CommandSpec;
@@ -43,8 +43,8 @@ import picocli.CommandLine.Spec;
DecommissionScmSubcommand.class,
RotateKeySubCommand.class
})
-@MetaInfServices(SubcommandWithParent.class)
-public class ScmAdmin extends GenericCli implements SubcommandWithParent {
+@MetaInfServices(AdminSubcommand.class)
+public class ScmAdmin extends GenericCli implements AdminSubcommand {
@CommandLine.ParentCommand
private OzoneAdmin parent;
@@ -61,10 +61,4 @@ public class ScmAdmin extends GenericCli implements
SubcommandWithParent {
GenericCli.missingSubcommand(spec);
return null;
}
-
- @Override
- public Class<?> getParentType() {
- return OzoneAdmin.class;
- }
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]