You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2017/09/25 19:21:24 UTC
ambari git commit: AMBARI-22014. Patch upgrade is going into
incorrect state during package installation with invalid VDF (ncole)
Repository: ambari
Updated Branches:
refs/heads/branch-2.6 d7f1d9a09 -> e09a3c8c2
AMBARI-22014. Patch upgrade is going into incorrect state during package installation with invalid VDF (ncole)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e09a3c8c
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e09a3c8c
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e09a3c8c
Branch: refs/heads/branch-2.6
Commit: e09a3c8c22c4a287a050927b72bdc3948878bd16
Parents: d7f1d9a
Author: Nate Cole <nc...@hortonworks.com>
Authored: Mon Sep 25 14:13:50 2017 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Mon Sep 25 14:14:06 2017 -0400
----------------------------------------------------------------------
.../server/controller/ControllerModule.java | 2 +
.../controller/ResourceProviderFactory.java | 4 +
.../AbstractControllerResourceProvider.java | 2 +-
.../ClusterStackVersionResourceProvider.java | 9 +-
.../internal/DefaultProviderModule.java | 2 -
...ClusterStackVersionResourceProviderTest.java | 219 ++++++-------------
6 files changed, 84 insertions(+), 154 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/e09a3c8c/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
index 53c10c3..e3f1458 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
@@ -62,6 +62,7 @@ import org.apache.ambari.server.cleanup.ClasspathScannerUtils;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.configuration.Configuration.ConnectionPoolType;
import org.apache.ambari.server.configuration.Configuration.DatabaseType;
+import org.apache.ambari.server.controller.internal.ClusterStackVersionResourceProvider;
import org.apache.ambari.server.controller.internal.ComponentResourceProvider;
import org.apache.ambari.server.controller.internal.CredentialResourceProvider;
import org.apache.ambari.server.controller.internal.HostComponentResourceProvider;
@@ -466,6 +467,7 @@ public class ControllerModule extends AbstractModule {
.implement(ResourceProvider.class, Names.named("credential"), CredentialResourceProvider.class)
.implement(ResourceProvider.class, Names.named("kerberosDescriptor"), KerberosDescriptorResourceProvider.class)
.implement(ResourceProvider.class, Names.named("upgrade"), UpgradeResourceProvider.class)
+ .implement(ResourceProvider.class, Names.named("clusterStackVersion"), ClusterStackVersionResourceProvider.class)
.build(ResourceProviderFactory.class));
install(new FactoryModuleBuilder().implement(
http://git-wip-us.apache.org/repos/asf/ambari/blob/e09a3c8c/ambari-server/src/main/java/org/apache/ambari/server/controller/ResourceProviderFactory.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/ResourceProviderFactory.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/ResourceProviderFactory.java
index 9f9eaee..9cd1d74 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/ResourceProviderFactory.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/ResourceProviderFactory.java
@@ -22,6 +22,7 @@ package org.apache.ambari.server.controller;
import java.util.Map;
import java.util.Set;
+import org.apache.ambari.server.controller.internal.ClusterStackVersionResourceProvider;
import org.apache.ambari.server.controller.internal.UpgradeResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.spi.Resource.Type;
@@ -68,4 +69,7 @@ public interface ResourceProviderFactory {
@Named("upgrade")
UpgradeResourceProvider getUpgradeResourceProvider(AmbariManagementController managementController);
+ @Named("clusterStackVersion")
+ ClusterStackVersionResourceProvider getClusterStackVersionResourceProvider(AmbariManagementController managementController);
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/e09a3c8c/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
index 77e6250..0782685 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
@@ -183,7 +183,7 @@ public abstract class AbstractControllerResourceProvider extends AbstractAuthori
case StackVersion:
return new StackVersionResourceProvider(propertyIds, keyPropertyIds, managementController);
case ClusterStackVersion:
- return new ClusterStackVersionResourceProvider(managementController);
+ return resourceProviderFactory.getClusterStackVersionResourceProvider(managementController);
case HostStackVersion:
return new HostStackVersionResourceProvider(managementController);
case StackService:
http://git-wip-us.apache.org/repos/asf/ambari/blob/e09a3c8c/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
index a1e07dc..d2de01f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
@@ -204,6 +204,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
/**
* Constructor.
*/
+ @Inject
public ClusterStackVersionResourceProvider(
AmbariManagementController managementController) {
super(propertyIds, keyPropertyIds, managementController);
@@ -447,7 +448,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
}
}
- @Transactional
+ @Transactional(rollbackOn = {RuntimeException.class, SystemException.class, AmbariException.class})
RequestStatus createOrUpdateHostVersions(Cluster cluster,
RepositoryVersionEntity repoVersionEntity, VersionDefinitionXml versionDefinitionXml,
StackId stackId, boolean forceInstalled, Map<String, Object> propertyMap)
@@ -663,11 +664,13 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
}
}
- private ActionExecutionContext getHostVersionInstallCommand(RepositoryVersionEntity repoVersion,
+ @Transactional
+ ActionExecutionContext getHostVersionInstallCommand(RepositoryVersionEntity repoVersion,
Cluster cluster, AmbariManagementController managementController, AmbariMetaInfo ami,
final StackId stackId, Set<String> repoServices, Stage stage1, Host host)
throws SystemException {
+
// Determine repositories for host
String osFamily = host.getOsFamily();
@@ -681,7 +684,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
if (null == osEntity || CollectionUtils.isEmpty(osEntity.getRepositories())) {
throw new SystemException(String.format("Repositories for os type %s are " +
- "not defined. Repo version=%s, stackId=%s",
+ "not defined for version %s of Stack %s.",
osFamily, repoVersion.getVersion(), stackId));
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/e09a3c8c/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java
index 35fdcf6..781b015 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java
@@ -106,8 +106,6 @@ public class DefaultProviderModule extends AbstractProviderModule {
return new UpgradeItemResourceProvider(managementController);
case UpgradeSummary:
return new UpgradeSummaryResourceProvider(managementController);
- case ClusterStackVersion:
- return new ClusterStackVersionResourceProvider(managementController);
case PreUpgradeCheck:
return new PreUpgradeCheckResourceProvider(managementController);
case HostStackVersion:
http://git-wip-us.apache.org/repos/asf/ambari/blob/e09a3c8c/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
index 7ad3a87..8478a2d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
@@ -31,7 +31,6 @@ import static org.easymock.EasyMock.verify;
import java.io.File;
import java.io.FileInputStream;
-import java.lang.reflect.Field;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -68,6 +67,7 @@ import org.apache.ambari.server.controller.spi.Predicate;
import org.apache.ambari.server.controller.spi.Request;
import org.apache.ambari.server.controller.spi.RequestStatus;
import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.controller.spi.Resource.Type;
import org.apache.ambari.server.controller.spi.ResourceProvider;
import org.apache.ambari.server.controller.utilities.PredicateBuilder;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
@@ -117,6 +117,7 @@ import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@@ -124,7 +125,6 @@ import com.google.gson.JsonParser;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
-import com.google.inject.Provider;
import com.google.inject.util.Modules;
import junit.framework.AssertionFailedError;
@@ -146,6 +146,10 @@ public class ClusterStackVersionResourceProviderTest {
private HostVersionDAO hostVersionDAO;
private HostComponentStateDAO hostComponentStateDAO;
+ private Clusters clusters;
+ private ActionManager actionManager;
+ private AmbariManagementController managementController;
+
public static final String OS_JSON = "[\n" +
" {\n" +
" \"repositories\":[\n" +
@@ -179,6 +183,10 @@ public class ClusterStackVersionResourceProviderTest {
configuration = new Configuration(properties);
stageFactory = createNiceMock(StageFactory.class);
+ clusters = createNiceMock(Clusters.class);
+ actionManager = createNiceMock(ActionManager.class);
+ managementController = createMock(AmbariManagementController.class);
+
// Initialize injector
injector = Guice.createInjector(Modules.override(inMemoryModule).with(new MockModule()));
injector.getInstance(GuiceJpaInitializer.class);
@@ -208,10 +216,6 @@ public class ClusterStackVersionResourceProviderTest {
}
private void testCreateResources(Authentication authentication) throws Exception {
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
Map<String, String> hostLevelParams = new HashMap<>();
StackId stackId = new StackId("HDP", "2.0.1");
@@ -258,28 +262,15 @@ public class ClusterStackVersionResourceProviderTest {
expect(schAMS.getServiceName()).andReturn("AMBARI_METRICS").anyTimes();
expect(schAMS.getServiceComponentName()).andReturn("METRICS_COLLECTOR").anyTimes();
// First host contains versionable components
- final List<ServiceComponentHost> schsH1 = new ArrayList<ServiceComponentHost>(){{
- add(schDatanode);
- add(schNamenode);
- add(schAMS);
- }};
+ final List<ServiceComponentHost> schsH1 = Lists.newArrayList(schDatanode, schNamenode, schAMS);
// Second host does not contain versionable components
- final List<ServiceComponentHost> schsH2 = new ArrayList<ServiceComponentHost>(){{
- add(schAMS);
- }};
-
+ final List<ServiceComponentHost> schsH2 = Lists.newArrayList(schAMS);
ServiceOsSpecific.Package hdfsPackage = new ServiceOsSpecific.Package();
hdfsPackage.setName("hdfs");
List<ServiceOsSpecific.Package> packages = Collections.singletonList(hdfsPackage);
- ActionManager actionManager = createNiceMock(ActionManager.class);
-
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
- ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class);
- ResourceProvider csvResourceProvider = createNiceMock(ClusterStackVersionResourceProvider.class);
-
- AbstractControllerResourceProvider.init(resourceProviderFactory);
Map<String, Map<String, String>> hostConfigTags = new HashMap<>();
expect(configHelper.getEffectiveDesiredTags(anyObject(ClusterImpl.class), anyObject(String.class))).andReturn(hostConfigTags);
@@ -291,11 +282,9 @@ public class ClusterStackVersionResourceProviderTest {
expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes();
expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class),
EasyMock.<Map<String, String>>anyObject(), anyObject(String.class))).
- andReturn(packages).times((hostCount - 1) * 2); // 1 host has no versionable components, other hosts have 2 services
-// // that's why we don't send commands to it
-
- expect(resourceProviderFactory.getHostResourceProvider(EasyMock.<Set<String>>anyObject(), EasyMock.<Map<Resource.Type, String>>anyObject(),
- eq(managementController))).andReturn(csvResourceProvider).anyTimes();
+ andReturn(packages).anyTimes();
+ expect(managementController.findConfigurationTagsWithOverrides(anyObject(Cluster.class), EasyMock.anyString()))
+ .andReturn(new HashMap<String, Map<String, String>>()).anyTimes();
expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster);
expect(clusters.getHostsForCluster(anyObject(String.class))).andReturn(
@@ -357,18 +346,14 @@ public class ClusterStackVersionResourceProviderTest {
StageUtils.setTopologyManager(injector.getInstance(TopologyManager.class));
StageUtils.setConfiguration(injector.getInstance(Configuration.class));
+ ResourceProvider provider = createProvider(managementController);
+ injector.injectMembers(provider);
+
// replay
- replay(managementController, response, clusters, resourceProviderFactory, csvResourceProvider,
+ replay(managementController, response, clusters,
cluster, repositoryVersionDAOMock, configHelper, schDatanode, schNamenode, schAMS, actionManager,
executionCommand, executionCommandWrapper,stage, stageFactory);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
- injector.injectMembers(provider);
// add the property map to a set for the request. add more maps for multiple creates
Set<Map<String, Object>> propertySet = new LinkedHashSet<>();
@@ -618,10 +603,6 @@ public class ClusterStackVersionResourceProviderTest {
}
private void testCreateResourcesWithRepoDefinition(Authentication authentication) throws Exception {
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
StackId stackId = new StackId("HDP", "2.0.1");
@@ -706,7 +687,7 @@ public class ClusterStackVersionResourceProviderTest {
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class);
- ResourceProvider csvResourceProvider = createNiceMock(ClusterStackVersionResourceProvider.class);
+ ResourceProvider csvResourceProvider = createNiceMock(ResourceProvider.class);
AbstractControllerResourceProvider.init(resourceProviderFactory);
@@ -725,6 +706,10 @@ public class ClusterStackVersionResourceProviderTest {
expect(resourceProviderFactory.getHostResourceProvider(EasyMock.<Set<String>>anyObject(), EasyMock.<Map<Resource.Type, String>>anyObject(),
eq(managementController))).andReturn(csvResourceProvider).anyTimes();
+ expect(managementController.findConfigurationTagsWithOverrides(anyObject(Cluster.class), EasyMock.anyString()))
+ .andReturn(new HashMap<String, Map<String, String>>()).anyTimes();
+
+
expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster);
expect(clusters.getHostsForCluster(anyObject(String.class))).andReturn(
hostsForCluster).anyTimes();
@@ -796,12 +781,7 @@ public class ClusterStackVersionResourceProviderTest {
cluster, repositoryVersionDAOMock, configHelper, schDatanode, schNamenode, schHBM, actionManager,
executionCommandWrapper,stage, stageFactory);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
+ ResourceProvider provider = createProvider(managementController);
injector.injectMembers(provider);
// add the property map to a set for the request. add more maps for multiple creates
@@ -859,10 +839,6 @@ public class ClusterStackVersionResourceProviderTest {
String os_json = json.toString();
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
StackId stackId = new StackId("HDP", "2.0.1");
@@ -946,10 +922,7 @@ public class ClusterStackVersionResourceProviderTest {
ActionManager actionManager = createNiceMock(ActionManager.class);
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
- ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class);
- ResourceProvider csvResourceProvider = createNiceMock(ClusterStackVersionResourceProvider.class);
-
- AbstractControllerResourceProvider.init(resourceProviderFactory);
+ ResourceProvider csvResourceProvider = createNiceMock(ResourceProvider.class);
Map<String, Map<String, String>> hostConfigTags = new HashMap<>();
expect(configHelper.getEffectiveDesiredTags(anyObject(ClusterImpl.class), anyObject(String.class))).andReturn(hostConfigTags);
@@ -963,8 +936,8 @@ public class ClusterStackVersionResourceProviderTest {
EasyMock.<Map<String, String>>anyObject(), anyObject(String.class))).
andReturn(packages).anyTimes(); // only one host has the versionable component
- expect(resourceProviderFactory.getHostResourceProvider(EasyMock.<Set<String>>anyObject(), EasyMock.<Map<Resource.Type, String>>anyObject(),
- eq(managementController))).andReturn(csvResourceProvider).anyTimes();
+ expect(managementController.findConfigurationTagsWithOverrides(anyObject(Cluster.class), EasyMock.anyString()))
+ .andReturn(new HashMap<String, Map<String, String>>()).anyTimes();
expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster);
expect(clusters.getHostsForCluster(anyObject(String.class))).andReturn(
@@ -992,11 +965,9 @@ public class ClusterStackVersionResourceProviderTest {
expect(cluster.transitionHostsToInstalling(anyObject(RepositoryVersionEntity.class),
anyObject(VersionDefinitionXml.class), eq(false))).andReturn(hostsNeedingInstallCommands).atLeastOnce();
-// ExecutionCommand executionCommand = createNiceMock(ExecutionCommand.class);
ExecutionCommand executionCommand = new ExecutionCommand();
ExecutionCommandWrapper executionCommandWrapper = createNiceMock(ExecutionCommandWrapper.class);
-// expect(executionCommand.getHostLevelParams()).andReturn(new HashMap<String, String>()).atLeastOnce();
expect(executionCommandWrapper.getExecutionCommand()).andReturn(executionCommand).anyTimes();
Stage stage = createNiceMock(Stage.class);
@@ -1031,16 +1002,11 @@ public class ClusterStackVersionResourceProviderTest {
StageUtils.setConfiguration(injector.getInstance(Configuration.class));
// replay
- replay(managementController, response, clusters, hdfsService, hbaseService, resourceProviderFactory, csvResourceProvider,
+ replay(managementController, response, clusters, hdfsService, hbaseService, csvResourceProvider,
cluster, repositoryVersionDAOMock, configHelper, schDatanode, schNamenode, schHBM, actionManager,
executionCommandWrapper,stage, stageFactory);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
+ ResourceProvider provider = createProvider(managementController);
injector.injectMembers(provider);
// add the property map to a set for the request. add more maps for multiple creates
@@ -1096,10 +1062,6 @@ public class ClusterStackVersionResourceProviderTest {
}
private void testCreateResourcesMixed(Authentication authentication) throws Exception {
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
Map<String, String> hostLevelParams = new HashMap<>();
StackId stackId = new StackId("HDP", "2.0.1");
@@ -1164,16 +1126,9 @@ public class ClusterStackVersionResourceProviderTest {
expect(schAMS.getServiceName()).andReturn("AMBARI_METRICS").anyTimes();
expect(schAMS.getServiceComponentName()).andReturn("METRICS_COLLECTOR").anyTimes();
// First host contains versionable components
- final List<ServiceComponentHost> schsH1 = new ArrayList<ServiceComponentHost>(){{
- add(schDatanode);
- add(schNamenode);
- add(schAMS);
- }};
+ final List<ServiceComponentHost> schsH1 = Lists.newArrayList(schDatanode, schNamenode, schAMS);
// Second host does not contain versionable components
- final List<ServiceComponentHost> schsH2 = new ArrayList<ServiceComponentHost>(){{
- add(schAMS);
- }};
-
+ final List<ServiceComponentHost> schsH2 = Lists.newArrayList(schAMS);
ServiceOsSpecific.Package hdfsPackage = new ServiceOsSpecific.Package();
hdfsPackage.setName("hdfs");
@@ -1182,10 +1137,6 @@ public class ClusterStackVersionResourceProviderTest {
ActionManager actionManager = createNiceMock(ActionManager.class);
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
- ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class);
- ResourceProvider csvResourceProvider = createNiceMock(ClusterStackVersionResourceProvider.class);
-
- AbstractControllerResourceProvider.init(resourceProviderFactory);
Map<String, Map<String, String>> hostConfigTags = new HashMap<>();
expect(configHelper.getEffectiveDesiredTags(anyObject(ClusterImpl.class), anyObject(String.class))).andReturn(hostConfigTags);
@@ -1197,11 +1148,10 @@ public class ClusterStackVersionResourceProviderTest {
expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes();
expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class),
EasyMock.<Map<String, String>>anyObject(), anyObject(String.class))).
- andReturn(packages).times((hostCount - 1) * 2); // 1 host has no versionable components, other hosts have 2 services
-// // that's why we don't send commands to it
+ andReturn(packages).anyTimes();
- expect(resourceProviderFactory.getHostResourceProvider(EasyMock.<Set<String>>anyObject(), EasyMock.<Map<Resource.Type, String>>anyObject(),
- eq(managementController))).andReturn(csvResourceProvider).anyTimes();
+ expect(managementController.findConfigurationTagsWithOverrides(anyObject(Cluster.class), EasyMock.anyString()))
+ .andReturn(new HashMap<String, Map<String, String>>()).anyTimes();
expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster);
expect(clusters.getHostsForCluster(anyObject(String.class))).andReturn(
@@ -1267,16 +1217,11 @@ public class ClusterStackVersionResourceProviderTest {
// replay
- replay(managementController, response, clusters, resourceProviderFactory, csvResourceProvider,
+ replay(managementController, response, clusters,
cluster, repositoryVersionDAOMock, configHelper, schDatanode, schNamenode, schAMS, actionManager,
executionCommand, executionCommandWrapper,stage, stageFactory);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
+ ResourceProvider provider = createProvider(managementController);
injector.injectMembers(provider);
// add the property map to a set for the request. add more maps for multiple creates
@@ -1329,10 +1274,6 @@ public class ClusterStackVersionResourceProviderTest {
*/
@Test
public void testCreateResourcesInInstalledState() throws Exception {
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
StackId stackId = new StackId("HDP", "2.2.0");
String repoVersion = "2.2.0.1-885";
@@ -1409,8 +1350,7 @@ public class ClusterStackVersionResourceProviderTest {
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class);
- ResourceProvider csvResourceProvider = createNiceMock(
- ClusterStackVersionResourceProvider.class);
+ ResourceProvider csvResourceProvider = createNiceMock(ResourceProvider.class);
AbstractControllerResourceProvider.init(resourceProviderFactory);
@@ -1455,10 +1395,7 @@ public class ClusterStackVersionResourceProviderTest {
csvResourceProvider, cluster, repositoryVersionDAOMock, configHelper, schDatanode,
stageFactory, hostVersionDAO);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(type,
- PropertyHelper.getPropertyIds(type), PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
+ ResourceProvider provider = createProvider(managementController);
injector.injectMembers(provider);
// add the property map to a set for the request. add more maps for multiple
@@ -1502,10 +1439,6 @@ public class ClusterStackVersionResourceProviderTest {
@Test
public void testCreateResourcesPPC() throws Exception {
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
Map<String, String> hostLevelParams = new HashMap<>();
StackId stackId = new StackId("HDP", "2.0.1");
@@ -1568,16 +1501,9 @@ public class ClusterStackVersionResourceProviderTest {
expect(schAMS.getServiceName()).andReturn("AMBARI_METRICS").anyTimes();
expect(schAMS.getServiceComponentName()).andReturn("METRICS_COLLECTOR").anyTimes();
// First host contains versionable components
- final List<ServiceComponentHost> schsH1 = new ArrayList<ServiceComponentHost>(){{
- add(schDatanode);
- add(schNamenode);
- add(schAMS);
- }};
+ final List<ServiceComponentHost> schsH1 = Lists.newArrayList(schDatanode, schNamenode, schAMS);
// Second host does not contain versionable components
- final List<ServiceComponentHost> schsH2 = new ArrayList<ServiceComponentHost>(){{
- add(schAMS);
- }};
-
+ final List<ServiceComponentHost> schsH2 = Lists.newArrayList(schAMS);
ServiceOsSpecific.Package hdfsPackage = new ServiceOsSpecific.Package();
hdfsPackage.setName("hdfs");
@@ -1601,8 +1527,11 @@ public class ClusterStackVersionResourceProviderTest {
expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes();
expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class),
(Map<String, String>) anyObject(List.class), anyObject(String.class))).
- andReturn(packages).anyTimes(); // 1 host has no versionable components, other hosts have 2 services
- // // that's why we don't send commands to it
+ andReturn(packages).anyTimes();
+
+ expect(managementController.findConfigurationTagsWithOverrides(anyObject(Cluster.class), EasyMock.anyString()))
+ .andReturn(new HashMap<String, Map<String, String>>()).anyTimes();
+
expect(resourceProviderFactory.getHostResourceProvider(anyObject(Set.class), anyObject(Map.class),
eq(managementController))).andReturn(csvResourceProvider).anyTimes();
@@ -1673,12 +1602,7 @@ public class ClusterStackVersionResourceProviderTest {
cluster, repoVersion, repositoryVersionDAOMock, configHelper, schDatanode, schNamenode, schAMS, actionManager,
executionCommand, executionCommandWrapper,stage, stageFactory);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
+ ResourceProvider provider = createProvider(managementController);
injector.injectMembers(provider);
// add the property map to a set for the request. add more maps for multiple creates
@@ -1712,10 +1636,6 @@ public class ClusterStackVersionResourceProviderTest {
@Test
public void testGetSorted() throws Exception {
-
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- final Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
StackId stackId = new StackId("HDP", "2.2.0");
@@ -1767,19 +1687,17 @@ public class ClusterStackVersionResourceProviderTest {
csvResourceProvider, cluster, repositoryVersionDAOMock, configHelper,
stageFactory, hostVersionDAO);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(type,
- PropertyHelper.getPropertyIds(type), PropertyHelper.getKeyPropertyIds(type),
- /*managementController*/null);
+ ResourceProvider provider = createProvider(managementController);
injector.injectMembers(provider);
- Field field = ClusterStackVersionResourceProvider.class.getDeclaredField("clusters");
- field.setAccessible(true);
- field.set(null, new Provider<Clusters>() {
- @Override
- public Clusters get() {
- return clusters;
- }
- });
+// Field field = ClusterStackVersionResourceProvider.class.getDeclaredField("clusters");
+// field.setAccessible(true);
+// field.set(null, new Provider<Clusters>() {
+// @Override
+// public Clusters get() {
+// return clusters;
+// }
+// });
// set the security auth
SecurityContextHolder.getContext().setAuthentication(
@@ -1914,10 +1832,6 @@ public class ClusterStackVersionResourceProviderTest {
}
private void testCreateResourcesExistingUpgrade(Authentication authentication) throws Exception {
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
@@ -1935,12 +1849,7 @@ public class ClusterStackVersionResourceProviderTest {
// replay
replay(managementController, clusters, cluster);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
+ ResourceProvider provider = createProvider(managementController);
injector.injectMembers(provider);
// add the property map to a set for the request. add more maps for multiple creates
@@ -1972,6 +1881,17 @@ public class ClusterStackVersionResourceProviderTest {
verify(cluster);
}
+
+ private ClusterStackVersionResourceProvider createProvider(AmbariManagementController amc) {
+ ResourceProviderFactory factory = injector.getInstance(ResourceProviderFactory.class);
+ AbstractControllerResourceProvider.init(factory);
+
+ Resource.Type type = Type.ClusterStackVersion;
+ return (ClusterStackVersionResourceProvider) AbstractControllerResourceProvider.getResourceProvider(type,
+ PropertyHelper.getPropertyIds(type), PropertyHelper.getKeyPropertyIds(type),
+ amc);
+ }
+
private class MockModule extends AbstractModule {
@Override
protected void configure() {
@@ -1981,6 +1901,9 @@ public class ClusterStackVersionResourceProviderTest {
bind(StageFactory.class).toInstance(stageFactory);
bind(HostVersionDAO.class).toInstance(hostVersionDAO);
bind(HostComponentStateDAO.class).toInstance(hostComponentStateDAO);
+ bind(Clusters.class).toInstance(clusters);
+ bind(ActionManager.class).toInstance(actionManager);
+ bind(AmbariManagementController.class).toInstance(managementController);
}
}