AMBARI-22415. Blueprint deploys failing with missing smoke user keytab file (echekanskiy)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ec02a14c Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ec02a14c Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ec02a14c Branch: refs/heads/branch-feature-AMBARI-22008 Commit: ec02a14c02529ec7fec647e6fed7c8c401f10e6d Parents: 22b2d55 Author: Eugene Chekanskiy <echekans...@gmail.com> Authored: Fri Nov 10 17:17:34 2017 +0200 Committer: Eugene Chekanskiy <echekans...@gmail.com> Committed: Fri Nov 10 18:29:43 2017 +0200 ---------------------------------------------------------------------- .../kerberos/CreateKeytabFilesServerAction.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/ec02a14c/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java index aa65e61..5ec4c10 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreateKeytabFilesServerAction.java @@ -218,17 +218,18 @@ public class CreateKeytabFilesServerAction extends KerberosServerAction { } boolean regenerateKeytabs = getOperationType(getCommandParameters()) == OperationType.RECREATE_ALL; + + KerberosPrincipalEntity principalEntity = kerberosPrincipalDAO.find(evaluatedPrincipal); + String cachedKeytabPath = (principalEntity == null) ? null : principalEntity.getCachedKeytabPath(); + if (password == null) { if (!regenerateKeytabs && (hostName.equalsIgnoreCase(KerberosHelper.AMBARI_SERVER_HOST_NAME) || kerberosPrincipalHostDAO - .exists(evaluatedPrincipal, hostEntity.getHostId(), keytabFilePath))) { + .exists(evaluatedPrincipal, hostEntity.getHostId(), keytabFilePath)) && cachedKeytabPath == null) { // There is nothing to do for this since it must already exist and we don't want to // regenerate the keytab message = String.format("Skipping keytab file for %s, missing password indicates nothing to do", evaluatedPrincipal); LOG.debug(message); } else { - KerberosPrincipalEntity principalEntity = kerberosPrincipalDAO.find(evaluatedPrincipal); - String cachedKeytabPath = (principalEntity == null) ? null : principalEntity.getCachedKeytabPath(); - if (cachedKeytabPath == null) { message = String.format("Failed to create keytab for %s, missing cached file", evaluatedPrincipal); actionLog.writeStdErr(message);