Repository: incubator-gobblin
Updated Branches:
  refs/heads/master f502cbee3 -> 3ab02b3f2


[GOBBLIN-186] Add support for using the Kerberos authentication plugin without 
a GobblinDriverInstance[]

Closes #2041 from htran1/kerberos_from_config


Project: http://git-wip-us.apache.org/repos/asf/incubator-gobblin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-gobblin/commit/3ab02b3f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-gobblin/tree/3ab02b3f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-gobblin/diff/3ab02b3f

Branch: refs/heads/master
Commit: 3ab02b3f25b0769181e7dab2a99f2ca2b124719b
Parents: f502cbe
Author: Hung Tran <hut...@linkedin.com>
Authored: Wed Aug 9 10:20:18 2017 -0700
Committer: Hung Tran <hut...@linkedin.com>
Committed: Wed Aug 9 10:20:18 2017 -0700

----------------------------------------------------------------------
 ...HadoopKerberosKeytabAuthenticationPlugin.java | 19 +++++++++++++------
 ...HadoopKerberosKeytabAuthenticationPlugin.java | 14 ++++++++++++++
 2 files changed, 27 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-gobblin/blob/3ab02b3f/gobblin-runtime-hadoop/src/main/java/org/apache/gobblin/runtime/instance/plugin/hadoop/HadoopKerberosKeytabAuthenticationPlugin.java
----------------------------------------------------------------------
diff --git 
a/gobblin-runtime-hadoop/src/main/java/org/apache/gobblin/runtime/instance/plugin/hadoop/HadoopKerberosKeytabAuthenticationPlugin.java
 
b/gobblin-runtime-hadoop/src/main/java/org/apache/gobblin/runtime/instance/plugin/hadoop/HadoopKerberosKeytabAuthenticationPlugin.java
index 4e1747d..c30f268 100644
--- 
a/gobblin-runtime-hadoop/src/main/java/org/apache/gobblin/runtime/instance/plugin/hadoop/HadoopKerberosKeytabAuthenticationPlugin.java
+++ 
b/gobblin-runtime-hadoop/src/main/java/org/apache/gobblin/runtime/instance/plugin/hadoop/HadoopKerberosKeytabAuthenticationPlugin.java
@@ -48,8 +48,10 @@ public class HadoopKerberosKeytabAuthenticationPlugin 
extends BaseIdlePluginImpl
   public static class ConfigBasedFactory implements 
GobblinInstancePluginFactory {
     @Override
     public GobblinInstancePlugin createPlugin(GobblinInstanceDriver instance) {
+      return createPlugin(instance.getSysConfig().getConfig());
+    }
 
-      Config sysConfig = instance.getSysConfig().getConfig();
+    public GobblinInstancePlugin createPlugin(Config sysConfig) {
       if (!sysConfig.hasPath(PluginStaticKeys.LOGIN_USER_FULL_KEY)) {
         throw new RuntimeException("Missing required sys config: " + 
PluginStaticKeys.LOGIN_USER_FULL_KEY);
       }
@@ -60,7 +62,7 @@ public class HadoopKerberosKeytabAuthenticationPlugin extends 
BaseIdlePluginImpl
       String loginUser = 
sysConfig.getString(PluginStaticKeys.LOGIN_USER_FULL_KEY);
       String loginUserKeytabFile = 
sysConfig.getString(PluginStaticKeys.LOGIN_USER_KEYTAB_FILE_FULL_KEY);
 
-      return new HadoopKerberosKeytabAuthenticationPlugin(instance, loginUser, 
loginUserKeytabFile);
+      return new HadoopKerberosKeytabAuthenticationPlugin(sysConfig, 
loginUser, loginUserKeytabFile);
     }
   }
 
@@ -75,7 +77,8 @@ public class HadoopKerberosKeytabAuthenticationPlugin extends 
BaseIdlePluginImpl
 
     @Override
     public GobblinInstancePlugin createPlugin(GobblinInstanceDriver instance) {
-      return new HadoopKerberosKeytabAuthenticationPlugin(instance, 
_loginUser, _loginUserKeytabFile);
+      return new 
HadoopKerberosKeytabAuthenticationPlugin(instance.getSysConfig().getConfig(), 
_loginUser,
+          _loginUserKeytabFile);
     }
   }
 
@@ -83,9 +86,8 @@ public class HadoopKerberosKeytabAuthenticationPlugin extends 
BaseIdlePluginImpl
   private final String _loginUserKeytabFile;
   private final Configuration _hadoopConf;
 
-  private HadoopKerberosKeytabAuthenticationPlugin(GobblinInstanceDriver 
instance, String loginUser, String loginUserKeytabFile) {
-    super(instance);
-    Config sysConfig = instance.getSysConfig().getConfig();
+  private HadoopKerberosKeytabAuthenticationPlugin(Config sysConfig, String 
loginUser, String loginUserKeytabFile) {
+    super(null);
 
     _loginUser = loginUser;
     _loginUserKeytabFile = loginUserKeytabFile;
@@ -110,6 +112,11 @@ public class HadoopKerberosKeytabAuthenticationPlugin 
extends BaseIdlePluginImpl
 
   }
 
+  @Override
+  protected void shutDown() throws Exception {
+    log.info("Plugin shutdown: " + this);
+  }
+
   public String getLoginUser() {
     return _loginUser;
   }

http://git-wip-us.apache.org/repos/asf/incubator-gobblin/blob/3ab02b3f/gobblin-runtime-hadoop/src/test/java/org/apache/gobblin/runtime/instance/plugin/hadoop/TestHadoopKerberosKeytabAuthenticationPlugin.java
----------------------------------------------------------------------
diff --git 
a/gobblin-runtime-hadoop/src/test/java/org/apache/gobblin/runtime/instance/plugin/hadoop/TestHadoopKerberosKeytabAuthenticationPlugin.java
 
b/gobblin-runtime-hadoop/src/test/java/org/apache/gobblin/runtime/instance/plugin/hadoop/TestHadoopKerberosKeytabAuthenticationPlugin.java
index 92802c3..0a567a1 100644
--- 
a/gobblin-runtime-hadoop/src/test/java/org/apache/gobblin/runtime/instance/plugin/hadoop/TestHadoopKerberosKeytabAuthenticationPlugin.java
+++ 
b/gobblin-runtime-hadoop/src/test/java/org/apache/gobblin/runtime/instance/plugin/hadoop/TestHadoopKerberosKeytabAuthenticationPlugin.java
@@ -51,6 +51,20 @@ public class TestHadoopKerberosKeytabAuthenticationPlugin {
   }
 
   @Test
+  public void testConfigConstructor() {
+    final Config testConfig = ConfigFactory.parseMap(ImmutableMap.<String, 
Object>builder()
+        .put("hadoop-inject.hadoop.security.authentication", "simple")
+        .put("gobblin.instance.hadoop.loginUser", "foo")
+        .put("gobblin.instance.hadoop.loginUserKeytabFile", "/tmp/bar")
+        .build());
+    HadoopKerberosKeytabAuthenticationPlugin plugin = 
(HadoopKerberosKeytabAuthenticationPlugin)
+        (new 
HadoopKerberosKeytabAuthenticationPlugin.ConfigBasedFactory()).createPlugin(testConfig);
+    Assert.assertEquals(plugin.getLoginUser(), "foo");
+    Assert.assertEquals(plugin.getLoginUserKeytabFile(), "/tmp/bar");
+    
Assert.assertEquals(plugin.getHadoopConf().get("hadoop.security.authentication"),
 "simple");
+  }
+
+  @Test
   public void testMissingOptions() {
     final Config testConfig1 = ConfigFactory.parseMap(ImmutableMap.<String, 
Object>builder()
         .put("hadoop-inject.hadoop.security.authentication", "simple")

Reply via email to