You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mp...@apache.org on 2018/05/03 12:13:33 UTC
[ambari] branch trunk updated: AMBARI-23565. Restore configs does
not work. (#1161)
This is an automated email from the ASF dual-hosted git repository.
mpapirkovskyy pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push:
new c640ee6 AMBARI-23565. Restore configs does not work. (#1161)
c640ee6 is described below
commit c640ee6a7059a2cd801ae5a806eacde6982f83f3
Author: Myroslav Papirkovskyi <mp...@apache.org>
AuthorDate: Thu May 3 15:13:31 2018 +0300
AMBARI-23565. Restore configs does not work. (#1161)
* AMBARI-23565. Restore configs does not work. (mpapirkovskyy)
* AMBARI-23565. Restore configs does not work. (mpapirkovskyy)
* AMBARI-23565. Restore configs does not work. (mpapirkovskyy)
* AMBARI-23565. Restore configs does not work. (mpapirkovskyy)
---
.../controller/AmbariManagementControllerImpl.java | 5 +-
.../internal/ConfigGroupResourceProvider.java | 14 +++
.../apache/ambari/server/state/ConfigHelper.java | 109 ++++++++++++++++++---
.../apache/ambari/server/state/UpgradeHelper.java | 3 +-
.../ambari/server/state/cluster/ClusterImpl.java | 5 +-
.../ambari/server/state/cluster/ClustersImpl.java | 18 ++++
.../server/upgrade/AbstractUpgradeCatalog.java | 9 +-
.../AmbariCustomCommandExecutionHelperTest.java | 12 +++
.../AmbariManagementControllerImplTest.java | 8 --
.../internal/ConfigGroupResourceProviderTest.java | 18 +++-
.../ambari/server/state/cluster/ClusterTest.java | 8 --
.../server/upgrade/UpgradeCatalog252Test.java | 16 ++-
.../server/upgrade/UpgradeCatalog260Test.java | 29 +++---
.../server/upgrade/UpgradeCatalog270Test.java | 14 ++-
14 files changed, 199 insertions(+), 69 deletions(-)
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 ba2ba3a..7519ef5 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
@@ -1868,8 +1868,6 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
}
}
}
- m_metadataHolder.get().updateData(getClusterMetadataOnConfigsUpdate(cluster));
- m_agentConfigsHolder.get().updateData(cluster.getClusterId(), null);
StackId currentVersion = cluster.getCurrentStackVersion();
StackId desiredVersion = cluster.getDesiredStackVersion();
@@ -2014,6 +2012,9 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
}
}
}
+ if (serviceConfigVersionResponse != null) {
+ configHelper.updateAgentConfigs(Collections.singleton(cluster.getClusterName()));
+ }
if (requestStageContainer != null) {
requestStageContainer.persist();
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java
index 6c55c85..755a03a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java
@@ -58,6 +58,7 @@ import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.ConfigFactory;
+import org.apache.ambari.server.state.ConfigHelper;
import org.apache.ambari.server.state.Host;
import org.apache.ambari.server.state.configgroup.ConfigGroup;
import org.apache.ambari.server.state.configgroup.ConfigGroupFactory;
@@ -69,6 +70,7 @@ import org.slf4j.LoggerFactory;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Sets;
import com.google.inject.Inject;
+import com.google.inject.Provider;
@StaticallyInject
public class ConfigGroupResourceProvider extends
@@ -141,6 +143,9 @@ public class ConfigGroupResourceProvider extends
@Inject
private static ConfigFactory configFactory;
+ @Inject
+ private static Provider<ConfigHelper> m_configHelper;
+
/**
* Create a new resource provider for the given management controller.
*
@@ -514,6 +519,8 @@ public class ConfigGroupResourceProvider extends
cluster.getClusterName(), getManagementController().getAuthName(), configGroup.getName(), request.getId());
cluster.deleteConfigGroup(request.getId());
+
+ m_configHelper.get().updateAgentConfigs(Collections.singleton(request.getClusterName()));
}
private void validateRequest(ConfigGroupRequest request) {
@@ -547,6 +554,7 @@ public class ConfigGroupResourceProvider extends
ConfigGroupFactory configGroupFactory = getManagementController()
.getConfigGroupFactory();
+ Set<String> updatedClusters = new HashSet<>();
for (ConfigGroupRequest request : requests) {
Cluster cluster;
@@ -634,8 +642,11 @@ public class ConfigGroupResourceProvider extends
configGroup.getTag(), configGroup.getDescription(), null, null);
configGroupResponses.add(response);
+ updatedClusters.add(cluster.getClusterName());
}
+ m_configHelper.get().updateAgentConfigs(updatedClusters);
+
return configGroupResponses;
}
@@ -647,6 +658,7 @@ public class ConfigGroupResourceProvider extends
Clusters clusters = getManagementController().getClusters();
+ Set<String> updatedClusters = new HashSet<>();
for (ConfigGroupRequest request : requests) {
Cluster cluster;
@@ -755,12 +767,14 @@ public class ConfigGroupResourceProvider extends
versionTags.add(tagsMap);
configGroupResponse.setVersionTags(versionTags);
getManagementController().saveConfigGroupUpdate(request, configGroupResponse);
+ updatedClusters.add(cluster.getClusterName());
} else {
LOG.warn("Could not determine service name for config group {}, service config version not created",
configGroup.getId());
}
}
+ m_configHelper.get().updateAgentConfigs(updatedClusters);
}
@SuppressWarnings("unchecked")
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java
index 6371302..c9efa92 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java
@@ -1180,8 +1180,8 @@ public class ConfigHelper {
|| !Maps.difference(oldConfigProperties, properties).areEqual()) {
if (createConfigType(cluster, stackId, controller, configType, properties,
propertiesAttributes, authenticatedUserName, serviceVersionNote)) {
- m_metadataHolder.get().updateData(m_ambariManagementController.get().getClusterMetadataOnConfigsUpdate(cluster));
- m_agentConfigsHolder.get().updateData(cluster.getClusterId(), null);
+
+ updateAgentConfigs(Collections.singleton(cluster.getClusterName()));
}
}
}
@@ -1192,8 +1192,8 @@ public class ConfigHelper {
if (createConfigType(cluster, stackId, controller, configType, properties,
new HashMap<>(), authenticatedUserName, serviceVersionNote)) {
- m_metadataHolder.get().updateData(m_ambariManagementController.get().getClusterMetadataOnConfigsUpdate(cluster));
- m_agentConfigsHolder.get().updateData(cluster.getClusterId(), null);
+
+ updateAgentConfigs(Collections.singleton(cluster.getClusterName()));
}
}
@@ -1498,15 +1498,99 @@ public class ConfigHelper {
}
/**
+ * Checks populated services for staled configs and updates agent configs.
+ * Method retrieves actual agent configs and compares them with just generated to identify stale configs.
+ * Then config updates are sent to agents.
+ * @param updatedClusters names of clusters with changed configs
+ * @throws AmbariException
+ */
+ public void updateAgentConfigs(Set<String> updatedClusters) throws AmbariException {
+
+ // get all used clusters in request
+ List<Cluster> clustersInUse = new ArrayList<>();
+ for (String clusterName : updatedClusters) {
+ Cluster cluster;
+ cluster = clusters.getCluster(clusterName);
+ clustersInUse.add(cluster);
+ }
+
+ // get all current and previous host configs
+ Map<Long, AgentConfigsUpdateEvent> currentConfigEvents = new HashMap<>();
+ Map<Long, AgentConfigsUpdateEvent> previousConfigEvents = new HashMap<>();
+ for (Cluster cluster : clustersInUse) {
+ for (Host host : cluster.getHosts()) {
+ Long hostId = host.getHostId();
+ if (!currentConfigEvents.containsKey(hostId)) {
+ currentConfigEvents.put(host.getHostId(), m_agentConfigsHolder.get().getCurrentData(hostId));
+ }
+ if (!previousConfigEvents.containsKey(host.getHostId())) {
+ previousConfigEvents.put(host.getHostId(), m_agentConfigsHolder.get().getData(hostId));
+ }
+ }
+ }
+
+ for (Cluster cluster : clustersInUse) {
+ Map<Long, Map<String, Collection<String>>> changedConfigs = new HashMap<>();
+ for (Host host : cluster.getHosts()) {
+ AgentConfigsUpdateEvent currentConfigData = currentConfigEvents.get(host.getHostId());
+ AgentConfigsUpdateEvent previousConfigsData = previousConfigEvents.get(host.getHostId());
+
+ SortedMap<String, SortedMap<String, String>> currentConfigs =
+ currentConfigData.getClustersConfigs().get(Long.toString(cluster.getClusterId())).getConfigurations();
+ SortedMap<String, SortedMap<String, String>> previousConfigs =
+ previousConfigsData.getClustersConfigs().get(Long.toString(cluster.getClusterId())).getConfigurations();
+
+ Map<String, Collection<String>> changedConfigsHost = new HashMap<>();
+ for (String currentConfigType : currentConfigs.keySet()) {
+ if (previousConfigs.containsKey(currentConfigType)) {
+ Set<String> changedKeys = new HashSet<>();
+ Map<String, String> currentTypedConfigs = currentConfigs.get(currentConfigType);
+ Map<String, String> previousTypedConfigs = previousConfigs.get(currentConfigType);
+
+ for (String currentKey : currentTypedConfigs.keySet()) {
+ if (!previousTypedConfigs.containsKey(currentKey)
+ || !currentTypedConfigs.get(currentKey).equals(previousTypedConfigs.get(currentKey))) {
+ changedKeys.add(currentKey);
+ }
+ }
+ for (String previousKey : previousTypedConfigs.keySet()) {
+ if (!currentTypedConfigs.containsKey(previousKey)) {
+ changedKeys.add(previousKey);
+ }
+ }
+
+ if (!changedKeys.isEmpty()) {
+ changedConfigsHost.put(currentConfigType, changedKeys);
+ }
+ } else {
+ changedConfigsHost.put(currentConfigType, currentConfigs.get(currentConfigType).keySet());
+ }
+ }
+ for (String previousConfigType : previousConfigs.keySet()) {
+ if (!currentConfigs.containsKey(previousConfigType)) {
+ changedConfigsHost.put(previousConfigType, previousConfigs.get(previousConfigType).keySet());
+ }
+ }
+ changedConfigs.put(host.getHostId(), changedConfigsHost);
+ }
+ for (String serviceName : cluster.getServices().keySet()) {
+ checkStaleConfigsStatusOnConfigsUpdate(cluster.getClusterId(), serviceName, changedConfigs);
+ }
+
+ m_metadataHolder.get().updateData(m_ambariManagementController.get().getClusterMetadataOnConfigsUpdate(cluster));
+ m_agentConfigsHolder.get().updateData(cluster.getClusterId(), null);
+ }
+ }
+
+ /**
* Checks configs are stale after specified config changes for service's components.
* @param clusterId cluster with changed config
* @param serviceName service for changed config
- * @param hostNames hosts with changed config, can be null
* @param changedConfigs map of config types to collections of changed properties' names.
* @throws AmbariException
*/
- public void checkStaleConfigsStatusOnConfigsUpdate(Long clusterId, String serviceName, Collection<String> hostNames,
- Map<String, Collection<String>> changedConfigs) throws AmbariException {
+ public void checkStaleConfigsStatusOnConfigsUpdate(Long clusterId, String serviceName,
+ Map<Long, Map<String, Collection<String>>> changedConfigs) throws AmbariException {
if (MapUtils.isEmpty(changedConfigs)) {
return;
}
@@ -1517,16 +1601,11 @@ public class ConfigHelper {
Service service = clusters.getCluster(clusterId).getService(serviceName);
for (ServiceComponent serviceComponent : service.getServiceComponents().values()) {
String serviceComponentHostName = serviceComponent.getName();
- Set<String> hosts;
- if (CollectionUtils.isNotEmpty(hostNames)) {
- hosts = new HashSet<>(hostNames);
- } else {
- hosts = serviceComponent.getServiceComponentsHosts();
- }
for (ServiceComponentHost serviceComponentHost : serviceComponent.getServiceComponentHosts().values()) {
- if (hosts.contains(serviceComponentHost.getHostName())) {
+ if (changedConfigs.keySet().contains(serviceComponentHost.getHost().getHostId())) {
boolean staleConfigs = checkStaleConfigsStatusForHostComponent(serviceComponentHost,
- changedConfigs);
+ changedConfigs.get(serviceComponentHost.getHost().getHostId()));
+
if (wasStaleConfigsStatusUpdated(clusterId, serviceComponentHost.getHost().getHostId(),
serviceName, serviceComponentHostName, staleConfigs)) {
serviceComponentHost.setRestartRequiredWithoutEventPublishing(staleConfigs);
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
index 00c6bcc..1550590 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
@@ -1158,8 +1158,7 @@ public class UpgradeHelper {
}
}
if (configsChanged) {
- m_metadataHolder.get().updateData(m_controllerProvider.get().getClusterMetadataOnConfigsUpdate(cluster));
- m_agentConfigsHolder.get().updateData(cluster.getClusterId(), null);
+ m_configHelperProvider.get().updateAgentConfigs(Collections.singleton(cluster.getClusterName()));
}
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
index ca4719f..a71e7c8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
@@ -1615,7 +1615,6 @@ public class ClusterImpl implements Cluster {
}
STOMPUpdatePublisher.publish(new ConfigsUpdateEvent(serviceConfigEntity,
configGroup == null ? null : configGroup.getName(), groupHostNames, changedConfigs.keySet()));
- configHelper.checkStaleConfigsStatusOnConfigsUpdate(clusterEntity.getClusterId(), serviceName, groupHostNames, changedConfigs);
} finally {
clusterGlobalLock.writeLock().unlock();
}
@@ -1955,7 +1954,6 @@ public class ClusterImpl implements Cluster {
configGroupName,
groupHostNames,
changedConfigs.keySet()));
- configHelper.checkStaleConfigsStatusOnConfigsUpdate(clusterEntity.getClusterId(), serviceName, groupHostNames, changedConfigs);
return convertToServiceConfigVersionResponse(serviceConfigEntityClone);
}
@@ -1963,7 +1961,8 @@ public class ClusterImpl implements Cluster {
@Transactional
ServiceConfigVersionResponse applyConfigs(Set<Config> configs, String user, String serviceConfigVersionNote) throws AmbariException{
-List<ClusterConfigEntity> appliedConfigs = new ArrayList<>(); String serviceName = getServiceForConfigTypes( configs.stream().map(Config::getType).collect(toList()));
+ List<ClusterConfigEntity> appliedConfigs = new ArrayList<>();
+ String serviceName = getServiceForConfigTypes(configs.stream().map(Config::getType).collect(toList()));
// update the selected flag for every config type
ClusterEntity clusterEntity = getClusterEntity();
Collection<ClusterConfigEntity> clusterConfigs = clusterEntity.getClusterConfigEntities();
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
index 55ef12f..1c9a41f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
@@ -38,6 +38,7 @@ import org.apache.ambari.server.ClusterNotFoundException;
import org.apache.ambari.server.DuplicateResourceException;
import org.apache.ambari.server.HostNotFoundException;
import org.apache.ambari.server.agent.DiskInfo;
+import org.apache.ambari.server.agent.stomp.AgentConfigsHolder;
import org.apache.ambari.server.agent.stomp.MetadataHolder;
import org.apache.ambari.server.agent.stomp.TopologyHolder;
import org.apache.ambari.server.agent.stomp.dto.TopologyCluster;
@@ -153,6 +154,9 @@ public class ClustersImpl implements Clusters {
private Provider<TopologyHolder> m_topologyHolder;
@Inject
+ private Provider<AgentConfigsHolder> m_agentConfigsHolder;
+
+ @Inject
private Provider<MetadataHolder> m_metadataHolder;
@Inject
@@ -307,6 +311,14 @@ public class ClustersImpl implements Clusters {
cSet.add(clustersByName.get(clusterEntity.getClusterName()));
}
}
+ // init host configs
+ for (Long hostId : hostsById.keySet()) {
+ try {
+ m_agentConfigsHolder.get().initializeDataIfNeeded(hostId, true);
+ } catch (AmbariException e) {
+ LOG.error("Agent configs initialization was failed", e);
+ }
+ }
}
@Override
@@ -479,6 +491,12 @@ public class ClustersImpl implements Clusters {
if (null != hostId) {
getHostsById().put(hostId, host);
+ // init host configs
+ try {
+ m_agentConfigsHolder.get().initializeDataIfNeeded(hostId, true);
+ } catch (AmbariException e) {
+ LOG.error("Agent configs initialization was failed for host with id %s", hostId, e);
+ }
}
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java
index 26dc691..c8e0aa4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java
@@ -45,8 +45,6 @@ import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.ambari.annotations.Experimental;
import org.apache.ambari.annotations.ExperimentalFeature;
import org.apache.ambari.server.AmbariException;
-import org.apache.ambari.server.agent.stomp.AgentConfigsHolder;
-import org.apache.ambari.server.agent.stomp.MetadataHolder;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.configuration.Configuration.DatabaseType;
@@ -638,10 +636,9 @@ public abstract class AbstractUpgradeCatalog implements UpgradeCatalog {
+ "tag='" + baseConfig.getTag() + "'"
+ oldConfigString);
}
- MetadataHolder metadataHolder = injector.getInstance(MetadataHolder.class);
- AgentConfigsHolder agentConfigsHolder = injector.getInstance(AgentConfigsHolder.class);
- metadataHolder.updateData(controller.getClusterMetadataOnConfigsUpdate(cluster));
- agentConfigsHolder.updateData(cluster.getClusterId(), null);
+
+ ConfigHelper configHelper = injector.getInstance(ConfigHelper.class);
+ configHelper.updateAgentConfigs(Collections.singleton(cluster.getClusterName()));
}
} else {
LOG.info("No changes detected to config " + configType + ". Skipping configuration properties update");
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
index 16670eb..56036fe 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
@@ -26,6 +26,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.TreeMap;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.H2DatabaseCleaner;
@@ -45,6 +46,7 @@ import org.apache.ambari.server.controller.internal.RequestOperationLevel;
import org.apache.ambari.server.controller.internal.RequestResourceFilter;
import org.apache.ambari.server.controller.internal.ServiceResourceProviderTest;
import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.events.AgentConfigsUpdateEvent;
import org.apache.ambari.server.metadata.ActionMetadata;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
@@ -144,6 +146,9 @@ public class AmbariCustomCommandExecutionHelperTest {
EasyMock.anyObject(Cluster.class),
EasyMock.anyObject(Map.class))).andReturn(Collections.EMPTY_SET);
+ EasyMock.expect(configHelper.getHostActualConfigs(EasyMock.anyLong())).andReturn(
+ new AgentConfigsUpdateEvent(new TreeMap<>())).anyTimes();
+
EasyMock.replay(configHelper);
StageUtils.setTopologyManager(injector.getInstance(TopologyManager.class));
@@ -538,8 +543,15 @@ public class AmbariCustomCommandExecutionHelperTest {
public void testIsTopologyRefreshRequired() throws Exception {
AmbariCustomCommandExecutionHelper helper = injector.getInstance(AmbariCustomCommandExecutionHelper.class);
+ EasyMock.expect(configHelper.getHostActualConfigs(EasyMock.anyLong())).andReturn(
+ new AgentConfigsUpdateEvent(new TreeMap<>())).anyTimes();
+
+ EasyMock.replay(configHelper);
+
createClusterFixture("c2", new StackId("HDP-2.1.1"), "2.1.1.0-1234", "c2");
+ EasyMock.verify(configHelper);
+
Assert.assertTrue(helper.isTopologyRefreshRequired("START", "c2", "HDFS"));
Assert.assertTrue(helper.isTopologyRefreshRequired("RESTART", "c2", "HDFS"));
Assert.assertFalse(helper.isTopologyRefreshRequired("STOP", "c2", "HDFS"));
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
index c3fe064..798ad80 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
@@ -982,19 +982,11 @@ public class AmbariManagementControllerImplTest {
constructorInit(injector, controllerCapture, null, null,
kerberosHelper, m_metadataHolder, m_agentConfigsHolder);
- expect(m_metadataHolder.get()).andReturn(metadataHolder);
- expect(metadataHolder.updateData(anyObject())).andReturn(true);
-
- expect(m_agentConfigsHolder.get()).andReturn(agentConfigsHolder);
- agentConfigsHolder.updateData(anyLong(), anyObject(List.class));
- expectLastCall();
-
expect(clusterRequest.getClusterId()).andReturn(1L).times(4);
expect(clusterRequest.getSecurityType()).andReturn(SecurityType.NONE).anyTimes();
expect(clusters.getClusterById(1L)).andReturn(cluster).times(1);
expect(cluster.getResourceId()).andReturn(1L).times(3);
expect(cluster.getClusterName()).andReturn("cluster").times(1);
- expect(cluster.getClusterId()).andReturn(1L).times(1);
expect(cluster.getSecurityType()).andReturn(SecurityType.KERBEROS).anyTimes();
expect(cluster.getCurrentStackVersion()).andReturn(null).anyTimes();
expect(cluster.getDesiredStackVersion()).andReturn(null).anyTimes();
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java
index 91526c3..449d550 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java
@@ -31,6 +31,7 @@ import static org.easymock.EasyMock.newCapture;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -78,6 +79,7 @@ import org.springframework.security.core.context.SecurityContextHolder;
import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Module;
+import com.google.inject.Provider;
import com.google.inject.util.Modules;
public class ConfigGroupResourceProviderTest {
@@ -97,12 +99,24 @@ public class ConfigGroupResourceProviderTest {
}
private ConfigGroupResourceProvider getConfigGroupResourceProvider
- (AmbariManagementController managementController) {
+ (AmbariManagementController managementController) throws NoSuchFieldException, IllegalAccessException {
Resource.Type type = Resource.Type.ConfigGroup;
- return (ConfigGroupResourceProvider) AbstractControllerResourceProvider.getResourceProvider(
+ ConfigGroupResourceProvider configGroupResourceProvider =
+ (ConfigGroupResourceProvider) AbstractControllerResourceProvider.getResourceProvider(
type,
managementController);
+
+ Provider<ConfigHelper> configHelperProvider = createNiceMock(Provider.class);
+ expect(configHelperProvider.get()).andReturn(createNiceMock(ConfigHelper.class));
+
+ replay(configHelperProvider);
+
+ Field m_configHelper = ConfigGroupResourceProvider.class.getDeclaredField("m_configHelper");
+ m_configHelper.setAccessible(true);
+ m_configHelper.set(configGroupResourceProvider, configHelperProvider);
+
+ return configGroupResourceProvider;
}
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
index 909ba0d..ad8b84a 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
@@ -216,14 +216,6 @@ public class ClusterTest {
hostEntity.setHostAttributes(gson.toJson(hostAttributes));
-// hostDAO.merge(hostEntity);
-
- HostVersionEntity hostVersionEntity = new HostVersionEntity();
- hostVersionEntity.setRepositoryVersion(repositoryVersion);
- hostVersionEntity.setState(RepositoryVersionState.CURRENT);
- hostVersionEntity.setHostEntity(hostEntity);
- hostEntity.setHostVersionEntities(Collections.singletonList(hostVersionEntity));
-
hostDAO.merge(hostEntity);
}
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog252Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog252Test.java
index c2d5a97..b3cb5d4 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog252Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog252Test.java
@@ -23,6 +23,7 @@ import static org.easymock.EasyMock.anyString;
import static org.easymock.EasyMock.capture;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.createStrictMock;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.expectLastCall;
@@ -62,7 +63,6 @@ import org.apache.ambari.server.controller.KerberosHelper;
import org.apache.ambari.server.controller.KerberosHelperImpl;
import org.apache.ambari.server.controller.MaintenanceStateHelper;
import org.apache.ambari.server.controller.RootServiceResponseFactory;
-import org.apache.ambari.server.events.MetadataUpdateEvent;
import org.apache.ambari.server.hooks.HookService;
import org.apache.ambari.server.hooks.users.UserHookService;
import org.apache.ambari.server.metadata.CachedRoleCommandOrderProvider;
@@ -77,6 +77,7 @@ import org.apache.ambari.server.stack.StackManagerFactory;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
+import org.apache.ambari.server.state.ConfigHelper;
import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.ServiceComponentHostFactory;
import org.apache.ambari.server.state.StackId;
@@ -251,17 +252,21 @@ public class UpgradeCatalog252Test {
expect(controller.createConfig(eq(cluster), eq(stackId), eq("livy2-conf"), capture(captureLivy2ConfProperties), anyString(), anyObject(Map.class)))
.andReturn(livy2ConfNew)
.once();
- expect(controller.getClusterMetadataOnConfigsUpdate(eq(cluster)))
- .andReturn(createNiceMock(MetadataUpdateEvent.class))
- .times(2);
replay(clusters, cluster, zeppelinEnv, livy2Conf, livyConf, controller, metadataHolder);
Injector injector = getInjector(clusters, controller);
+
+ final ConfigHelper configHelper = injector.getInstance(ConfigHelper.class);
+ configHelper.updateAgentConfigs(anyObject(Set.class));
+ expectLastCall().times(2);
+
+ replay(configHelper);
+
UpgradeCatalog252 upgradeCatalog252 = injector.getInstance(UpgradeCatalog252.class);
upgradeCatalog252.fixLivySuperusers();
- verify(clusters, cluster, zeppelinEnv, livy2Conf, livyConf, controller);
+ verify(clusters, cluster, zeppelinEnv, livy2Conf, livyConf, controller, configHelper);
Assert.assertTrue(captureLivyConfProperties.hasCaptured());
Assert.assertEquals("some_user,zeppelin_user", captureLivyConfProperties.getValue().get("livy.superusers"));
@@ -459,6 +464,7 @@ public class UpgradeCatalog252Test {
binder.bind(MetadataHolder.class).toInstance(metadataHolder);
binder.bind(AgentConfigsHolder.class).toInstance(createNiceMock(AgentConfigsHolder.class));
binder.bind(StackManagerFactory.class).toInstance(createNiceMock(StackManagerFactory.class));
+ binder.bind(ConfigHelper.class).toInstance(createStrictMock(ConfigHelper.class));
}
};
return Guice.createInjector(module);
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
index 1e92ec5..55eda0f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
@@ -24,6 +24,7 @@ import static org.easymock.EasyMock.capture;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.createMockBuilder;
import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.createStrictMock;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.expectLastCall;
@@ -74,7 +75,6 @@ import org.apache.ambari.server.controller.MaintenanceStateHelper;
import org.apache.ambari.server.controller.RootServiceResponseFactory;
import org.apache.ambari.server.controller.ServiceConfigVersionResponse;
import org.apache.ambari.server.events.AmbariEvent;
-import org.apache.ambari.server.events.MetadataUpdateEvent;
import org.apache.ambari.server.events.publishers.STOMPUpdatePublisher;
import org.apache.ambari.server.hooks.AmbariEventFactory;
import org.apache.ambari.server.hooks.HookContext;
@@ -100,6 +100,7 @@ import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.ConfigFactory;
+import org.apache.ambari.server.state.ConfigHelper;
import org.apache.ambari.server.state.ConfigImpl;
import org.apache.ambari.server.state.Host;
import org.apache.ambari.server.state.Service;
@@ -647,6 +648,7 @@ public class UpgradeCatalog260Test {
Injector injector = getInjector();
final Clusters clusters = injector.getInstance(Clusters.class);
+ final ConfigHelper configHelper = injector.getInstance(ConfigHelper.class);
final Cluster cluster = createMock(Cluster.class);
final Config zeppelinEnvConf = createMock(Config.class);
final Config coreSiteConf = createMock(Config.class);
@@ -655,10 +657,12 @@ public class UpgradeCatalog260Test {
Capture<? extends Map<String, String>> captureCoreSiteConfProperties = newCapture();
+ configHelper.updateAgentConfigs(anyObject(Set.class));
+ expectLastCall();
+
expect(clusters.getClusters()).andReturn(Collections.singletonMap("c1", cluster)).once();
expect(cluster.getClusterName()).andReturn("c1").atLeastOnce();
- expect(cluster.getClusterId()).andReturn(1L).atLeastOnce();
expect(cluster.getDesiredStackVersion()).andReturn(new StackId("HDP-2.6")).atLeastOnce();
expect(cluster.getDesiredConfigByType("zeppelin-env")).andReturn(zeppelinEnvConf).atLeastOnce();
expect(cluster.getDesiredConfigByType("core-site")).andReturn(coreSiteConf).atLeastOnce();
@@ -675,16 +679,13 @@ public class UpgradeCatalog260Test {
expect(controller.createConfig(eq(cluster), anyObject(StackId.class), eq("core-site"), capture(captureCoreSiteConfProperties), anyString(), anyObject(Map.class)))
.andReturn(coreSiteConfNew)
.once();
- expect(controller.getClusterMetadataOnConfigsUpdate(eq(cluster)))
- .andReturn(createNiceMock(MetadataUpdateEvent.class))
- .once();
- replay(clusters, cluster, zeppelinEnvConf, coreSiteConf, coreSiteConfNew, controller);
+ replay(clusters, cluster, zeppelinEnvConf, coreSiteConf, coreSiteConfNew, controller, configHelper);
UpgradeCatalog260 upgradeCatalog260 = injector.getInstance(UpgradeCatalog260.class);
upgradeCatalog260.ensureZeppelinProxyUserConfigs();
- verify(clusters, cluster, zeppelinEnvConf, coreSiteConf, coreSiteConfNew, controller);
+ verify(clusters, cluster, zeppelinEnvConf, coreSiteConf, coreSiteConfNew, controller, configHelper);
assertTrue(captureCoreSiteConfProperties.hasCaptured());
Assert.assertEquals("existing_value", captureCoreSiteConfProperties.getValue().get("hadoop.proxyuser.zeppelin_user.hosts"));
@@ -725,6 +726,11 @@ public class UpgradeCatalog260Test {
artifactEntity.setArtifactData(capture(captureMap));
expectLastCall().once();
+ ConfigHelper configHelper = injector.getInstance(ConfigHelper.class);
+
+ configHelper.updateAgentConfigs(anyObject(Set.class));
+ expectLastCall().once();
+
ArtifactDAO artifactDAO = createMock(ArtifactDAO.class);
expect(artifactDAO.merge(artifactEntity)).andReturn(artifactEntity).atLeastOnce();
@@ -768,7 +774,6 @@ public class UpgradeCatalog260Test {
expect(cluster.getConfigsByType("ranger-kms-audit")).andReturn(Collections.singletonMap("version1", config)).anyTimes();
expect(cluster.getServiceByConfigType("ranger-kms-audit")).andReturn("RANGER").anyTimes();
expect(cluster.getClusterName()).andReturn("cl1").anyTimes();
- expect(cluster.getClusterId()).andReturn(1L).atLeastOnce();
expect(cluster.getConfig(eq("ranger-kms-audit"), anyString())).andReturn(newConfig).once();
expect(cluster.addDesiredConfig("ambari-upgrade", Collections.singleton(newConfig), "Updated ranger-kms-audit during Ambari Upgrade from 2.5.2 to 2.6.0.")).andReturn(response).once();
@@ -795,15 +800,12 @@ public class UpgradeCatalog260Test {
expect(controller.createConfig(eq(cluster), eq(stackId), eq("hive-interactive-site"), capture(captureHsiProperties), anyString(), anyObject(Map.class)))
.andReturn(null)
.anyTimes();
- expect(controller.getClusterMetadataOnConfigsUpdate(eq(cluster)))
- .andReturn(createNiceMock(MetadataUpdateEvent.class))
- .once();
- replay(artifactDAO, artifactEntity, cluster, clusters, config, newConfig, hsiConfig, newHsiConfig, response, response1, controller, stackId);
+ replay(artifactDAO, artifactEntity, cluster, clusters, config, newConfig, hsiConfig, newHsiConfig, response, response1, controller, stackId, configHelper);
UpgradeCatalog260 upgradeCatalog260 = injector.getInstance(UpgradeCatalog260.class);
upgradeCatalog260.updateKerberosDescriptorArtifact(artifactDAO, artifactEntity);
- verify(artifactDAO, artifactEntity, cluster, clusters, config, newConfig, response, controller, stackId);
+ verify(artifactDAO, artifactEntity, cluster, clusters, config, newConfig, response, controller, stackId, configHelper);
KerberosDescriptor kerberosDescriptorUpdated = new KerberosDescriptorFactory().createInstance(captureMap.getValue());
Assert.assertNotNull(kerberosDescriptorUpdated);
@@ -1107,6 +1109,7 @@ public class UpgradeCatalog260Test {
binder.bind(KerberosHelper.class).toInstance(createNiceMock(KerberosHelperImpl.class));
binder.bind(MetadataHolder.class).toInstance(createNiceMock(MetadataHolder.class));
binder.bind(AgentConfigsHolder.class).toInstance(createNiceMock(AgentConfigsHolder.class));
+ binder.bind(ConfigHelper.class).toInstance(createStrictMock(ConfigHelper.class));
binder.install(new FactoryModuleBuilder().build(RequestFactory.class));
binder.install(new FactoryModuleBuilder().build(ConfigureClusterTaskFactory.class));
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog270Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog270Test.java
index 57fd7f8..fb367ad 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog270Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog270Test.java
@@ -118,6 +118,7 @@ import static org.easymock.EasyMock.capture;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.createMockBuilder;
import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.createStrictMock;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.expectLastCall;
@@ -148,6 +149,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.persistence.EntityManager;
@@ -177,7 +179,6 @@ import org.apache.ambari.server.controller.KerberosHelperImpl;
import org.apache.ambari.server.controller.MaintenanceStateHelper;
import org.apache.ambari.server.controller.RootServiceResponseFactory;
import org.apache.ambari.server.controller.ServiceConfigVersionResponse;
-import org.apache.ambari.server.events.MetadataUpdateEvent;
import org.apache.ambari.server.hooks.HookService;
import org.apache.ambari.server.hooks.users.UserHookService;
import org.apache.ambari.server.metadata.CachedRoleCommandOrderProvider;
@@ -1111,7 +1112,6 @@ public class UpgradeCatalog270Test {
expect(cluster1.getConfigsByType("kerberos-env")).andReturn(Collections.singletonMap("v1", configWithGroup)).atLeastOnce();
expect(cluster1.getServiceByConfigType("kerberos-env")).andReturn("KERBEROS").atLeastOnce();
expect(cluster1.getClusterName()).andReturn("c1").atLeastOnce();
- expect(cluster1.getClusterId()).andReturn(1L).atLeastOnce();
expect(cluster1.getDesiredStackVersion()).andReturn(stackId).atLeastOnce();
expect(cluster1.getConfig(eq("kerberos-env"), anyString())).andReturn(newConfig).atLeastOnce();
expect(cluster1.addDesiredConfig("ambari-upgrade", Collections.singleton(newConfig), "Updated kerberos-env during Ambari Upgrade from 2.6.2 to 2.7.0.")).andReturn(response).once();
@@ -1146,19 +1146,23 @@ public class UpgradeCatalog270Test {
.createMock();
expect(controller.getClusters()).andReturn(clusters).anyTimes();
expect(controller.createConfig(eq(cluster1), eq(stackId), eq("kerberos-env"), capture(capturedProperties), anyString(), anyObject(Map.class))).andReturn(newConfig).once();
- expect(controller.getClusterMetadataOnConfigsUpdate(eq(cluster1))).andReturn(createNiceMock(MetadataUpdateEvent.class)).once();
Injector injector = createNiceMock(Injector.class);
+ ConfigHelper configHelper = createStrictMock(ConfigHelper.class);
expect(injector.getInstance(AmbariManagementController.class)).andReturn(controller).anyTimes();
expect(injector.getInstance(MetadataHolder.class)).andReturn(createNiceMock(MetadataHolder.class)).anyTimes();
expect(injector.getInstance(AgentConfigsHolder.class)).andReturn(createNiceMock(AgentConfigsHolder.class)).anyTimes();
expect(injector.getInstance(AmbariServer.class)).andReturn(createNiceMock(AmbariServer.class)).anyTimes();
+ expect(injector.getInstance(ConfigHelper.class)).andReturn(configHelper).anyTimes();
KerberosHelper kerberosHelperMock = createNiceMock(KerberosHelper.class);
expect(kerberosHelperMock.createTemporaryDirectory()).andReturn(new File("/invalid/file/path")).times(2);
expect(injector.getInstance(KerberosHelper.class)).andReturn(kerberosHelperMock).anyTimes();
- replay(controller, clusters, cluster1, cluster2, configWithGroup, configWithoutGroup, newConfig, response, injector, kerberosHelperMock);
+ configHelper.updateAgentConfigs(anyObject(Set.class));
+ expectLastCall();
+
+ replay(controller, clusters, cluster1, cluster2, configWithGroup, configWithoutGroup, newConfig, response, injector, kerberosHelperMock, configHelper);
Field field = AbstractUpgradeCatalog.class.getDeclaredField("configuration");
@@ -1174,7 +1178,7 @@ public class UpgradeCatalog270Test {
field.set(upgradeCatalog270, createNiceMock(Configuration.class));
upgradeCatalog270.updateKerberosConfigurations();
- verify(controller, clusters, cluster1, cluster2, configWithGroup, configWithoutGroup, newConfig, response, injector, upgradeCatalog270);
+ verify(controller, clusters, cluster1, cluster2, configWithGroup, configWithoutGroup, newConfig, response, injector, upgradeCatalog270, configHelper);
Assert.assertEquals(1, capturedProperties.getValues().size());
--
To stop receiving notification emails like this one, please contact
mpapirkovskyy@apache.org.