azkaban-aplcache

adding job logger to credential instance (#1600) In order

2/22/2018 3:19:52 AM

Details

diff --git a/azkaban-hadoop-security-plugin/src/main/java/azkaban/security/HadoopSecurityManager_H_2_0.java b/azkaban-hadoop-security-plugin/src/main/java/azkaban/security/HadoopSecurityManager_H_2_0.java
index a8b6a8f..afaaf08 100644
--- a/azkaban-hadoop-security-plugin/src/main/java/azkaban/security/HadoopSecurityManager_H_2_0.java
+++ b/azkaban-hadoop-security-plugin/src/main/java/azkaban/security/HadoopSecurityManager_H_2_0.java
@@ -338,18 +338,22 @@ public class HadoopSecurityManager_H_2_0 extends HadoopSecurityManager {
   }
 
   private void registerCustomCredential(final Props props, final Credentials hadoopCred, final
-  String userToProxy) {
+  String userToProxy, final Logger jobLogger) {
     String credentialClassName = "unknown class";
       try {
         credentialClassName = props
             .getString(Constants.ConfigurationKeys.CUSTOM_CREDENTIAL_NAME);
         logger.info("custom credential class name: " + credentialClassName);
-        final Class metricsClass = Class.forName(credentialClassName);
-
-        final Constructor[] constructors = metricsClass.getConstructors();
-        final CredentialProvider customCredential = (CredentialProvider) constructors[0]
-            .newInstance(hadoopCred, props);
+        final Class credentialClass = Class.forName(credentialClassName);
+
+        // The credential class must have a constructor accepting 3 parameters, Credentials,
+        // Props, and Logger in order.
+        Constructor constructor = credentialClass.getConstructor (new Class[]
+            {Credentials.class, Props.class, Logger.class});
+        final CredentialProvider customCredential = (CredentialProvider) constructor
+              .newInstance(hadoopCred, props, jobLogger);
         customCredential.register(userToProxy);
+
       } catch (final Exception e) {
         logger.error("Encountered error while loading and instantiating "
             + credentialClassName, e);
@@ -636,7 +640,7 @@ public class HadoopSecurityManager_H_2_0 extends HadoopSecurityManager {
 
           // Register user secrets by custom credential Object
           if (props.getBoolean(JobProperties.ENABLE_JOB_SSL, false)) {
-            registerCustomCredential(props, cred, userToProxy);
+            registerCustomCredential(props, cred, userToProxy, logger);
           }
 
           if (props.getBoolean(OBTAIN_NAMENODE_TOKEN, false)) {