Repository: incubator-slider
Updated Branches:
  refs/heads/develop d5aebbbb5 -> 098507719


SLIDER-1186 Slider incorrectly assumes that keytabs are provided for AM


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

Branch: refs/heads/develop
Commit: 0985077198c21cee6789d8413ecfb034e1546764
Parents: d5aebbb
Author: Gour Saha <gourks...@apache.org>
Authored: Mon Jan 16 15:47:50 2017 -0800
Committer: Gour Saha <gourks...@apache.org>
Committed: Mon Jan 16 15:47:50 2017 -0800

----------------------------------------------------------------------
 .../security/SecurityConfiguration.java          | 18 ++++++++++--------
 .../security/SecurityConfigurationTest.groovy    | 19 +++++++++++++++++++
 2 files changed, 29 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/09850771/slider-core/src/main/java/org/apache/slider/server/appmaster/security/SecurityConfiguration.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/security/SecurityConfiguration.java
 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/security/SecurityConfiguration.java
index 9a89c39..27fb0d7 100644
--- 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/security/SecurityConfiguration.java
+++ 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/security/SecurityConfiguration.java
@@ -17,6 +17,8 @@
 package org.apache.slider.server.appmaster.security;
 
 import com.google.common.base.Preconditions;
+
+import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.security.UserGroupInformation;
 import static org.apache.slider.core.main.LauncherExitCodes.EXIT_UNAUTHORIZED;
@@ -126,14 +128,14 @@ public class SecurityConfiguration {
   }
 
   public boolean isKeytabProvided() {
-    boolean keytabProvided = instanceDefinition.getAppConfOperations()
-                    .getComponent(SliderKeys.COMPONENT_AM)
-                    .get(SliderXmlConfKeys.KEY_AM_KEYTAB_LOCAL_PATH) != null ||
-                instanceDefinition.getAppConfOperations()
-                    .getComponent(SliderKeys.COMPONENT_AM).
-                    get(SliderXmlConfKeys.KEY_AM_LOGIN_KEYTAB_NAME) != null;
-    return keytabProvided;
-
+    String keytabLocalPath = instanceDefinition.getAppConfOperations()
+        .getComponent(SliderKeys.COMPONENT_AM)
+        .get(SliderXmlConfKeys.KEY_AM_KEYTAB_LOCAL_PATH);
+    String keytabName = instanceDefinition.getAppConfOperations()
+        .getComponent(SliderKeys.COMPONENT_AM)
+        .get(SliderXmlConfKeys.KEY_AM_LOGIN_KEYTAB_NAME);
+    return StringUtils.isNotBlank(keytabLocalPath)
+        || StringUtils.isNotBlank(keytabName);
   }
 
   public File getKeytabFile(AggregateConf instanceDefinition)

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/09850771/slider-core/src/test/groovy/org/apache/slider/server/appmaster/security/SecurityConfigurationTest.groovy
----------------------------------------------------------------------
diff --git 
a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/security/SecurityConfigurationTest.groovy
 
b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/security/SecurityConfigurationTest.groovy
index e543b7c..be1205b 100644
--- 
a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/security/SecurityConfigurationTest.groovy
+++ 
b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/security/SecurityConfigurationTest.groovy
@@ -159,4 +159,23 @@ public class SecurityConfigurationTest {
                
securityConfiguration.getKeytabFile(aggregateConf).getAbsolutePath()
     }
 
+    @Test
+    public void testAMKeytabProvided() throws Throwable {
+        Configuration config = new Configuration()
+        AggregateConf aggregateConf = new AggregateConf();
+        MapOperations compOps =
+            
aggregateConf.appConfOperations.getOrAddComponent(SliderKeys.COMPONENT_AM)
+        compOps.put(SliderXmlConfKeys.KEY_AM_KEYTAB_LOCAL_PATH, " ")
+
+        SecurityConfiguration securityConfiguration =
+            new SecurityConfiguration(config, aggregateConf, "testCluster")
+        assert !securityConfiguration.isKeytabProvided()
+
+        compOps.put(SliderXmlConfKeys.KEY_AM_LOGIN_KEYTAB_NAME, "")
+        assert !securityConfiguration.isKeytabProvided()
+
+        compOps.put(SliderXmlConfKeys.KEY_AM_LOGIN_KEYTAB_NAME, "some.keytab")
+        assert securityConfiguration.isKeytabProvided()
+    }
+
 }

Reply via email to