You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jl...@apache.org on 2015/11/11 23:59:02 UTC
ambari git commit: AMBARI-13804: RU pre-req checks should allow for
other HCFS file systems (jluniya)
Repository: ambari
Updated Branches:
refs/heads/trunk 34db83ae9 -> a4fd7223a
AMBARI-13804: RU pre-req checks should allow for other HCFS file systems (jluniya)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/a4fd7223
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/a4fd7223
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/a4fd7223
Branch: refs/heads/trunk
Commit: a4fd7223a65b7313928754b61ad36091d4472c8c
Parents: 34db83a
Author: Jayush Luniya <jl...@hortonworks.com>
Authored: Wed Nov 11 14:58:49 2015 -0800
Committer: Jayush Luniya <jl...@hortonworks.com>
Committed: Wed Nov 11 14:58:49 2015 -0800
----------------------------------------------------------------------
.../HiveDynamicServiceDiscoveryCheck.java | 29 +++-
...apReduce2JobHistoryStatePreservingCheck.java | 48 +------
.../ServicesMapReduceDistributedCacheCheck.java | 15 +-
.../checks/ServicesNamenodeTruncateCheck.java | 11 +-
.../ServicesTezDistributedCacheCheck.java | 15 +-
.../YarnTimelineServerStatePreservingCheck.java | 62 ++++-----
.../server/controller/PrereqCheckRequest.java | 14 ++
.../PreUpgradeCheckResourceProvider.java | 1 +
.../ambari/server/state/stack/UpgradePack.java | 128 ++++++++++++++++-
.../HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml | 9 ++
.../HDP/2.2/upgrades/nonrolling-upgrade-2.2.xml | 6 +
.../HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml | 6 +
.../stacks/HDP/2.2/upgrades/upgrade-2.2.xml | 12 +-
.../stacks/HDP/2.2/upgrades/upgrade-2.3.xml | 13 +-
.../HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml | 6 +
.../stacks/HDP/2.3/upgrades/upgrade-2.3.xml | 13 +-
.../HiveDynamicServiceDiscoveryCheckTest.java | 9 ++
...duce2JobHistoryStatePreservingCheckTest.java | 13 +-
...vicesMapReduceDistributedCacheCheckTest.java | 114 +++++++++++++++-
.../ServicesNamenodeTruncateCheckTest.java | 13 +-
.../ServicesTezDistributedCacheCheckTest.java | 136 ++++++++++++++++++-
...nTimelineServerStatePreservingCheckTest.java | 24 ++++
.../server/state/stack/UpgradePackTest.java | 22 +++
.../HDP/2.1.1/upgrades/upgrade_test_checks.xml | 11 ++
.../HDP/2.2.0/upgrades/upgrade_test_checks.xml | 11 ++
25 files changed, 619 insertions(+), 122 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/java/org/apache/ambari/server/checks/HiveDynamicServiceDiscoveryCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/HiveDynamicServiceDiscoveryCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/HiveDynamicServiceDiscoveryCheck.java
index d8f51a2..9ecabc7 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/HiveDynamicServiceDiscoveryCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/HiveDynamicServiceDiscoveryCheck.java
@@ -28,6 +28,7 @@ import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.stack.PrereqCheckStatus;
import org.apache.ambari.server.state.stack.PrerequisiteCheck;
+import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
import org.apache.ambari.server.utils.VersionUtils;
import org.apache.commons.lang.StringUtils;
@@ -44,6 +45,7 @@ public class HiveDynamicServiceDiscoveryCheck extends AbstractCheckDescriptor {
static final String HIVE_DYNAMIC_SERVICE_DISCOVERY_ENABLED_KEY = "hive.dynamic-service.discovery.enabled.key";
static final String HIVE_DYNAMIC_SERVICE_ZK_QUORUM_KEY = "hive.dynamic-service.discovery.zk-quorum.key";
static final String HIVE_DYNAMIC_SERVICE_ZK_NAMESPACE_KEY = "hive.dynamic-service.zk-namespace.key";
+ static final String MIN_FAILURE_STACK_VERSION_PROPERTY_NAME = "min-failure-stack-version";
/**
* Constructor.
@@ -85,15 +87,32 @@ public class HiveDynamicServiceDiscoveryCheck extends AbstractCheckDescriptor {
request));
}
+ String minFailureStackVersion = null;
+ PrerequisiteCheckConfig prerequisiteCheckConfig = request.getPrerequisiteCheckConfig();
+ Map<String, String> checkProperties = null;
+ if(prerequisiteCheckConfig != null) {
+ checkProperties = prerequisiteCheckConfig.getCheckProperties(this.getClass().getName());
+ }
+ if(checkProperties != null && checkProperties.containsKey(MIN_FAILURE_STACK_VERSION_PROPERTY_NAME)) {
+ minFailureStackVersion = checkProperties.get(MIN_FAILURE_STACK_VERSION_PROPERTY_NAME);
+ }
+
if (!errorMessages.isEmpty()) {
prerequisiteCheck.setFailReason(StringUtils.join(errorMessages, " "));
prerequisiteCheck.getFailedOn().add("HIVE");
PrereqCheckStatus checkStatus = PrereqCheckStatus.FAIL;
- if ("HDP".equals(request.getSourceStackId().getStackName())) {
- if (VersionUtils.compareVersions(request.getSourceStackId().getStackVersion(), "2.3.0.0") < 0
- && VersionUtils.compareVersions(request.getTargetStackId().getStackVersion(), "2.3.0.0") < 0
- && VersionUtils.compareVersions(request.getSourceStackId().getStackVersion(), request.getTargetStackId().getStackVersion()) < 0) {
- checkStatus = PrereqCheckStatus.WARNING;
+ if(minFailureStackVersion != null && !minFailureStackVersion.isEmpty()) {
+ String[] minStack = minFailureStackVersion.split("-");
+ if (minStack.length == 2) {
+ String minStackName = minStack[0];
+ String minStackVersion = minStack[1];
+ if (minStackName.equals(request.getSourceStackId().getStackName())) {
+ if (VersionUtils.compareVersions(request.getSourceStackId().getStackVersion(), minStackVersion) < 0
+ && VersionUtils.compareVersions(request.getTargetStackId().getStackVersion(), minStackVersion) < 0
+ && VersionUtils.compareVersions(request.getSourceStackId().getStackVersion(), request.getTargetStackId().getStackVersion()) < 0) {
+ checkStatus = PrereqCheckStatus.WARNING;
+ }
+ }
}
}
prerequisiteCheck.setStatus(checkStatus);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/java/org/apache/ambari/server/checks/MapReduce2JobHistoryStatePreservingCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/MapReduce2JobHistoryStatePreservingCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/MapReduce2JobHistoryStatePreservingCheck.java
index af134d8..626438f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/MapReduce2JobHistoryStatePreservingCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/MapReduce2JobHistoryStatePreservingCheck.java
@@ -24,6 +24,7 @@ import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.stack.PrereqCheckStatus;
import org.apache.ambari.server.state.stack.PrerequisiteCheck;
+import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
import org.apache.ambari.server.utils.VersionUtils;
import org.apache.commons.lang.StringUtils;
@@ -48,33 +49,6 @@ public class MapReduce2JobHistoryStatePreservingCheck extends AbstractCheckDescr
"mapreduce.jobhistory.recovery.store.leveldb.path";
final static String YARN_TIMELINE_SERVICE_LEVELDB_STATE_STORE_PATH_KEY =
"yarn.timeline-service.leveldb-state-store.path";
- /**
- * Due to the introduction of MapReduce2 JobHistory state recovery only from certain
- * stack-versions onwards, this check is not applicable to earlier versions
- * of the stack.
- *
- * This enumeration lists the minimum stack-versions for which this check is applicable.
- * If a stack is not specified in this enumeration, this check will be applicable.
- */
- private enum MinimumApplicableStackVersion {
- HDP_STACK("HDP", "2.3.0.0");
-
- private String stackName;
- private String stackVersion;
-
- private MinimumApplicableStackVersion(String stackName, String stackVersion) {
- this.stackName = stackName;
- this.stackVersion = stackVersion;
- }
-
- public String getStackName() {
- return stackName;
- }
-
- public String getStackVersion() {
- return stackVersion;
- }
- }
/**
* Constructor.
@@ -88,25 +62,7 @@ public class MapReduce2JobHistoryStatePreservingCheck extends AbstractCheckDescr
*/
@Override
public boolean isApplicable(PrereqCheckRequest request) throws AmbariException {
- if (!super.isApplicable(request, Arrays.asList("MAPREDUCE2"), true)) {
- return false;
- }
-
- final Cluster cluster = clustersProvider.get().getCluster(request.getClusterName());
-
- // Applicable only if stack not defined in MinimumApplicableStackVersion, or
- // version equals or exceeds the enumerated version.
- for (MinimumApplicableStackVersion minimumStackVersion : MinimumApplicableStackVersion.values()) {
- String stackName = cluster.getCurrentStackVersion().getStackName();
- if (minimumStackVersion.getStackName().equals(stackName)){
- String targetVersion = request.getTargetStackId().getStackVersion();
- String sourceVersion = request.getSourceStackId().getStackVersion();
- return VersionUtils.compareVersions(targetVersion, minimumStackVersion.getStackVersion()) >= 0 &&
- VersionUtils.compareVersions(sourceVersion, minimumStackVersion.getStackVersion()) >= 0;
- }
- }
-
- return true;
+ return super.isApplicable(request, Arrays.asList("MAPREDUCE2"), true);
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheck.java
index 2359919..8e98c99 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheck.java
@@ -30,6 +30,7 @@ import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.DesiredConfig;
import org.apache.ambari.server.state.stack.PrereqCheckStatus;
import org.apache.ambari.server.state.stack.PrerequisiteCheck;
+import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
import org.apache.commons.lang.StringUtils;
import com.google.inject.Singleton;
@@ -44,6 +45,8 @@ public class ServicesMapReduceDistributedCacheCheck extends AbstractCheckDescrip
static final String KEY_APP_CLASSPATH = "app_classpath";
static final String KEY_FRAMEWORK_PATH = "framework_path";
static final String KEY_NOT_DFS = "not_dfs";
+ static final String DFS_PROTOCOLS_REGEX_PROPERTY_NAME = "dfs-protocols-regex";
+ static final String DFS_PROTOCOLS_REGEX_DEFAULT = "^([^:]*dfs|wasb|ecs):.*";
@Override
public boolean isApplicable(PrereqCheckRequest request)
@@ -70,6 +73,16 @@ public class ServicesMapReduceDistributedCacheCheck extends AbstractCheckDescrip
@Override
public void perform(PrerequisiteCheck prerequisiteCheck, PrereqCheckRequest request) throws AmbariException {
+ String dfsProtocolsRegex = DFS_PROTOCOLS_REGEX_DEFAULT;
+ PrerequisiteCheckConfig prerequisiteCheckConfig = request.getPrerequisiteCheckConfig();
+ Map<String, String> checkProperties = null;
+ if(prerequisiteCheckConfig != null) {
+ checkProperties = prerequisiteCheckConfig.getCheckProperties(this.getClass().getName());
+ }
+ if(checkProperties != null && checkProperties.containsKey(DFS_PROTOCOLS_REGEX_PROPERTY_NAME)) {
+ dfsProtocolsRegex = checkProperties.get(DFS_PROTOCOLS_REGEX_PROPERTY_NAME);
+ }
+
final String clusterName = request.getClusterName();
final Cluster cluster = clustersProvider.get().getCluster(clusterName);
final String mrConfigType = "mapred-site";
@@ -100,7 +113,7 @@ public class ServicesMapReduceDistributedCacheCheck extends AbstractCheckDescrip
return;
}
- if (!frameworkPath.matches("^[^:]*dfs:.*") && (defaultFS == null || !defaultFS.matches("^[^:]*dfs:.*"))) {
+ if (!frameworkPath.matches(dfsProtocolsRegex) && (defaultFS == null || !defaultFS.matches(dfsProtocolsRegex))) {
prerequisiteCheck.getFailedOn().add("MAPREDUCE2");
prerequisiteCheck.setStatus(PrereqCheckStatus.FAIL);
prerequisiteCheck.setFailReason(getFailReason(KEY_NOT_DFS, prerequisiteCheck, request));
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheck.java
index 3761d99..cbb8623 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheck.java
@@ -18,17 +18,16 @@
package org.apache.ambari.server.checks;
import org.apache.ambari.server.AmbariException;
-import org.apache.ambari.server.ServiceNotFoundException;
import org.apache.ambari.server.controller.PrereqCheckRequest;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.stack.PrereqCheckStatus;
import org.apache.ambari.server.state.stack.PrerequisiteCheck;
-import org.apache.ambari.server.utils.VersionUtils;
import com.google.inject.Singleton;
import java.util.Arrays;
+import java.util.Map;
/**
* Checks that namenode high availability is enabled.
@@ -69,16 +68,8 @@ public class ServicesNamenodeTruncateCheck extends AbstractCheckDescriptor {
if (Boolean.valueOf(truncateEnabled)) {
prerequisiteCheck.getFailedOn().add("HDFS");
PrereqCheckStatus checkStatus = PrereqCheckStatus.FAIL;
- if ("HDP".equals(request.getSourceStackId().getStackName())) {
- if (VersionUtils.compareVersions(request.getSourceStackId().getStackVersion(), "2.3.0.0") >= 0
- && VersionUtils.compareVersions(request.getTargetStackId().getStackVersion(), "2.3.0.0") >= 0
- && VersionUtils.compareVersions(request.getSourceStackId().getStackVersion(), request.getTargetStackId().getStackVersion()) < 0) {
- checkStatus = PrereqCheckStatus.PASS;
- }
- }
prerequisiteCheck.setStatus(checkStatus);
prerequisiteCheck.setFailReason(getFailReason(prerequisiteCheck, request));
-
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheck.java
index 70a9b1b..0a866eb 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheck.java
@@ -30,6 +30,7 @@ import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.DesiredConfig;
import org.apache.ambari.server.state.stack.PrereqCheckStatus;
import org.apache.ambari.server.state.stack.PrerequisiteCheck;
+import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
import org.apache.commons.lang.StringUtils;
import com.google.inject.Singleton;
@@ -46,6 +47,8 @@ public class ServicesTezDistributedCacheCheck extends AbstractCheckDescriptor {
static final String KEY_LIB_NOT_DFS = "lib_not_dfs";
static final String KEY_LIB_NOT_TARGZ = "lib_not_targz";
static final String KEY_USE_HADOOP_LIBS_FALSE = "tez_use_hadoop_libs_false";
+ static final String DFS_PROTOCOLS_REGEX_PROPERTY_NAME = "dfs-protocols-regex";
+ static final String DFS_PROTOCOLS_REGEX_DEFAULT = "^([^:]*dfs|wasb|ecs):.*";
@Override
public boolean isApplicable(PrereqCheckRequest request) throws AmbariException {
@@ -70,6 +73,16 @@ public class ServicesTezDistributedCacheCheck extends AbstractCheckDescriptor {
@Override
public void perform(PrerequisiteCheck prerequisiteCheck, PrereqCheckRequest request) throws AmbariException {
+ String dfsProtocolsRegex = DFS_PROTOCOLS_REGEX_DEFAULT;
+ PrerequisiteCheckConfig prerequisiteCheckConfig = request.getPrerequisiteCheckConfig();
+ Map<String, String> checkProperties = null;
+ if(prerequisiteCheckConfig != null) {
+ checkProperties = prerequisiteCheckConfig.getCheckProperties(this.getClass().getName());
+ }
+ if(checkProperties != null && checkProperties.containsKey(DFS_PROTOCOLS_REGEX_PROPERTY_NAME)) {
+ dfsProtocolsRegex = checkProperties.get(DFS_PROTOCOLS_REGEX_PROPERTY_NAME);
+ }
+
final String clusterName = request.getClusterName();
final Cluster cluster = clustersProvider.get().getCluster(clusterName);
final String tezConfigType = "tez-site";
@@ -100,7 +113,7 @@ public class ServicesTezDistributedCacheCheck extends AbstractCheckDescriptor {
return;
}
- if (!libUris.matches("^[^:]*dfs:.*") && (defaultFS == null || !defaultFS.matches("^[^:]*dfs:.*"))) {
+ if (!libUris.matches(dfsProtocolsRegex) && (defaultFS == null || !defaultFS.matches(dfsProtocolsRegex))) {
errorMessages.add(getFailReason(KEY_LIB_NOT_DFS, prerequisiteCheck, request));
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheck.java
index 03528c2..5dbd0b4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheck.java
@@ -26,6 +26,7 @@ import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.stack.PrereqCheckStatus;
import org.apache.ambari.server.state.stack.PrerequisiteCheck;
+import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
import org.apache.ambari.server.utils.VersionUtils;
import org.apache.commons.lang.BooleanUtils;
@@ -41,34 +42,7 @@ import com.google.inject.Singleton;
public class YarnTimelineServerStatePreservingCheck extends AbstractCheckDescriptor {
private final static String YARN_TIMELINE_STATE_RECOVERY_ENABLED_KEY = "yarn.timeline-service.recovery.enabled";
-
- /**
- * Due to the introduction of YARN Timeline state recovery only from certain
- * stack-versions onwards, this check is not applicable to earlier versions
- * of the stack.
- *
- * This enumeration lists the minimum stack-versions for which this check is applicable.
- * If a stack is not specified in this enumeration, this check will be applicable.
- */
- private enum MinimumApplicableStackVersion {
- HDP_STACK("HDP", "2.2.4.2");
-
- private String stackName;
- private String stackVersion;
-
- private MinimumApplicableStackVersion(String stackName, String stackVersion) {
- this.stackName = stackName;
- this.stackVersion = stackVersion;
- }
-
- public String getStackName() {
- return stackName;
- }
-
- public String getStackVersion() {
- return stackVersion;
- }
- }
+ private final static String MIN_APPLICABLE_STACK_VERSION_PROPERTY_NAME = "min-applicable-stack-version";
/**
* Constructor.
@@ -88,13 +62,31 @@ public class YarnTimelineServerStatePreservingCheck extends AbstractCheckDescrip
final Cluster cluster = clustersProvider.get().getCluster(request.getClusterName());
- // Applicable only if stack not defined in MinimumApplicableStackVersion, or
- // version equals or exceeds the enumerated version.
- for (MinimumApplicableStackVersion minimumStackVersion : MinimumApplicableStackVersion.values()) {
- String stackName = cluster.getCurrentStackVersion().getStackName();
- if (minimumStackVersion.getStackName().equals(stackName)){
- String currentClusterRepositoryVersion = cluster.getCurrentClusterVersion().getRepositoryVersion().getVersion();
- return VersionUtils.compareVersions(currentClusterRepositoryVersion, minimumStackVersion.getStackVersion()) >= 0;
+ String minApplicableStackVersion = null;
+ PrerequisiteCheckConfig prerequisiteCheckConfig = request.getPrerequisiteCheckConfig();
+ Map<String, String> checkProperties = null;
+ if(prerequisiteCheckConfig != null) {
+ checkProperties = prerequisiteCheckConfig.getCheckProperties(this.getClass().getName());
+ }
+ if(checkProperties != null && checkProperties.containsKey(MIN_APPLICABLE_STACK_VERSION_PROPERTY_NAME)) {
+ minApplicableStackVersion = checkProperties.get(MIN_APPLICABLE_STACK_VERSION_PROPERTY_NAME);
+ }
+
+ // Due to the introduction of YARN Timeline state recovery only from certain
+ // stack-versions onwards, this check is not applicable to earlier versions
+ // of the stack.
+ // Applicable only if min-applicable-stack-version config property is not defined, or
+ // version equals or exceeds the configured version.
+ if(minApplicableStackVersion != null && !minApplicableStackVersion.isEmpty()) {
+ String[] minStack = minApplicableStackVersion.split("-");
+ if(minStack.length == 2) {
+ String minStackName = minStack[0];
+ String minStackVersion = minStack[1];
+ String stackName = cluster.getCurrentStackVersion().getStackName();
+ if (minStackName.equals(stackName)) {
+ String currentClusterRepositoryVersion = cluster.getCurrentClusterVersion().getRepositoryVersion().getVersion();
+ return VersionUtils.compareVersions(currentClusterRepositoryVersion, minStackVersion) >= 0;
+ }
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/java/org/apache/ambari/server/controller/PrereqCheckRequest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/PrereqCheckRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/PrereqCheckRequest.java
index b8dda3a..8584ef6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/PrereqCheckRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/PrereqCheckRequest.java
@@ -23,6 +23,7 @@ import java.util.Map;
import org.apache.ambari.server.checks.CheckDescription;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.stack.PrereqCheckStatus;
+import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
import org.apache.ambari.server.state.stack.upgrade.UpgradeType;
/**
@@ -33,6 +34,7 @@ public class PrereqCheckRequest {
private String m_repositoryVersion;
private StackId m_sourceStackId;
private StackId m_targetStackId;
+ private PrerequisiteCheckConfig m_prereqCheckConfig;
private UpgradeType m_upgradeType;
@@ -125,4 +127,16 @@ public class PrereqCheckRequest {
public void setTargetStackId(StackId targetStackId) {
m_targetStackId = targetStackId;
}
+
+ /**
+ * Gets the prerequisite check config
+ * @return the prereqCheckConfig
+ */
+ public PrerequisiteCheckConfig getPrerequisiteCheckConfig() { return m_prereqCheckConfig; }
+
+ /**
+ * Sets the prerequisite check config obtained from the upgrade pack
+ * @param prereqCheckConfig The prereqCheckConfig
+ */
+ public void setPrerequisiteCheckConfig(PrerequisiteCheckConfig prereqCheckConfig) { m_prereqCheckConfig = prereqCheckConfig;}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProvider.java
index e98f730..7d7b618 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProvider.java
@@ -187,6 +187,7 @@ public class PreUpgradeCheckResourceProvider extends ReadOnlyResourceProvider {
// ToDo: properly handle exceptions, i.e. create fake check with error description
List<AbstractCheckDescriptor> upgradeChecksToRun = upgradeCheckRegistry.getFilteredUpgradeChecks(upgradePack);
+ upgradeCheckRequest.setPrerequisiteCheckConfig(upgradePack.getPrerequisiteCheckConfig());
for (PrerequisiteCheck prerequisiteCheck : checkHelper.performChecks(upgradeCheckRequest, upgradeChecksToRun)) {
final Resource resource = new ResourceImpl(Resource.Type.PreUpgradeCheck);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java
index ca1b79b..a3207cd 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java
@@ -18,6 +18,7 @@
package org.apache.ambari.server.state.stack;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
@@ -31,6 +32,7 @@ import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlValue;
import org.apache.ambari.server.state.stack.upgrade.ClusterGrouping;
import org.apache.ambari.server.state.stack.upgrade.Direction;
@@ -61,9 +63,8 @@ public class UpgradePack {
@XmlElement(name="group")
private List<Grouping> groups;
- @XmlElementWrapper(name="prerequisite-checks")
- @XmlElement(name="check", type=String.class)
- private List<String> prerequisiteChecks = new ArrayList<String>();
+ @XmlElement(name="prerequisite-checks")
+ private PrerequisiteChecks prerequisiteChecks;
/**
* In the case of a rolling upgrade, will specify processing logic for a particular component.
@@ -136,7 +137,15 @@ public class UpgradePack {
* @return the preCheck name, e.g. "CheckDescription"
*/
public List<String> getPrerequisiteChecks() {
- return new ArrayList<String>(prerequisiteChecks);
+ return new ArrayList<String>(prerequisiteChecks.checks);
+ }
+
+ /**
+ *
+ * @return the prerequisite check configuration
+ */
+ public PrerequisiteCheckConfig getPrerequisiteCheckConfig() {
+ return prerequisiteChecks.configuration;
}
/**
@@ -380,4 +389,115 @@ public class UpgradePack {
@XmlAttribute
public String version;
}
+
+ /**
+ * Container class to specify list of additional prerequisite checks to run in addition to the
+ * required prerequisite checks and configuration properties for all prerequisite checks
+ */
+ public static class PrerequisiteChecks {
+ /**
+ * List of additional prerequisite checks to run in addition to required prerequisite checks
+ */
+ @XmlElement(name="check", type=String.class)
+ public List<String> checks = new ArrayList<String>();
+
+ /**
+ * Prerequisite checks configuration
+ */
+ @XmlElement(name="configuration")
+ public PrerequisiteCheckConfig configuration;
+ }
+
+ /**
+ * Prerequisite checks configuration
+ */
+ public static class PrerequisiteCheckConfig {
+ /**
+ * Global config properties common to all prereq checks
+ */
+ @XmlElement(name="property")
+ public List<PrerequisiteProperty> globalProperties;
+
+ /**
+ * Config properties for individual prerequisite checks
+ */
+ @XmlElement(name="check-properties")
+ public List<PrerequisiteCheckProperties> prerequisiteCheckProperties;
+
+ /**
+ * Get global config properties as a map
+ * @return Map of global config properties
+ */
+ public Map<String, String> getGlobalProperties() {
+ if(globalProperties == null) {
+ return null;
+ }
+ Map<String, String> result = new HashMap<String, String>();
+ for (PrerequisiteProperty property : globalProperties) {
+ result.put(property.name, property.value);
+ }
+ return result;
+ }
+
+ /**
+ * Get config properties for a given prerequisite check as a map
+ * @param checkName The prerequisite check name
+ * @return Map of config properties for the prerequisite check
+ */
+ public Map<String, String> getCheckProperties(String checkName) {
+ if(prerequisiteCheckProperties == null) {
+ return null;
+ }
+ for(PrerequisiteCheckProperties checkProperties : prerequisiteCheckProperties) {
+ if(checkProperties.name.equalsIgnoreCase(checkName)) {
+ return checkProperties.getProperties();
+ }
+ }
+ return null;
+ }
+ }
+
+ /**
+ * Config properties for a specific prerequisite check.
+ */
+ public static class PrerequisiteCheckProperties {
+ /**
+ * Prereq check name
+ */
+ @XmlAttribute
+ public String name;
+
+ /**
+ * Config properties for the prerequisite check
+ */
+ @XmlElement(name="property")
+ public List<PrerequisiteProperty> properties;
+
+ /**
+ * Get config properties as a map
+ * @return Map of config properties
+ */
+ public Map<String, String> getProperties() {
+ if(properties == null) {
+ return null;
+ }
+
+ Map<String, String> result = new HashMap<String, String>();
+ for (PrerequisiteProperty property : properties) {
+ result.put(property.name, property.value);
+ }
+ return result;
+ }
+ }
+
+ /**
+ * Prerequisite check config property
+ */
+ public static class PrerequisiteProperty {
+ @XmlAttribute
+ public String name;
+
+ @XmlValue
+ public String value;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml
index a6ff604..4f286ae 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml
@@ -23,8 +23,17 @@
<type>NON_ROLLING</type>
<downgrade-allowed>false</downgrade-allowed>
<prerequisite-checks>
+ <!-- List of additional pre-req checks to run in addition to the required pre-reqs -->
<check>org.apache.ambari.server.checks.StormRestAPIDeletedCheck</check>
+
+ <configuration>
+ <!-- Configuration properties for all pre-reqs including required pre-reqs -->
+ <check-properties name="org.apache.ambari.server.checks.HiveDynamicServiceDiscoveryCheck">
+ <property name="min-failure-stack-version">HDP-2.3.0.0</property>
+ </check-properties>
+ </configuration>
</prerequisite-checks>
+
<upgrade-path>
<intermediate-stack version="2.2"/>
<intermediate-stack version="2.3"/>
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.2.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.2.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.2.xml
index d18fbd3..40cb607 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.2.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.2.xml
@@ -22,6 +22,12 @@
<target-stack>HDP-2.2</target-stack>
<type>NON_ROLLING</type>
<prerequisite-checks>
+ <configuration>
+ <!-- Configuration properties for all pre-reqs including required pre-reqs -->
+ <check-properties name="org.apache.ambari.server.checks.HiveDynamicServiceDiscoveryCheck">
+ <property name="min-failure-stack-version">HDP-2.3.0.0</property>
+ </check-properties>
+ </configuration>
</prerequisite-checks>
<order>
<group xsi:type="cluster" name="PRE_CLUSTER" title="Prepare Upgrade">
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
index 02f5d1c..9a4ddb0 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
@@ -22,6 +22,12 @@
<target-stack>HDP-2.3</target-stack>
<type>NON_ROLLING</type>
<prerequisite-checks>
+ <configuration>
+ <!-- Configuration properties for all pre-reqs including required pre-reqs -->
+ <check-properties name="org.apache.ambari.server.checks.HiveDynamicServiceDiscoveryCheck">
+ <property name="min-failure-stack-version">HDP-2.3.0.0</property>
+ </check-properties>
+ </configuration>
</prerequisite-checks>
<order>
<group xsi:type="cluster" name="PRE_CLUSTER" title="Prepare Upgrade">
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.2.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.2.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.2.xml
index f0351f8..a71ad45 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.2.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.2.xml
@@ -24,8 +24,8 @@
<target-stack>HDP-2.2</target-stack>
<type>ROLLING</type>
<prerequisite-checks>
+ <!-- List of additional pre-req checks to run in addition to the required pre-reqs -->
<check>org.apache.ambari.server.checks.HiveMultipleMetastoreCheck</check>
- <check>org.apache.ambari.server.checks.MapReduce2JobHistoryStatePreservingCheck</check>
<check>org.apache.ambari.server.checks.SecondaryNamenodeDeletedCheck</check>
<check>org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheck</check>
<check>org.apache.ambari.server.checks.ServicesNamenodeHighAvailabilityCheck</check>
@@ -34,6 +34,16 @@
<check>org.apache.ambari.server.checks.ServicesYarnWorkPreservingCheck</check>
<check>org.apache.ambari.server.checks.YarnRMHighAvailabilityCheck</check>
<check>org.apache.ambari.server.checks.YarnTimelineServerStatePreservingCheck</check>
+
+ <configuration>
+ <!-- Configuration properties for all pre-reqs including required pre-reqs -->
+ <check-properties name="org.apache.ambari.server.checks.YarnTimelineServerStatePreservingCheck">
+ <property name="min-applicable-stack-version">HDP-2.2.4.2</property>
+ </check-properties>
+ <check-properties name="org.apache.ambari.server.checks.HiveDynamicServiceDiscoveryCheck">
+ <property name="min-failure-stack-version">HDP-2.3.0.0</property>
+ </check-properties>
+ </configuration>
</prerequisite-checks>
<order>
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.3.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.3.xml
index a8a8d89..d318a3a 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.3.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.3.xml
@@ -20,8 +20,8 @@
<target-stack>HDP-2.3</target-stack>
<type>ROLLING</type>
<prerequisite-checks>
+ <!-- List of additional pre-req checks to run in addition to the required pre-reqs -->
<check>org.apache.ambari.server.checks.HiveMultipleMetastoreCheck</check>
- <check>org.apache.ambari.server.checks.MapReduce2JobHistoryStatePreservingCheck</check>
<check>org.apache.ambari.server.checks.SecondaryNamenodeDeletedCheck</check>
<check>org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheck</check>
<check>org.apache.ambari.server.checks.ServicesNamenodeHighAvailabilityCheck</check>
@@ -30,7 +30,18 @@
<check>org.apache.ambari.server.checks.ServicesYarnWorkPreservingCheck</check>
<check>org.apache.ambari.server.checks.YarnRMHighAvailabilityCheck</check>
<check>org.apache.ambari.server.checks.YarnTimelineServerStatePreservingCheck</check>
+
+ <configuration>
+ <!-- Configuration properties for all pre-reqs including required pre-reqs -->
+ <check-properties name="org.apache.ambari.server.checks.YarnTimelineServerStatePreservingCheck">
+ <property name="min-applicable-stack-version">HDP-2.2.4.2</property>
+ </check-properties>
+ <check-properties name="org.apache.ambari.server.checks.HiveDynamicServiceDiscoveryCheck">
+ <property name="min-failure-stack-version">HDP-2.3.0.0</property>
+ </check-properties>
+ </configuration>
</prerequisite-checks>
+
<skip-failures>false</skip-failures>
<skip-service-check-failures>false</skip-service-check-failures>
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
index 092ab31..25620af 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
@@ -22,6 +22,12 @@
<target-stack>HDP-2.3</target-stack>
<type>NON_ROLLING</type>
<prerequisite-checks>
+ <configuration>
+ <!-- Configuration properties for all pre-reqs including required pre-reqs -->
+ <check-properties name="org.apache.ambari.server.checks.HiveDynamicServiceDiscoveryCheck">
+ <property name="min-failure-stack-version">HDP-2.3.0.0</property>
+ </check-properties>
+ </configuration>
</prerequisite-checks>
<order>
<group xsi:type="cluster" name="PRE_CLUSTER" title="Prepare Upgrade">
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml
index 2787468..e419133 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml
@@ -24,17 +24,28 @@
<target-stack>HDP-2.3</target-stack>
<type>ROLLING</type>
<prerequisite-checks>
+ <!-- List of additional pre-req checks to run in addition to the required pre-reqs -->
<check>org.apache.ambari.server.checks.HiveMultipleMetastoreCheck</check>
<check>org.apache.ambari.server.checks.MapReduce2JobHistoryStatePreservingCheck</check>
<check>org.apache.ambari.server.checks.SecondaryNamenodeDeletedCheck</check>
<check>org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheck</check>
<check>org.apache.ambari.server.checks.ServicesNamenodeHighAvailabilityCheck</check>
- <check>org.apache.ambari.server.checks.ServicesNamenodeTruncateCheck</check>
<check>org.apache.ambari.server.checks.ServicesTezDistributedCacheCheck</check>
<check>org.apache.ambari.server.checks.ServicesYarnWorkPreservingCheck</check>
<check>org.apache.ambari.server.checks.YarnRMHighAvailabilityCheck</check>
<check>org.apache.ambari.server.checks.YarnTimelineServerStatePreservingCheck</check>
+
+ <configuration>
+ <!-- Configuration properties for all pre-reqs including required pre-reqs -->
+ <check-properties name="org.apache.ambari.server.checks.YarnTimelineServerStatePreservingCheck">
+ <property name="min-applicable-stack-version">HDP-2.2.4.2</property>
+ </check-properties>
+ <check-properties name="org.apache.ambari.server.checks.HiveDynamicServiceDiscoveryCheck">
+ <property name="min-failure-stack-version">HDP-2.3.0.0</property>
+ </check-properties>
+ </configuration>
</prerequisite-checks>
+
<order>
<group xsi:type="cluster" name="PRE_CLUSTER" title="Prepare Upgrade">
<direction>UPGRADE</direction>
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/test/java/org/apache/ambari/server/checks/HiveDynamicServiceDiscoveryCheckTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/HiveDynamicServiceDiscoveryCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/HiveDynamicServiceDiscoveryCheckTest.java
index b4bec49..047c8f7 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/checks/HiveDynamicServiceDiscoveryCheckTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/HiveDynamicServiceDiscoveryCheckTest.java
@@ -29,6 +29,7 @@ import org.apache.ambari.server.state.DesiredConfig;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.stack.PrereqCheckStatus;
import org.apache.ambari.server.state.stack.PrerequisiteCheck;
+import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -78,8 +79,16 @@ public class HiveDynamicServiceDiscoveryCheckTest {
Mockito.when(cluster.getConfig(Mockito.anyString(), Mockito.anyString())).thenReturn(config);
final Map<String, String> properties = new HashMap<String, String>();
Mockito.when(config.getProperties()).thenReturn(properties);
+
+ Map<String, String> checkProperties = new HashMap<String, String>();
+ checkProperties.put("min-failure-stack-version","HDP-2.3.0.0");
+ PrerequisiteCheckConfig prerequisiteCheckConfig = Mockito.mock(PrerequisiteCheckConfig.class);
+ Mockito.when(prerequisiteCheckConfig.getCheckProperties(
+ m_check.getClass().getName())).thenReturn(checkProperties);
+
PrerequisiteCheck check = new PrerequisiteCheck(null, null);
PrereqCheckRequest request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
// Check HDP-2.2.x => HDP-2.2.y
request.setSourceStackId(new StackId("HDP-2.2.4.2"));
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/test/java/org/apache/ambari/server/checks/MapReduce2JobHistoryStatePreservingCheckTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/MapReduce2JobHistoryStatePreservingCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/MapReduce2JobHistoryStatePreservingCheckTest.java
index c1b57fb..0ee00d5 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/checks/MapReduce2JobHistoryStatePreservingCheckTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/MapReduce2JobHistoryStatePreservingCheckTest.java
@@ -30,6 +30,7 @@ import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.stack.PrereqCheckStatus;
import org.apache.ambari.server.state.stack.PrerequisiteCheck;
+import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -90,18 +91,6 @@ public class MapReduce2JobHistoryStatePreservingCheckTest {
// MAPREDUCE2 installed
services.put("MAPREDUCE2", Mockito.mock(Service.class));
Assert.assertTrue(m_check.isApplicable(request));
-
- // Should not be supported for any upgrade from version less than 2.3.0.0
- request.setTargetStackId(new StackId("HDP", "2.2.0.1"));
- Assert.assertFalse(m_check.isApplicable(request));
-
- request.setSourceStackId(new StackId("HDP", "2.2.0.1"));
- request.setTargetStackId(new StackId("HDP", "2.3.0.0"));
- Assert.assertFalse(m_check.isApplicable(request));
-
- request.setSourceStackId(new StackId("HDP", "2.2.0.1"));
- request.setTargetStackId(new StackId("HDP", "2.2.1.0"));
- Assert.assertFalse(m_check.isApplicable(request));
}
@Test
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheckTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheckTest.java
index a7c6d58..77d3469 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheckTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheckTest.java
@@ -20,7 +20,6 @@ package org.apache.ambari.server.checks;
import java.util.HashMap;
import java.util.Map;
-import org.apache.ambari.server.ServiceNotFoundException;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.PrereqCheckRequest;
import org.apache.ambari.server.state.Cluster;
@@ -30,6 +29,7 @@ import org.apache.ambari.server.state.DesiredConfig;
import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.stack.PrereqCheckStatus;
import org.apache.ambari.server.state.stack.PrerequisiteCheck;
+import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -144,4 +144,116 @@ public class ServicesMapReduceDistributedCacheCheckTest {
servicesMapReduceDistributedCacheCheck.perform(check, new PrereqCheckRequest("cluster"));
Assert.assertEquals(PrereqCheckStatus.FAIL, check.getStatus());
}
+
+ @Test
+ public void testPerformWithCheckConfig() throws Exception {
+ final Cluster cluster = Mockito.mock(Cluster.class);
+ Mockito.when(cluster.getClusterId()).thenReturn(1L);
+ Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster);
+
+ final DesiredConfig desiredConfig = Mockito.mock(DesiredConfig.class);
+ Mockito.when(desiredConfig.getTag()).thenReturn("tag");
+ Map<String, DesiredConfig> configMap = new HashMap<String, DesiredConfig>();
+ configMap.put("mapred-site", desiredConfig);
+ configMap.put("core-site", desiredConfig);
+ Mockito.when(cluster.getDesiredConfigs()).thenReturn(configMap);
+ final Config config = Mockito.mock(Config.class);
+ Mockito.when(cluster.getConfig(Mockito.anyString(), Mockito.anyString())).thenReturn(config);
+ final Map<String, String> properties = new HashMap<String, String>();
+ Mockito.when(config.getProperties()).thenReturn(properties);
+
+ Map<String, String> checkProperties = new HashMap<String, String>();
+ checkProperties.put("dfs-protocols-regex","^([^:]*dfs|wasb|ecs):.*");
+ PrerequisiteCheckConfig prerequisiteCheckConfig = Mockito.mock(PrerequisiteCheckConfig.class);
+ Mockito.when(prerequisiteCheckConfig.getCheckProperties(
+ servicesMapReduceDistributedCacheCheck.getClass().getName())).thenReturn(checkProperties);
+
+ PrereqCheckRequest request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ PrerequisiteCheck check = new PrerequisiteCheck(null, null);
+ servicesMapReduceDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.FAIL, check.getStatus());
+
+ properties.put("fs.defaultFS", "anything");
+ properties.put("mapreduce.application.framework.path", "hdfs://some/path");
+ properties.put("mapreduce.application.classpath", "anything");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesMapReduceDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ properties.put("fs.defaultFS", "anything");
+ properties.put("mapreduce.application.framework.path", "dfs://some/path");
+ properties.put("mapreduce.application.classpath", "anything");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesMapReduceDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ properties.put("fs.defaultFS", "anything");
+ properties.put("mapreduce.application.framework.path", "wasb://some/path");
+ properties.put("mapreduce.application.classpath", "anything");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesMapReduceDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ properties.put("fs.defaultFS", "anything");
+ properties.put("mapreduce.application.framework.path", "ecs://some/path");
+ properties.put("mapreduce.application.classpath", "anything");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesMapReduceDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ properties.put("fs.defaultFS", "hdfs://ha");
+ properties.put("mapreduce.application.framework.path", "/some/path");
+ properties.put("mapreduce.application.classpath", "anything");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesMapReduceDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ properties.put("fs.defaultFS", "dfs://ha");
+ properties.put("mapreduce.application.framework.path", "/some/path");
+ properties.put("mapreduce.application.classpath", "anything");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesMapReduceDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ properties.put("fs.defaultFS", "wasb://ha");
+ properties.put("mapreduce.application.framework.path", "/some/path");
+ properties.put("mapreduce.application.classpath", "anything");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesMapReduceDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ properties.put("fs.defaultFS", "ecs://ha");
+ properties.put("mapreduce.application.framework.path", "/some/path");
+ properties.put("mapreduce.application.classpath", "anything");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesMapReduceDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ // Fail due to no dfs
+ properties.put("fs.defaultFS", "anything");
+ properties.put("mapreduce.application.framework.path", "/some/path");
+ properties.put("mapreduce.application.classpath", "anything");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesMapReduceDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.FAIL, check.getStatus());
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheckTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheckTest.java
index 9fec6f1..7255ddc 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheckTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheckTest.java
@@ -34,6 +34,7 @@ import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.stack.PrereqCheckStatus;
import org.apache.ambari.server.state.stack.PrerequisiteCheck;
+import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
import org.easymock.EasyMock;
import org.junit.Assert;
import org.junit.Before;
@@ -111,13 +112,19 @@ public class ServicesNamenodeTruncateCheckTest {
m_check.perform(check, request);
assertEquals(PrereqCheckStatus.FAIL, check.getStatus());
- // Check HDP-2.3.x => HDP-2.3.y is PASS
- request.setSourceStackId(new StackId("HDP-2.3.4.2"));
- request.setTargetStackId(new StackId("HDP-2.3.8.4"));
+ m_configMap.put("dfs.allow.truncate", "false");
check = new PrerequisiteCheck(null, null);
m_check.perform(check, request);
assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+ // Check HDP-2.2.x => HDP-2.3.y is FAIL
+ m_configMap.put("dfs.allow.truncate", "true");
+ request.setSourceStackId(new StackId("HDP-2.2.4.2"));
+ request.setTargetStackId(new StackId("HDP-2.3.8.4"));
+ check = new PrerequisiteCheck(null, null);
+ m_check.perform(check, request);
+ assertEquals(PrereqCheckStatus.FAIL, check.getStatus());
+
m_configMap.put("dfs.allow.truncate", "false");
check = new PrerequisiteCheck(null, null);
m_check.perform(check, request);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheckTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheckTest.java
index d70d575..49db159 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheckTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheckTest.java
@@ -20,7 +20,6 @@ package org.apache.ambari.server.checks;
import java.util.HashMap;
import java.util.Map;
-import org.apache.ambari.server.ServiceNotFoundException;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.PrereqCheckRequest;
import org.apache.ambari.server.state.Cluster;
@@ -30,6 +29,7 @@ import org.apache.ambari.server.state.DesiredConfig;
import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.stack.PrereqCheckStatus;
import org.apache.ambari.server.state.stack.PrerequisiteCheck;
+import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -162,4 +162,138 @@ public class ServicesTezDistributedCacheCheckTest {
servicesTezDistributedCacheCheck.perform(check, new PrereqCheckRequest("cluster"));
Assert.assertEquals(PrereqCheckStatus.FAIL, check.getStatus());
}
+
+ @Test
+ public void testPerformWithCheckConfig() throws Exception {
+ final Cluster cluster = Mockito.mock(Cluster.class);
+ Mockito.when(cluster.getClusterId()).thenReturn(1L);
+ Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster);
+
+ final DesiredConfig desiredConfig = Mockito.mock(DesiredConfig.class);
+ Mockito.when(desiredConfig.getTag()).thenReturn("tag");
+ Map<String, DesiredConfig> configMap = new HashMap<String, DesiredConfig>();
+ configMap.put("tez-site", desiredConfig);
+ configMap.put("core-site", desiredConfig);
+ Mockito.when(cluster.getDesiredConfigs()).thenReturn(configMap);
+ final Config config = Mockito.mock(Config.class);
+ Mockito.when(cluster.getConfig(Mockito.anyString(), Mockito.anyString())).thenReturn(config);
+ final Map<String, String> properties = new HashMap<String, String>();
+ Mockito.when(config.getProperties()).thenReturn(properties);
+
+ Map<String, String> checkProperties = new HashMap<String, String>();
+ checkProperties.put("dfs-protocols-regex","^([^:]*dfs|wasb|ecs):.*");
+ PrerequisiteCheckConfig prerequisiteCheckConfig = Mockito.mock(PrerequisiteCheckConfig.class);
+ Mockito.when(prerequisiteCheckConfig.getCheckProperties(
+ servicesTezDistributedCacheCheck.getClass().getName())).thenReturn(checkProperties);
+
+ PrereqCheckRequest request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ PrerequisiteCheck check = new PrerequisiteCheck(null, null);
+
+ servicesTezDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.FAIL, check.getStatus());
+
+ properties.put("fs.defaultFS", "anything");
+ properties.put("tez.lib.uris", "hdfs://some/path/to/archive.tar.gz");
+ properties.put("tez.use.cluster.hadoop-libs", "false");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesTezDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ properties.put("fs.defaultFS", "anything");
+ properties.put("tez.lib.uris", "dfs://some/path/to/archive.tar.gz");
+ properties.put("tez.use.cluster.hadoop-libs", "false");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesTezDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ properties.put("fs.defaultFS", "anything");
+ properties.put("tez.lib.uris", "wasb://some/path/to/archive.tar.gz");
+ properties.put("tez.use.cluster.hadoop-libs", "false");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesTezDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ properties.put("fs.defaultFS", "anything");
+ properties.put("tez.lib.uris", "ecs://some/path/to/archive.tar.gz");
+ properties.put("tez.use.cluster.hadoop-libs", "false");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesTezDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ properties.put("fs.defaultFS", "dfs://ha");
+ properties.put("tez.lib.uris", "/some/path/to/archive.tar.gz");
+ properties.put("tez.use.cluster.hadoop-libs", "false");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesTezDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ properties.put("fs.defaultFS", "hdfs://ha");
+ properties.put("tez.lib.uris", "/some/path/to/archive.tar.gz");
+ properties.put("tez.use.cluster.hadoop-libs", "false");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesTezDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ properties.put("fs.defaultFS", "wasb://ha");
+ properties.put("tez.lib.uris", "/some/path/to/archive.tar.gz");
+ properties.put("tez.use.cluster.hadoop-libs", "false");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesTezDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ properties.put("fs.defaultFS", "ecs://ha");
+ properties.put("tez.lib.uris", "/some/path/to/archive.tar.gz");
+ properties.put("tez.use.cluster.hadoop-libs", "false");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesTezDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus());
+
+ // Fail due to no DFS
+ properties.put("fs.defaultFS", "anything");
+ properties.put("tez.lib.uris", "/some/path/to/archive.tar.gz");
+ properties.put("tez.use.cluster.hadoop-libs", "false");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesTezDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.FAIL, check.getStatus());
+
+ // Fail due to no tar.gz
+ properties.put("fs.defaultFS", "hdfs://ha");
+ properties.put("tez.lib.uris", "/some/path/to/archive.log");
+ properties.put("tez.use.cluster.hadoop-libs", "false");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesTezDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.FAIL, check.getStatus());
+
+ // Fail due to property set to true
+ properties.put("fs.defaultFS", "hdfs://ha");
+ properties.put("tez.lib.uris", "/some/path/to/archive.tar.gz");
+ properties.put("tez.use.cluster.hadoop-libs", "true");
+ request = new PrereqCheckRequest("cluster");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
+ check = new PrerequisiteCheck(null, null);
+ servicesTezDistributedCacheCheck.perform(check, request);
+ Assert.assertEquals(PrereqCheckStatus.FAIL, check.getStatus());
+
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java
index 06e0b11..1657722 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java
@@ -32,6 +32,7 @@ import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.stack.PrereqCheckStatus;
import org.apache.ambari.server.state.stack.PrerequisiteCheck;
+import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -85,8 +86,15 @@ public class YarnTimelineServerStatePreservingCheckTest {
Mockito.when(clusterVersionEntity.getRepositoryVersion()).thenReturn(repositoryVersionEntity);
Mockito.when(repositoryVersionEntity.getVersion()).thenReturn("2.2.4.2");
+ Map<String, String> checkProperties = new HashMap<String, String>();
+ checkProperties.put("min-applicable-stack-version","HDP-2.2.4.2");
+ PrerequisiteCheckConfig prerequisiteCheckConfig = Mockito.mock(PrerequisiteCheckConfig.class);
+ Mockito.when(prerequisiteCheckConfig.getCheckProperties(
+ m_check.getClass().getName())).thenReturn(checkProperties);
+
PrereqCheckRequest request = new PrereqCheckRequest("cluster");
request.setRepositoryVersion("2.3.0.0");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
// YARN not installed
Assert.assertFalse(m_check.isApplicable(request));
@@ -146,7 +154,15 @@ public class YarnTimelineServerStatePreservingCheckTest {
RepositoryVersionEntity repositoryVersionEntity = Mockito.mock(RepositoryVersionEntity.class);
Mockito.when(clusterVersionEntity.getRepositoryVersion()).thenReturn(repositoryVersionEntity);
Mockito.when(m_clusters.getCluster("c1")).thenReturn(cluster);
+
+ Map<String, String> checkProperties = new HashMap<String, String>();
+ checkProperties.put("min-applicable-stack-version","HDP-2.2.4.2");
+ PrerequisiteCheckConfig prerequisiteCheckConfig = Mockito.mock(PrerequisiteCheckConfig.class);
+ Mockito.when(prerequisiteCheckConfig.getCheckProperties(
+ m_check.getClass().getName())).thenReturn(checkProperties);
+
PrereqCheckRequest request = new PrereqCheckRequest("c1");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
// Check < 2.2.4.2
Mockito.when(repositoryVersionEntity.getVersion()).thenReturn("2.1.1.1");
@@ -186,7 +202,15 @@ public class YarnTimelineServerStatePreservingCheckTest {
RepositoryVersionEntity repositoryVersionEntity = Mockito.mock(RepositoryVersionEntity.class);
Mockito.when(clusterVersionEntity.getRepositoryVersion()).thenReturn(repositoryVersionEntity);
Mockito.when(m_clusters.getCluster("c1")).thenReturn(cluster);
+
+ Map<String, String> checkProperties = new HashMap<String, String>();
+ checkProperties.put("min-applicable-stack-version", "HDP-2.2.4.2");
+ PrerequisiteCheckConfig prerequisiteCheckConfig = Mockito.mock(PrerequisiteCheckConfig.class);
+ Mockito.when(prerequisiteCheckConfig.getCheckProperties(
+ m_check.getClass().getName())).thenReturn(checkProperties);
+
PrereqCheckRequest request = new PrereqCheckRequest("c1");
+ request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
Mockito.when(repositoryVersionEntity.getVersion()).thenReturn("2.3.0.1");
boolean isApplicable = m_check.isApplicable(request);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java
index 95b9522..15be8b4 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java
@@ -33,6 +33,7 @@ import java.util.Set;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
+import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig;
import org.apache.ambari.server.state.stack.UpgradePack.ProcessingComponent;
import org.apache.ambari.server.state.stack.upgrade.ClusterGrouping;
import org.apache.ambari.server.state.stack.upgrade.ClusterGrouping.ExecuteStage;
@@ -167,6 +168,27 @@ public class UpgradePackTest {
assertTrue(upgrades.containsKey("upgrade_test_checks"));
UpgradePack upgrade = upgrades.get("upgrade_test_checks");
+ PrerequisiteCheckConfig prerequisiteCheckConfig = upgrade.getPrerequisiteCheckConfig();
+ assertNotNull(prerequisiteCheckConfig);
+ assertNotNull(prerequisiteCheckConfig.globalProperties);
+ assertTrue(prerequisiteCheckConfig.getGlobalProperties().containsKey("global-property-1"));
+ assertEquals("global-value-1", prerequisiteCheckConfig.getGlobalProperties().get("global-property-1"));
+ assertNotNull(prerequisiteCheckConfig.prerequisiteCheckProperties);
+ assertEquals(2, prerequisiteCheckConfig.prerequisiteCheckProperties.size());
+ assertNotNull(prerequisiteCheckConfig.getCheckProperties(
+ "org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheck"));
+ assertTrue(prerequisiteCheckConfig.getCheckProperties(
+ "org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheck").containsKey("dfs-protocols-regex"));
+ assertEquals("^([^:]*dfs|wasb|ecs):.*", prerequisiteCheckConfig.getCheckProperties(
+ "org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheck").get("dfs-protocols-regex"));
+ assertNotNull(prerequisiteCheckConfig.getCheckProperties(
+ "org.apache.ambari.server.checks.ServicesTezDistributedCacheCheck"));
+ assertTrue(prerequisiteCheckConfig.getCheckProperties(
+ "org.apache.ambari.server.checks.ServicesTezDistributedCacheCheck").containsKey("dfs-protocols-regex"));
+ assertEquals("^([^:]*dfs|wasb|ecs):.*", prerequisiteCheckConfig.getCheckProperties(
+ "org.apache.ambari.server.checks.ServicesTezDistributedCacheCheck").get("dfs-protocols-regex"));
+
+
List<String> expected_up = Arrays.asList(
"PRE_CLUSTER",
"ZOOKEEPER",
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_checks.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_checks.xml b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_checks.xml
index 05d3db9..85736e1 100644
--- a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_checks.xml
+++ b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_checks.xml
@@ -30,7 +30,18 @@
<check>org.apache.ambari.server.checks.ServicesYarnWorkPreservingCheck</check>
<check>org.apache.ambari.server.checks.YarnRMHighAvailabilityCheck</check>
<check>org.apache.ambari.server.checks.YarnTimelineServerStatePreservingCheck</check>
+
+ <configuration>
+ <property name="global-property-1">global-value-1</property>
+ <check-properties name="org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheck">
+ <property name="dfs-protocols-regex">^([^:]*dfs|wasb|ecs):.*</property>
+ </check-properties>
+ <check-properties name="org.apache.ambari.server.checks.ServicesTezDistributedCacheCheck">
+ <property name="dfs-protocols-regex">^([^:]*dfs|wasb|ecs):.*</property>
+ </check-properties>
+ </configuration>
</prerequisite-checks>
+
<order>
<group xsi:type="cluster" name="PRE_CLUSTER" title="Pre Upgrade" stage="pre">
<execute-stage title="Confirm 1">
http://git-wip-us.apache.org/repos/asf/ambari/blob/a4fd7223/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_checks.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_checks.xml b/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_checks.xml
index 14c68be..fb03cb3 100644
--- a/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_checks.xml
+++ b/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_checks.xml
@@ -30,7 +30,18 @@
<check>org.apache.ambari.server.checks.ServicesYarnWorkPreservingCheck</check>
<check>org.apache.ambari.server.checks.YarnRMHighAvailabilityCheck</check>
<check>org.apache.ambari.server.checks.YarnTimelineServerStatePreservingCheck</check>
+
+ <configuration>
+ <property name="global-property-1">global-value-1</property>
+ <check-properties name="org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheck">
+ <property name="dfs-protocols-regex">^([^:]*dfs|wasb|ecs):.*</property>
+ </check-properties>
+ <check-properties name="org.apache.ambari.server.checks.ServicesTezDistributedCacheCheck">
+ <property name="dfs-protocols-regex">^([^:]*dfs|wasb|ecs):.*</property>
+ </check-properties>
+ </configuration>
</prerequisite-checks>
+
<order>
<group xsi:type="cluster" name="PRE_CLUSTER" title="Pre Upgrade" stage="pre">
<execute-stage title="Confirm 1">