Explorar o código

HDDS-1357. ozone s3 shell command has confusing subcommands (#663)

(cherry picked from commit ec82e4cab25fa4f240449f2721f7b321cf3b0c10)
Elek, Márton %!s(int64=6) %!d(string=hai) anos
pai
achega
f0640e2eba

+ 1 - 1
hadoop-ozone/common/src/main/bin/ozone

@@ -128,7 +128,7 @@ function ozonecmd_case
       OZONE_RUN_ARTIFACT_NAME="hadoop-ozone-ozone-manager"
     ;;
     sh | shell)
-      HADOOP_CLASSNAME=org.apache.hadoop.ozone.web.ozShell.Shell
+      HADOOP_CLASSNAME=org.apache.hadoop.ozone.web.ozShell.OzoneShell
       OZONE_RUN_ARTIFACT_NAME="hadoop-ozone-ozone-manager"
     ;;
     s3)

+ 2 - 1
hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/ozShell/TestOzoneShell.java

@@ -61,6 +61,7 @@ import org.apache.hadoop.ozone.om.exceptions.OMException;
 import org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes;
 import org.apache.hadoop.ozone.om.helpers.ServiceInfo;
 import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ServicePort;
+import org.apache.hadoop.ozone.web.ozShell.OzoneShell;
 import org.apache.hadoop.ozone.web.ozShell.Shell;
 import org.apache.hadoop.ozone.web.request.OzoneQuota;
 import org.apache.hadoop.ozone.web.response.BucketInfo;
@@ -157,7 +158,7 @@ public class TestOzoneShell {
     baseDir = new File(path);
     baseDir.mkdirs();
 
-    shell = new Shell();
+    shell = new OzoneShell();
 
     cluster = MiniOzoneCluster.newBuilder(conf)
         .setNumDatanodes(3)

+ 64 - 0
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/web/ozShell/OzoneShell.java

@@ -0,0 +1,64 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.ozone.web.ozShell;
+
+import org.apache.hadoop.hdds.cli.HddsVersionProvider;
+import org.apache.hadoop.hdds.tracing.TracingUtil;
+import org.apache.hadoop.ozone.web.ozShell.bucket.BucketCommands;
+import org.apache.hadoop.ozone.web.ozShell.keys.KeyCommands;
+import org.apache.hadoop.ozone.web.ozShell.token.TokenCommands;
+import org.apache.hadoop.ozone.web.ozShell.volume.VolumeCommands;
+
+import io.opentracing.Scope;
+import io.opentracing.util.GlobalTracer;
+import picocli.CommandLine.Command;
+
+/**
+ * Shell commands for native rpc object manipulation.
+ */
+@Command(name = "ozone sh",
+    description = "Shell for Ozone object store",
+    subcommands = {
+        VolumeCommands.class,
+        BucketCommands.class,
+        KeyCommands.class,
+        TokenCommands.class
+    },
+    versionProvider = HddsVersionProvider.class,
+    mixinStandardHelpOptions = true)
+public class OzoneShell extends Shell {
+
+  /**
+   * Main for the ozShell Command handling.
+   *
+   * @param argv - System Args Strings[]
+   * @throws Exception
+   */
+  public static void main(String[] argv) throws Exception {
+    new OzoneShell().run(argv);
+  }
+
+  @Override
+  public void execute(String[] argv) {
+    TracingUtil.initTracing("shell");
+    try (Scope scope = GlobalTracer.get().buildSpan("main").startActive(true)) {
+      super.execute(argv);
+    }
+  }
+
+}

+ 1 - 36
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/web/ozShell/Shell.java

@@ -19,19 +19,10 @@
 package org.apache.hadoop.ozone.web.ozShell;
 
 import org.apache.hadoop.hdds.cli.GenericCli;
-import org.apache.hadoop.hdds.cli.HddsVersionProvider;
-import org.apache.hadoop.hdds.tracing.TracingUtil;
 import org.apache.hadoop.ozone.om.exceptions.OMException;
-import org.apache.hadoop.ozone.web.ozShell.bucket.BucketCommands;
-import org.apache.hadoop.ozone.web.ozShell.keys.KeyCommands;
-import org.apache.hadoop.ozone.web.ozShell.token.TokenCommands;
-import org.apache.hadoop.ozone.web.ozShell.volume.VolumeCommands;
 
-import io.opentracing.Scope;
-import io.opentracing.util.GlobalTracer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import picocli.CommandLine.Command;
 
 /**
  * Ozone user interface commands.
@@ -39,17 +30,7 @@ import picocli.CommandLine.Command;
  * This class uses dispatch method to make calls
  * to appropriate handlers that execute the ozone functions.
  */
-@Command(name = "ozone sh",
-    description = "Shell for Ozone object store",
-    subcommands = {
-        VolumeCommands.class,
-        BucketCommands.class,
-        KeyCommands.class,
-        TokenCommands.class
-    },
-    versionProvider = HddsVersionProvider.class,
-    mixinStandardHelpOptions = true)
-public class Shell extends GenericCli {
+public abstract class Shell extends GenericCli {
 
   private static final Logger LOG = LoggerFactory.getLogger(Shell.class);
 
@@ -75,23 +56,7 @@ public class Shell extends GenericCli {
   // General options
   public static final int DEFAULT_OZONE_PORT = 50070;
 
-  @Override
-  public void execute(String[] argv) {
-    TracingUtil.initTracing("shell");
-    try (Scope scope = GlobalTracer.get().buildSpan("main").startActive(true)) {
-      super.execute(argv);
-    }
-  }
 
-  /**
-   * Main for the ozShell Command handling.
-   *
-   * @param argv - System Args Strings[]
-   * @throws Exception
-   */
-  public static void main(String[] argv) throws Exception {
-    new Shell().run(argv);
-  }
 
   @Override
   protected void printError(Throwable errorArg) {