Procházet zdrojové kódy

HDDS-373. Genconf tool must generate ozone-site.xml with sample values (#1025)

dineshchitlangia před 5 roky
rodič
revize
1f75660350

+ 2 - 0
hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConfigKeys.java

@@ -41,6 +41,8 @@ public final class OzoneConfigKeys {
       "dfs.container.ipc";
       "dfs.container.ipc";
   public static final int DFS_CONTAINER_IPC_PORT_DEFAULT = 9859;
   public static final int DFS_CONTAINER_IPC_PORT_DEFAULT = 9859;
 
 
+  public static final String OZONE_METADATA_DIRS = "ozone.metadata.dirs";
+
   /**
   /**
    *
    *
    * When set to true, allocate a random free port for ozone container,
    * When set to true, allocate a random free port for ozone container,

+ 4 - 0
hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java

@@ -299,4 +299,8 @@ public final class OzoneConsts {
   // from OM leader to follower
   // from OM leader to follower
   public static final String OM_RATIS_SNAPSHOT_BEFORE_DB_CHECKPOINT =
   public static final String OM_RATIS_SNAPSHOT_BEFORE_DB_CHECKPOINT =
       "snapshotBeforeCheckpoint";
       "snapshotBeforeCheckpoint";
+
+  public static final String JAVA_TMP_DIR = "java.io.tmpdir";
+  public static final String LOCALHOST = "localhost";
+
 }
 }

+ 15 - 1
hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/genconf/GenerateOzoneRequiredConfigurations.java

@@ -21,7 +21,10 @@ package org.apache.hadoop.ozone.genconf;
 import org.apache.hadoop.hdds.cli.GenericCli;
 import org.apache.hadoop.hdds.cli.GenericCli;
 import org.apache.hadoop.hdds.cli.HddsVersionProvider;
 import org.apache.hadoop.hdds.cli.HddsVersionProvider;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
+import org.apache.hadoop.hdds.scm.ScmConfigKeys;
 import org.apache.hadoop.ozone.OzoneConfigKeys;
 import org.apache.hadoop.ozone.OzoneConfigKeys;
+import org.apache.hadoop.ozone.OzoneConsts;
+import org.apache.hadoop.ozone.om.OMConfigKeys;
 import picocli.CommandLine.Command;
 import picocli.CommandLine.Command;
 import picocli.CommandLine.Parameters;
 import picocli.CommandLine.Parameters;
 import picocli.CommandLine.PicocliException;
 import picocli.CommandLine.PicocliException;
@@ -106,9 +109,19 @@ public final class GenerateOzoneRequiredConfigurations extends GenericCli {
 
 
     for (OzoneConfiguration.Property p : allProperties) {
     for (OzoneConfiguration.Property p : allProperties) {
       if (p.getTag() != null && p.getTag().contains("REQUIRED")) {
       if (p.getTag() != null && p.getTag().contains("REQUIRED")) {
-        if(p.getName().equalsIgnoreCase(OzoneConfigKeys.OZONE_ENABLED)) {
+        if (p.getName().equalsIgnoreCase(OzoneConfigKeys.OZONE_ENABLED)) {
           p.setValue(String.valueOf(Boolean.TRUE));
           p.setValue(String.valueOf(Boolean.TRUE));
+        } else if (p.getName().equalsIgnoreCase(
+            OzoneConfigKeys.OZONE_METADATA_DIRS)) {
+          p.setValue(System.getProperty(OzoneConsts.JAVA_TMP_DIR));
+        } else if (p.getName().equalsIgnoreCase(
+            OMConfigKeys.OZONE_OM_ADDRESS_KEY)
+            || p.getName().equalsIgnoreCase(ScmConfigKeys.OZONE_SCM_NAMES)
+            || p.getName().equalsIgnoreCase(
+              ScmConfigKeys.OZONE_SCM_CLIENT_ADDRESS_KEY)) {
+          p.setValue(OzoneConsts.LOCALHOST);
         }
         }
+
         requiredProperties.add(p);
         requiredProperties.add(p);
       }
       }
     }
     }
@@ -157,4 +170,5 @@ public final class GenerateOzoneRequiredConfigurations extends GenericCli {
     File file = new File(path);
     File file = new File(path);
     return file.canWrite();
     return file.canWrite();
   }
   }
+
 }
 }

+ 16 - 0
hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/genconf/TestGenerateOzoneRequiredConfigurations.java

@@ -20,6 +20,7 @@ package org.apache.hadoop.ozone.genconf;
 
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.test.GenericTestUtils;
 import org.apache.hadoop.test.GenericTestUtils;
 import org.junit.After;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.AfterClass;
@@ -39,6 +40,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.File;
 import java.io.IOException;
 import java.io.IOException;
 import java.io.PrintStream;
 import java.io.PrintStream;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Arrays;
 import java.util.List;
 import java.util.List;
@@ -148,6 +150,7 @@ public class TestGenerateOzoneRequiredConfigurations {
   /**
   /**
    * Tests a valid path and generates ozone-site.xml by calling
    * Tests a valid path and generates ozone-site.xml by calling
    * {@code GenerateOzoneRequiredConfigurations#generateConfigurations}.
    * {@code GenerateOzoneRequiredConfigurations#generateConfigurations}.
+   * Further verifies that all properties have a default value.
    *
    *
    * @throws Exception
    * @throws Exception
    */
    */
@@ -157,6 +160,19 @@ public class TestGenerateOzoneRequiredConfigurations {
     String[] args = new String[]{tempPath.getAbsolutePath()};
     String[] args = new String[]{tempPath.getAbsolutePath()};
     execute(args, "ozone-site.xml has been generated at " +
     execute(args, "ozone-site.xml has been generated at " +
         tempPath.getAbsolutePath());
         tempPath.getAbsolutePath());
+
+    //Fetch file generated by above line
+    URL url = new File(tempPath.getAbsolutePath() + "/ozone-site.xml")
+        .toURI().toURL();
+    OzoneConfiguration oc = new OzoneConfiguration();
+    List<OzoneConfiguration.Property> allProperties =
+        oc.readPropertyFromXml(url);
+
+    //Asserts all properties have a non-empty value
+    for (OzoneConfiguration.Property p : allProperties) {
+      Assert.assertTrue(
+          p.getValue() != null && p.getValue().length() > 0);
+    }
   }
   }
 
 
   /**
   /**