You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by rl...@apache.org on 2015/03/04 22:47:26 UTC
ambari git commit: AMBARI-9917. Kerberos: Add Host did not generate
keytabs (rlevas)
Repository: ambari
Updated Branches:
refs/heads/trunk a3f7a1fb2 -> e63063f6c
AMBARI-9917. Kerberos: Add Host did not generate keytabs (rlevas)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e63063f6
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e63063f6
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e63063f6
Branch: refs/heads/trunk
Commit: e63063f6cc30fb065ad92cd90ee9efc4819c9e10
Parents: a3f7a1f
Author: Robert Levas <rl...@hortonworks.com>
Authored: Wed Mar 4 16:47:13 2015 -0500
Committer: Robert Levas <rl...@hortonworks.com>
Committed: Wed Mar 4 16:47:13 2015 -0500
----------------------------------------------------------------------
.../AmbariManagementControllerImpl.java | 13 +-
.../server/controller/KerberosHelper.java | 58 ++++++---
.../server/controller/KerberosHelperTest.java | 120 +++++++++++++------
3 files changed, 136 insertions(+), 55 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/e63063f6/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index 731227d..98390fd 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -1915,6 +1915,7 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
clusterHostInfoJson, "{}", HostParamsJson);
Collection<ServiceComponentHost> componentsToEnableKerberos = new ArrayList<ServiceComponentHost>();
+ Set<String> hostsToForceKerberosOperations = new HashSet<String>();
//HACK
String jobtrackerHost = getJobTrackerHost(cluster);
@@ -1968,6 +1969,16 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
}
componentsToEnableKerberos.add(scHost);
+
+ if(Service.Type.KERBEROS.name().equalsIgnoreCase(scHost.getServiceName()) &&
+ Role.KERBEROS_CLIENT.name().equalsIgnoreCase(scHost.getServiceComponentName())) {
+ // Since the KERBEROS/KERBEROS_CLIENT is about to be moved from the INIT to the
+ // INSTALLED state (and it should be by the time the stages (in this request)
+ // that need to be execute), collect the relevant hostname to make sure the
+ // Kerberos logic doest not skip operations for it.
+ hostsToForceKerberosOperations.add(scHost.getHostName());
+ }
+
}
} else if (oldSchState == State.STARTED
// TODO: oldSchState == State.INSTALLED is always false, looks like a bug
@@ -2168,7 +2179,7 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
}
try {
- kerberosHelper.ensureIdentities(cluster, serviceFilter, null, requestStages);
+ kerberosHelper.ensureIdentities(cluster, serviceFilter, null, hostsToForceKerberosOperations, requestStages);
} catch (KerberosOperationException e) {
throw new IllegalArgumentException(e.getMessage(), e);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/e63063f6/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java
index c4a5f4f..e01d38d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java
@@ -205,10 +205,10 @@ public class KerberosHelper {
if (securityType == SecurityType.KERBEROS) {
LOG.info("Configuring Kerberos for realm {} on cluster, {}", kerberosDetails.getDefaultRealm(), cluster.getClusterName());
- requestStageContainer = handle(cluster, kerberosDetails, null, null, requestStageContainer, new EnableKerberosHandler());
+ requestStageContainer = handle(cluster, kerberosDetails, null, null, null, requestStageContainer, new EnableKerberosHandler());
} else if (securityType == SecurityType.NONE) {
LOG.info("Disabling Kerberos from cluster, {}", cluster.getClusterName());
- requestStageContainer = handle(cluster, kerberosDetails, null, null, requestStageContainer, new DisableKerberosHandler());
+ requestStageContainer = handle(cluster, kerberosDetails, null, null, null, requestStageContainer, new DisableKerberosHandler());
} else {
throw new AmbariException(String.format("Unexpected security type value: %s", securityType.name()));
}
@@ -248,10 +248,10 @@ public class KerberosHelper {
}
if ("true".equalsIgnoreCase(value) || "all".equalsIgnoreCase(value)) {
- requestStageContainer = handle(cluster, getKerberosDetails(cluster), null, null,
+ requestStageContainer = handle(cluster, getKerberosDetails(cluster), null, null, null,
requestStageContainer, new CreatePrincipalsAndKeytabsHandler(true));
} else if ("missing".equalsIgnoreCase(value)) {
- requestStageContainer = handle(cluster, getKerberosDetails(cluster), null, null,
+ requestStageContainer = handle(cluster, getKerberosDetails(cluster), null, null, null,
requestStageContainer, new CreatePrincipalsAndKeytabsHandler(false));
} else {
throw new AmbariException(String.format("Unexpected directive value: %s", value));
@@ -269,6 +269,7 @@ public class KerberosHelper {
return requestStageContainer;
}
+
/**
* Ensures the set of filtered principals and keytabs exist on the cluster.
* <p/>
@@ -283,27 +284,35 @@ public class KerberosHelper {
* It is expected tht the "kerberos-env" configuration type is available. It is used to obtain
* information about the Kerberos configuration, generally specific to the KDC being used.
*
- * @param cluster the relevant Cluster
- * @param serviceComponentFilter a Map of service names to component names indicating the relevant
- * set of services and components - if null, no filter is relevant;
- * if empty, the filter indicates no relevant services or components
- * @param identityFilter a Collection of identity names indicating the relevant identities -
- * if null, no filter is relevant; if empty, the filter indicates no
- * relevant identities
- * @param requestStageContainer a RequestStageContainer to place generated stages, if needed -
- * if null a new RequestStageContainer will be created.
+ * @param cluster the relevant Cluster
+ * @param serviceComponentFilter a Map of service names to component names indicating the
+ * relevant set of services and components - if null, no
+ * filter is relevant; if empty, the filter indicates no
+ * relevant services or components
+ * @param identityFilter a Collection of identity names indicating the relevant
+ * identities - if null, no filter is relevant; if empty,
+ * the filter indicates no relevant identities
+ * @param hostsToForceKerberosOperations a set of host names on which it is expected that the
+ * Kerberos client is or will be in the INSTALLED state by
+ * the time the operations targeted for them are to be
+ * executed - if empty or null, this no hosts will be
+ * "forced"
+ * @param requestStageContainer a RequestStageContainer to place generated stages, if
+ * needed - if null a new RequestStageContainer will be
+ * created.
* @return the updated or a new RequestStageContainer containing the stages that need to be
* executed to complete this task; or null if no stages need to be executed.
* @throws AmbariException
* @throws KerberosOperationException
* @throws KerberosInvalidConfigurationException if an issue occurs trying to get the
- * Kerberos-specific configuration details
+ * Kerberos-specific configuration details
*/
public RequestStageContainer ensureIdentities(Cluster cluster, Map<String, ? extends Collection<String>> serviceComponentFilter,
- Collection<String> identityFilter, RequestStageContainer requestStageContainer)
+ Collection<String> identityFilter, Set<String> hostsToForceKerberosOperations,
+ RequestStageContainer requestStageContainer)
throws AmbariException, KerberosOperationException {
return handle(cluster, getKerberosDetails(cluster), serviceComponentFilter, identityFilter,
- requestStageContainer, new CreatePrincipalsAndKeytabsHandler(false));
+ hostsToForceKerberosOperations, requestStageContainer, new CreatePrincipalsAndKeytabsHandler(false));
}
/**
@@ -339,7 +348,7 @@ public class KerberosHelper {
public RequestStageContainer deleteIdentities(Cluster cluster, Map<String, ? extends Collection<String>> serviceComponentFilter,
Collection<String> identityFilter, RequestStageContainer requestStageContainer)
throws AmbariException, KerberosOperationException {
- return handle(cluster, getKerberosDetails(cluster), serviceComponentFilter, identityFilter,
+ return handle(cluster, getKerberosDetails(cluster), serviceComponentFilter, identityFilter, null,
requestStageContainer, new DeletePrincipalsAndKeytabsHandler());
}
@@ -642,6 +651,11 @@ public class KerberosHelper {
* relevant identities
* @param requestStageContainer a RequestStageContainer to place generated stages, if needed -
* if null a new RequestStageContainer will be created.
+ * @param hostsToForceKerberosOperations a set of host names on which it is expected that the
+ * Kerberos client is or will be in the INSTALLED state by
+ * the time the operations targeted for them are to be
+ * executed - if empty or null, this no hosts will be
+ * "forced"
* @param handler a Handler to use to provide guidance and set up stages
* to perform the work needed to complete the relative action
* @return the updated or a new RequestStageContainer containing the stages that need to be
@@ -655,8 +669,10 @@ public class KerberosHelper {
KerberosDetails kerberosDetails,
Map<String, ? extends Collection<String>> serviceComponentFilter,
Collection<String> identityFilter,
+ Set<String> hostsToForceKerberosOperations,
RequestStageContainer requestStageContainer,
- Handler handler) throws AmbariException, KerberosOperationException {
+ Handler handler)
+ throws AmbariException, KerberosOperationException {
Map<String, Service> services = cluster.getServices();
@@ -677,6 +693,12 @@ public class KerberosHelper {
// This is needed to help determine which hosts to perform actions for and create tasks for.
Set<String> hostsWithValidKerberosClient = new HashSet<String>();
+ // Ensure that that hosts that should be assumed to be in the correct state when needed are
+ // in the hostsWithValidKerberosClient collection.
+ if(hostsToForceKerberosOperations != null) {
+ hostsWithValidKerberosClient.addAll(hostsToForceKerberosOperations);
+ }
+
// Create a temporary directory to store metadata needed to complete this task. Information
// such as which principals and keytabs files to create as well as what configurations need
// to be update are stored in data files in this directory. Any keytab files are stored in
http://git-wip-us.apache.org/repos/asf/ambari/blob/e63063f6/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
index 8e1c0e8..d766d8c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
@@ -1297,13 +1297,23 @@ public class KerberosHelperTest extends EasyMockSupport {
final ServiceComponentHost schKerberosClient = createMock(ServiceComponentHost.class);
expect(schKerberosClient.getServiceName()).andReturn(Service.Type.KERBEROS.name()).anyTimes();
expect(schKerberosClient.getServiceComponentName()).andReturn(Role.KERBEROS_CLIENT.name()).anyTimes();
- expect(schKerberosClient.getHostName()).andReturn("host1").anyTimes();
+ expect(schKerberosClient.getHostName()).andReturn("hostA").anyTimes();
expect(schKerberosClient.getState()).andReturn(State.INSTALLED).anyTimes();
- final ServiceComponentHost sch1 = createMock(ServiceComponentHost.class);
- expect(sch1.getServiceName()).andReturn("SERVICE1").anyTimes();
- expect(sch1.getServiceComponentName()).andReturn("COMPONENT1").anyTimes();
- expect(sch1.getHostName()).andReturn("host1").anyTimes();
+ final ServiceComponentHost sch1A = createMock(ServiceComponentHost.class);
+ expect(sch1A.getServiceName()).andReturn("SERVICE1").anyTimes();
+ expect(sch1A.getServiceComponentName()).andReturn("COMPONENT1").anyTimes();
+ expect(sch1A.getHostName()).andReturn("hostA").anyTimes();
+
+ final ServiceComponentHost sch1B = createMock(ServiceComponentHost.class);
+ expect(sch1B.getServiceName()).andReturn("SERVICE1").anyTimes();
+ expect(sch1B.getServiceComponentName()).andReturn("COMPONENT1").anyTimes();
+ expect(sch1B.getHostName()).andReturn("hostB").anyTimes();
+
+ final ServiceComponentHost sch1C = createMock(ServiceComponentHost.class);
+ expect(sch1C.getServiceName()).andReturn("SERVICE1").anyTimes();
+ expect(sch1C.getServiceComponentName()).andReturn("COMPONENT1").anyTimes();
+ expect(sch1C.getHostName()).andReturn("hostC").anyTimes();
final ServiceComponentHost sch2 = createStrictMock(ServiceComponentHost.class);
expect(sch2.getServiceName()).andReturn("SERVICE2").anyTimes();
@@ -1312,33 +1322,41 @@ public class KerberosHelperTest extends EasyMockSupport {
final ServiceComponentHost sch3 = createStrictMock(ServiceComponentHost.class);
expect(sch3.getServiceName()).andReturn("SERVICE3").anyTimes();
expect(sch3.getServiceComponentName()).andReturn("COMPONENT3").anyTimes();
- expect(sch3.getHostName()).andReturn("host1").anyTimes();
+ expect(sch3.getHostName()).andReturn("hostA").anyTimes();
- final Host host = createNiceMock(Host.class);
- expect(host.getHostName()).andReturn("host1").anyTimes();
- expect(host.getState()).andReturn(HostState.HEALTHY).anyTimes();
+ final Host hostA = createNiceMock(Host.class);
+ expect(hostA.getHostName()).andReturn("hostA").anyTimes();
+ expect(hostA.getState()).andReturn(HostState.HEALTHY).anyTimes();
+
+ final Host hostB = createNiceMock(Host.class);
+ expect(hostB.getHostName()).andReturn("hostB").anyTimes();
+ expect(hostB.getState()).andReturn(HostState.HEALTHY).anyTimes();
+
+ final Host hostC = createNiceMock(Host.class);
+ expect(hostC.getHostName()).andReturn("hostC").anyTimes();
+ expect(hostC.getState()).andReturn(HostState.HEALTHY).anyTimes();
final ServiceComponent serviceComponentKerberosClient = createNiceMock(ServiceComponent.class);
expect(serviceComponentKerberosClient.getName()).andReturn(Role.KERBEROS_CLIENT.name()).anyTimes();
- expect(serviceComponentKerberosClient.getServiceComponentHosts()).andReturn(Collections.singletonMap("host1", schKerberosClient)).anyTimes();
+ expect(serviceComponentKerberosClient.getServiceComponentHosts()).andReturn(Collections.singletonMap("hostA", schKerberosClient)).anyTimes();
final Service serviceKerberos = createStrictMock(Service.class);
expect(serviceKerberos.getName()).andReturn(Service.Type.KERBEROS.name()).anyTimes();
expect(serviceKerberos.getServiceComponents())
.andReturn(Collections.singletonMap(Role.KERBEROS_CLIENT.name(), serviceComponentKerberosClient))
- .times(3);
+ .times(5);
final Service service1 = createStrictMock(Service.class);
expect(service1.getName()).andReturn("SERVICE1").anyTimes();
expect(service1.getServiceComponents())
.andReturn(Collections.<String, ServiceComponent>emptyMap())
- .times(3);
+ .times(5);
final Service service2 = createStrictMock(Service.class);
expect(service2.getName()).andReturn("SERVICE2").anyTimes();
expect(service2.getServiceComponents())
.andReturn(Collections.<String, ServiceComponent>emptyMap())
- .times(3);
+ .times(5);
final Map<String, String> kerberosEnvProperties = createNiceMock(Map.class);
expect(kerberosEnvProperties.get("kdc_type")).andReturn("mit-kdc").anyTimes();
@@ -1365,16 +1383,31 @@ public class KerberosHelperTest extends EasyMockSupport {
}
})
.anyTimes();
- expect(cluster.getServiceComponentHosts("host1"))
+ expect(cluster.getServiceComponentHosts("hostA"))
.andReturn(new ArrayList<ServiceComponentHost>() {
{
- add(sch1);
+ add(sch1A);
add(sch2);
add(sch3);
add(schKerberosClient);
}
})
.once();
+ expect(cluster.getServiceComponentHosts("hostB"))
+ .andReturn(new ArrayList<ServiceComponentHost>() {
+ {
+ add(sch1B);
+ add(schKerberosClient);
+ }
+ })
+ .once();
+ expect(cluster.getServiceComponentHosts("hostC"))
+ .andReturn(new ArrayList<ServiceComponentHost>() {
+ {
+ add(sch1C);
+ }
+ })
+ .once();
expect(cluster.getCurrentStackVersion())
.andReturn(new StackId("HDP", "2.2"))
.anyTimes();
@@ -1390,21 +1423,32 @@ public class KerberosHelperTest extends EasyMockSupport {
expect(clusters.getHostsForCluster("c1"))
.andReturn(new HashMap<String, Host>() {
{
- put("host1", host);
+ put("hostA", hostA);
+ put("hostB", hostB);
+ put("hostC", hostC);
}
})
.once();
- expect(clusters.getHost("host1"))
- .andReturn(host)
- .once();
+ expect(clusters.getHost("hostA"))
+ .andReturn(hostA)
+ .times(1);
+ expect(clusters.getHost("hostB"))
+ .andReturn(hostB)
+ .times(1);
final AmbariManagementController ambariManagementController = injector.getInstance(AmbariManagementController.class);
- expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, "host1"))
+ expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, "hostA"))
.andReturn(Collections.<String, Map<String, String>>emptyMap())
.once();
- expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, null))
+ expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, "hostB"))
+ .andReturn(Collections.<String, Map<String, String>>emptyMap())
+ .once();
+ expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, "hostC"))
.andReturn(Collections.<String, Map<String, String>>emptyMap())
.once();
+ expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, null))
+ .andReturn(Collections.<String, Map<String, String>>emptyMap())
+ .times(3);
expect(ambariManagementController.getRoleCommandOrder(cluster))
.andReturn(createNiceMock(RoleCommandOrder.class))
.once();
@@ -1418,7 +1462,7 @@ public class KerberosHelperTest extends EasyMockSupport {
}});
}
})
- .times(2);
+ .times(4);
final KerberosPrincipalDescriptor principalDescriptor1a = createMock(KerberosPrincipalDescriptor.class);
expect(principalDescriptor1a.getValue()).andReturn("component1a/_HOST@${realm}").anyTimes();
@@ -1439,12 +1483,12 @@ public class KerberosHelperTest extends EasyMockSupport {
expect(principalDescriptor3.getConfiguration()).andReturn("service3-site/component3.kerberos.principal").anyTimes();
final KerberosKeytabDescriptor keytabDescriptor1 = createMock(KerberosKeytabDescriptor.class);
- expect(keytabDescriptor1.getFile()).andReturn("${keytab_dir}/service1.keytab").once();
- expect(keytabDescriptor1.getOwnerName()).andReturn("service1").once();
- expect(keytabDescriptor1.getOwnerAccess()).andReturn("rw").once();
- expect(keytabDescriptor1.getGroupName()).andReturn("hadoop").once();
- expect(keytabDescriptor1.getGroupAccess()).andReturn("").once();
- expect(keytabDescriptor1.getConfiguration()).andReturn("service1-site/component1.keytab.file").once();
+ expect(keytabDescriptor1.getFile()).andReturn("${keytab_dir}/service1.keytab").times(3);
+ expect(keytabDescriptor1.getOwnerName()).andReturn("service1").times(3);
+ expect(keytabDescriptor1.getOwnerAccess()).andReturn("rw").times(3);
+ expect(keytabDescriptor1.getGroupName()).andReturn("hadoop").times(3);
+ expect(keytabDescriptor1.getGroupAccess()).andReturn("").times(3);
+ expect(keytabDescriptor1.getConfiguration()).andReturn("service1-site/component1.keytab.file").times(3);
final KerberosKeytabDescriptor keytabDescriptor3 = createMock(KerberosKeytabDescriptor.class);
expect(keytabDescriptor3.getFile()).andReturn("${keytab_dir}/service3.keytab").once();
@@ -1476,6 +1520,10 @@ public class KerberosHelperTest extends EasyMockSupport {
expect(componentDescriptor1.getIdentities(true)).andReturn(identityDescriptors1).times(1);
expect(componentDescriptor1.getConfigurations(true)).andReturn(null).times(1);
expect(componentDescriptor1.getIdentities(true)).andReturn(identityDescriptors1).times(1);
+ expect(componentDescriptor1.getConfigurations(true)).andReturn(null).times(1);
+ expect(componentDescriptor1.getIdentities(true)).andReturn(identityDescriptors1).times(1);
+ expect(componentDescriptor1.getConfigurations(true)).andReturn(null).times(1);
+ expect(componentDescriptor1.getIdentities(true)).andReturn(identityDescriptors1).times(1);
expect(componentDescriptor1.getAuthToLocalProperties()).andReturn(null).times(1);
final ArrayList<KerberosIdentityDescriptor> identityDescriptors3 = new ArrayList<KerberosIdentityDescriptor>() {{
@@ -1486,13 +1534,12 @@ public class KerberosHelperTest extends EasyMockSupport {
expect(componentDescriptor3.getConfigurations(true)).andReturn(null).times(1);
final KerberosServiceDescriptor serviceDescriptor1 = createMock(KerberosServiceDescriptor.class);
- expect(serviceDescriptor1.getIdentities(true)).andReturn(null).times(1);
+ expect(serviceDescriptor1.getIdentities(true)).andReturn(null).times(4);
expect(serviceDescriptor1.getName()).andReturn("SERVICE1").times(1);
- expect(serviceDescriptor1.getIdentities(true)).andReturn(null).times(1);
expect(serviceDescriptor1.getComponents()).andReturn(new HashMap<String, KerberosComponentDescriptor>(){{
put("COMPONENT1", componentDescriptor1);
}}).times(1);
- expect(serviceDescriptor1.getComponent("COMPONENT1")).andReturn(componentDescriptor1).once();
+ expect(serviceDescriptor1.getComponent("COMPONENT1")).andReturn(componentDescriptor1).times(3);
expect(serviceDescriptor1.getAuthToLocalProperties()).andReturn(null).once();
final KerberosServiceDescriptor serviceDescriptor3 = createMock(KerberosServiceDescriptor.class);
@@ -1502,14 +1549,15 @@ public class KerberosHelperTest extends EasyMockSupport {
final KerberosDescriptor kerberosDescriptor = createStrictMock(KerberosDescriptor.class);
expect(kerberosDescriptor.getProperties()).andReturn(null).once();
- expect(kerberosDescriptor.getService("SERVICE1")).andReturn(serviceDescriptor1).once();
- expect(kerberosDescriptor.getService("SERVICE3")).andReturn(serviceDescriptor3).once();
+ expect(kerberosDescriptor.getService("SERVICE1")).andReturn(serviceDescriptor1).times(3);
+ expect(kerberosDescriptor.getService("SERVICE3")).andReturn(serviceDescriptor3).times(1);
expect(kerberosDescriptor.getIdentities()).andReturn(null).once();
expect(kerberosDescriptor.getAuthToLocalProperties()).andReturn(null).once();
+
expect(kerberosDescriptor.getServices()).andReturn(new HashMap<String, KerberosServiceDescriptor>()
{{
- put("SERVCE1", serviceDescriptor1);
- put("SERVCE2", serviceDescriptor3);
+ put("SERVICE1", serviceDescriptor1);
+ put("SERVICE3", serviceDescriptor3);
}}).once();
setupGetDescriptorFromCluster(kerberosDescriptor);
@@ -1566,7 +1614,7 @@ public class KerberosHelperTest extends EasyMockSupport {
serviceComponentFilter.put("SERVICE3", Collections.singleton("COMPONENT3"));
serviceComponentFilter.put("SERVICE1", null);
- kerberosHelper.ensureIdentities(cluster, serviceComponentFilter, identityFilter, requestStageContainer);
+ kerberosHelper.ensureIdentities(cluster, serviceComponentFilter, identityFilter, null, requestStageContainer);
verifyAll();
}