You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by yu...@apache.org on 2014/12/11 00:20:17 UTC
ambari git commit: Revert "AMBARI-8618. Distribute repositories
action: Add command report parsing (INSTALLING->INSTALLED) transition (Dmitry
Lisnichenko via ncole)"
Repository: ambari
Updated Branches:
refs/heads/trunk 4ae9bb9c8 -> f6248ae5f
Revert "AMBARI-8618. Distribute repositories action: Add command report parsing (INSTALLING->INSTALLED) transition (Dmitry Lisnichenko via ncole)"
Causing Host Check to hang.
This reverts commit 89dc6c1c5bfe06eac6bd188a53103bc766218f81.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f6248ae5
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f6248ae5
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f6248ae5
Branch: refs/heads/trunk
Commit: f6248ae5f65ff403311262eb5e51631b9f5081c0
Parents: 4ae9bb9
Author: Yusaku Sako <yu...@hortonworks.com>
Authored: Wed Dec 10 15:19:24 2014 -0800
Committer: Yusaku Sako <yu...@hortonworks.com>
Committed: Wed Dec 10 15:19:56 2014 -0800
----------------------------------------------------------------------
.../org/apache/ambari/server/RoleCommand.java | 8 -
.../server/actionmanager/ActionManager.java | 8 +-
.../server/actionmanager/ActionScheduler.java | 29 +--
.../ambari/server/agent/HeartBeatHandler.java | 22 +--
.../DistributeRepositoriesStructuredOutput.java | 61 -------
.../ClusterStackVersionResourceProvider.java | 31 ++--
.../HostStackVersionResourceProvider.java | 32 ++--
.../events/ActionFinalReportReceivedEvent.java | 78 --------
.../ambari/server/events/AmbariEvent.java | 7 +-
.../DistributeRepositoriesActionListener.java | 178 -------------------
.../server/orm/dao/ClusterVersionDAO.java | 8 +-
.../org/apache/ambari/server/state/Cluster.java | 22 +--
.../server/state/RepositoryVersionState.java | 17 +-
.../server/state/cluster/ClusterImpl.java | 121 ++-----------
.../actionmanager/TestActionDBAccessorImpl.java | 2 +-
.../server/actionmanager/TestActionManager.java | 6 +-
.../actionmanager/TestActionScheduler.java | 57 +++---
.../server/agent/TestHeartbeatHandler.java | 12 +-
...ClusterStackVersionResourceProviderTest.java | 3 +-
.../HostStackVersionResourceProviderTest.java | 7 +-
.../test/python/custom_actions/TestCheckHost.py | 102 +++++------
21 files changed, 158 insertions(+), 653 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/main/java/org/apache/ambari/server/RoleCommand.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/RoleCommand.java b/ambari-server/src/main/java/org/apache/ambari/server/RoleCommand.java
index 5607c60..b98c50c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/RoleCommand.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/RoleCommand.java
@@ -33,14 +33,6 @@ public enum RoleCommand {
ABORT,
UPGRADE,
SERVICE_CHECK,
-
- /**
- * Represents any custom command
- */
CUSTOM_COMMAND,
-
- /**
- * Represents any action
- */
ACTIONEXECUTE
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionManager.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionManager.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionManager.java
index c8ed235..6d1d87f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionManager.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionManager.java
@@ -19,16 +19,15 @@ package org.apache.ambari.server.actionmanager;
import com.google.inject.Inject;
import com.google.inject.Singleton;
-import com.google.inject.assistedinject.Assisted;
import com.google.inject.name.Named;
import com.google.inject.persist.UnitOfWork;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.agent.ActionQueue;
import org.apache.ambari.server.agent.CommandReport;
+import org.apache.ambari.server.api.services.BaseRequest;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.ExecuteActionRequest;
import org.apache.ambari.server.controller.HostsMap;
-import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.utils.StageUtils;
import org.slf4j.Logger;
@@ -61,12 +60,11 @@ public class ActionManager {
@Named("actionTimeout") long actionTimeout,
ActionQueue aq, Clusters fsm, ActionDBAccessor db, HostsMap hostsMap,
UnitOfWork unitOfWork,
- RequestFactory requestFactory, Configuration configuration,
- AmbariEventPublisher ambariEventPublisher) {
+ RequestFactory requestFactory, Configuration configuration) {
this.actionQueue = aq;
this.db = db;
scheduler = new ActionScheduler(schedulerSleepTime, actionTimeout, db,
- actionQueue, fsm, 2, hostsMap, unitOfWork, ambariEventPublisher, configuration);
+ actionQueue, fsm, 2, hostsMap, unitOfWork, configuration);
requestCounter = new AtomicLong(
db.getLastPersistedRequestIdWhenInitialized());
this.requestFactory = requestFactory;
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
index 17e492c..b3dcca4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
@@ -43,8 +43,6 @@ import org.apache.ambari.server.agent.CommandReport;
import org.apache.ambari.server.agent.ExecutionCommand;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.HostsMap;
-import org.apache.ambari.server.events.ActionFinalReportReceivedEvent;
-import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
import org.apache.ambari.server.serveraction.ServerActionExecutor;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
@@ -69,6 +67,7 @@ import com.google.common.reflect.TypeToken;
import com.google.inject.persist.UnitOfWork;
+
/**
* This class encapsulates the action scheduler thread.
* Action schedule frequently looks at action database and determines if
@@ -90,7 +89,6 @@ class ActionScheduler implements Runnable {
private final short maxAttempts;
private final ActionQueue actionQueue;
private final Clusters fsmObject;
- private final AmbariEventPublisher ambariEventPublisher;
private boolean taskTimeoutAdjustment = true;
private final HostsMap hostsMap;
private final Object wakeupSyncObject = new Object();
@@ -126,17 +124,15 @@ class ActionScheduler implements Runnable {
private Cache<String, Map<String, String>> hostParamsStageCache;
public ActionScheduler(long sleepTimeMilliSec, long actionTimeoutMilliSec,
- ActionDBAccessor db, ActionQueue actionQueue, Clusters fsmObject,
- int maxAttempts, HostsMap hostsMap,
- UnitOfWork unitOfWork, AmbariEventPublisher ambariEventPublisher,
- Configuration configuration) {
+ ActionDBAccessor db, ActionQueue actionQueue, Clusters fsmObject,
+ int maxAttempts, HostsMap hostsMap,
+ UnitOfWork unitOfWork, Configuration configuration) {
this.sleepTime = sleepTimeMilliSec;
this.hostsMap = hostsMap;
this.actionTimeout = actionTimeoutMilliSec;
this.db = db;
this.actionQueue = actionQueue;
this.fsmObject = fsmObject;
- this.ambariEventPublisher = ambariEventPublisher;
this.maxAttempts = (short) maxAttempts;
this.serverActionExecutor = new ServerActionExecutor(db, sleepTimeMilliSec);
this.unitOfWork = unitOfWork;
@@ -845,23 +841,6 @@ class ActionScheduler implements Runnable {
cancelCommand.setReason(reason);
actionQueue.enqueue(hostRoleCommand.getHostName(), cancelCommand);
}
- // If host role is an Action, we have to send an event
- if (hostRoleCommand.getRoleCommand().equals(RoleCommand.ACTIONEXECUTE)) {
- String clusterName = hostRoleCommand.getExecutionCommandWrapper().getExecutionCommand().getClusterName();
- try {
- // Usually clusterId is defined (except the awkward case when
- // "Distribute repositories/install packages" action has been issued
- // against a concrete host without binding to a cluster)
- Long clusterId = clusterName != null ?
- fsmObject.getCluster(clusterName).getClusterId() : null;
- ActionFinalReportReceivedEvent event = new ActionFinalReportReceivedEvent(
- clusterId, hostRoleCommand.getHostName(), null,
- hostRoleCommand.getRole().toString());
- ambariEventPublisher.publish(event);
- } catch (AmbariException e) {
- LOG.error(String.format("Can not get cluster %s", clusterName), e);
- }
- }
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
index 91713ad..d482109 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
@@ -39,11 +39,9 @@ import org.apache.ambari.server.actionmanager.HostRoleStatus;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.MaintenanceStateHelper;
-import org.apache.ambari.server.events.ActionFinalReportReceivedEvent;
import org.apache.ambari.server.events.AlertEvent;
import org.apache.ambari.server.events.AlertReceivedEvent;
import org.apache.ambari.server.events.publishers.AlertEventPublisher;
-import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
import org.apache.ambari.server.metadata.ActionMetadata;
import org.apache.ambari.server.state.AgentVersion;
import org.apache.ambari.server.state.Alert;
@@ -126,9 +124,6 @@ public class HeartBeatHandler {
@Inject
private AlertEventPublisher alertEventPublisher;
- @Inject
- private AmbariEventPublisher ambariEventPublisher;
-
private Map<String, Long> hostResponseIds = new ConcurrentHashMap<String, Long>();
private Map<String, HeartBeatResponse> hostResponses = new ConcurrentHashMap<String, HeartBeatResponse>();
@@ -362,7 +357,7 @@ public class HeartBeatHandler {
host.persist();
}
- //If host doesn't belong to any cluster
+ //If host doesn't belongs to any cluster
if ((clusterFsm.getClustersForHost(host.getHostName())).size() == 0) {
healthStatus = HealthStatus.HEALTHY;
host.setStatus(healthStatus.name());
@@ -385,22 +380,9 @@ public class HeartBeatHandler {
Iterator<HostRoleCommand> hostRoleCommandIterator = commands.iterator();
for (CommandReport report : reports) {
-
- Long clusterId = report.getClusterName() != null ?
- clusterFsm.getCluster(report.getClusterName()).getClusterId() : null;
-
LOG.debug("Received command report: " + report);
// Fetch HostRoleCommand that corresponds to a given task ID
HostRoleCommand hostRoleCommand = hostRoleCommandIterator.next();
-
- // Send event for final command reports for actions
- if (RoleCommand.valueOf(report.getRoleCommand()) == RoleCommand.ACTIONEXECUTE &&
- HostRoleStatus.valueOf(report.getStatus()).isCompletedState()) {
- ActionFinalReportReceivedEvent event = new ActionFinalReportReceivedEvent(
- clusterId, hostname, report, report.getRole());
- ambariEventPublisher.publish(event);
- }
-
// Skip sending events for command reports for ABORTed commands
if (hostRoleCommand.getStatus() == HostRoleStatus.ABORTED) {
continue;
@@ -432,7 +414,7 @@ public class HeartBeatHandler {
ServiceComponentHost scHost = svcComp.getServiceComponentHost(hostname);
String schName = scHost.getServiceComponentName();
- if (report.getStatus().equals(HostRoleStatus.COMPLETED.toString())) {
+ if (report.getStatus().equals("COMPLETED")) {
// Updating stack version, if needed
if (scHost.getState().equals(State.UPGRADING)) {
scHost.setStackVersion(scHost.getDesiredStackVersion());
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/main/java/org/apache/ambari/server/bootstrap/DistributeRepositoriesStructuredOutput.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/bootstrap/DistributeRepositoriesStructuredOutput.java b/ambari-server/src/main/java/org/apache/ambari/server/bootstrap/DistributeRepositoriesStructuredOutput.java
deleted file mode 100644
index be7e602..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/bootstrap/DistributeRepositoriesStructuredOutput.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * */
-
-package org.apache.ambari.server.bootstrap;
-
-import com.google.gson.annotations.SerializedName;
-
-import java.util.List;
-
-/**
- * This class is used for mapping json of structured output for
- * "Distribute repositories/install packages" action.
- */
-public class DistributeRepositoriesStructuredOutput {
-
- /**
- * Repository version that has been (re)installed as a result of current custom action
- */
- @SerializedName("installed_repository_version")
- private String installedRepositoryVersion;
-
- /**
- * All Ambari-managed repositories that are installed side by side on host
- */
- @SerializedName("ambari_repositories")
- private List<String> ambariRepositories;
-
- /**
- * Either SUCCESS or FAIL
- */
- @SerializedName("package_installation_result")
- private String packageInstallationResult;
-
- public String getInstalledRepositoryVersion() {
- return installedRepositoryVersion;
- }
-
- public List<String> getAmbariRepositories() {
- return ambariRepositories;
- }
-
- public String getPackageInstallationResult() {
- return packageInstallationResult;
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/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 7c533b6..9b7c3c9 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
@@ -226,23 +226,15 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
if (request.getProperties().size() != 1) {
throw new UnsupportedOperationException("Multiple requests cannot be executed at the same time.");
}
- Map<String, Object> propertyMap = iterator.next();
-
- Set<String> requiredProperties = new HashSet<String>(){{
- add(CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID);
- add(CLUSTER_STACK_VERSION_REPOSITORY_VERSION_PROPERTY_ID);
- add(CLUSTER_STACK_VERSION_STACK_PROPERTY_ID);
- add(CLUSTER_STACK_VERSION_VERSION_PROPERTY_ID);
- }};
- for (String requiredProperty : requiredProperties) {
- if (! propertyMap.containsKey(requiredProperty)) {
- throw new IllegalArgumentException(
- String.format("The required property %s is not defined",
- requiredProperty));
- }
+ Map<String, Object> propertyMap = iterator.next();
+ if (!propertyMap.containsKey(CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID) ||
+ !propertyMap.containsKey(CLUSTER_STACK_VERSION_REPOSITORY_VERSION_PROPERTY_ID)) {
+ throw new IllegalArgumentException(
+ String.format("%s or %s not defined",
+ CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID,
+ CLUSTER_STACK_VERSION_REPOSITORY_VERSION_PROPERTY_ID));
}
-
clName = (String) propertyMap.get(CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID);
desiredRepoVersion = (String) propertyMap.get(CLUSTER_STACK_VERSION_REPOSITORY_VERSION_PROPERTY_ID);
@@ -368,8 +360,9 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
ClusterVersionEntity existingCSVer = clusterVersionDAO.findByClusterAndStackAndVersion(clName, stackId, desiredRepoVersion);
if (existingCSVer == null) {
try { // Create/persist new cluster stack version
- cluster.createClusterVersion(stackId, desiredRepoVersion, managementController.getAuthName(), RepositoryVersionState.INSTALLING);
- existingCSVer = clusterVersionDAO.findByClusterAndStackAndVersion(clName, stackId, desiredRepoVersion);
+ cluster.createClusterVersion(stackId, desiredRepoVersion, managementController.getAuthName(), RepositoryVersionState.INSTALLED);
+ ClusterVersionEntity newCSVer = clusterVersionDAO.findByClusterAndStackAndVersion(clName, stackId, desiredRepoVersion);
+ cluster.initHostVersions(newCSVer);
} catch (AmbariException e) {
throw new SystemException(
String.format(
@@ -377,11 +370,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
desiredRepoVersion, clName),
e);
}
- } else {
- // Move CSV into INSTALLING state (retry installation)
- cluster.transitionClusterVersion(stackId, desiredRepoVersion, RepositoryVersionState.INSTALLING);
}
- cluster.inferHostVersions(existingCSVer);
req.persist();
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
index 4850c33..2886266 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
@@ -81,7 +81,10 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
protected static final String HOST_STACK_VERSION_VERSION_PROPERTY_ID = PropertyHelper.getPropertyId("HostStackVersions", "version");
protected static final String HOST_STACK_VERSION_STATE_PROPERTY_ID = PropertyHelper.getPropertyId("HostStackVersions", "state");
protected static final String HOST_STACK_VERSION_REPOSITORIES_PROPERTY_ID = PropertyHelper.getPropertyId("HostStackVersions", "repositories");
- protected static final String HOST_STACK_VERSION_REPO_VERSION_PROPERTY_ID = PropertyHelper.getPropertyId("HostStackVersions", "repository_version");
+
+ protected static final String STACK_VERSION_REPO_VERSION_PROPERTY_ID = PropertyHelper.getPropertyId("StackVersion", "repository_version");
+ protected static final String STACK_VERSION_STACK_PROPERTY_ID = PropertyHelper.getPropertyId("StackVersion", "stack");
+ protected static final String STACK_VERSION_VERSION_PROPERTY_ID = PropertyHelper.getPropertyId("StackVersion", "version");
protected static final String INSTALL_PACKAGES_ACTION = "install_packages";
protected static final String INSTALL_PACKAGES_FULL_NAME = "Distribute repositories/install packages";
@@ -95,7 +98,9 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
add(HOST_STACK_VERSION_ID_PROPERTY_ID);
add(HOST_STACK_VERSION_STACK_PROPERTY_ID);
add(HOST_STACK_VERSION_VERSION_PROPERTY_ID);
- add(HOST_STACK_VERSION_REPO_VERSION_PROPERTY_ID);
+ add(STACK_VERSION_REPO_VERSION_PROPERTY_ID);
+ add(STACK_VERSION_STACK_PROPERTY_ID);
+ add(STACK_VERSION_VERSION_PROPERTY_ID);
}
};
@@ -109,7 +114,9 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
add(HOST_STACK_VERSION_VERSION_PROPERTY_ID);
add(HOST_STACK_VERSION_STATE_PROPERTY_ID);
add(HOST_STACK_VERSION_REPOSITORIES_PROPERTY_ID);
- add(HOST_STACK_VERSION_REPO_VERSION_PROPERTY_ID);
+ add(STACK_VERSION_REPO_VERSION_PROPERTY_ID);
+ add(STACK_VERSION_STACK_PROPERTY_ID);
+ add(STACK_VERSION_VERSION_PROPERTY_ID);
}
};
@@ -121,7 +128,7 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
put(Type.HostStackVersion, HOST_STACK_VERSION_ID_PROPERTY_ID);
put(Type.Stack, HOST_STACK_VERSION_STACK_PROPERTY_ID);
put(Type.StackVersion, HOST_STACK_VERSION_VERSION_PROPERTY_ID);
- put(Type.RepositoryVersion, HOST_STACK_VERSION_REPO_VERSION_PROPERTY_ID);
+ put(Type.RepositoryVersion, STACK_VERSION_REPO_VERSION_PROPERTY_ID);
}
};
@@ -214,7 +221,7 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
if (repoVerEntity!=null) {
Long repoVersionId = repoVerEntity.getId();
- setResourceProperty(resource, HOST_STACK_VERSION_REPO_VERSION_PROPERTY_ID, repoVersionId, requestedIds);
+ setResourceProperty(resource, STACK_VERSION_REPO_VERSION_PROPERTY_ID, repoVersionId, requestedIds);
}
resources.add(resource);
@@ -239,9 +246,9 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
Set<String> requiredProperties = new HashSet<String>(){{
add(HOST_STACK_VERSION_HOST_NAME_PROPERTY_ID);
- add(HOST_STACK_VERSION_REPO_VERSION_PROPERTY_ID);
- add(HOST_STACK_VERSION_STACK_PROPERTY_ID);
- add(HOST_STACK_VERSION_VERSION_PROPERTY_ID);
+ add(STACK_VERSION_REPO_VERSION_PROPERTY_ID);
+ add(STACK_VERSION_STACK_PROPERTY_ID);
+ add(STACK_VERSION_VERSION_PROPERTY_ID);
}};
for (String requiredProperty : requiredProperties) {
@@ -253,7 +260,7 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
}
String clName = (String) propertyMap.get(HOST_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID);
hostName = (String) propertyMap.get(HOST_STACK_VERSION_HOST_NAME_PROPERTY_ID);
- desiredRepoVersion = (String) propertyMap.get(HOST_STACK_VERSION_REPO_VERSION_PROPERTY_ID);
+ desiredRepoVersion = (String) propertyMap.get(STACK_VERSION_REPO_VERSION_PROPERTY_ID);
Host host;
try {
@@ -265,8 +272,8 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
AmbariManagementController managementController = getManagementController();
AmbariMetaInfo ami = managementController.getAmbariMetaInfo();
- stackName = (String) propertyMap.get(HOST_STACK_VERSION_STACK_PROPERTY_ID);
- stackVersion = (String) propertyMap.get(HOST_STACK_VERSION_VERSION_PROPERTY_ID);
+ stackName = (String) propertyMap.get(STACK_VERSION_STACK_PROPERTY_ID);
+ stackVersion = (String) propertyMap.get(STACK_VERSION_VERSION_PROPERTY_ID);
String stackId = new StackId(stackName, stackVersion).getStackId();
if (!ami.isSupportedStack(stackName, stackVersion)) {
throw new NoSuchParentResourceException(String.format("Stack %s is not supported",
@@ -400,6 +407,9 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
try {
req.persist();
+
+ //TODO: create cluster version entity
+ //clusterVersionDAO.create();
} catch (AmbariException e) {
throw new SystemException("Can not persist request", e);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/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
deleted file mode 100644
index 3ff5031..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/ActionFinalReportReceivedEvent.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.ambari.server.events;
-
-import org.apache.ambari.server.actionmanager.HostRoleCommand;
-import org.apache.ambari.server.agent.CommandReport;
-
-/**
- * The {@link ActionFinalReportReceivedEvent} is fired when a
- * command report action is received. Event is fired only if command state
- * is COMPLETED/FAILED/ABORTED.
- */
-public final class ActionFinalReportReceivedEvent extends AmbariEvent {
-
- private Long clusterId;
- private String hostname;
- private CommandReport commandReport;
- private String role;
-
- /**
- * Constructor.
- *
- * @param clusterId (beware, may be null if action is not bound to cluster)
- * @param hostname host that is an origin for a command report
- * @param report full command report (may be null if action has been cancelled)
- * @param role host command role. It is usually present at report entity, but
- * if report is null, we still need some way to determine action type.
- */
- public ActionFinalReportReceivedEvent(Long clusterId, String hostname,
- CommandReport report, String role) {
- super(AmbariEventType.ACTION_EXECUTION_FINISHED);
- this.clusterId = clusterId;
- this.hostname = hostname;
- this.commandReport = report;
- this.role = role;
- }
-
- public Long getClusterId() {
- return clusterId;
- }
-
- public String getHostname() {
- return hostname;
- }
-
- public CommandReport getCommandReport() {
- return commandReport;
- }
-
- public String getRole() {
- return role;
- }
-
- @Override
- public String toString() {
- return "ActionFinalReportReceivedEvent{" +
- "clusterId=" + clusterId +
- ", hostname='" + hostname + '\'' +
- ", commandReportStatus=" + commandReport.getStatus() +
- ", commandReportRole=" + role +
- '}';
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/main/java/org/apache/ambari/server/events/AmbariEvent.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/AmbariEvent.java b/ambari-server/src/main/java/org/apache/ambari/server/events/AmbariEvent.java
index 04217f1..e708473 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/AmbariEvent.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/AmbariEvent.java
@@ -85,12 +85,7 @@ public abstract class AmbariEvent {
/**
* A host/service/component has had a maintenance mode change.
*/
- MAINTENANCE_MODE,
-
- /**
- * Received a final command report for some action
- */
- ACTION_EXECUTION_FINISHED
+ MAINTENANCE_MODE;
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
deleted file mode 100644
index 428a0d2..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.ambari.server.events.listeners.upgrade;
-
-import com.google.common.eventbus.AllowConcurrentEvents;
-import com.google.common.eventbus.Subscribe;
-import com.google.gson.JsonSyntaxException;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.google.inject.Singleton;
-import org.apache.ambari.server.AmbariException;
-import org.apache.ambari.server.EagerSingleton;
-import org.apache.ambari.server.actionmanager.HostRoleStatus;
-import org.apache.ambari.server.bootstrap.DistributeRepositoriesStructuredOutput;
-import org.apache.ambari.server.controller.RootServiceResponseFactory.Services;
-import org.apache.ambari.server.events.ActionFinalReportReceivedEvent;
-import org.apache.ambari.server.events.AlertReceivedEvent;
-import org.apache.ambari.server.events.AlertStateChangeEvent;
-import org.apache.ambari.server.events.publishers.AlertEventPublisher;
-import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
-import org.apache.ambari.server.orm.dao.AlertDefinitionDAO;
-import org.apache.ambari.server.orm.dao.AlertsDAO;
-import org.apache.ambari.server.orm.dao.ClusterVersionDAO;
-import org.apache.ambari.server.orm.dao.HostVersionDAO;
-import org.apache.ambari.server.orm.entities.AlertCurrentEntity;
-import org.apache.ambari.server.orm.entities.AlertDefinitionEntity;
-import org.apache.ambari.server.orm.entities.AlertHistoryEntity;
-import org.apache.ambari.server.orm.entities.HostVersionEntity;
-import org.apache.ambari.server.state.Alert;
-import org.apache.ambari.server.state.AlertState;
-import org.apache.ambari.server.state.Cluster;
-import org.apache.ambari.server.state.Clusters;
-import org.apache.ambari.server.state.Host;
-import org.apache.ambari.server.state.MaintenanceState;
-import org.apache.ambari.server.state.RepositoryVersionState;
-import org.apache.ambari.server.state.Service;
-import org.apache.ambari.server.state.ServiceComponentHost;
-import org.apache.ambari.server.utils.StageUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * The {@link org.apache.ambari.server.events.listeners.upgrade.DistributeRepositoriesActionListener} class
- * handles {@link org.apache.ambari.server.events.ActionFinalReportReceivedEvent}
- * for "Distribute repositories/install packages" action.
- * It processes command reports and and updates host stack version state acordingly.
- */
-@Singleton
-@EagerSingleton
-public class DistributeRepositoriesActionListener {
- /**
- * Logger.
- */
- private static final Logger LOG = LoggerFactory.getLogger(DistributeRepositoriesActionListener.class);
- public static final String INSTALL_PACKAGES = "install_packages";
-
- @Inject
- private Provider<HostVersionDAO> hostVersionDAO;
-
- @Inject
- private Provider<Clusters> clusters;
-
- @Inject
- private Provider<ClusterVersionDAO> clusterVersionDAO;
-
- private AmbariEventPublisher publisher;
-
-
- /**
- * Constructor.
- *
- * @param publisher
- */
- @Inject
- public DistributeRepositoriesActionListener(AmbariEventPublisher publisher) {
- this.publisher = publisher;
- publisher.register(this);
- }
-
- @Subscribe
- // @AllowConcurrentEvents //TODO: is it thread safe?
- public void onActionFinished(ActionFinalReportReceivedEvent event) {
- // Check if it is "Distribute repositories/install packages" action.
- if (! event.getRole().equals(INSTALL_PACKAGES)) {
- return;
- }
-
- if (LOG.isDebugEnabled()) {
- LOG.debug(event.toString());
- }
-
- RepositoryVersionState newHostState;
-
- String repositoryVersion = null;
- Long clusterId = event.getClusterId();
-
- if (event.getCommandReport() == null) {
- // Something has gone wrong on host
- // That's why we mark all host stack versions that are at
- // INSTALLING state as failed
- // This decision should not be a problem because there should not be more
- // then 1 concurrent host stack version installation
- LOG.warn("Command report is null, marking action as INSTALL_FAILED");
- newHostState = RepositoryVersionState.INSTALL_FAILED;
- } else {
- // Parse structured output
- try {
- DistributeRepositoriesStructuredOutput structuredOutput = StageUtils.getGson().fromJson(
- event.getCommandReport().getStructuredOut(),
- DistributeRepositoriesStructuredOutput.class);
- if (event.getCommandReport().getStatus().equals(HostRoleStatus.COMPLETED.toString())) {
- newHostState = RepositoryVersionState.INSTALLED;
- } else {
- newHostState = RepositoryVersionState.INSTALL_FAILED;
- }
- repositoryVersion = structuredOutput.getInstalledRepositoryVersion();
- } catch (JsonSyntaxException e) {
- LOG.error("Can not parse structured output %s", e);
- newHostState = RepositoryVersionState.INSTALL_FAILED;
- }
- }
- List<HostVersionEntity> hostVersions = hostVersionDAO.get().findByHost(event.getHostname());
- for (HostVersionEntity hostVersion : hostVersions) {
- if (repositoryVersion != null && ! hostVersion.getVersion().equals(repositoryVersion)) {
- // Are we going to update state of a concrete host stack version?
- continue;
- }
- // Typically, there will be single execution of code below
- if (hostVersion.getState() == RepositoryVersionState.INSTALLING) {
- hostVersion.setState(newHostState);
-
- if (clusterId != null) { // Update state of a cluster stack version
- try {
- Cluster cluster = clusters.get().getClusterById(clusterId);
- cluster.recalculateClusterVersionState(hostVersion.getVersion());
- } catch (AmbariException e) {
- LOG.error("Can not get cluster with Id " + clusterId, e);
- }
- } else {
- LOG.warn("Can not determine cluster for stack version state update");
- // Recalculate state of all clusters to ensure consistency
- try {
- Set<Cluster> clustersForHost = clusters.get().getClustersForHost(event.getHostname());
- for (Cluster cluster : clustersForHost) {
- cluster.recalculateClusterVersionState(hostVersion.getVersion());
- }
- } catch (AmbariException e) {
- LOG.error("Can not update state of clusters", e);
- }
- }
- } else {
- LOG.error(
- String.format("Can not transition host stack version state from %s to %s for" +
- "host %s",
- hostVersion.getState(), newHostState, event.getHostname()));
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
index b7e0d1c..1ce4a73 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterVersionDAO.java
@@ -47,8 +47,8 @@ public class ClusterVersionDAO extends CrudDAO<ClusterVersionEntity, Long>{
/**
* Retrieve all of the cluster versions for the given stack and version.
*
- * @param stack Stack id (e.g., HDP-2.2)
- * @param version Repository version (e.g., 2.2.0.1-995)
+ * @param stack Stack name (e.g., HDP)
+ * @param version Stack version (e.g., 2.2.0.1-995)
* @return Return a list of cluster versions that match the stack and version.
*/
@RequiresSession
@@ -64,8 +64,8 @@ public class ClusterVersionDAO extends CrudDAO<ClusterVersionEntity, Long>{
* Get the cluster version for the given cluster name, stack name, and stack version.
*
* @param clusterName Cluster name
- * @param stack Stack id (e.g., HDP-2.2)
- * @param version Repository version (e.g., 2.2.0.1-995)
+ * @param stack Stack name (e.g., HDP)
+ * @param version Stack version (e.g., 2.2.0.1-995)
* @return Return all of the cluster versions associated with the given cluster.
*/
@RequiresSession
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java b/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
index 0cc6a24..3308f83 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
@@ -121,33 +121,19 @@ public interface Cluster {
public void setCurrentStackVersion(StackId stackVersion) throws AmbariException;
/**
- * Create host versions for all of the hosts that don't already have the stack version.
+ * Create host versions for all of the hosts with the applied desired state using the cluster's current stack version.
* @param hostNames Collection of host names
- * @param currentClusterVersion Entity that contains the cluster's current stack (with its name and version)
* @param desiredState Desired state must be {@link RepositoryVersionState#CURRENT} or {@link RepositoryVersionState#UPGRADING}
* @throws AmbariException
*/
public void mapHostVersions(Set<String> hostNames, ClusterVersionEntity currentClusterVersion, RepositoryVersionState desiredState) throws AmbariException;
/**
- * Create/update host versions for all of the hosts within a cluster based on state of cluster stack version.
- * The difference of this method compared to {@link Cluster#mapHostVersions}
- * is that it affects all hosts (not only missing hosts). Also, current method contains some additional logics to allow only INSTALLING
- * state for hosts.
- * @param sourceClusterVersion cluster version to be queried for a stack name/version info and desired RepositoryVersionState. The only valid state
- * of a cluster version is {@link RepositoryVersionState#INSTALLING}
+ * Create host versions for all of the hosts within a cluster with the INSTALLED state.
+ * @param currentClusterVersion cluster version to be queried for a stack name/version info
* @throws AmbariException
*/
- public void inferHostVersions(ClusterVersionEntity sourceClusterVersion) throws AmbariException;
-
- /**
- * Update state of a cluster stack version for cluster based on states of host versions.
- * May be called multiple times.
- * As of now, only transition from INSTALLING to INSTALLING/INSTALLED/INSTALL_FAILED
- * is supported
- * @throws AmbariException
- */
- void recalculateClusterVersionState(String repositoryVersion) throws AmbariException;
+ public void initHostVersions(ClusterVersionEntity currentClusterVersion) throws AmbariException;
/**
* Create a cluster version for the given stack and version, whose initial state must either
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/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 453864c..1f14ece 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
@@ -29,24 +29,11 @@ package org.apache.ambari.server.state;
* Step 1: Initial Configuration
* Version 1 is CURRENT
*
- * Step 2: Add another repository and trigger distributing repositories/installing packages
- * Version 1: CURRENT
- * Version 2: INSTALLING
- *
- * Step 3: distributing repositories/installing packages action finishes successfully or fails
- * Version 1: CURRENT
- * Version 2: INSTALLED
- *
- * or
- *
- * Version 1: CURRENT
- * Version 2: INSTALL_FAILED (a retry can set this back to INSTALLING)
- *
- * Step 4: Start an upgrade from Version 1 to Version 2
+ * Step 2: Add another repository and start an upgrade from Version 1 to Version 2
* Version 1: CURRENT
* Version 2: UPGRADING
*
- * Step 5: Upgrade can either complete successfully or fail
+ * Step 3: Upgrade can either complete successfully or fail
* Version 1: CURRENT
* Version 2: UPGRADE_FAILED (a retry can set this back to UPGRADING)
*
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/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 9848069..a8abd71 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
@@ -81,7 +81,6 @@ import org.apache.ambari.server.state.Alert;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.ClusterHealthReport;
import org.apache.ambari.server.state.Clusters;
-import org.apache.ambari.server.state.HostState;
import org.apache.ambari.server.state.RepositoryVersionState;
import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.ConfigFactory;
@@ -1120,6 +1119,13 @@ public class ClusterImpl implements Cluster {
return clusterVersionDAO.findByCluster(this.getClusterName());
}
+ /**
+ * Create host versions for all of the hosts that don't already have the stack version.
+ * @param hostNames Collection of host names
+ * @param currentClusterVersion Entity that contains the cluster's current stack (with its name and version)
+ * @param desiredState Desired state must be {@link RepositoryVersionState#CURRENT} or {@link RepositoryVersionState#UPGRADING}
+ * @throws AmbariException
+ */
@Override
public void mapHostVersions(Set<String> hostNames, ClusterVersionEntity currentClusterVersion, RepositoryVersionState desiredState) throws AmbariException {
if (currentClusterVersion == null) {
@@ -1168,111 +1174,23 @@ public class ClusterImpl implements Cluster {
}
@Override
- public void inferHostVersions(ClusterVersionEntity sourceClusterVersion) throws AmbariException {
- if (sourceClusterVersion == null) {
+ public void initHostVersions(ClusterVersionEntity currentClusterVersion) throws AmbariException {
+ if (currentClusterVersion == null) {
throw new AmbariException("Could not find current stack version of cluster " + this.getClusterName());
}
- RepositoryVersionState desiredState = sourceClusterVersion.getState();
-
- Set<RepositoryVersionState> validStates = new HashSet<RepositoryVersionState>(){{
- add(RepositoryVersionState.INSTALLING);
- }};
-
- if (!validStates.contains(desiredState)) {
- throw new AmbariException("The state must be one of " + validStates);
- }
-
clusterGlobalLock.readLock().lock();
try {
readWriteLock.writeLock().lock();
try {
- Set<String> existingHostsWithClusterStackAndVersion = new HashSet<String>();
- HashMap<String, HostVersionEntity> existingHostStackVersions = new HashMap<String, HostVersionEntity>();
- List<HostVersionEntity> existingHostVersionEntities = hostVersionDAO.findByClusterStackAndVersion(this.getClusterName(),
- sourceClusterVersion.getStack(), sourceClusterVersion.getVersion());
- if (existingHostVersionEntities != null) {
- for (HostVersionEntity entity : existingHostVersionEntities) {
- existingHostsWithClusterStackAndVersion.add(entity.getHostName());
- existingHostStackVersions.put(entity.getHostName(), entity);
- }
- }
-
Map<String, Host> hosts = clusters.getHostsForCluster(this.getClusterName());
-
- Sets.SetView<String> hostsMissingRepoVersion = Sets.difference(hosts.keySet(), existingHostsWithClusterStackAndVersion);
-
for (String hostname : hosts.keySet()) {
- if (hostsMissingRepoVersion.contains(hostname)) {
- // Create new host stack version
- HostEntity hostEntity = hostDAO.findByName(hostname);
- HostVersionEntity hostVersionEntity = new HostVersionEntity(hostname, sourceClusterVersion.getStack(),
- sourceClusterVersion.getVersion(), RepositoryVersionState.INSTALLING);
- hostVersionEntity.setHostEntity(hostEntity);
- hostVersionDAO.create(hostVersionEntity);
- } else {
- // Update existing host stack version
- HostVersionEntity hostVersionEntity = existingHostStackVersions.get(hostname);
- hostVersionEntity.setState(desiredState);
- hostVersionDAO.merge(hostVersionEntity);
- }
- }
- } finally {
- readWriteLock.writeLock().unlock();
- }
- } finally {
- clusterGlobalLock.readLock().unlock();
- }
- }
-
- @Override
- public void recalculateClusterVersionState(String repositoryVersion) throws AmbariException {
- clusterGlobalLock.readLock().lock();
- try {
- readWriteLock.writeLock().lock();
- try {
- Map<String, Host> hosts = clusters.getHostsForCluster(this.getClusterName());
- String stackId = this.getCurrentStackVersion().getStackId();
- ClusterVersionEntity clusterVersion = clusterVersionDAO.findByClusterAndStackAndVersion(this.getClusterName(),
- stackId, repositoryVersion);
-
- if (clusterVersion == null) {
- throw new AmbariException("Repository version is null");
+ HostEntity hostEntity = hostDAO.findByName(hostname);
+ HostVersionEntity hostVersionEntity = new HostVersionEntity(hostname, currentClusterVersion.getStack(),
+ currentClusterVersion.getVersion(), RepositoryVersionState.INSTALLED);
+ hostVersionEntity.setHostEntity(hostEntity);
+ hostVersionDAO.create(hostVersionEntity);
}
-
- RepositoryVersionState worstState;
- if (clusterVersion.getState() != RepositoryVersionState.INSTALL_FAILED &&
- clusterVersion.getState() != RepositoryVersionState.INSTALLING) {
- // anything else is not supported as of now
- return;
- }
- // Process transition from INSTALLING state
- worstState = RepositoryVersionState.INSTALLED;
- for (Host host : hosts.values()) {
- String hostName = host.getHostName();
- if (host.getState() != HostState.HEALTHY) {
- worstState = RepositoryVersionState.INSTALL_FAILED;
- LOG.warn(String.format("Host %s is in unhealthy state, treating as %s",
- hostName, worstState));
- continue;
- }
-
- HostVersionEntity hostVersion = hostVersionDAO.findByClusterStackVersionAndHost(this.getClusterName(),
- stackId, repositoryVersion, hostName);
- if (hostVersion == null) {
- throw new AmbariException(String.format("Repo version %s is not installed on host %s",
- repositoryVersion, hostName));
- }
- if (hostVersion.getState() != worstState) {
- worstState = hostVersion.getState();
- }
- }
- if (worstState != clusterVersion.getState()) {
- // Any mismatch will be catched while transitioning
- transitionClusterVersion(stackId, repositoryVersion, worstState);
- }
- clusterVersionDAO.merge(clusterVersion);
-
} finally {
readWriteLock.writeLock().unlock();
}
@@ -1300,8 +1218,10 @@ public class ClusterImpl implements Cluster {
Set<RepositoryVersionState> allowedStates = new HashSet<RepositoryVersionState>();
if (this.clusterEntity.getClusterVersionEntities() == null || this.clusterEntity.getClusterVersionEntities().isEmpty()) {
allowedStates.add(RepositoryVersionState.CURRENT);
+ allowedStates.add(RepositoryVersionState.INSTALLED); // TODO: dlysnichenko: remove when 2-stage api refactor is ready
} else {
- allowedStates.add(RepositoryVersionState.INSTALLING);
+ allowedStates.add(RepositoryVersionState.UPGRADING);
+ allowedStates.add(RepositoryVersionState.INSTALLED); // TODO: dlysnichenko: remove when 2-stage api refactor is ready
}
if (! allowedStates.contains(state)) {
@@ -1347,13 +1267,8 @@ public class ClusterImpl implements Cluster {
switch (existingClusterVersion.getState()) {
case CURRENT:
allowedStates.add(RepositoryVersionState.INSTALLED);
- case INSTALLING:
- allowedStates.add(RepositoryVersionState.INSTALLED);
- allowedStates.add(RepositoryVersionState.INSTALL_FAILED);
- case INSTALL_FAILED:
- allowedStates.add(RepositoryVersionState.INSTALLING);
case INSTALLED:
- allowedStates.add(RepositoryVersionState.UPGRADING);
+ allowedStates.add(RepositoryVersionState.CURRENT);
case UPGRADING:
allowedStates.add(RepositoryVersionState.CURRENT);
allowedStates.add(RepositoryVersionState.UPGRADE_FAILED);
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
index a756275..3da931f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
@@ -103,7 +103,7 @@ public class TestActionDBAccessorImpl {
am = new ActionManager(5000, 1200000, new ActionQueue(), clusters, db,
new HostsMap((String) null), injector.getInstance(UnitOfWork.class),
- injector.getInstance(RequestFactory.class), null, null);
+ injector.getInstance(RequestFactory.class), null);
}
@After
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
index 01a40f4..ed1318c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
@@ -85,7 +85,7 @@ public class TestActionManager {
ActionDBAccessor db = injector.getInstance(ActionDBAccessorImpl.class);
ActionManager am = new ActionManager(5000, 1200000, new ActionQueue(),
clusters, db, new HostsMap((String) null), unitOfWork,
- injector.getInstance(RequestFactory.class), null, null);
+ injector.getInstance(RequestFactory.class), null);
populateActionDB(db, hostname);
Stage stage = db.getAllStages(requestId).get(0);
Assert.assertEquals(stageId, stage.getStageId());
@@ -128,7 +128,7 @@ public class TestActionManager {
ActionDBAccessor db = injector.getInstance(ActionDBAccessorImpl.class);
ActionManager am = new ActionManager(5000, 1200000, new ActionQueue(),
clusters, db, new HostsMap((String) null), unitOfWork,
- injector.getInstance(RequestFactory.class), null, null);
+ injector.getInstance(RequestFactory.class), null);
populateActionDB(db, hostname);
Stage stage = db.getAllStages(requestId).get(0);
Assert.assertEquals(stageId, stage.getStageId());
@@ -218,7 +218,7 @@ public class TestActionManager {
replay(queue, db, clusters);
ActionManager manager = new ActionManager(0, 0, queue, clusters, db, null, unitOfWork,
- injector.getInstance(RequestFactory.class), null, null);
+ injector.getInstance(RequestFactory.class), null);
assertSame(listStages, manager.getActions(requestId));
verify(queue, db, clusters);
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
index b389644..e61c1a9 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
@@ -43,7 +43,6 @@ import org.apache.ambari.server.agent.CommandReport;
import org.apache.ambari.server.agent.ExecutionCommand;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.HostsMap;
-import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
import org.apache.ambari.server.serveraction.MockServerAction;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
@@ -134,7 +133,7 @@ public class TestActionScheduler {
//Keep large number of attempts so that the task is not expired finally
//Small action timeout to test rescheduling
ActionScheduler scheduler = new ActionScheduler(100, 5, db, aq, fsm,
- 10000, new HostsMap((String) null), unitOfWork, null, conf);
+ 10000, new HostsMap((String) null), unitOfWork, conf);
scheduler.setTaskTimeoutAdjustment(false);
List<AgentCommand> ac = waitForQueueSize(hostname, aq, 1, scheduler);
@@ -236,7 +235,7 @@ public class TestActionScheduler {
//Small action timeout to test rescheduling
ActionScheduler scheduler = new ActionScheduler(100, 0, db, aq, fsm, 3,
- new HostsMap((String) null), unitOfWork, null, conf);
+ new HostsMap((String) null), unitOfWork, conf);
scheduler.setTaskTimeoutAdjustment(false);
// Start the thread
@@ -263,7 +262,6 @@ public class TestActionScheduler {
}
- @Ignore
@Test
public void testActionTimeoutForLostHost() throws Exception {
ActionQueue aq = new ActionQueue();
@@ -316,7 +314,7 @@ public class TestActionScheduler {
//Small action timeout to test rescheduling
ActionScheduler scheduler = EasyMock.createMockBuilder(ActionScheduler.class).
withConstructor((long) 100, (long) 50, db, aq, fsm, 3,
- new HostsMap((String) null), unitOfWork, EasyMock.anyObject(AmbariEventPublisher.class), null, conf).
+ new HostsMap((String) null), unitOfWork, conf).
addMockedMethod("cancelHostRoleCommands").
createMock();
scheduler.cancelHostRoleCommands((Collection<HostRoleCommand>)EasyMock.anyObject(),EasyMock.anyObject(String.class));
@@ -431,7 +429,7 @@ public class TestActionScheduler {
// Make sure the NN install doesn't timeout
ActionScheduler scheduler = new ActionScheduler(100, 50000, db, aq, fsm, 3,
- new HostsMap((String) null), unitOfWork, null, conf);
+ new HostsMap((String) null), unitOfWork, conf);
scheduler.setTaskTimeoutAdjustment(false);
int cycleCount=0;
@@ -556,7 +554,7 @@ public class TestActionScheduler {
}).when(db).getTasksByHostRoleAndStatus(anyString(), anyString(), any(HostRoleStatus.class));
ActionScheduler scheduler = new ActionScheduler(100, 50, db, aq, fsm, 3,
- new HostsMap((String) null), unitOfWork, null, conf);
+ new HostsMap((String) null), unitOfWork, conf);
int cycleCount = 0;
while (!stages.get(0).getHostRoleStatus(serverHostname, "AMBARI_SERVER_ACTION")
@@ -649,7 +647,7 @@ public class TestActionScheduler {
ActionScheduler scheduler = new ActionScheduler(100, 50, db, aq, fsm, 3,
- new HostsMap((String) null), unitOfWork, null, conf);
+ new HostsMap((String) null), unitOfWork, conf);
int cycleCount = 0;
while (!stages.get(0).getHostRoleStatus(serverHostname, "AMBARI_SERVER_ACTION").isCompletedState()
@@ -733,7 +731,7 @@ public class TestActionScheduler {
}).when(db).getTasksByHostRoleAndStatus(anyString(), anyString(), any(HostRoleStatus.class));
ActionScheduler scheduler = new ActionScheduler(100, 50, db, aq, fsm, 3,
- new HostsMap((String) null), unitOfWork, null, conf);
+ new HostsMap((String) null), unitOfWork, conf);
int cycleCount = 0;
while (!stages.get(0).getHostRoleStatus(serverHostname, "AMBARI_SERVER_ACTION")
@@ -832,11 +830,11 @@ public class TestActionScheduler {
Properties properties = new Properties();
Configuration conf = new Configuration(properties);
ActionScheduler scheduler = new ActionScheduler(100, 50, db, aq, fsm, 3,
- new HostsMap((String) null), unitOfWork, null, conf);
+ new HostsMap((String) null), unitOfWork, conf);
ActionManager am = new ActionManager(
2, 2, aq, fsm, db, new HostsMap((String) null),
- unitOfWork, requestFactory, conf, null);
+ unitOfWork, requestFactory, conf);
scheduler.doWork();
@@ -917,12 +915,12 @@ public class TestActionScheduler {
Configuration conf = new Configuration(properties);
ActionScheduler scheduler = new ActionScheduler(100, 50, db, aq, fsm, 3,
new HostsMap((String) null),
- unitOfWork, null, conf);
+ unitOfWork, conf);
ActionManager am = new ActionManager(
2, 2, aq, fsm, db, new HostsMap((String) null),
unitOfWork,
- requestFactory, conf, null);
+ requestFactory, conf);
scheduler.doWork();
@@ -991,12 +989,12 @@ public class TestActionScheduler {
Configuration conf = new Configuration(properties);
ActionScheduler scheduler = new ActionScheduler(100, 50, db, aq, fsm, 3,
new HostsMap((String) null),
- unitOfWork, null, conf);
+ unitOfWork, conf);
ActionManager am = new ActionManager(
2, 2, aq, fsm, db, new HostsMap((String) null),
unitOfWork,
- requestFactory, conf, null);
+ requestFactory, conf);
scheduler.doWork();
@@ -1006,7 +1004,7 @@ public class TestActionScheduler {
Assert.assertEquals(HostRoleStatus.QUEUED, stages.get(1).getHostRoleStatus(hostname1, "GANGLIA_MONITOR"));
}
- @Ignore
+
@Test
public void testRequestFailureOnStageFailure() throws Exception {
ActionQueue aq = new ActionQueue();
@@ -1116,7 +1114,7 @@ public class TestActionScheduler {
ActionScheduler scheduler = EasyMock.createMockBuilder(ActionScheduler.class).
withConstructor((long)100, (long)50, db, aq, fsm, 3,
new HostsMap((String) null),
- unitOfWork, null, conf).
+ unitOfWork, conf).
addMockedMethod("cancelHostRoleCommands").
createMock();
scheduler.cancelHostRoleCommands(EasyMock.capture(cancelCommandList),
@@ -1125,8 +1123,7 @@ public class TestActionScheduler {
EasyMock.replay(scheduler);
ActionManager am = new ActionManager(
- 2, 2, aq, fsm, db, new HostsMap((String) null), unitOfWork, requestFactory, conf,
- EasyMock.createNiceMock(AmbariEventPublisher.class));
+ 2, 2, aq, fsm, db, new HostsMap((String) null), unitOfWork, requestFactory, conf);
scheduler.doWork();
@@ -1286,9 +1283,9 @@ public class TestActionScheduler {
Configuration conf = new Configuration(properties);
ActionScheduler scheduler = new ActionScheduler(100, 10000, db, aq, fsm, 3,
new HostsMap((String) null),
- unitOfWork, null, conf);
+ unitOfWork, conf);
ActionManager am = new ActionManager(
- 2, 10000, aq, fsm, db, new HostsMap((String) null), unitOfWork, requestFactory, conf, null);
+ 2, 10000, aq, fsm, db, new HostsMap((String) null), unitOfWork, requestFactory, conf);
scheduler.doWork();
@@ -1471,9 +1468,9 @@ public class TestActionScheduler {
Configuration conf = new Configuration(properties);
ActionScheduler scheduler = new ActionScheduler(100, 50, db, aq, fsm, 3,
new HostsMap((String) null),
- unitOfWork, null, conf);
+ unitOfWork, conf);
ActionManager am = new ActionManager(
- 2, 2, aq, fsm, db, new HostsMap((String) null), unitOfWork, requestFactory, conf, null);
+ 2, 2, aq, fsm, db, new HostsMap((String) null), unitOfWork, requestFactory, conf);
scheduler.doWork();
@@ -1642,7 +1639,7 @@ public class TestActionScheduler {
//Keep large number of attempts so that the task is not expired finally
//Small action timeout to test rescheduling
ActionScheduler scheduler = new ActionScheduler(100, 100, db, aq, fsm,
- 10000, new HostsMap((String) null), unitOfWork, null, conf);
+ 10000, new HostsMap((String) null), unitOfWork, conf);
scheduler.setTaskTimeoutAdjustment(false);
List<AgentCommand> ac = waitForQueueSize(hostname, aq, 1, scheduler);
@@ -1721,7 +1718,7 @@ public class TestActionScheduler {
when(db.getStagesInProgress()).thenReturn(stages);
ActionScheduler scheduler = new ActionScheduler(100, 50000, db, aq, fsm, 3,
- new HostsMap((String) null), unitOfWork, null, conf);
+ new HostsMap((String) null), unitOfWork, conf);
final CountDownLatch abortCalls = new CountDownLatch(2);
@@ -1835,7 +1832,7 @@ public class TestActionScheduler {
}).when(db).getTask(anyLong());
ActionScheduler scheduler = new ActionScheduler(100, 50, db, aq, fsm, 3,
- new HostsMap((String) null), unitOfWork, null, conf);
+ new HostsMap((String) null), unitOfWork, conf);
int cycleCount = 0;
while (!stages.get(0).getHostRoleStatus(serverHostname, "AMBARI_SERVER_ACTION")
@@ -1966,11 +1963,11 @@ public class TestActionScheduler {
Configuration conf = new Configuration(properties);
ActionScheduler scheduler = new ActionScheduler(100, 50, db, aq, fsm, 3,
- new HostsMap((String) null), unitOfWork, null, conf);
+ new HostsMap((String) null), unitOfWork, conf);
ActionManager am = new ActionManager(
2, 2, aq, fsm, db, new HostsMap((String) null),
- unitOfWork, requestFactory, conf, null);
+ unitOfWork, requestFactory, conf);
scheduler.doWork();
@@ -2132,11 +2129,11 @@ public class TestActionScheduler {
Configuration conf = new Configuration(properties);
ActionScheduler scheduler = new ActionScheduler(100, 50, db, aq, fsm, 3,
- new HostsMap((String) null), unitOfWork, null, conf);
+ new HostsMap((String) null), unitOfWork, conf);
ActionManager am = new ActionManager(
2, 2, aq, fsm, db, new HostsMap((String) null),
- unitOfWork, requestFactory, conf, null);
+ unitOfWork, requestFactory, conf);
// Execution of request 1
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
index 210611b..ff406b3 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
@@ -75,7 +75,6 @@ import org.apache.ambari.server.agent.HostStatus.Status;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.HostsMap;
-import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.state.Alert;
@@ -98,7 +97,6 @@ import org.apache.ambari.server.utils.StageUtils;
import org.codehaus.jackson.JsonGenerationException;
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -725,7 +723,7 @@ public class TestHeartbeatHandler {
clusters.addCluster(DummyCluster);
ActionDBAccessor db = injector.getInstance(ActionDBAccessorImpl.class);
ActionManager am = new ActionManager(5000, 1200000, new ActionQueue(), clusters, db,
- new HostsMap((String) null), unitOfWork, injector.getInstance(RequestFactory.class), null, null);
+ new HostsMap((String) null), unitOfWork, injector.getInstance(RequestFactory.class), null);
populateActionDB(db, DummyHostname1);
Stage stage = db.getAllStages(requestId).get(0);
Assert.assertEquals(stageId, stage.getStageId());
@@ -1058,7 +1056,6 @@ public class TestHeartbeatHandler {
assertTrue(registrationResponse.getStatusCommands().get(0).equals(statusCmd1));
}
- @Ignore
@Test
@SuppressWarnings("unchecked")
public void testTaskInProgressHandling() throws AmbariException, InvalidStateTransitionException {
@@ -1121,7 +1118,6 @@ public class TestHeartbeatHandler {
assertEquals("Host state should still be installing", State.INSTALLING, componentState1);
}
- @Ignore
@Test
@SuppressWarnings("unchecked")
public void testOPFailedEventForAbortedTask() throws AmbariException, InvalidStateTransitionException {
@@ -1330,7 +1326,6 @@ public class TestHeartbeatHandler {
State.INSTALLED, serviceComponentHost1.getState());
}
- @Ignore
@Test
@SuppressWarnings("unchecked")
public void testUpgradeSpecificHandling() throws AmbariException, InvalidStateTransitionException {
@@ -1595,7 +1590,6 @@ public class TestHeartbeatHandler {
stack122, serviceComponentHost2.getStackVersion());
}
- @Ignore
@Test
@SuppressWarnings("unchecked")
public void testComponentUpgradeInProgressReport() throws AmbariException, InvalidStateTransitionException {
@@ -1686,7 +1680,6 @@ public class TestHeartbeatHandler {
}
- @Ignore
@Test
@SuppressWarnings("unchecked")
public void testComponentUpgradeFailReport() throws AmbariException, InvalidStateTransitionException {
@@ -2004,7 +1997,6 @@ public class TestHeartbeatHandler {
assertEquals(HostHealthStatus.HealthStatus.ALERT.name(), hostObject.getStatus());
}
- @Ignore
@Test
@SuppressWarnings("unchecked")
public void testIgnoreCustomActionReport() throws AmbariException, InvalidStateTransitionException {
@@ -2123,7 +2115,7 @@ public class TestHeartbeatHandler {
addMockedMethod("getTasks").
withConstructor((long)0, (long)0, actionQueueMock, clustersMock,
actionDBAccessor, new HostsMap((String) null), unitOfWork,
- injector.getInstance(RequestFactory.class), configurationMock, createNiceMock(AmbariEventPublisher.class)).
+ injector.getInstance(RequestFactory.class), configurationMock).
createMock();
return actionManager;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/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 d9b7b2a..f48381c 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
@@ -64,7 +64,6 @@ import org.apache.ambari.server.state.StackInfo;
import org.apache.ambari.server.state.fsm.InvalidStateTransitionException;
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
@@ -140,7 +139,7 @@ public class ClusterStackVersionResourceProviderTest {
injector.getInstance(PersistService.class).stop();
}
- @Ignore
+
@Test
public void testCreateResources() throws Exception {
Resource.Type type = Resource.Type.ClusterStackVersion;
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
index aabe366..d387732 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
@@ -45,6 +45,7 @@ import org.apache.ambari.server.state.ServiceComponentHost;
import org.apache.ambari.server.state.ServiceInfo;
import org.apache.ambari.server.state.ServiceOsSpecific;
import org.apache.ambari.server.state.StackId;
+import org.apache.ambari.server.state.StackInfo;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -191,9 +192,9 @@ public class HostStackVersionResourceProviderTest {
// add properties to the request map
properties.put(HostStackVersionResourceProvider.HOST_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID, "Cluster100");
- properties.put(HostStackVersionResourceProvider.HOST_STACK_VERSION_REPO_VERSION_PROPERTY_ID, "2.2.0.1-885");
- properties.put(HostStackVersionResourceProvider.HOST_STACK_VERSION_STACK_PROPERTY_ID, "HDP");
- properties.put(HostStackVersionResourceProvider.HOST_STACK_VERSION_VERSION_PROPERTY_ID, "2.0.1");
+ properties.put(HostStackVersionResourceProvider.STACK_VERSION_REPO_VERSION_PROPERTY_ID, "2.2.0.1-885");
+ properties.put(HostStackVersionResourceProvider.STACK_VERSION_STACK_PROPERTY_ID, "HDP");
+ properties.put(HostStackVersionResourceProvider.STACK_VERSION_VERSION_PROPERTY_ID, "2.0.1");
properties.put(HostStackVersionResourceProvider.HOST_STACK_VERSION_HOST_NAME_PROPERTY_ID, "host1");
propertySet.add(properties);
http://git-wip-us.apache.org/repos/asf/ambari/blob/f6248ae5/ambari-server/src/test/python/custom_actions/TestCheckHost.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/custom_actions/TestCheckHost.py b/ambari-server/src/test/python/custom_actions/TestCheckHost.py
index 9ce71c6..d1aeb16 100644
--- a/ambari-server/src/test/python/custom_actions/TestCheckHost.py
+++ b/ambari-server/src/test/python/custom_actions/TestCheckHost.py
@@ -230,54 +230,54 @@ class TestCheckHost(TestCase):
self.assertTrue(structured_out_mock.called)
structured_out_mock.assert_called_with({})
-# @patch.object(Script, 'get_config')
-# @patch.object(Script, 'get_tmp_dir')
-# @patch('resource_management.libraries.script.Script.put_structured_out')
-# @patch('ambari_agent.HostInfo.HostInfo.javaProcs')
-# @patch('ambari_agent.HostInfo.HostInfo.checkLiveServices')
-# @patch('ambari_agent.HostInfo.HostInfo.getUMask')
-# @patch('ambari_agent.HostInfo.HostInfo.getTransparentHugePage')
-# @patch('ambari_agent.HostInfo.HostInfo.checkIptables')
-# @patch('ambari_agent.HostInfo.HostInfo.checkReverseLookup')
-# @patch('time.time')
-# def testLastAgentEnv(self, time_mock, checkReverseLookup_mock, checkIptables_mock, getTransparentHugePage_mock,
-# getUMask_mock, checkLiveServices_mock, javaProcs_mock, put_structured_out_mock,
-# get_tmp_dir_mock, get_config_mock):
-# jsonFilePath = os.path.join("../resources/custom_actions", "check_last_agent_env.json")
-# with open(jsonFilePath, "r") as jsonFile:
-# jsonPayload = json.load(jsonFile)
-#
-# get_config_mock.return_value = ConfigDictionary(jsonPayload)
-# get_tmp_dir_mock.return_value = "/tmp"
-#
-# checkHost = CheckHost()
-# checkHost.actionexecute(None)
-#
-# # ensure the correct function was called
-# self.assertTrue(time_mock.called)
-# self.assertTrue(checkReverseLookup_mock.called)
-# self.assertTrue(checkIptables_mock.called)
-# self.assertTrue(getTransparentHugePage_mock.called)
-# self.assertTrue(getUMask_mock.called)
-# self.assertTrue(checkLiveServices_mock.called)
-# self.assertTrue(javaProcs_mock.called)
-# self.assertTrue(put_structured_out_mock.called)
-# # ensure the correct keys are in the result map
-# last_agent_env_check_result = put_structured_out_mock.call_args[0][0]
-# self.assertTrue('last_agent_env_check' in last_agent_env_check_result)
-# self.assertTrue('hostHealth' in last_agent_env_check_result['last_agent_env_check'])
-# self.assertTrue('iptablesIsRunning' in last_agent_env_check_result['last_agent_env_check'])
-# self.assertTrue('reverseLookup' in last_agent_env_check_result['last_agent_env_check'])
-# self.assertTrue('alternatives' in last_agent_env_check_result['last_agent_env_check'])
-# self.assertTrue('umask' in last_agent_env_check_result['last_agent_env_check'])
-# self.assertTrue('stackFoldersAndFiles' in last_agent_env_check_result['last_agent_env_check'])
-# self.assertTrue('existingRepos' in last_agent_env_check_result['last_agent_env_check'])
-# self.assertTrue('installedPackages' in last_agent_env_check_result['last_agent_env_check'])
-# self.assertTrue('existingUsers' in last_agent_env_check_result['last_agent_env_check'])
-#
-# # try it now with errors
-# javaProcs_mock.side_effect = Exception("test exception")
-# checkHost.actionexecute(None)
-#
-# #ensure the correct response is returned
-# put_structured_out_mock.assert_called_with({'last_agent_env_check': {'message': 'test exception', 'exit_code': 1}})
+ @patch.object(Script, 'get_config')
+ @patch.object(Script, 'get_tmp_dir')
+ @patch('resource_management.libraries.script.Script.put_structured_out')
+ @patch('ambari_agent.HostInfo.HostInfo.javaProcs')
+ @patch('ambari_agent.HostInfo.HostInfo.checkLiveServices')
+ @patch('ambari_agent.HostInfo.HostInfo.getUMask')
+ @patch('ambari_agent.HostInfo.HostInfo.getTransparentHugePage')
+ @patch('ambari_agent.HostInfo.HostInfo.checkIptables')
+ @patch('ambari_agent.HostInfo.HostInfo.checkReverseLookup')
+ @patch('time.time')
+ def testLastAgentEnv(self, time_mock, checkReverseLookup_mock, checkIptables_mock, getTransparentHugePage_mock,
+ getUMask_mock, checkLiveServices_mock, javaProcs_mock, put_structured_out_mock,
+ get_tmp_dir_mock, get_config_mock):
+ jsonFilePath = os.path.join("../resources/custom_actions", "check_last_agent_env.json")
+ with open(jsonFilePath, "r") as jsonFile:
+ jsonPayload = json.load(jsonFile)
+
+ get_config_mock.return_value = ConfigDictionary(jsonPayload)
+ get_tmp_dir_mock.return_value = "/tmp"
+
+ checkHost = CheckHost()
+ checkHost.actionexecute(None)
+
+ # ensure the correct function was called
+ self.assertTrue(time_mock.called)
+ self.assertTrue(checkReverseLookup_mock.called)
+ self.assertTrue(checkIptables_mock.called)
+ self.assertTrue(getTransparentHugePage_mock.called)
+ self.assertTrue(getUMask_mock.called)
+ self.assertTrue(checkLiveServices_mock.called)
+ self.assertTrue(javaProcs_mock.called)
+ self.assertTrue(put_structured_out_mock.called)
+ # ensure the correct keys are in the result map
+ last_agent_env_check_result = put_structured_out_mock.call_args[0][0]
+ self.assertTrue('last_agent_env_check' in last_agent_env_check_result)
+ self.assertTrue('hostHealth' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('iptablesIsRunning' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('reverseLookup' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('alternatives' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('umask' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('stackFoldersAndFiles' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('existingRepos' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('installedPackages' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('existingUsers' in last_agent_env_check_result['last_agent_env_check'])
+
+ # try it now with errors
+ javaProcs_mock.side_effect = Exception("test exception")
+ checkHost.actionexecute(None)
+
+ #ensure the correct response is returned
+ put_structured_out_mock.assert_called_with({'last_agent_env_check': {'message': 'test exception', 'exit_code': 1}})
\ No newline at end of file