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 2015/10/14 22:55:31 UTC
ambari git commit: AMBARI-13423. Distributing patch repo bits should
target specific hosts (ncole)
Repository: ambari
Updated Branches:
refs/heads/branch-dev-patch-upgrade 4e12263b9 -> f99d82118
AMBARI-13423. Distributing patch repo bits should target specific hosts (ncole)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f99d8211
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f99d8211
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f99d8211
Branch: refs/heads/branch-dev-patch-upgrade
Commit: f99d821189c00310435e9ec1847bb86ee73bdb8f
Parents: 4e12263
Author: Nate Cole <nc...@hortonworks.com>
Authored: Wed Oct 14 12:15:54 2015 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Wed Oct 14 13:20:55 2015 -0400
----------------------------------------------------------------------
.../api/services/PersistKeyValueService.java | 16 ++-
.../ClusterStackVersionResourceProvider.java | 140 +++++++++++--------
.../events/ActionFinalReportReceivedEvent.java | 1 -
.../server/state/RepositoryVersionState.java | 34 ++---
.../server/state/cluster/ClusterImpl.java | 22 ++-
...ClusterStackVersionResourceProviderTest.java | 18 +--
6 files changed, 129 insertions(+), 102 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/f99d8211/ambari-server/src/main/java/org/apache/ambari/server/api/services/PersistKeyValueService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/PersistKeyValueService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/PersistKeyValueService.java
index 9b942e5..d867257 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/PersistKeyValueService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/PersistKeyValueService.java
@@ -23,7 +23,13 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
-import javax.ws.rs.*;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import javax.xml.bind.JAXBException;
@@ -74,15 +80,17 @@ public class PersistKeyValueService {
LOG.info("Returning " + stringRet);
return stringRet;
}
-
+
@GET
@Produces("text/plain")
@Path("{keyName}")
public String getKey( @PathParam("keyName") String keyName) {
- LOG.info("Looking for keyName " + keyName);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Looking for keyName " + keyName);
+ }
return persistKeyVal.getValue(keyName);
}
-
+
@GET
@Produces("text/plain")
public String getAllKeyValues() throws JAXBException, IOException {
http://git-wip-us.apache.org/repos/asf/ambari/blob/f99d8211/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 4868ca7..a07a3cf 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
@@ -17,10 +17,18 @@
*/
package org.apache.ambari.server.controller.internal;
-import com.google.gson.Gson;
-import com.google.inject.Inject;
-import com.google.inject.Injector;
-import com.google.inject.Provider;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JDK_LOCATION;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.Role;
import org.apache.ambari.server.StaticallyInject;
@@ -49,8 +57,6 @@ import org.apache.ambari.server.controller.spi.ResourceAlreadyExistsException;
import org.apache.ambari.server.controller.spi.SystemException;
import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
-import org.apache.ambari.server.events.ActionFinalReportReceivedEvent;
-import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
import org.apache.ambari.server.orm.dao.ClusterVersionDAO;
import org.apache.ambari.server.orm.dao.HostVersionDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
@@ -74,17 +80,10 @@ import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.utils.StageUtils;
import org.apache.commons.lang.StringUtils;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.JDK_LOCATION;
+import com.google.gson.Gson;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+import com.google.inject.Provider;
/**
* Resource provider for cluster stack versions resources.
@@ -182,9 +181,6 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
private static Configuration configuration;
@Inject
- private static AmbariEventPublisher ambariEventPublisher;
-
- @Inject
private static Injector injector;
/**
@@ -244,8 +240,10 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
for (HostVersionEntity hostVersionEntity : hostVersionDAO.findByClusterStackAndVersion(
entity.getClusterEntity().getClusterName(), repoVersionStackId,
entity.getRepositoryVersion().getVersion())) {
+
hostStates.get(hostVersionEntity.getState().name()).add(hostVersionEntity.getHostName());
}
+
StackId stackId = new StackId(entity.getRepositoryVersion().getStack());
RepositoryVersionEntity repoVerEntity = repositoryVersionDAO.findByStackAndVersion(
stackId, entity.getRepositoryVersion().getVersion());
@@ -370,6 +368,8 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
stageId = 1L;
}
+ boolean hasStage = false;
+
ArrayList<Stage> stages = new ArrayList<Stage>(batchCount);
for (int batchId = 1; batchId <= batchCount; batchId++) {
// Create next stage
@@ -397,12 +397,26 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
// add the stage that was just created
stages.add(stage);
+ // determine services for the repo
+ Set<String> serviceNames = new HashSet<>();
+ for (RepositoryVersionEntity.Component component : repoVersionEnt.getComponents()) {
+ serviceNames.add(component.getService());
+ }
+
// Populate with commands for host
for (int i = 0; i < maxTasks && hostIterator.hasNext(); i++) {
Host host = hostIterator.next();
- if (hostHasVersionableComponents(cluster, ami, stackId, host)) {
- addHostVersionInstallCommandsToStage(desiredRepoVersion,
- cluster, managementController, ami, stackId, perOsRepos, stage, host);
+ if (hostHasVersionableComponents(cluster, serviceNames, ami, stackId, host)) {
+ ActionExecutionContext actionContext = getHostVersionInstallCommand(desiredRepoVersion,
+ cluster, managementController, ami, stackId, serviceNames, perOsRepos, stage, host);
+ if (null != actionContext) {
+ try {
+ actionExecutionHelper.get().addExecutionCommandsToStage(actionContext, stage);
+ hasStage = true;
+ } catch (AmbariException e) {
+ throw new SystemException("Cannot modify stage", e);
+ }
+ }
} else {
directTransitions.add(host);
}
@@ -410,6 +424,11 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
}
}
+ if (!hasStage) {
+ throw new SystemException(String.format("There are no hosts that have components to install repository %s",
+ desiredRepoVersion));
+ }
+
req.addStages(stages);
try {
@@ -432,7 +451,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
desiredRepoVersion, clName), e);
}
} else {
- // Move CSV into INSTALLING state (retry installation)
+ // Move cluster version into INSTALLING state (retry installation)
cluster.transitionClusterVersion(stackId,
desiredRepoVersion, RepositoryVersionState.INSTALLING);
}
@@ -440,24 +459,23 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
// Will also initialize all Host Versions in an INSTALLING state.
cluster.transitionHostsToInstalling(clusterVersionEntity);
- // Directly transition host versions to INSTALLED for hosts that don't have
+ // Directly transition host versions to NOT_REQUIRED for hosts that don't have
// versionable components
for(Host host : directTransitions) {
- transitionHostVersionToInstalled(host, cluster,
- clusterVersionEntity.getRepositoryVersion().getVersion());
+ transitionHostVersionToNotRequired(host, cluster,
+ clusterVersionEntity.getRepositoryVersion());
}
req.persist();
-
} catch (AmbariException e) {
throw new SystemException("Can not persist request", e);
}
return getRequestStatus(req.getRequestStatusResponse());
}
- private void addHostVersionInstallCommandsToStage(final String desiredRepoVersion,
+ private ActionExecutionContext getHostVersionInstallCommand(final String desiredRepoVersion,
Cluster cluster, AmbariManagementController managementController, AmbariMetaInfo ami,
- final StackId stackId, Map<String, List<RepositoryEntity>> perOsRepos, Stage stage, Host host)
+ final StackId stackId, Set<String> repoServices, Map<String, List<RepositoryEntity>> perOsRepos, Stage stage1, Host host)
throws SystemException {
// Determine repositories for host
final List<RepositoryEntity> repoInfo = perOsRepos.get(host.getOsFamily());
@@ -467,12 +485,19 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
host.getOsFamily(), desiredRepoVersion, stackId));
}
+
// determine packages for all services that are installed on host
List<ServiceOsSpecific.Package> packages = new ArrayList<ServiceOsSpecific.Package>();
Set<String> servicesOnHost = new HashSet<String>();
List<ServiceComponentHost> components = cluster.getServiceComponentHosts(host.getHostName());
for (ServiceComponentHost component : components) {
- servicesOnHost.add(component.getServiceName());
+ if (repoServices.isEmpty() || repoServices.contains(component.getServiceName())) {
+ servicesOnHost.add(component.getServiceName());
+ }
+ }
+
+ if (servicesOnHost.isEmpty()) {
+ return null;
}
for (String serviceName : servicesOnHost) {
@@ -484,7 +509,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
}
List<ServiceOsSpecific.Package> packagesForService = managementController.getPackagesForServiceHost(info,
- new HashMap<String, String>(), // Contents are ignored
+ Collections.<String, String>emptyMap(), // Contents are ignored
host.getOsFamily());
for (ServiceOsSpecific.Package aPackage : packagesForService) {
if (! aPackage.getSkipUpgrade()) {
@@ -512,11 +537,8 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
params);
actionContext.setTimeout(Short.valueOf(configuration.getDefaultAgentTaskTimeout(true)));
- try {
- actionExecutionHelper.get().addExecutionCommandsToStage(actionContext, stage);
- } catch (AmbariException e) {
- throw new SystemException("Can not modify stage", e);
- }
+ return actionContext;
+
}
@@ -524,10 +546,15 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
* Returns true if there is at least one versionable component on host for a given
* stack.
*/
- private boolean hostHasVersionableComponents(Cluster cluster, AmbariMetaInfo ami, StackId stackId,
+ private boolean hostHasVersionableComponents(Cluster cluster, Set<String> serviceNames, AmbariMetaInfo ami, StackId stackId,
Host host) throws SystemException {
List<ServiceComponentHost> components = cluster.getServiceComponentHosts(host.getHostName());
+
for (ServiceComponentHost component : components) {
+ if (!serviceNames.isEmpty() && !serviceNames.contains(component.getServiceName())) {
+ continue;
+ }
+
ComponentInfo componentInfo;
try {
componentInfo = ami.getComponent(stackId.getStackName(),
@@ -545,29 +572,24 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
/**
- * Sends event for host regarding successful repo version installation
- * without actually running any commands on host.
- * Transitioning host version to INSTALLED state manually would not be the
- * best idea since some additional logic may be bound to event listeners.
+ * Sets host versions states to not-required.
+ *
+ * Transitioning host version to NOT_REQUIRED state manually is ok since
+ * other completion handlers set success/fail states correctly during heartbeat.
+ * The number of NOT_REQUIRED components for a cluster will be low.
*/
- private void transitionHostVersionToInstalled(Host host, Cluster cluster, String version) {
- LOG.info(String.format("Transitioning version %s on host %s directly to installed" +
+ private void transitionHostVersionToNotRequired(Host host, Cluster cluster, RepositoryVersionEntity repoVersion) {
+ LOG.info(String.format("Transitioning version %s on host %s directly to %s" +
" without distributing bits to host since it has no versionable components.",
- version, host.getHostName()));
- CommandReport report = new CommandReport();
- report.setRole(INSTALL_PACKAGES_ACTION);
- report.setStdOut("Skipped distributing bits to host since it has " +
- "no versionable components installed");
- report.setStdErr("");
- // We don't set actual repo version in structured output in order
- // to avoid confusing server with fake data
- report.setStructuredOut("{}");
- report.setExitCode(0);
- report.setStatus(HostRoleStatus.COMPLETED.toString());
- ActionFinalReportReceivedEvent event = new ActionFinalReportReceivedEvent(
- cluster.getClusterId(), host.getHostName(),
- report, true);
- ambariEventPublisher.publish(event);
+ repoVersion.getVersion(), host.getHostName(), RepositoryVersionState.NOT_REQUIRED));
+
+ for (HostVersionEntity hve : host.getAllHostVersions()) {
+ if (hve.getRepositoryVersion().equals(repoVersion)) {
+ hve.setState(RepositoryVersionState.NOT_REQUIRED);
+ hostVersionDAO.merge(hve);
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f99d8211/ambari-server/src/main/java/org/apache/ambari/server/events/ActionFinalReportReceivedEvent.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/ActionFinalReportReceivedEvent.java b/ambari-server/src/main/java/org/apache/ambari/server/events/ActionFinalReportReceivedEvent.java
index de797f3..e96fb89 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/ActionFinalReportReceivedEvent.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/ActionFinalReportReceivedEvent.java
@@ -17,7 +17,6 @@
*/
package org.apache.ambari.server.events;
-import org.apache.ambari.server.actionmanager.HostRoleCommand;
import org.apache.ambari.server.agent.CommandReport;
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/f99d8211/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryVersionState.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryVersionState.java b/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryVersionState.java
index b0f85b4..344f358 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryVersionState.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryVersionState.java
@@ -80,51 +80,41 @@ package org.apache.ambari.server.state;
*/
public enum RepositoryVersionState {
/**
+ * Repository version is not required
+ */
+ NOT_REQUIRED,
+ /**
* Repository version that is in the process of being installed.
*/
- INSTALLING(2),
+ INSTALLING,
/**
* Repository version that is installed and supported but not the active version.
*/
- INSTALLED(3),
+ INSTALLED,
/**
* Repository version that during the install process failed to install some components.
*/
- INSTALL_FAILED(0),
+ INSTALL_FAILED,
/**
* Repository version that is installed for some components but not for all.
*/
- OUT_OF_SYNC(1),
+ OUT_OF_SYNC,
/**
* Repository version that is installed and supported and is the active version.
*/
- CURRENT(7),
+ CURRENT,
/**
* Repository version that is in the process of upgrading to become the CURRENT active version,
* and the previous active version transitions to an INSTALLED state.
*/
- UPGRADING(5),
+ UPGRADING,
/**
* Repository version that during the upgrade process failed to become the active version and must be remedied.
*/
- UPGRADE_FAILED(4),
+ UPGRADE_FAILED,
/**
* Repository version that finished upgrading and should be finalized to become CURRENT.
*/
- UPGRADED(6);
-
- /**
- * Is used to determine cluster version state.
- * @see org.apache.ambari.server.state.Cluster#recalculateClusterVersionState(String)
- */
- private int priority;
-
- RepositoryVersionState(int priority) {
- this.priority = priority;
- }
-
- public int getPriority() {
- return priority;
- }
+ UPGRADED
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f99d8211/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
----------------------------------------------------------------------
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 e3bb320..8124326 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
@@ -1206,9 +1206,9 @@ public class ClusterImpl implements Cluster {
* UPGRADE_FAILED: at least one host in UPGRADE_FAILED
* UPGRADED: all hosts are UPGRADED
* UPGRADING: at least one host is UPGRADING, and the rest in UPGRADING|INSTALLED
- * INSTALLED: all hosts in INSTALLED
+ * INSTALLED: all hosts in INSTALLED -OR- INSTALLED and NOT_REQUIRED
* INSTALL_FAILED: at least one host in INSTALL_FAILED
- * INSTALLING: all hosts in INSTALLING. Notice that if one host is CURRENT and another is INSTALLING, then the
+ * INSTALLING: all hosts in INSTALLING -or- INSTALLING and NOT_REQUIRED. Notice that if one host is CURRENT and another is INSTALLING, then the
* effective version will be OUT_OF_SYNC.
* OUT_OF_SYNC: otherwise
* @param stateToHosts Map from state to the collection of hosts with that state
@@ -1243,12 +1243,24 @@ public class ClusterImpl implements Cluster {
return RepositoryVersionState.INSTALL_FAILED;
}
- final int totalINSTALLING = stateToHosts.containsKey(RepositoryVersionState.INSTALLING) ? stateToHosts.get(RepositoryVersionState.INSTALLING).size() : 0;
- final int totalINSTALLED = stateToHosts.containsKey(RepositoryVersionState.INSTALLED) ? stateToHosts.get(RepositoryVersionState.INSTALLED).size() : 0;
- if (totalINSTALLING + totalINSTALLED == totalHosts) {
+ int totalInstalling = stateToHosts.containsKey(RepositoryVersionState.INSTALLING) ? stateToHosts.get(RepositoryVersionState.INSTALLING).size() : 0;
+ int totalInstalled = stateToHosts.containsKey(RepositoryVersionState.INSTALLED) ? stateToHosts.get(RepositoryVersionState.INSTALLED).size() : 0;
+ int totalNotRequired = stateToHosts.containsKey(RepositoryVersionState.NOT_REQUIRED) ? stateToHosts.get(RepositoryVersionState.NOT_REQUIRED).size() : 0;
+
+ if (totalInstalling + totalInstalled == totalHosts) {
return RepositoryVersionState.INSTALLING;
}
+ if (totalNotRequired > 0) {
+ if (totalInstalling + totalInstalled + totalNotRequired == totalHosts) {
+ return RepositoryVersionState.INSTALLING;
+ }
+
+ if (totalInstalled + totalNotRequired == totalHosts) {
+ return RepositoryVersionState.INSTALLED;
+ }
+ }
+
// Also returns when have a mix of CURRENT and INSTALLING|INSTALLED|UPGRADING|UPGRADED
LOG.warn("have a mix of CURRENT and INSTALLING|INSTALLED|UPGRADING|UPGRADED host versions, " +
"returning OUT_OF_SYNC as cluster version. Host version states: " + stateToHosts.toString());
http://git-wip-us.apache.org/repos/asf/ambari/blob/f99d8211/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 1819ef9..d3fa977 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
@@ -50,7 +50,6 @@ import org.apache.ambari.server.agent.CommandReport;
import org.apache.ambari.server.agent.ExecutionCommand;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.configuration.Configuration;
-import org.apache.ambari.server.controller.AmbariActionExecutionHelper;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.controller.RequestStatusResponse;
import org.apache.ambari.server.controller.ResourceProviderFactory;
@@ -61,14 +60,13 @@ import org.apache.ambari.server.controller.spi.ResourceProvider;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
-import org.apache.ambari.server.orm.dao.ClusterDAO;
import org.apache.ambari.server.orm.dao.ClusterVersionDAO;
-import org.apache.ambari.server.orm.dao.HostDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.dao.ResourceTypeDAO;
import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.entities.ClusterEntity;
import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
+import org.apache.ambari.server.orm.entities.HostVersionEntity;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.orm.entities.ResourceEntity;
import org.apache.ambari.server.orm.entities.ResourceTypeEntity;
@@ -111,13 +109,10 @@ public class ClusterStackVersionResourceProviderTest {
private RepositoryVersionDAO repositoryVersionDAOMock;
private ResourceTypeDAO resourceTypeDAO;
private StackDAO stackDAO;
- private ClusterDAO clusterDAO;
private ClusterVersionDAO clusterVersionDAO;
- private HostDAO hostDAO;
private ConfigHelper configHelper;
private Configuration configuration;
private StageFactory stageFactory;
- private AmbariActionExecutionHelper actionExecutionHelper;
private String operatingSystemsJson = "[\n" +
" {\n" +
@@ -157,8 +152,6 @@ public class ClusterStackVersionResourceProviderTest {
ambariMetaInfo = injector.getInstance(AmbariMetaInfo.class);
resourceTypeDAO = injector.getInstance(ResourceTypeDAO.class);
stackDAO = injector.getInstance(StackDAO.class);
- clusterDAO = injector.getInstance(ClusterDAO.class);
- hostDAO = injector.getInstance(HostDAO.class);
}
@After
@@ -175,6 +168,10 @@ public class ClusterStackVersionResourceProviderTest {
Cluster cluster = createNiceMock(Cluster.class);
StackId stackId = new StackId("HDP", "2.0.1");
+ RepositoryVersionEntity repoVersion = new RepositoryVersionEntity();
+ repoVersion.setId(1l);
+ repoVersion.setOperatingSystems(operatingSystemsJson);
+
Map<String, Host> hostsForCluster = new HashMap<String, Host>();
int hostCount = 10;
for (int i = 0; i < hostCount; i++) {
@@ -184,6 +181,8 @@ public class ClusterStackVersionResourceProviderTest {
expect(host.getOsFamily()).andReturn("redhat6").anyTimes();
expect(host.getMaintenanceState(EasyMock.anyLong())).andReturn(
MaintenanceState.OFF).anyTimes();
+ expect(host.getAllHostVersions()).andReturn(
+ Collections.<HostVersionEntity>emptyList()).anyTimes();
replay(host);
hostsForCluster.put(hostname, host);
@@ -209,9 +208,6 @@ public class ClusterStackVersionResourceProviderTest {
add(schAMS);
}};
- RepositoryVersionEntity repoVersion = new RepositoryVersionEntity();
- repoVersion.setId(1l);
- repoVersion.setOperatingSystems(operatingSystemsJson);
ServiceOsSpecific.Package hdfsPackage = new ServiceOsSpecific.Package();
hdfsPackage.setName("hdfs");