Repository: ambari
Updated Branches:
  refs/heads/branch-2.6 a837d6191 -> f41d8359c


AMBARI-22224. host and hostname built-in variables are not populated when 
performing Kerberos-related operations (rlevas)


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

Branch: refs/heads/branch-2.6
Commit: f41d8359c9df9b78d004b8b14e9e834b2fc5c76b
Parents: a837d61
Author: Robert Levas <rle...@hortonworks.com>
Authored: Thu Oct 12 16:24:47 2017 -0400
Committer: Robert Levas <rle...@hortonworks.com>
Committed: Thu Oct 12 16:24:47 2017 -0400

----------------------------------------------------------------------
 .../server/controller/KerberosHelperImpl.java    |  2 +-
 .../AbstractPrepareKerberosServerAction.java     | 14 ++++++++++++++
 .../upgrades/PreconfigureKerberosAction.java     | 13 +++++++++++++
 .../AbstractPrepareKerberosServerActionTest.java | 19 ++++++++++++-------
 4 files changed, 40 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/f41d8359/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
index 7627d59..86d3ee0 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
@@ -1611,7 +1611,7 @@ public class KerberosHelperImpl implements KerberosHelper 
{
             // Calculate the current host-specific configurations. These will 
be used to replace
             // variables within the Kerberos descriptor data
             Map<String, Map<String, String>> configurations = 
calculateConfigurations(cluster,
-                hostname.equals(ambariServerHostname) ? null : hostname,
+                hostname,
                 kerberosDescriptor,
                 false,
                 false);

http://git-wip-us.apache.org/repos/asf/ambari/blob/f41d8359/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java
index d1b442c..a932da4 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerAction.java
@@ -39,6 +39,7 @@ import 
org.apache.ambari.server.state.kerberos.KerberosDescriptor;
 import org.apache.ambari.server.state.kerberos.KerberosIdentityDescriptor;
 import org.apache.ambari.server.state.kerberos.KerberosServiceDescriptor;
 import org.apache.ambari.server.utils.StageUtils;
+import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -125,6 +126,19 @@ public abstract class AbstractPrepareKerberosServerAction 
extends KerberosServer
           if (serviceDescriptor != null) {
             List<KerberosIdentityDescriptor> serviceIdentities = 
serviceDescriptor.getIdentities(true, filterContext);
 
+            if (!StringUtils.isEmpty(hostName)) {
+              // Update the configurations with the relevant hostname
+              Map<String, String> generalProperties = 
currentConfigurations.get("");
+              if (generalProperties == null) {
+                generalProperties = new HashMap<>();
+                currentConfigurations.put("", generalProperties);
+              }
+
+              // Add the current hostname under "host" and "hostname"
+              generalProperties.put("host", hostName);
+              generalProperties.put("hostname", hostName);
+            }
+
             // Add service-level principals (and keytabs)
             kerberosHelper.addIdentities(kerberosIdentityDataFileWriter, 
serviceIdentities,
                 identityFilter, hostName, serviceName, componentName, 
kerberosConfigurations, currentConfigurations, excludeHeadless);

http://git-wip-us.apache.org/repos/asf/ambari/blob/f41d8359/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/PreconfigureKerberosAction.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/PreconfigureKerberosAction.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/PreconfigureKerberosAction.java
index 30bc47f..89e313f 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/PreconfigureKerberosAction.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/PreconfigureKerberosAction.java
@@ -305,6 +305,19 @@ public class PreconfigureKerberosAction extends 
AbstractUpgradeServerAction {
 
             KerberosServiceDescriptor serviceDescriptor = 
kerberosDescriptor.getService(serviceName);
 
+            if (!StringUtils.isEmpty(hostName)) {
+              // Update the configurations with the relevant hostname
+              Map<String, String> generalProperties = 
currentConfigurations.get("");
+              if (generalProperties == null) {
+                generalProperties = new HashMap<>();
+                currentConfigurations.put("", generalProperties);
+              }
+
+              // Add the current hostname under "host" and "hostname"
+              generalProperties.put("host", hostName);
+              generalProperties.put("hostname", hostName);
+            }
+
             if (serviceDescriptor != null) {
               List<KerberosIdentityDescriptor> serviceIdentities = 
serviceDescriptor.getIdentities(true, filterContext);
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/f41d8359/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerActionTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerActionTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerActionTest.java
index 4ce7228..5522132 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerActionTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerActionTest.java
@@ -18,6 +18,12 @@
 
 package org.apache.ambari.server.serveraction.kerberos;
 
+import static org.easymock.EasyMock.anyBoolean;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -36,9 +42,10 @@ import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.Service;
 import org.apache.ambari.server.state.ServiceComponentHost;
 import org.apache.ambari.server.state.kerberos.KerberosComponentDescriptor;
-import org.apache.ambari.server.state.kerberos.KerberosServiceDescriptor;
 import org.apache.ambari.server.state.kerberos.KerberosDescriptor;
+import org.apache.ambari.server.state.kerberos.KerberosServiceDescriptor;
 import org.easymock.EasyMock;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -46,12 +53,6 @@ import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-import static org.easymock.EasyMock.anyBoolean;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-
 public class AbstractPrepareKerberosServerActionTest {
   private class PrepareKerberosServerAction extends 
AbstractPrepareKerberosServerAction{
 
@@ -152,6 +153,10 @@ public class AbstractPrepareKerberosServerActionTest {
         false, propertiesToIgnore, false);
 
     verify(kerberosHelper);
+
+    // Ensure the host and hostname values were set in the configuration 
context
+    Assert.assertEquals("host1", configurations.get("").get("host"));
+    Assert.assertEquals("host1", configurations.get("").get("hostname"));
   }
 
 }

Reply via email to