This is an automated email from the ASF dual-hosted git repository. avijayan 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 bf55629 Revert "AMBARI-23565. Restore configs does not work. (#1130)" bf55629 is described below commit bf55629ce21a7da27778e252e67fd0a3841adc27 Author: Aravindan Vijayan <avija...@hortonworks.com> AuthorDate: Mon Apr 30 10:34:27 2018 -0700 Revert "AMBARI-23565. Restore configs does not work. (#1130)" This reverts commit 43cff24fc62604dee9726349e34ff72f83c43cc4. --- .../controller/AmbariManagementControllerImpl.java | 6 +- .../internal/ConfigGroupResourceProvider.java | 17 ---- .../apache/ambari/server/state/ConfigHelper.java | 111 +++------------------ .../apache/ambari/server/state/UpgradeHelper.java | 12 +-- .../ambari/server/state/cluster/ClusterImpl.java | 5 +- .../ambari/server/state/cluster/ClustersImpl.java | 18 ---- .../server/upgrade/AbstractUpgradeCatalog.java | 10 +- .../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 | 13 +-- 14 files changed, 71 insertions(+), 212 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 20f9b8e..ba2ba3a 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,6 +1868,8 @@ 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(); @@ -2012,10 +2014,6 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle } } } - if (serviceConfigVersionResponse != null) { - configHelper.updateAgentConfigs(Collections.singletonMap(cluster.getClusterName(), - Collections.singleton(serviceConfigVersionResponse.getServiceName()))); - } 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 ff25e30..6c55c85 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,7 +58,6 @@ 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; @@ -70,7 +69,6 @@ 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 @@ -143,9 +141,6 @@ 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. * @@ -519,9 +514,6 @@ public class ConfigGroupResourceProvider extends cluster.getClusterName(), getManagementController().getAuthName(), configGroup.getName(), request.getId()); cluster.deleteConfigGroup(request.getId()); - - m_configHelper.get().updateAgentConfigs(Collections.singletonMap(request.getClusterName(), - Collections.singleton(configGroup.getServiceName()))); } private void validateRequest(ConfigGroupRequest request) { @@ -555,7 +547,6 @@ public class ConfigGroupResourceProvider extends ConfigGroupFactory configGroupFactory = getManagementController() .getConfigGroupFactory(); - Map<String, Set<String>> updatedServices = new HashMap<>(); for (ConfigGroupRequest request : requests) { Cluster cluster; @@ -643,12 +634,8 @@ public class ConfigGroupResourceProvider extends configGroup.getTag(), configGroup.getDescription(), null, null); configGroupResponses.add(response); - updatedServices.putIfAbsent(cluster.getClusterName(), new HashSet<>()); - updatedServices.get(cluster.getClusterName()).add(serviceName); } - m_configHelper.get().updateAgentConfigs(updatedServices); - return configGroupResponses; } @@ -660,7 +647,6 @@ public class ConfigGroupResourceProvider extends Clusters clusters = getManagementController().getClusters(); - Map<String, Set<String>> updatedServices = new HashMap<>(); for (ConfigGroupRequest request : requests) { Cluster cluster; @@ -769,15 +755,12 @@ public class ConfigGroupResourceProvider extends versionTags.add(tagsMap); configGroupResponse.setVersionTags(versionTags); getManagementController().saveConfigGroupUpdate(request, configGroupResponse); - updatedServices.putIfAbsent(cluster.getClusterName(), new HashSet<>()); - updatedServices.get(cluster.getClusterName()).add(serviceName); } else { LOG.warn("Could not determine service name for config group {}, service config version not created", configGroup.getId()); } } - m_configHelper.get().updateAgentConfigs(updatedServices); } @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 7327f43..6371302 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,9 +1180,8 @@ public class ConfigHelper { || !Maps.difference(oldConfigProperties, properties).areEqual()) { if (createConfigType(cluster, stackId, controller, configType, properties, propertiesAttributes, authenticatedUserName, serviceVersionNote)) { - - String serviceName = cluster.getServiceForConfigTypes(Collections.singletonList(configType)); - updateAgentConfigs(Collections.singletonMap(cluster.getClusterName(), Collections.singleton(serviceName))); + m_metadataHolder.get().updateData(m_ambariManagementController.get().getClusterMetadataOnConfigsUpdate(cluster)); + m_agentConfigsHolder.get().updateData(cluster.getClusterId(), null); } } } @@ -1193,9 +1192,8 @@ public class ConfigHelper { if (createConfigType(cluster, stackId, controller, configType, properties, new HashMap<>(), authenticatedUserName, serviceVersionNote)) { - - String serviceName = cluster.getServiceForConfigTypes(Collections.singletonList(configType)); - updateAgentConfigs(Collections.singletonMap(cluster.getClusterName(), Collections.singleton(serviceName))); + m_metadataHolder.get().updateData(m_ambariManagementController.get().getClusterMetadataOnConfigsUpdate(cluster)); + m_agentConfigsHolder.get().updateData(cluster.getClusterId(), null); } } @@ -1500,99 +1498,15 @@ 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 updatedServices service names mapped by cluster names - * @throws AmbariException - */ - public void updateAgentConfigs(Map<String, Set<String>> updatedServices) throws AmbariException { - - // get all used clusters in request - List<Cluster> clustersInUse = new ArrayList<>(); - for (String clusterName : updatedServices.keySet()) { - 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 : updatedServices.get(cluster.getClusterName())) { - 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, - Map<Long, Map<String, Collection<String>>> changedConfigs) throws AmbariException { + public void checkStaleConfigsStatusOnConfigsUpdate(Long clusterId, String serviceName, Collection<String> hostNames, + Map<String, Collection<String>> changedConfigs) throws AmbariException { if (MapUtils.isEmpty(changedConfigs)) { return; } @@ -1603,11 +1517,16 @@ 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 (changedConfigs.keySet().contains(serviceComponentHost.getHost().getHostId())) { + if (hosts.contains(serviceComponentHost.getHostName())) { boolean staleConfigs = checkStaleConfigsStatusForHostComponent(serviceComponentHost, - changedConfigs.get(serviceComponentHost.getHost().getHostId())); - + changedConfigs); 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 cd2efcd..00c6bcc 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 @@ -950,11 +950,10 @@ public class UpgradeHelper { Set<String> clusterConfigTypes = new HashSet<>(); Set<String> processedClusterConfigTypes = new HashSet<>(); - Set<String> servicesWithUpdatedConfigs = new HashSet<>(); + boolean configsChanged = false; // merge or revert configurations for any service that needs it for (String serviceName : servicesInUpgrade) { - boolean configsChanged = false; RepositoryVersionEntity sourceRepositoryVersion = upgradeContext.getSourceRepositoryVersion(serviceName); RepositoryVersionEntity targetRepositoryVersion = upgradeContext.getTargetRepositoryVersion(serviceName); StackId sourceStackId = sourceRepositoryVersion.getStackId(); @@ -1157,13 +1156,10 @@ public class UpgradeHelper { newServiceDefaultConfigsByType, userName, serviceVersionNote); configsChanged = true; } - if (configsChanged) { - servicesWithUpdatedConfigs.add(serviceName); - } } - if (!servicesWithUpdatedConfigs.isEmpty()) { - m_configHelperProvider.get().updateAgentConfigs(Collections.singletonMap(cluster.getClusterName(), - servicesWithUpdatedConfigs)); + if (configsChanged) { + m_metadataHolder.get().updateData(m_controllerProvider.get().getClusterMetadataOnConfigsUpdate(cluster)); + m_agentConfigsHolder.get().updateData(cluster.getClusterId(), null); } } 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 a71e7c8..ca4719f 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,6 +1615,7 @@ 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(); } @@ -1954,6 +1955,7 @@ public class ClusterImpl implements Cluster { configGroupName, groupHostNames, changedConfigs.keySet())); + configHelper.checkStaleConfigsStatusOnConfigsUpdate(clusterEntity.getClusterId(), serviceName, groupHostNames, changedConfigs); return convertToServiceConfigVersionResponse(serviceConfigEntityClone); } @@ -1961,8 +1963,7 @@ 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 1c9a41f..55ef12f 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,7 +38,6 @@ 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; @@ -154,9 +153,6 @@ public class ClustersImpl implements Clusters { private Provider<TopologyHolder> m_topologyHolder; @Inject - private Provider<AgentConfigsHolder> m_agentConfigsHolder; - - @Inject private Provider<MetadataHolder> m_metadataHolder; @Inject @@ -311,14 +307,6 @@ 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 @@ -491,12 +479,6 @@ 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 958a3b5..26dc691 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,6 +45,8 @@ 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; @@ -636,10 +638,10 @@ public abstract class AbstractUpgradeCatalog implements UpgradeCatalog { + "tag='" + baseConfig.getTag() + "'" + oldConfigString); } - - ConfigHelper configHelper = injector.getInstance(ConfigHelper.class); - configHelper.updateAgentConfigs(Collections.singletonMap(cluster.getClusterName(), - Collections.singleton(serviceName))); + MetadataHolder metadataHolder = injector.getInstance(MetadataHolder.class); + AgentConfigsHolder agentConfigsHolder = injector.getInstance(AgentConfigsHolder.class); + metadataHolder.updateData(controller.getClusterMetadataOnConfigsUpdate(cluster)); + agentConfigsHolder.updateData(cluster.getClusterId(), null); } } 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 56036fe..16670eb 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,7 +26,6 @@ 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; @@ -46,7 +45,6 @@ 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; @@ -146,9 +144,6 @@ 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)); @@ -543,15 +538,8 @@ 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 798ad80..c3fe064 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,11 +982,19 @@ 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 449d550..91526c3 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,7 +31,6 @@ 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; @@ -79,7 +78,6 @@ 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 { @@ -99,24 +97,12 @@ public class ConfigGroupResourceProviderTest { } private ConfigGroupResourceProvider getConfigGroupResourceProvider - (AmbariManagementController managementController) throws NoSuchFieldException, IllegalAccessException { + (AmbariManagementController managementController) { Resource.Type type = Resource.Type.ConfigGroup; - ConfigGroupResourceProvider configGroupResourceProvider = - (ConfigGroupResourceProvider) AbstractControllerResourceProvider.getResourceProvider( + return (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 ad8b84a..909ba0d 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,6 +216,14 @@ 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 0afa39c..c2d5a97 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,7 +23,6 @@ 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; @@ -63,6 +62,7 @@ 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,7 +77,6 @@ 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; @@ -252,21 +251,17 @@ 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(Map.class)); - expectLastCall().times(2); - - replay(configHelper); - UpgradeCatalog252 upgradeCatalog252 = injector.getInstance(UpgradeCatalog252.class); upgradeCatalog252.fixLivySuperusers(); - verify(clusters, cluster, zeppelinEnv, livy2Conf, livyConf, controller, configHelper); + verify(clusters, cluster, zeppelinEnv, livy2Conf, livyConf, controller); Assert.assertTrue(captureLivyConfProperties.hasCaptured()); Assert.assertEquals("some_user,zeppelin_user", captureLivyConfProperties.getValue().get("livy.superusers")); @@ -464,7 +459,6 @@ 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 4f71252..1e92ec5 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,7 +24,6 @@ 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; @@ -75,6 +74,7 @@ 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,7 +100,6 @@ 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; @@ -648,7 +647,6 @@ 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); @@ -657,12 +655,10 @@ public class UpgradeCatalog260Test { Capture<? extends Map<String, String>> captureCoreSiteConfProperties = newCapture(); - configHelper.updateAgentConfigs(anyObject(Map.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(); @@ -679,13 +675,16 @@ 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, configHelper); + replay(clusters, cluster, zeppelinEnvConf, coreSiteConf, coreSiteConfNew, controller); UpgradeCatalog260 upgradeCatalog260 = injector.getInstance(UpgradeCatalog260.class); upgradeCatalog260.ensureZeppelinProxyUserConfigs(); - verify(clusters, cluster, zeppelinEnvConf, coreSiteConf, coreSiteConfNew, controller, configHelper); + verify(clusters, cluster, zeppelinEnvConf, coreSiteConf, coreSiteConfNew, controller); assertTrue(captureCoreSiteConfProperties.hasCaptured()); Assert.assertEquals("existing_value", captureCoreSiteConfProperties.getValue().get("hadoop.proxyuser.zeppelin_user.hosts")); @@ -726,11 +725,6 @@ public class UpgradeCatalog260Test { artifactEntity.setArtifactData(capture(captureMap)); expectLastCall().once(); - ConfigHelper configHelper = injector.getInstance(ConfigHelper.class); - - configHelper.updateAgentConfigs(anyObject(Map.class)); - expectLastCall().once(); - ArtifactDAO artifactDAO = createMock(ArtifactDAO.class); expect(artifactDAO.merge(artifactEntity)).andReturn(artifactEntity).atLeastOnce(); @@ -774,6 +768,7 @@ 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(); @@ -800,12 +795,15 @@ 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, configHelper); + replay(artifactDAO, artifactEntity, cluster, clusters, config, newConfig, hsiConfig, newHsiConfig, response, response1, controller, stackId); UpgradeCatalog260 upgradeCatalog260 = injector.getInstance(UpgradeCatalog260.class); upgradeCatalog260.updateKerberosDescriptorArtifact(artifactDAO, artifactEntity); - verify(artifactDAO, artifactEntity, cluster, clusters, config, newConfig, response, controller, stackId, configHelper); + verify(artifactDAO, artifactEntity, cluster, clusters, config, newConfig, response, controller, stackId); KerberosDescriptor kerberosDescriptorUpdated = new KerberosDescriptorFactory().createInstance(captureMap.getValue()); Assert.assertNotNull(kerberosDescriptorUpdated); @@ -1109,7 +1107,6 @@ 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 2215ec2..b092eb4 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,7 +118,6 @@ 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; @@ -178,6 +177,7 @@ 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; @@ -1105,6 +1105,7 @@ 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(); @@ -1139,23 +1140,19 @@ 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(); - configHelper.updateAgentConfigs(anyObject(Map.class)); - expectLastCall(); - - replay(controller, clusters, cluster1, cluster2, configWithGroup, configWithoutGroup, newConfig, response, injector, kerberosHelperMock, configHelper); + replay(controller, clusters, cluster1, cluster2, configWithGroup, configWithoutGroup, newConfig, response, injector, kerberosHelperMock); Field field = AbstractUpgradeCatalog.class.getDeclaredField("configuration"); @@ -1171,7 +1168,7 @@ public class UpgradeCatalog270Test { field.set(upgradeCatalog270, createNiceMock(Configuration.class)); upgradeCatalog270.updateKerberosConfigurations(); - verify(controller, clusters, cluster1, cluster2, configWithGroup, configWithoutGroup, newConfig, response, injector, upgradeCatalog270, configHelper); + verify(controller, clusters, cluster1, cluster2, configWithGroup, configWithoutGroup, newConfig, response, injector, upgradeCatalog270); Assert.assertEquals(1, capturedProperties.getValues().size()); -- To stop receiving notification emails like this one, please contact avija...@apache.org.