TEZ-4096: SSLFactory should pickup configs from incoming conf payload (rbalamohan, reviewed by gopalv)
diff --git a/tez-runtime-library/src/main/java/org/apache/tez/http/SSLFactory.java b/tez-runtime-library/src/main/java/org/apache/tez/http/SSLFactory.java
index e7a2dd0..203eb40 100644
--- a/tez-runtime-library/src/main/java/org/apache/tez/http/SSLFactory.java
+++ b/tez-runtime-library/src/main/java/org/apache/tez/http/SSLFactory.java
@@ -85,13 +85,13 @@
     this.mode = mode;
     requireClientCert = conf.getBoolean(SSL_REQUIRE_CLIENT_CERT_KEY,
         DEFAULT_SSL_REQUIRE_CLIENT_CERT);
-    Configuration sslConf = readSSLConfiguration(mode);
+    // Rest of ssl configs are pre-populated in incoming conf payload
+    conf.setBoolean(SSL_REQUIRE_CLIENT_CERT_KEY, requireClientCert);
 
     Class<? extends KeyStoresFactory> klass
         = conf.getClass(KEYSTORES_FACTORY_CLASS_KEY,
         FileBasedKeyStoresFactory.class, KeyStoresFactory.class);
-    keystoresFactory = ReflectionUtils.newInstance(klass, sslConf);
-
+    keystoresFactory = ReflectionUtils.newInstance(klass, conf);
     enabledProtocols = conf.getStrings(SSL_ENABLED_PROTOCOLS, DEFAULT_SSL_ENABLED_PROTOCOLS);
   }
 
diff --git a/tez-runtime-library/src/main/java/org/apache/tez/runtime/library/api/TezRuntimeConfiguration.java b/tez-runtime-library/src/main/java/org/apache/tez/runtime/library/api/TezRuntimeConfiguration.java
index 00bb20c..9c2f7c3 100644
--- a/tez-runtime-library/src/main/java/org/apache/tez/runtime/library/api/TezRuntimeConfiguration.java
+++ b/tez-runtime-library/src/main/java/org/apache/tez/runtime/library/api/TezRuntimeConfiguration.java
@@ -668,10 +668,11 @@
     }
 
     // Do NOT need all prefixes from the following list. Only specific ones are allowed
-    // "hadoop.", "hadoop.security", "io.", "fs.", "ipc.", "net.", "file.", "dfs.", "ha.", "s3.", "nfs3.", "rpc."
+    // "hadoop.", "hadoop.security", "io.", "fs.", "ipc.", "net.", "file.", "dfs.", "ha.", "s3.", "nfs3.", "rpc.", "ssl."
     allowedPrefixes.add("io.");
     allowedPrefixes.add("file.");
     allowedPrefixes.add("fs.");
+    allowedPrefixes.add("ssl.");
 
     umnodifiableTezRuntimeKeySet = Collections.unmodifiableSet(tezRuntimeKeys);
     unmodifiableOtherKeySet = Collections.unmodifiableSet(otherKeys);
diff --git a/tez-runtime-library/src/test/java/org/apache/tez/runtime/library/conf/TestUnorderedKVInputConfig.java b/tez-runtime-library/src/test/java/org/apache/tez/runtime/library/conf/TestUnorderedKVInputConfig.java
index bb75442..d04fa6d 100644
--- a/tez-runtime-library/src/test/java/org/apache/tez/runtime/library/conf/TestUnorderedKVInputConfig.java
+++ b/tez-runtime-library/src/test/java/org/apache/tez/runtime/library/conf/TestUnorderedKVInputConfig.java
@@ -58,6 +58,7 @@
     fromConf.set("test.conf.key.1", "confkey1");
     fromConf.setInt(TezRuntimeConfiguration.TEZ_RUNTIME_IFILE_READAHEAD_BYTES, 1111);
     fromConf.set("io.shouldExist", "io");
+    fromConf.set("ssl.shouldExist", "ssl");
     Map<String, String> additionalConf = new HashMap<String, String>();
     additionalConf.put("test.key.2", "key2");
     additionalConf.put(TezRuntimeConfiguration.TEZ_RUNTIME_IO_SORT_FACTOR, "3");
@@ -105,6 +106,7 @@
     assertEquals("io", conf.get("io.shouldExist"));
     assertEquals("file", conf.get("file.shouldExist"));
     assertEquals("fs", conf.get("fs.shouldExist"));
+    assertEquals("ssl", conf.get("ssl.shouldExist"));
     assertNull(conf.get("test.conf.key.1"));
     assertNull(conf.get("test.key.1"));
     assertNull(conf.get("test.key.2"));
diff --git a/tez-tests/src/test/java/org/apache/tez/test/TestSecureShuffle.java b/tez-tests/src/test/java/org/apache/tez/test/TestSecureShuffle.java
index 0fb07fc..6d34464 100644
--- a/tez-tests/src/test/java/org/apache/tez/test/TestSecureShuffle.java
+++ b/tez-tests/src/test/java/org/apache/tez/test/TestSecureShuffle.java
@@ -18,6 +18,7 @@
 
 package org.apache.tez.test;
 
+import static org.apache.hadoop.security.ssl.SSLFactory.SSL_CLIENT_CONF_KEY;
 import static org.junit.Assert.assertEquals;
 
 import java.io.BufferedWriter;
@@ -133,6 +134,9 @@
 
     conf.setLong(TezConfiguration.TEZ_AM_SLEEP_TIME_BEFORE_EXIT_MILLIS, 500);
 
+    String sslConf = conf.get(SSL_CLIENT_CONF_KEY, "ssl-client.xml");
+    conf.addResource(sslConf);
+
     miniTezCluster = new MiniTezCluster(TestSecureShuffle.class.getName() + "-" +
         (enableSSLInCluster ? "withssl" : "withoutssl"), 1, 1, 1);