|
|
@@ -19,6 +19,7 @@
|
|
|
package org.apache.ambari.server.serveraction.kerberos;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
@@ -342,8 +343,11 @@ public class MITKerberosOperationHandler extends KDCKerberosOperationHandler {
|
|
|
protected String[] getKinitCommand(String executableKinit, PrincipalKeyCredential credentials, String credentialsCache, Map<String, String> kerberosConfiguration) throws KerberosOperationException {
|
|
|
// kinit -c <path> -S kadmin/`hostname -f` <principal>
|
|
|
try {
|
|
|
- final String kadminPrincipalName = variableReplacementHelper.replaceVariables(kerberosConfiguration.get(KERBEROS_ENV_KADMIN_PRINCIPAL_NAME), buildReplacementsMap(kerberosConfiguration));
|
|
|
- return new String[]{
|
|
|
+ String kadminPrincipalName = variableReplacementHelper.replaceVariables(kerberosConfiguration.get(KERBEROS_ENV_KADMIN_PRINCIPAL_NAME), buildReplacementsMap(kerberosConfiguration));
|
|
|
+ if (kadminPrincipalName == null) {
|
|
|
+ kadminPrincipalName = String.format("kadmin/%s", getAdminServerHost(false));
|
|
|
+ }
|
|
|
+ String [] command = new String[]{
|
|
|
executableKinit,
|
|
|
"-c",
|
|
|
credentialsCache,
|
|
|
@@ -351,6 +355,10 @@ public class MITKerberosOperationHandler extends KDCKerberosOperationHandler {
|
|
|
kadminPrincipalName,
|
|
|
credentials.getPrincipal()
|
|
|
};
|
|
|
+ if (Arrays.asList(command).contains(null)){
|
|
|
+ throw new KerberosOperationException("Got a null value, can not create 'kinit' command");
|
|
|
+ }
|
|
|
+ return command;
|
|
|
} catch (AmbariException e) {
|
|
|
throw new KerberosOperationException("Error while getting 'kinit' command", e);
|
|
|
}
|