AMBARI-21430 - Allow Multiple Versions of Stack Tools to Co-Exist (jonathanhurley)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/db550102 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/db550102 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/db550102 Branch: refs/heads/branch-2.5 Commit: db5501028767b779cf100e640146910a5cfdc60a Parents: f5b2198 Author: Jonathan Hurley <[email protected]> Authored: Fri Jul 7 11:43:35 2017 -0400 Committer: Jonathan Hurley <[email protected]> Committed: Fri Jul 7 11:43:35 2017 -0400 ---------------------------------------------------------------------- .../libraries/functions/stack_features.py | 13 + .../libraries/functions/stack_tools.py | 39 + .../libraries/script/script.py | 19 +- .../ClusterStackVersionResourceProvider.java | 157 +++- .../ambari/server/state/ConfigHelper.java | 5 +- .../server/upgrade/UpgradeCatalog252.java | 63 +- .../package/alerts/alert_hive_metastore.py | 11 +- .../package/alerts/alert_llap_app_status.py | 12 +- .../package/alerts/alert_check_oozie_server.py | 8 +- .../resources/host_scripts/alert_disk_space.py | 10 +- .../host_scripts/alert_version_select.py | 8 +- .../4.0/configuration/cluster-env.xml | 19 +- .../4.0/properties/stack_features.json | 422 ++++----- .../BigInsights/4.0/properties/stack_tools.json | 14 +- .../HDP/2.0.6/configuration/cluster-env.xml | 16 +- .../HDP/2.0.6/properties/stack_features.json | 852 ++++++++++--------- .../HDP/2.0.6/properties/stack_tools.json | 16 +- .../PERF/1.0/configuration/cluster-env.xml | 16 +- .../PERF/1.0/properties/stack_features.json | 38 +- .../stacks/PERF/1.0/properties/stack_tools.json | 16 +- 20 files changed, 1036 insertions(+), 718 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py b/ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py index 2b3df5f..7811e26 100644 --- a/ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py +++ b/ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py @@ -42,6 +42,12 @@ def check_stack_feature(stack_feature, stack_version): from resource_management.libraries.functions.default import default from resource_management.libraries.functions.version import compare_versions + + stack_name = default("/hostLevelParams/stack_name", None) + if stack_name is None: + Logger.warning("Cannot find the stack name in the command. Stack features cannot be loaded") + return False + stack_features_config = default("/configurations/cluster-env/stack_features", None) if not stack_version: @@ -50,6 +56,13 @@ def check_stack_feature(stack_feature, stack_version): if stack_features_config: data = json.loads(stack_features_config) + + if stack_name not in data: + Logger.warning("Cannot find stack features for the stack named {0}".format(stack_name)) + return False + + data = data[stack_name] + for feature in data["stack_features"]: if feature["name"] == stack_feature: if "min_version" in feature: http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-common/src/main/python/resource_management/libraries/functions/stack_tools.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/stack_tools.py b/ambari-common/src/main/python/resource_management/libraries/functions/stack_tools.py index 02ae62d..420ae11 100644 --- a/ambari-common/src/main/python/resource_management/libraries/functions/stack_tools.py +++ b/ambari-common/src/main/python/resource_management/libraries/functions/stack_tools.py @@ -39,15 +39,33 @@ def get_stack_tool(name): :return: tool_name, tool_path, tool_package """ from resource_management.libraries.functions.default import default + + stack_name = default("/hostLevelParams/stack_name", None) + if stack_name is None: + Logger.warning("Cannot find the stack name in the command. Stack tools cannot be loaded") + return (None, None, None) + stack_tools = None stack_tools_config = default("/configurations/cluster-env/stack_tools", None) if stack_tools_config: stack_tools = json.loads(stack_tools_config) + if stack_tools is None: + Logger.warning("The stack tools could not be found in cluster-env") + return (None, None, None) + + if stack_name not in stack_tools: + Logger.warning("Cannot find stack tools for the stack named {0}".format(stack_name)) + return (None, None, None) + + # load the stack tooks keyed by the stack name + stack_tools = stack_tools[stack_name] + if not stack_tools or not name or name.lower() not in stack_tools: Logger.warning("Cannot find config for {0} stack tool in {1}".format(str(name), str(stack_tools))) return (None, None, None) + tool_config = stack_tools[name.lower()] # Return fixed length (tool_name, tool_path tool_package) tuple @@ -81,3 +99,24 @@ def get_stack_tool_package(name): """ (tool_name, tool_path, tool_package) = get_stack_tool(name) return tool_package + + +def get_stack_root(stack_name, stack_root_json): + """ + Get the stack-specific install root directory from the raw, JSON-escaped properties. + :param stack_name: + :param stack_root_json: + :return: stack_root + """ + from resource_management.libraries.functions.default import default + + if stack_root_json is None: + return "/usr/{0}".format(stack_name.lower()) + + stack_root = json.loads(stack_root_json) + + if stack_name not in stack_root: + Logger.warning("Cannot determine stack root for stack named {0}".format(stack_name)) + return "/usr/{0}".format(stack_name.lower()) + + return stack_root[stack_name] http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-common/src/main/python/resource_management/libraries/script/script.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/libraries/script/script.py b/ambari-common/src/main/python/resource_management/libraries/script/script.py index 04928de..0df6900 100644 --- a/ambari-common/src/main/python/resource_management/libraries/script/script.py +++ b/ambari-common/src/main/python/resource_management/libraries/script/script.py @@ -553,7 +553,11 @@ class Script(object): :return: a stack name or None """ from resource_management.libraries.functions.default import default - return default("/hostLevelParams/stack_name", "HDP") + stack_name = default("/hostLevelParams/stack_name", None) + if stack_name is None: + stack_name = default("/configurations/cluster-env/stack_name", "HDP") + + return stack_name @staticmethod def get_stack_root(): @@ -563,7 +567,18 @@ class Script(object): """ from resource_management.libraries.functions.default import default stack_name = Script.get_stack_name() - return default("/configurations/cluster-env/stack_root", "/usr/{0}".format(stack_name.lower())) + stack_root_json = default("/configurations/cluster-env/stack_root", None) + + if stack_root_json is None: + return "/usr/{0}".format(stack_name.lower()) + + stack_root = json.loads(stack_root_json) + + if stack_name not in stack_root: + Logger.warning("Cannot determine stack root for stack named {0}".format(stack_name)) + return "/usr/{0}".format(stack_name.lower()) + + return stack_root[stack_name] @staticmethod def get_stack_version(): http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/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 64e0b14..0300672 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 @@ -76,6 +76,8 @@ import org.apache.ambari.server.serveraction.upgrades.FinalizeUpgradeAction; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.ComponentInfo; +import org.apache.ambari.server.state.Config; +import org.apache.ambari.server.state.ConfigHelper; import org.apache.ambari.server.state.Host; import org.apache.ambari.server.state.MaintenanceState; import org.apache.ambari.server.state.RepositoryVersionState; @@ -195,6 +197,13 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou private static HostComponentStateDAO hostComponentStateDAO; /** + * Used for updating the existing stack tools with those of the stack being + * distributed. + */ + @Inject + private static ConfigHelper configHelper; + + /** * We have to include such a hack here, because if we * make finalizeUpgradeAction field static and request injection * for it, there will be a circle dependency error @@ -216,11 +225,11 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou @Override public Set<Resource> getResourcesAuthorized(Request request, Predicate predicate) throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException { - final Set<Resource> resources = new HashSet<Resource>(); + final Set<Resource> resources = new HashSet<>(); final Set<String> requestedIds = getRequestPropertyIds(request, predicate); final Set<Map<String, Object>> propertyMaps = getPropertyMaps(predicate); - List<ClusterVersionEntity> requestedEntities = new ArrayList<ClusterVersionEntity>(); + List<ClusterVersionEntity> requestedEntities = new ArrayList<>(); for (Map<String, Object> propertyMap: propertyMaps) { final String clusterName = propertyMap.get(CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID).toString(); final Long id; @@ -244,7 +253,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou for (ClusterVersionEntity entity: requestedEntities) { final Resource resource = new ResourceImpl(Resource.Type.ClusterStackVersion); - final Map<String, List<String>> hostStates = new HashMap<String, List<String>>(); + final Map<String, List<String>> hostStates = new HashMap<>(); for (RepositoryVersionState state: RepositoryVersionState.values()) { hostStates.put(state.name(), new ArrayList<String>()); } @@ -295,12 +304,10 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou String clName; final String desiredRepoVersion; - String stackName; - String stackVersion; Map<String, Object> propertyMap = iterator.next(); - Set<String> requiredProperties = new HashSet<String>(); + Set<String> requiredProperties = new HashSet<>(); requiredProperties.add(CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID); requiredProperties.add(CLUSTER_STACK_VERSION_REPOSITORY_VERSION_PROPERTY_ID); requiredProperties.add(CLUSTER_STACK_VERSION_STACK_PROPERTY_ID); @@ -335,19 +342,29 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou cluster.getClusterName(), entity.getDirection().getText(false))); } - final StackId stackId; - if (propertyMap.containsKey(CLUSTER_STACK_VERSION_STACK_PROPERTY_ID) && - propertyMap.containsKey(CLUSTER_STACK_VERSION_VERSION_PROPERTY_ID)) { - stackName = (String) propertyMap.get(CLUSTER_STACK_VERSION_STACK_PROPERTY_ID); - stackVersion = (String) propertyMap.get(CLUSTER_STACK_VERSION_VERSION_PROPERTY_ID); - stackId = new StackId(stackName, stackVersion); - if (! ami.isSupportedStack(stackName, stackVersion)) { - throw new NoSuchParentResourceException(String.format("Stack %s is not supported", - stackId)); - } - } else { // Using stack that is current for cluster - StackId currentStackVersion = cluster.getCurrentStackVersion(); - stackId = currentStackVersion; + String stackName = (String) propertyMap.get(CLUSTER_STACK_VERSION_STACK_PROPERTY_ID); + String stackVersion = (String) propertyMap.get(CLUSTER_STACK_VERSION_VERSION_PROPERTY_ID); + if (StringUtils.isBlank(stackName) || StringUtils.isBlank(stackVersion)) { + String message = String.format( + "Both the %s and %s properties are required when distributing a new stack", + CLUSTER_STACK_VERSION_STACK_PROPERTY_ID, CLUSTER_STACK_VERSION_VERSION_PROPERTY_ID); + + throw new SystemException(message); + } + + final StackId stackId = new StackId(stackName, stackVersion); + + if (!ami.isSupportedStack(stackName, stackVersion)) { + throw new NoSuchParentResourceException(String.format("Stack %s is not supported", stackId)); + } + + // bootstrap the stack tools if necessary for the stack which is being + // distributed + try { + bootstrapStackTools(stackId, cluster); + } catch (AmbariException ambariException) { + throw new SystemException("Unable to modify stack tools for new stack being distributed", + ambariException); } RepositoryVersionEntity repoVersionEnt = repositoryVersionDAO.findByStackAndVersion( @@ -491,7 +508,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou // build the list of OS repos List<OperatingSystemEntity> operatingSystems = repoVersionEnt.getOperatingSystems(); - Map<String, List<RepositoryEntity>> perOsRepos = new HashMap<String, List<RepositoryEntity>>(); + Map<String, List<RepositoryEntity>> perOsRepos = new HashMap<>(); for (OperatingSystemEntity operatingSystem : operatingSystems) { if (operatingSystem.isAmbariManagedRepos()) { @@ -504,7 +521,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou RequestStageContainer req = createRequest(); Iterator<Host> hostIterator = hosts.iterator(); - Map<String, String> hostLevelParams = new HashMap<String, String>(); + Map<String, String> hostLevelParams = new HashMap<>(); hostLevelParams.put(JDK_LOCATION, getManagementController().getJdkResourceUrl()); String hostParamsJson = StageUtils.getGson().toJson(hostLevelParams); @@ -538,7 +555,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou boolean hasStage = false; - ArrayList<Stage> stages = new ArrayList<Stage>(batchCount); + ArrayList<Stage> stages = new ArrayList<>(batchCount); for (int batchId = 1; batchId <= batchCount; batchId++) { // Create next stage String stageName; @@ -618,8 +635,8 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou // determine packages for all services that are installed on host - List<ServiceOsSpecific.Package> packages = new ArrayList<ServiceOsSpecific.Package>(); - Set<String> servicesOnHost = new HashSet<String>(); + List<ServiceOsSpecific.Package> packages = new ArrayList<>(); + Set<String> servicesOnHost = new HashSet<>(); List<ServiceComponentHost> components = cluster.getServiceComponentHosts(host.getHostName()); for (ServiceComponentHost component : components) { if (repoServices.isEmpty() || repoServices.contains(component.getServiceName())) { @@ -670,7 +687,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou final String packageList = gson.toJson(packages); final String repoList = gson.toJson(repoInfo); - Map<String, String> params = new HashMap<String, String>(); + Map<String, String> params = new HashMap<>(); params.put("stack_id", stackId.getStackId()); params.put("repository_version", repoVersion.getVersion()); params.put("base_urls", repoList); @@ -787,7 +804,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou } Map<String, Object> propertyMap = iterator.next(); - Set<String> requiredProperties = new HashSet<String>(); + Set<String> requiredProperties = new HashSet<>(); requiredProperties.add(CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID); requiredProperties.add(CLUSTER_STACK_VERSION_REPOSITORY_VERSION_PROPERTY_ID); requiredProperties.add(CLUSTER_STACK_VERSION_STATE_PROPERTY_ID); @@ -826,7 +843,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou } if (!force) { - Map<String, String> args = new HashMap<String, String>(); + Map<String, String> args = new HashMap<>(); if (newStateStr.equals(RepositoryVersionState.CURRENT.toString())) { // Finalize upgrade workflow args.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY, "upgrade"); @@ -841,7 +858,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou // Get a host name to populate the hostrolecommand table's hostEntity. String defaultHostName; - ArrayList<Host> hosts = new ArrayList<Host>(cluster.getHosts()); + ArrayList<Host> hosts = new ArrayList<>(cluster.getHosts()); if (!hosts.isEmpty()) { Collections.sort(hosts); defaultHostName = hosts.get(0).getHostName(); @@ -976,4 +993,88 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou } + /** + * Ensures that the stack tools and stack features are set on + * {@link ConfigHelper#CLUSTER_ENV} for the stack of the repository being + * distributed. + * <p/> + * This step ensures that the new repository can be distributed with the + * correct tools. + * + * @param stackId + * @param cluster + * @throws AmbariException + */ + private void bootstrapStackTools(StackId stackId, Cluster cluster) throws AmbariException { + // if the stack name is the same as the cluster's current stack name, then + // there's no work to do + if (StringUtils.equals(stackId.getStackName(), + cluster.getCurrentStackVersion().getStackName())) { + return; + } + + // get the stack tools/features for the stack being distributed + Map<String, Map<String, String>> defaultStackConfigurationsByType = configHelper.getDefaultProperties( + stackId, cluster); + + Map<String, String> clusterEnvDefaults = defaultStackConfigurationsByType.get( + ConfigHelper.CLUSTER_ENV); + + Config clusterEnv = cluster.getDesiredConfigByType(ConfigHelper.CLUSTER_ENV); + Map<String, String> clusterEnvProperties = clusterEnv.getProperties(); + + // the 3 properties we need to check and update + Set<String> properties = Sets.newHashSet(ConfigHelper.CLUSTER_ENV_STACK_ROOT_PROPERTY, + ConfigHelper.CLUSTER_ENV_STACK_TOOLS_PROPERTY, + ConfigHelper.CLUSTER_ENV_STACK_FEATURES_PROPERTY); + + // any updates are stored here and merged into the existing config type + Map<String, String> updatedProperties = new HashMap<>(); + + for (String property : properties) { + // determine if the property exists in the stack being distributed (it + // kind of has to, but we'll be safe if it's not found) + String newStackDefaultJson = clusterEnvDefaults.get(property); + if (StringUtils.isBlank(newStackDefaultJson)) { + continue; + } + + String existingPropertyJson = clusterEnvProperties.get(property); + + // if the stack tools/features property doesn't exist, then just set the + // one from the new stack + if (StringUtils.isBlank(existingPropertyJson)) { + updatedProperties.put(property, newStackDefaultJson); + continue; + } + + // now is the hard part - we need to check to see if the new stack tools + // exists alongside the current tools and if it doesn't, then add the new + // tools in + Map<String, Map<Object, Object>> existingJson = gson.<Map<String, Map<Object, Object>>> fromJson( + existingPropertyJson, Map.class); + + if (existingJson.keySet().contains(stackId.getStackName())) { + continue; + } + + Map<String, Map<Object, Object>> newStackJsonAsObject = gson.<Map<String, Map<Object, Object>>> fromJson( + newStackDefaultJson, Map.class); + + existingJson.put(stackId.getStackName(), newStackJsonAsObject.get(stackId.getStackName())); + + String newJson = gson.toJson(existingJson); + updatedProperties.put(property, newJson); + } + + if (!updatedProperties.isEmpty()) { + AmbariManagementController amc = getManagementController(); + String serviceNote = String.format( + "Adding stack tools for %s while distributing a new repository", stackId.toString()); + + configHelper.updateConfigType(cluster, amc, clusterEnv.getType(), updatedProperties, null, + amc.getAuthName(), serviceNote); + } + + } } http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java index 13114dd..646e90c 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java @@ -31,7 +31,6 @@ import java.util.Set; import java.util.TreeMap; import java.util.concurrent.TimeUnit; -import com.google.common.base.Objects; import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.api.services.AmbariMetaInfo; import org.apache.ambari.server.configuration.Configuration; @@ -46,6 +45,7 @@ import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.base.Objects; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import com.google.common.collect.Maps; @@ -91,6 +91,7 @@ public class ConfigHelper { public static final String COMMAND_RETRY_MAX_TIME_IN_SEC_DEFAULT = "600"; public static final String CLUSTER_ENV_STACK_FEATURES_PROPERTY = "stack_features"; public static final String CLUSTER_ENV_STACK_TOOLS_PROPERTY = "stack_tools"; + public static final String CLUSTER_ENV_STACK_ROOT_PROPERTY = "stack_root"; public static final String HTTP_ONLY = "HTTP_ONLY"; public static final String HTTPS_ONLY = "HTTPS_ONLY"; @@ -652,7 +653,7 @@ public class ConfigHelper { } for (Service service : cluster.getServices().values()) { - Set<PropertyInfo> serviceProperties = new HashSet<PropertyInfo>(servicesMap.get(service.getName()).getProperties()); + Set<PropertyInfo> serviceProperties = new HashSet<>(servicesMap.get(service.getName()).getProperties()); for (PropertyInfo serviceProperty : serviceProperties) { if (serviceProperty.getPropertyTypes().contains(propertyType)) { String stackPropertyConfigType = fileNameToConfigType(serviceProperty.getFilename()); http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog252.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog252.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog252.java index 0ab8180..e7764b8 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog252.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog252.java @@ -18,10 +18,20 @@ package org.apache.ambari.server.upgrade; import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.orm.DBAccessor.DBColumnInfo; - +import org.apache.ambari.server.state.Cluster; +import org.apache.ambari.server.state.Clusters; +import org.apache.ambari.server.state.Config; +import org.apache.ambari.server.state.ConfigHelper; +import org.apache.ambari.server.state.PropertyInfo; +import org.apache.hadoop.metrics2.sink.relocated.commons.lang.StringUtils; + +import com.google.common.collect.Sets; import com.google.inject.Inject; import com.google.inject.Injector; @@ -42,6 +52,8 @@ public class UpgradeCatalog252 extends AbstractUpgradeCatalog { private static final String UPGRADE_ITEM_TABLE = "upgrade_item"; private static final String UPGRADE_ID_COLUMN = "upgrade_id"; + private static final String CLUSTER_ENV = "cluster-env"; + /** * Constructor. * @@ -89,6 +101,7 @@ public class UpgradeCatalog252 extends AbstractUpgradeCatalog { */ @Override protected void executeDMLUpdates() throws AmbariException, SQLException { + resetStackToolsAndFeatures(); } /** @@ -135,4 +148,52 @@ public class UpgradeCatalog252 extends AbstractUpgradeCatalog { dbAccessor.addFKConstraint(UPGRADE_TABLE, "FK_upgrade_to_repo_id", UPGRADE_TABLE_FROM_REPO_COLUMN, "repo_version", "repo_version_id", false); } + + /** + * Resets the following properties in {@code cluster-env} to their new + * defaults: + * <ul> + * <li>stack_root + * <li>stack_tools + * <li>stack_features + * <ul> + * + * @throws AmbariException + */ + private void resetStackToolsAndFeatures() throws AmbariException { + Set<String> propertiesToReset = Sets.newHashSet("stack_tools", "stack_features", "stack_root"); + + Clusters clusters = injector.getInstance(Clusters.class); + ConfigHelper configHelper = injector.getInstance(ConfigHelper.class); + + Map<String, Cluster> clusterMap = clusters.getClusters(); + for (Cluster cluster : clusterMap.values()) { + Config clusterEnv = cluster.getDesiredConfigByType(CLUSTER_ENV); + if (null == clusterEnv) { + continue; + } + + Map<String, String> newStackProperties = new HashMap<>(); + Set<PropertyInfo> stackProperties = configHelper.getStackProperties(cluster); + if (null == stackProperties) { + continue; + } + + for (PropertyInfo propertyInfo : stackProperties) { + String fileName = propertyInfo.getFilename(); + if (StringUtils.isEmpty(fileName)) { + continue; + } + + if (StringUtils.equals(ConfigHelper.fileNameToConfigType(fileName), CLUSTER_ENV)) { + String stackPropertyName = propertyInfo.getName(); + if (propertiesToReset.contains(stackPropertyName)) { + newStackProperties.put(stackPropertyName, propertyInfo.getValue()); + } + } + } + + updateConfigurationPropertiesForCluster(cluster, CLUSTER_ENV, newStackProperties, true, false); + } + } } http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/alerts/alert_hive_metastore.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/alerts/alert_hive_metastore.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/alerts/alert_hive_metastore.py index 32df7d3..5b4fd68 100644 --- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/alerts/alert_hive_metastore.py +++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/alerts/alert_hive_metastore.py @@ -27,6 +27,7 @@ import logging from resource_management.core import global_lock from resource_management.libraries.functions import format from resource_management.libraries.functions import get_kinit_path +from resource_management.libraries.functions import stack_tools from resource_management.core.resources import Execute from resource_management.core.signal_utils import TerminateStrategy from ambari_commons.os_check import OSConst @@ -56,6 +57,7 @@ SMOKEUSER_PRINCIPAL_DEFAULT = '[email protected]' SMOKEUSER_SCRIPT_PARAM_KEY = 'default.smoke.user' SMOKEUSER_DEFAULT = 'ambari-qa' +STACK_NAME = '{{cluster-env/stack_name}}' STACK_ROOT = '{{cluster-env/stack_root}}' HIVE_CONF_DIR_LEGACY = '/etc/hive/conf.server' @@ -78,7 +80,7 @@ def get_tokens(): """ return (SECURITY_ENABLED_KEY,SMOKEUSER_KEYTAB_KEY,SMOKEUSER_PRINCIPAL_KEY, HIVE_METASTORE_URIS_KEY, SMOKEUSER_KEY, KERBEROS_EXECUTABLE_SEARCH_PATHS_KEY, - STACK_ROOT) + STACK_NAME, STACK_ROOT) @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY) def get_tokens(): @@ -175,9 +177,10 @@ def execute(configurations={}, parameters={}, host_name=None): bin_dir = HIVE_BIN_DIR_LEGACY - if STACK_ROOT in configurations: - hive_conf_dir = configurations[STACK_ROOT] + format("/current/hive-metastore/conf") - hive_bin_dir = configurations[STACK_ROOT] + format("/current/hive-metastore/bin") + if STACK_NAME in configurations and STACK_ROOT in configurations: + stack_root = stack_tools.get_stack_root(configurations[STACK_NAME], configurations[STACK_ROOT]) + hive_conf_dir = stack_root + format("/current/hive-metastore/conf") + hive_bin_dir = stack_root + format("/current/hive-metastore/bin") if os.path.exists(hive_conf_dir): conf_dir = hive_conf_dir http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/alerts/alert_llap_app_status.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/alerts/alert_llap_app_status.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/alerts/alert_llap_app_status.py index 98d1899..e46c896 100644 --- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/alerts/alert_llap_app_status.py +++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/alerts/alert_llap_app_status.py @@ -26,7 +26,7 @@ import subprocess from resource_management.libraries.functions import format from resource_management.libraries.functions import get_kinit_path -from ambari_commons.os_check import OSConst +from resource_management.libraries.functions import stack_tools from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl from resource_management.core import shell from resource_management.core.resources import Execute @@ -58,6 +58,7 @@ HIVE_AUTHENTICATION_DEFAULT = 'NOSASL' HIVE_USER_KEY = '{{hive-env/hive_user}}' HIVE_USER_DEFAULT = 'default.smoke.user' +STACK_NAME = '{{cluster-env/stack_name}}' STACK_ROOT = '{{cluster-env/stack_root}}' STACK_ROOT_DEFAULT = Script.get_stack_root() @@ -88,7 +89,7 @@ def get_tokens(): to build the dictionary passed into execute """ return (SECURITY_ENABLED_KEY, KERBEROS_EXECUTABLE_SEARCH_PATHS_KEY, HIVE_PRINCIPAL_KEY, HIVE_PRINCIPAL_KEYTAB_KEY, - HIVE_USER_KEY, STACK_ROOT, LLAP_APP_NAME_KEY) + HIVE_USER_KEY, STACK_NAME, STACK_ROOT, LLAP_APP_NAME_KEY) @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT) @@ -159,8 +160,11 @@ def execute(configurations={}, parameters={}, host_name=None): start_time = time.time() - if STACK_ROOT in configurations: - llap_status_cmd = configurations[STACK_ROOT] + format("/current/hive-server2-hive2/bin/hive --service llapstatus --name {llap_app_name} --findAppTimeout {LLAP_APP_STATUS_CMD_TIMEOUT}") + if STACK_NAME in configurations and STACK_ROOT in configurations: + stack_root = stack_tools.get_stack_root(configurations[STACK_NAME], + configurations[STACK_ROOT]) + + llap_status_cmd = stack_root + format("/current/hive-server2-hive2/bin/hive --service llapstatus --name {llap_app_name} --findAppTimeout {LLAP_APP_STATUS_CMD_TIMEOUT}") else: llap_status_cmd = STACK_ROOT_DEFAULT + format("/current/hive-server2-hive2/bin/hive --service llapstatus --name {llap_app_name} --findAppTimeout {LLAP_APP_STATUS_CMD_TIMEOUT}") http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/alerts/alert_check_oozie_server.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/alerts/alert_check_oozie_server.py b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/alerts/alert_check_oozie_server.py index 0e9fe74..54eef18 100644 --- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/alerts/alert_check_oozie_server.py +++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/alerts/alert_check_oozie_server.py @@ -26,6 +26,7 @@ from resource_management.core.resources import Execute from resource_management.libraries.functions import format from resource_management.libraries.functions import get_kinit_path from resource_management.libraries.functions import get_klist_path +from resource_management.libraries.functions import stack_tools from ambari_commons.os_check import OSConst, OSCheck from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl from urlparse import urlparse @@ -66,6 +67,7 @@ USER_PRINCIPAL_DEFAULT = '[email protected]' # default user USER_DEFAULT = 'oozie' +STACK_NAME_KEY = '{{cluster-env/stack_name}}' STACK_ROOT_KEY = '{{cluster-env/stack_root}}' STACK_ROOT_DEFAULT = '/usr/hdp' @@ -86,7 +88,7 @@ def get_tokens(): to build the dictionary passed into execute """ return (OOZIE_URL_KEY, USER_PRINCIPAL_KEY, SECURITY_ENABLED, USER_KEYTAB_KEY, KERBEROS_EXECUTABLE_SEARCH_PATHS_KEY, - USER_KEY, OOZIE_HTTPS_PORT, OOZIE_ENV_CONTENT, STACK_ROOT_KEY) + USER_KEY, OOZIE_HTTPS_PORT, OOZIE_ENV_CONTENT, STACK_NAME_KEY, STACK_ROOT_KEY) @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY) def get_check_command(oozie_url, host_name, configurations): @@ -158,8 +160,8 @@ def get_check_command(oozie_url, host_name, configurations, parameters, only_kin # Configure stack root stack_root = STACK_ROOT_DEFAULT - if STACK_ROOT_KEY in configurations: - stack_root = configurations[STACK_ROOT_KEY].lower() + if STACK_NAME_KEY in configurations and STACK_ROOT_KEY in configurations: + stack_root = stack_tools.get_stack_root(configurations[STACK_NAME_KEY], configurations[STACK_ROOT_KEY]).lower() # oozie configuration directory using a symlink oozie_config_directory = OOZIE_CONF_DIR.replace(STACK_ROOT_PATTERN, stack_root) http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-server/src/main/resources/host_scripts/alert_disk_space.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/host_scripts/alert_disk_space.py b/ambari-server/src/main/resources/host_scripts/alert_disk_space.py index 4c5834f..f3c6406 100644 --- a/ambari-server/src/main/resources/host_scripts/alert_disk_space.py +++ b/ambari-server/src/main/resources/host_scripts/alert_disk_space.py @@ -23,6 +23,7 @@ import os import platform from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl from ambari_commons import OSConst +from resource_management.libraries.functions import stack_tools DiskInfo = collections.namedtuple('DiskInfo', 'total used free path') @@ -36,6 +37,7 @@ MIN_FREE_SPACE_DEFAULT = 5000000000L PERCENT_USED_WARNING_DEFAULT = 50 PERCENT_USED_CRITICAL_DEFAULT = 80 +STACK_NAME = '{{cluster-env/stack_name}}' STACK_ROOT = '{{cluster-env/stack_root}}' def get_tokens(): @@ -43,7 +45,7 @@ def get_tokens(): Returns a tuple of tokens in the format {{site/property}} that will be used to build the dictionary passed into execute """ - return (STACK_ROOT, ) + return (STACK_NAME, STACK_ROOT) @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT) @@ -64,10 +66,10 @@ def execute(configurations={}, parameters={}, host_name=None): if configurations is None: return (('UNKNOWN', ['There were no configurations supplied to the script.'])) - if not STACK_ROOT in configurations: - return (('STACK_ROOT', ['cluster-env/stack_root is not specified'])) + if not STACK_NAME in configurations or not STACK_ROOT in configurations: + return (('STACK_ROOT', ['cluster-env/stack_name and cluster-env/stack_root are required'])) - path = configurations[STACK_ROOT] + path = stack_tools.get_stack_root(configurations[STACK_NAME], configurations[STACK_ROOT]) try: disk_usage = _get_disk_usage(path) http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-server/src/main/resources/host_scripts/alert_version_select.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/host_scripts/alert_version_select.py b/ambari-server/src/main/resources/host_scripts/alert_version_select.py index f8755c9..49dee5b 100644 --- a/ambari-server/src/main/resources/host_scripts/alert_version_select.py +++ b/ambari-server/src/main/resources/host_scripts/alert_version_select.py @@ -31,6 +31,7 @@ RESULT_STATE_WARNING = 'WARNING' RESULT_STATE_CRITICAL = 'CRITICAL' RESULT_STATE_UNKNOWN = 'UNKNOWN' +STACK_NAME = '{{cluster-env/stack_name}}' STACK_TOOLS = '{{cluster-env/stack_tools}}' @@ -42,7 +43,7 @@ def get_tokens(): Returns a tuple of tokens in the format {{site/property}} that will be used to build the dictionary passed into execute """ - return (STACK_TOOLS,) + return (STACK_NAME, STACK_TOOLS) def execute(configurations={}, parameters={}, host_name=None): @@ -65,8 +66,10 @@ def execute(configurations={}, parameters={}, host_name=None): if STACK_TOOLS not in configurations: return (RESULT_STATE_UNKNOWN, ['{0} is a required parameter for the script'.format(STACK_TOOLS)]) + stack_name = Script.get_stack_name() + # Of the form, - # { "stack_selector": ["hdp-select", "/usr/bin/hdp-select", "hdp-select"], "conf_selector": ["conf-select", "/usr/bin/conf-select", "conf-select"] } + # { "HDP" : { "stack_selector": ["hdp-select", "/usr/bin/hdp-select", "hdp-select"], "conf_selector": ["conf-select", "/usr/bin/conf-select", "conf-select"] } } stack_tools_str = configurations[STACK_TOOLS] if stack_tools_str is None: @@ -75,6 +78,7 @@ def execute(configurations={}, parameters={}, host_name=None): distro_select = "unknown-distro-select" try: stack_tools = json.loads(stack_tools_str) + stack_tools = stack_tools[stack_name] distro_select = stack_tools["stack_selector"][0] except: pass http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-server/src/main/resources/stacks/BigInsights/4.0/configuration/cluster-env.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/BigInsights/4.0/configuration/cluster-env.xml b/ambari-server/src/main/resources/stacks/BigInsights/4.0/configuration/cluster-env.xml index 93c7948..2d11ef3 100755 --- a/ambari-server/src/main/resources/stacks/BigInsights/4.0/configuration/cluster-env.xml +++ b/ambari-server/src/main/resources/stacks/BigInsights/4.0/configuration/cluster-env.xml @@ -234,7 +234,20 @@ gpgcheck=0</value> </value-attributes> <on-ambari-upgrade add="true"/> </property> - + + <!-- Define stack_name property in the base stack. DO NOT override this property for each stack version --> + <property> + <name>stack_name</name> + <value>BigInsights</value> + <description>The name of the stack.</description> + <value-attributes> + <read-only>true</read-only> + <overridable>false</overridable> + <visible>false</visible> + </value-attributes> + <on-ambari-upgrade add="true"/> + </property> + <!-- Define stack_tools property in the base stack. DO NOT override this property for each stack version --> <property> <name>stack_tools</name> @@ -267,8 +280,8 @@ gpgcheck=0</value> </property> <property> <name>stack_root</name> - <value>/usr/iop</value> - <description>Stack root folder</description> + <value>{"BigInsights":"/usr/iop"}</value> + <description>JSON which defines the stack root by stack name</description> <value-attributes> <read-only>true</read-only> <overridable>false</overridable> http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-server/src/main/resources/stacks/BigInsights/4.0/properties/stack_features.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/BigInsights/4.0/properties/stack_features.json b/ambari-server/src/main/resources/stacks/BigInsights/4.0/properties/stack_features.json index 4627e73..a6672e4 100755 --- a/ambari-server/src/main/resources/stacks/BigInsights/4.0/properties/stack_features.json +++ b/ambari-server/src/main/resources/stacks/BigInsights/4.0/properties/stack_features.json @@ -1,212 +1,214 @@ { - "stack_features": [ - { - "name": "snappy", - "description": "Snappy compressor/decompressor support", - "max_version": "4.0.0.0" - }, - { - "name": "lzo", - "description": "LZO libraries support", - "min_version": "4.1.0.0" - }, - { - "name": "express_upgrade", - "description": "Express upgrade support", - "min_version": "4.2.0.0" - }, - { - "name": "rolling_upgrade", - "description": "Rolling upgrade support", - "min_version": "4.1.0.0" - }, - { - "name": "config_versioning", - "description": "Configurable versions support", - "min_version": "4.1.0.0" - }, - { - "name": "datanode_non_root", - "description": "DataNode running as non-root support (AMBARI-7615)", - "min_version": "4.1.0.0" - }, - { - "name": "remove_ranger_hdfs_plugin_env", - "description": "HDFS removes Ranger env files (AMBARI-14299)", - "min_version": "4.2.0.0" - }, - { - "name": "ranger", - "description": "Ranger Service support", - "min_version": "4.2.0.0" - }, - { - "name": "ranger_tagsync_component", - "description": "Ranger Tagsync component support (AMBARI-14383)", - "min_version": "4.2.5.0" - }, - { - "name": "phoenix", - "description": "Phoenix Service support", - "min_version": "4.2.0.0" - }, - { - "name": "nfs", - "description": "NFS support", - "min_version": "4.1.0.0" - }, - { - "name": "timeline_state_store", - "description": "Yarn application timeline-service supports state store property (AMBARI-11442)", - "min_version": "4.0.0.0" - }, - { - "name": "copy_tarball_to_hdfs", - "description": "Copy tarball to HDFS support (AMBARI-12113)", - "min_version": "4.1.0.0" - }, - { - "name": "spark_16plus", - "description": "Spark 1.6+", - "min_version": "4.2.0.0" - }, - { - "name": "spark_thriftserver", - "description": "Spark Thrift Server", - "min_version": "4.2.0.0" - }, - { - "name": "create_kafka_broker_id", - "description": "Ambari should create Kafka Broker Id (AMBARI-12678)", - "min_version": "4.0.0.0", - "max_version": "4.2.0.0" - }, - { - "name": "kafka_listeners", - "description": "Kafka listeners (AMBARI-10984)", - "min_version": "4.2.0.0" - }, - { - "name": "kafka_kerberos", - "description": "Kafka Kerberos support (AMBARI-10984)", - "min_version": "4.1.0.0" - }, - { - "name": "ranger_usersync_non_root", - "description": "Ranger Usersync as non-root user (AMBARI-10416)", - "min_version": "4.1.0.0" - }, - { - "name": "ranger_audit_db_support", - "description": "Ranger Audit to DB support", - "min_version": "4.2.0.0", - "max_version": "4.2.0.0" - }, - { - "name": "knox_versioned_data_dir", - "description": "Use versioned data dir for Knox (AMBARI-13164)", - "min_version": "4.2.0.0" - }, - { - "name": "knox_sso_topology", - "description": "Knox SSO Topology support (AMBARI-13975)", - "min_version": "4.2.0.0" - }, - { - "name": "oozie_admin_user", - "description": "Oozie install user as an Oozie admin user (AMBARI-7976)", - "min_version": "4.0.0.0" - }, - { - "name": "oozie_setup_shared_lib", - "description": "Oozie setup tools used to shared Oozie lib to HDFS (AMBARI-7240)", - "min_version": "4.0.0.0" - }, - { - "name": "oozie_host_kerberos", - "description": "Oozie in secured clusters uses _HOST in Kerberos principal (AMBARI-9775)", - "min_version": "4.0.0.0", - "max_version": "4.1.0.0" - }, - { - "name": "hive_metastore_upgrade_schema", - "description": "Hive metastore upgrade schema support (AMBARI-11176)", - "min_version": "4.1.0.0" - }, - { - "name": "hive_server_interactive", - "description": "Hive server interactive support (AMBARI-15573)", - "min_version": "4.4.0.0" - }, - { - "name": "hive_webhcat_specific_configs", - "description": "Hive webhcat specific configurations support (AMBARI-12364)", - "min_version": "4.1.0.0" - }, - { - "name": "hive_purge_table", - "description": "Hive purge table support (AMBARI-12260)", - "min_version": "4.1.0.0" - }, - { - "name": "hive_server2_kerberized_env", - "description": "Hive server2 working on kerberized environment (AMBARI-13749)", - "max_version": "4.1.0.0" - }, - { - "name": "hive_env_heapsize", - "description": "Hive heapsize property defined in hive-env (AMBARI-12801)", - "min_version": "4.0.0.0" - }, - { - "name": "ranger_kms_hsm_support", - "description": "Ranger KMS HSM support (AMBARI-15752)", - "min_version": "4.2.5.0" - }, - { - "name": "ranger_log4j_support", - "description": "Ranger supporting log-4j properties (AMBARI-15681)", - "min_version": "4.2.5.0" - }, - { - "name": "ranger_kerberos_support", - "description": "Ranger Kerberos support", - "min_version": "4.2.5.0" - }, - { - "name": "hive_metastore_site_support", - "description": "Hive Metastore site support", - "min_version": "4.2.5.0" - }, - { - "name": "ranger_usersync_password_jceks", - "description": "Saving Ranger Usersync credentials in jceks", - "min_version": "4.2.5.0" - }, - { - "name": "ranger_install_logsearch_client", - "description": "LogSearch Service support", - "min_version": "4.2.5.0" - }, - { - "name": "hbase_home_directory", - "description": "Hbase home directory in HDFS needed for HBASE backup", - "min_version": "4.2.5.0" - }, - { - "name": "spark_livy", - "description": "Livy as slave component of spark", - "min_version": "4.4.0.0" - }, - { - "name": "ranger_pid_support", - "description": "Ranger Service support pid generation AMBARI-16756", - "min_version": "4.2.5.0" - }, - { - "name": "ranger_kms_pid_support", - "description": "Ranger KMS Service support pid generation", - "min_version": "4.2.5.0" - } - ] + "BigInsights": { + "stack_features": [ + { + "name": "snappy", + "description": "Snappy compressor/decompressor support", + "max_version": "4.0.0.0" + }, + { + "name": "lzo", + "description": "LZO libraries support", + "min_version": "4.1.0.0" + }, + { + "name": "express_upgrade", + "description": "Express upgrade support", + "min_version": "4.2.0.0" + }, + { + "name": "rolling_upgrade", + "description": "Rolling upgrade support", + "min_version": "4.1.0.0" + }, + { + "name": "config_versioning", + "description": "Configurable versions support", + "min_version": "4.1.0.0" + }, + { + "name": "datanode_non_root", + "description": "DataNode running as non-root support (AMBARI-7615)", + "min_version": "4.1.0.0" + }, + { + "name": "remove_ranger_hdfs_plugin_env", + "description": "HDFS removes Ranger env files (AMBARI-14299)", + "min_version": "4.2.0.0" + }, + { + "name": "ranger", + "description": "Ranger Service support", + "min_version": "4.2.0.0" + }, + { + "name": "ranger_tagsync_component", + "description": "Ranger Tagsync component support (AMBARI-14383)", + "min_version": "4.2.5.0" + }, + { + "name": "phoenix", + "description": "Phoenix Service support", + "min_version": "4.2.0.0" + }, + { + "name": "nfs", + "description": "NFS support", + "min_version": "4.1.0.0" + }, + { + "name": "timeline_state_store", + "description": "Yarn application timeline-service supports state store property (AMBARI-11442)", + "min_version": "4.0.0.0" + }, + { + "name": "copy_tarball_to_hdfs", + "description": "Copy tarball to HDFS support (AMBARI-12113)", + "min_version": "4.1.0.0" + }, + { + "name": "spark_16plus", + "description": "Spark 1.6+", + "min_version": "4.2.0.0" + }, + { + "name": "spark_thriftserver", + "description": "Spark Thrift Server", + "min_version": "4.2.0.0" + }, + { + "name": "create_kafka_broker_id", + "description": "Ambari should create Kafka Broker Id (AMBARI-12678)", + "min_version": "4.0.0.0", + "max_version": "4.2.0.0" + }, + { + "name": "kafka_listeners", + "description": "Kafka listeners (AMBARI-10984)", + "min_version": "4.2.0.0" + }, + { + "name": "kafka_kerberos", + "description": "Kafka Kerberos support (AMBARI-10984)", + "min_version": "4.1.0.0" + }, + { + "name": "ranger_usersync_non_root", + "description": "Ranger Usersync as non-root user (AMBARI-10416)", + "min_version": "4.1.0.0" + }, + { + "name": "ranger_audit_db_support", + "description": "Ranger Audit to DB support", + "min_version": "4.2.0.0", + "max_version": "4.2.0.0" + }, + { + "name": "knox_versioned_data_dir", + "description": "Use versioned data dir for Knox (AMBARI-13164)", + "min_version": "4.2.0.0" + }, + { + "name": "knox_sso_topology", + "description": "Knox SSO Topology support (AMBARI-13975)", + "min_version": "4.2.0.0" + }, + { + "name": "oozie_admin_user", + "description": "Oozie install user as an Oozie admin user (AMBARI-7976)", + "min_version": "4.0.0.0" + }, + { + "name": "oozie_setup_shared_lib", + "description": "Oozie setup tools used to shared Oozie lib to HDFS (AMBARI-7240)", + "min_version": "4.0.0.0" + }, + { + "name": "oozie_host_kerberos", + "description": "Oozie in secured clusters uses _HOST in Kerberos principal (AMBARI-9775)", + "min_version": "4.0.0.0", + "max_version": "4.1.0.0" + }, + { + "name": "hive_metastore_upgrade_schema", + "description": "Hive metastore upgrade schema support (AMBARI-11176)", + "min_version": "4.1.0.0" + }, + { + "name": "hive_server_interactive", + "description": "Hive server interactive support (AMBARI-15573)", + "min_version": "4.4.0.0" + }, + { + "name": "hive_webhcat_specific_configs", + "description": "Hive webhcat specific configurations support (AMBARI-12364)", + "min_version": "4.1.0.0" + }, + { + "name": "hive_purge_table", + "description": "Hive purge table support (AMBARI-12260)", + "min_version": "4.1.0.0" + }, + { + "name": "hive_server2_kerberized_env", + "description": "Hive server2 working on kerberized environment (AMBARI-13749)", + "max_version": "4.1.0.0" + }, + { + "name": "hive_env_heapsize", + "description": "Hive heapsize property defined in hive-env (AMBARI-12801)", + "min_version": "4.0.0.0" + }, + { + "name": "ranger_kms_hsm_support", + "description": "Ranger KMS HSM support (AMBARI-15752)", + "min_version": "4.2.5.0" + }, + { + "name": "ranger_log4j_support", + "description": "Ranger supporting log-4j properties (AMBARI-15681)", + "min_version": "4.2.5.0" + }, + { + "name": "ranger_kerberos_support", + "description": "Ranger Kerberos support", + "min_version": "4.2.5.0" + }, + { + "name": "hive_metastore_site_support", + "description": "Hive Metastore site support", + "min_version": "4.2.5.0" + }, + { + "name": "ranger_usersync_password_jceks", + "description": "Saving Ranger Usersync credentials in jceks", + "min_version": "4.2.5.0" + }, + { + "name": "ranger_install_logsearch_client", + "description": "LogSearch Service support", + "min_version": "4.2.5.0" + }, + { + "name": "hbase_home_directory", + "description": "Hbase home directory in HDFS needed for HBASE backup", + "min_version": "4.2.5.0" + }, + { + "name": "spark_livy", + "description": "Livy as slave component of spark", + "min_version": "4.4.0.0" + }, + { + "name": "ranger_pid_support", + "description": "Ranger Service support pid generation AMBARI-16756", + "min_version": "4.2.5.0" + }, + { + "name": "ranger_kms_pid_support", + "description": "Ranger KMS Service support pid generation", + "min_version": "4.2.5.0" + } + ] + } } http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-server/src/main/resources/stacks/BigInsights/4.0/properties/stack_tools.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/BigInsights/4.0/properties/stack_tools.json b/ambari-server/src/main/resources/stacks/BigInsights/4.0/properties/stack_tools.json index fdbbdf9..92c9349 100755 --- a/ambari-server/src/main/resources/stacks/BigInsights/4.0/properties/stack_tools.json +++ b/ambari-server/src/main/resources/stacks/BigInsights/4.0/properties/stack_tools.json @@ -1,4 +1,14 @@ { - "stack_selector": ["iop-select", "/usr/bin/iop-select", "iop-select"], - "conf_selector": ["conf-select", "/usr/bin/conf-select", "conf-select"] + "BigInsights": { + "stack_selector": [ + "iop-select", + "/usr/bin/iop-select", + "iop-select" + ], + "conf_selector": [ + "conf-select", + "/usr/bin/conf-select", + "conf-select" + ] + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-server/src/main/resources/stacks/HDP/2.0.6/configuration/cluster-env.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/configuration/cluster-env.xml b/ambari-server/src/main/resources/stacks/HDP/2.0.6/configuration/cluster-env.xml index a79e904..c6b091d 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/configuration/cluster-env.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/configuration/cluster-env.xml @@ -220,6 +220,18 @@ gpgcheck=0</value> </value-attributes> <on-ambari-upgrade add="true"/> </property> + <!-- Define stack_name property in the base stack. DO NOT override this property for each stack version --> + <property> + <name>stack_name</name> + <value>HDP</value> + <description>The name of the stack.</description> + <value-attributes> + <read-only>true</read-only> + <overridable>false</overridable> + <visible>false</visible> + </value-attributes> + <on-ambari-upgrade add="true"/> + </property> <!-- Define stack_tools property in the base stack. DO NOT override this property for each stack version --> <property> <name>stack_tools</name> @@ -252,8 +264,8 @@ gpgcheck=0</value> </property> <property> <name>stack_root</name> - <value>/usr/hdp</value> - <description>Stack root folder</description> + <value>{"HDP":"/usr/hdp"}</value> + <description>JSON which defines the stack root by stack name</description> <value-attributes> <read-only>true</read-only> <overridable>false</overridable> http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json b/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json index 878645b..31cf0c8 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json +++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json @@ -1,427 +1,429 @@ { - "stack_features": [ - { - "name": "snappy", - "description": "Snappy compressor/decompressor support", - "min_version": "2.0.0.0", - "max_version": "2.2.0.0" - }, - { - "name": "lzo", - "description": "LZO libraries support", - "min_version": "2.2.1.0" - }, - { - "name": "express_upgrade", - "description": "Express upgrade support", - "min_version": "2.1.0.0" - }, - { - "name": "rolling_upgrade", - "description": "Rolling upgrade support", - "min_version": "2.2.0.0" - }, - { - "name": "kafka_acl_migration_support", - "description": "ACL migration support", - "min_version": "2.3.4.0" - }, - { - "name": "secure_zookeeper", - "description": "Protect ZNodes with SASL acl in secure clusters", - "min_version": "2.6.0.0" - }, - { - "name": "config_versioning", - "description": "Configurable versions support", - "min_version": "2.3.0.0" - }, - { - "name": "datanode_non_root", - "description": "DataNode running as non-root support (AMBARI-7615)", - "min_version": "2.2.0.0" - }, - { - "name": "remove_ranger_hdfs_plugin_env", - "description": "HDFS removes Ranger env files (AMBARI-14299)", - "min_version": "2.3.0.0" - }, - { - "name": "ranger", - "description": "Ranger Service support", - "min_version": "2.2.0.0" - }, - { - "name": "ranger_tagsync_component", - "description": "Ranger Tagsync component support (AMBARI-14383)", - "min_version": "2.5.0.0" - }, - { - "name": "phoenix", - "description": "Phoenix Service support", - "min_version": "2.3.0.0" - }, - { - "name": "nfs", - "description": "NFS support", - "min_version": "2.3.0.0" - }, - { - "name": "tez_for_spark", - "description": "Tez dependency for Spark", - "min_version": "2.2.0.0", - "max_version": "2.3.0.0" - }, - { - "name": "timeline_state_store", - "description": "Yarn application timeline-service supports state store property (AMBARI-11442)", - "min_version": "2.2.0.0" - }, - { - "name": "copy_tarball_to_hdfs", - "description": "Copy tarball to HDFS support (AMBARI-12113)", - "min_version": "2.2.0.0" - }, - { - "name": "spark_16plus", - "description": "Spark 1.6+", - "min_version": "2.4.0.0" - }, - { - "name": "spark_thriftserver", - "description": "Spark Thrift Server", - "min_version": "2.3.2.0" - }, - { - "name": "storm_kerberos", - "description": "Storm Kerberos support (AMBARI-7570)", - "min_version": "2.2.0.0" - }, - { - "name": "storm_ams", - "description": "Storm AMS integration (AMBARI-10710)", - "min_version": "2.2.0.0" - }, - { - "name": "create_kafka_broker_id", - "description": "Ambari should create Kafka Broker Id (AMBARI-12678)", - "min_version": "2.2.0.0", - "max_version": "2.3.0.0" - }, - { - "name": "kafka_listeners", - "description": "Kafka listeners (AMBARI-10984)", - "min_version": "2.3.0.0" - }, - { - "name": "kafka_kerberos", - "description": "Kafka Kerberos support (AMBARI-10984)", - "min_version": "2.3.0.0" - }, - { - "name": "pig_on_tez", - "description": "Pig on Tez support (AMBARI-7863)", - "min_version": "2.2.0.0" - }, - { - "name": "ranger_usersync_non_root", - "description": "Ranger Usersync as non-root user (AMBARI-10416)", - "min_version": "2.3.0.0" - }, - { - "name": "ranger_audit_db_support", - "description": "Ranger Audit to DB support", - "min_version": "2.2.0.0", - "max_version": "2.4.99.99" - }, - { - "name": "accumulo_kerberos_user_auth", - "description": "Accumulo Kerberos User Auth (AMBARI-10163)", - "min_version": "2.3.0.0" - }, - { - "name": "knox_versioned_data_dir", - "description": "Use versioned data dir for Knox (AMBARI-13164)", - "min_version": "2.3.2.0" - }, - { - "name": "knox_sso_topology", - "description": "Knox SSO Topology support (AMBARI-13975)", - "min_version": "2.3.8.0" - }, - { - "name": "atlas_rolling_upgrade", - "description": "Rolling upgrade support for Atlas", - "min_version": "2.3.0.0" - }, - { - "name": "oozie_admin_user", - "description": "Oozie install user as an Oozie admin user (AMBARI-7976)", - "min_version": "2.2.0.0" - }, - { - "name": "oozie_create_hive_tez_configs", - "description": "Oozie create configs for Ambari Hive and Tez deployments (AMBARI-8074)", - "min_version": "2.2.0.0" - }, - { - "name": "oozie_setup_shared_lib", - "description": "Oozie setup tools used to shared Oozie lib to HDFS (AMBARI-7240)", - "min_version": "2.2.0.0" - }, - { - "name": "oozie_host_kerberos", - "description": "Oozie in secured clusters uses _HOST in Kerberos principal (AMBARI-9775)", - "min_version": "2.0.0.0" - }, - { - "name": "falcon_extensions", - "description": "Falcon Extension", - "min_version": "2.5.0.0" - }, - { - "name": "hive_metastore_upgrade_schema", - "description": "Hive metastore upgrade schema support (AMBARI-11176)", - "min_version": "2.3.0.0" - }, - { - "name": "hive_server_interactive", - "description": "Hive server interactive support (AMBARI-15573)", - "min_version": "2.5.0.0" - }, - { - "name": "hive_webhcat_specific_configs", - "description": "Hive webhcat specific configurations support (AMBARI-12364)", - "min_version": "2.3.0.0" - }, - { - "name": "hive_purge_table", - "description": "Hive purge table support (AMBARI-12260)", - "min_version": "2.3.0.0" - }, - { - "name": "hive_server2_kerberized_env", - "description": "Hive server2 working on kerberized environment (AMBARI-13749)", - "min_version": "2.2.3.0", - "max_version": "2.2.5.0" - }, - { - "name": "hive_env_heapsize", - "description": "Hive heapsize property defined in hive-env (AMBARI-12801)", - "min_version": "2.2.0.0" - }, - { - "name": "ranger_kms_hsm_support", - "description": "Ranger KMS HSM support (AMBARI-15752)", - "min_version": "2.5.0.0" - }, - { - "name": "ranger_log4j_support", - "description": "Ranger supporting log-4j properties (AMBARI-15681)", - "min_version": "2.5.0.0" - }, - { - "name": "ranger_kerberos_support", - "description": "Ranger Kerberos support", - "min_version": "2.5.0.0" - }, - { - "name": "hive_metastore_site_support", - "description": "Hive Metastore site support", - "min_version": "2.5.0.0" - }, - { - "name": "ranger_usersync_password_jceks", - "description": "Saving Ranger Usersync credentials in jceks", - "min_version": "2.5.0.0" - }, - { - "name": "ranger_install_infra_client", - "description": "Ambari Infra Service support", - "min_version": "2.5.0.0" - }, - { - "name": "falcon_atlas_support_2_3", - "description": "Falcon Atlas integration support for 2.3 stack", - "min_version": "2.3.99.0", - "max_version": "2.4.0.0" - }, - { - "name": "falcon_atlas_support", - "description": "Falcon Atlas integration", - "min_version": "2.5.0.0" - }, - { - "name": "hbase_home_directory", - "description": "Hbase home directory in HDFS needed for HBASE backup", - "min_version": "2.5.0.0" - }, - { - "name": "spark_livy", - "description": "Livy as slave component of spark", - "min_version": "2.5.0.0" - }, - { - "name": "spark_livy2", - "description": "Livy as slave component of spark", - "min_version": "2.6.0.0" - }, - { - "name": "atlas_ranger_plugin_support", - "description": "Atlas Ranger plugin support", - "min_version": "2.5.0.0" - }, - { - "name": "atlas_conf_dir_in_path", - "description": "Prepend the Atlas conf dir (/etc/atlas/conf) to the classpath of Storm and Falcon", - "min_version": "2.3.0.0", - "max_version": "2.4.99.99" - }, - { - "name": "atlas_upgrade_support", - "description": "Atlas supports express and rolling upgrades", - "min_version": "2.5.0.0" - }, - { - "name": "atlas_hook_support", - "description": "Atlas support for hooks in Hive, Storm, Falcon, and Sqoop", - "min_version": "2.5.0.0" - }, - { - "name": "ranger_pid_support", - "description": "Ranger Service support pid generation AMBARI-16756", - "min_version": "2.5.0.0" - }, - { - "name": "ranger_kms_pid_support", - "description": "Ranger KMS Service support pid generation", - "min_version": "2.5.0.0" - }, - { - "name": "ranger_admin_password_change", - "description": "Allow ranger admin credentials to be specified during cluster creation (AMBARI-17000)", - "min_version": "2.5.0.0" - }, - { - "name": "ranger_setup_db_on_start", - "description": "Allows setup of ranger db and java patches to be called multiple times on each START", - "min_version": "2.6.0.0" - }, - { - "name": "storm_metrics_apache_classes", - "description": "Metrics sink for Storm that uses Apache class names", - "min_version": "2.5.0.0" - }, - { - "name": "spark_java_opts_support", - "description": "Allow Spark to generate java-opts file", - "min_version": "2.2.0.0", - "max_version": "2.4.0.0" - }, - { - "name": "atlas_hbase_setup", - "description": "Use script to create Atlas tables in Hbase and set permissions for Atlas user.", - "min_version": "2.5.0.0" - }, - { - "name": "ranger_hive_plugin_jdbc_url", - "description": "Handle Ranger hive repo config jdbc url change for stack 2.5 (AMBARI-18386)", - "min_version": "2.5.0.0" - }, - { - "name": "zkfc_version_advertised", - "description": "ZKFC advertise version", - "min_version": "2.5.0.0" - }, - { - "name": "phoenix_core_hdfs_site_required", - "description": "HDFS and CORE site required for Phoenix", - "max_version": "2.5.9.9" - }, - { - "name": "ranger_tagsync_ssl_xml_support", - "description": "Ranger Tagsync ssl xml support.", - "min_version": "2.6.0.0" - }, - { - "name": "ranger_xml_configuration", - "description": "Ranger code base support xml configurations", - "min_version": "2.3.0.0" - }, - { - "name": "kafka_ranger_plugin_support", - "description": "Ambari stack changes for Ranger Kafka Plugin (AMBARI-11299)", - "min_version": "2.3.0.0" - }, - { - "name": "yarn_ranger_plugin_support", - "description": "Implement Stack changes for Ranger Yarn Plugin integration (AMBARI-10866)", - "min_version": "2.3.0.0" - }, - { - "name": "ranger_solr_config_support", - "description": "Showing Ranger solrconfig.xml on UI", - "min_version": "2.6.0.0" - }, - { - "name": "hive_interactive_atlas_hook_required", - "description": "Registering Atlas Hook for Hive Interactive.", - "min_version": "2.6.0.0" - }, - { - "name": "core_site_for_ranger_plugins", - "description": "Adding core-site.xml in when Ranger plugin is enabled for Storm, Kafka, and Knox.", - "min_version": "2.6.0.0" - }, - { - "name": "atlas_install_hook_package_support", - "description": "Stop installing packages from 2.6", - "max_version": "2.5.9.9" - }, - { - "name": "atlas_hdfs_site_on_namenode_ha", - "description": "Need to create hdfs-site under atlas-conf dir when Namenode-HA is enabled.", - "min_version": "2.6.0.0" - }, - { - "name": "hive_interactive_ga", - "description": "Hive Interactive GA support", - "min_version": "2.6.0.0" - }, - { - "name": "secure_ranger_ssl_password", - "description": "Securing Ranger Admin and Usersync SSL and Trustore related passwords in jceks", - "min_version": "2.6.0.0" - }, - { - "name": "ranger_kms_ssl", - "description": "Ranger KMS SSL properties in ambari stack", - "min_version": "2.6.0.0" - }, - { - "name": "nifi_encrypt_config", - "description": "Encrypt sensitive properties written to nifi property file", - "min_version": "2.6.0.0" - }, - { - "name": "toolkit_config_update", - "description": "Support separate input and output for toolkit configuration", - "min_version": "2.6.0.0" - }, - { - "name": "admin_toolkit_support", - "description": "Supports the nifi admin toolkit", - "min_version": "2.6.0.0" - }, - { - "name": "tls_toolkit_san", - "description": "Support subject alternative name flag", - "min_version": "2.6.0.0" - }, - { - "name": "nifi_jaas_conf_create", - "description": "Create NIFI jaas configuration when kerberos is enabled", - "min_version": "2.6.0.0" - } - ] + "HDP": { + "stack_features": [ + { + "name": "snappy", + "description": "Snappy compressor/decompressor support", + "min_version": "2.0.0.0", + "max_version": "2.2.0.0" + }, + { + "name": "lzo", + "description": "LZO libraries support", + "min_version": "2.2.1.0" + }, + { + "name": "express_upgrade", + "description": "Express upgrade support", + "min_version": "2.1.0.0" + }, + { + "name": "rolling_upgrade", + "description": "Rolling upgrade support", + "min_version": "2.2.0.0" + }, + { + "name": "kafka_acl_migration_support", + "description": "ACL migration support", + "min_version": "2.3.4.0" + }, + { + "name": "secure_zookeeper", + "description": "Protect ZNodes with SASL acl in secure clusters", + "min_version": "2.6.0.0" + }, + { + "name": "config_versioning", + "description": "Configurable versions support", + "min_version": "2.3.0.0" + }, + { + "name": "datanode_non_root", + "description": "DataNode running as non-root support (AMBARI-7615)", + "min_version": "2.2.0.0" + }, + { + "name": "remove_ranger_hdfs_plugin_env", + "description": "HDFS removes Ranger env files (AMBARI-14299)", + "min_version": "2.3.0.0" + }, + { + "name": "ranger", + "description": "Ranger Service support", + "min_version": "2.2.0.0" + }, + { + "name": "ranger_tagsync_component", + "description": "Ranger Tagsync component support (AMBARI-14383)", + "min_version": "2.5.0.0" + }, + { + "name": "phoenix", + "description": "Phoenix Service support", + "min_version": "2.3.0.0" + }, + { + "name": "nfs", + "description": "NFS support", + "min_version": "2.3.0.0" + }, + { + "name": "tez_for_spark", + "description": "Tez dependency for Spark", + "min_version": "2.2.0.0", + "max_version": "2.3.0.0" + }, + { + "name": "timeline_state_store", + "description": "Yarn application timeline-service supports state store property (AMBARI-11442)", + "min_version": "2.2.0.0" + }, + { + "name": "copy_tarball_to_hdfs", + "description": "Copy tarball to HDFS support (AMBARI-12113)", + "min_version": "2.2.0.0" + }, + { + "name": "spark_16plus", + "description": "Spark 1.6+", + "min_version": "2.4.0.0" + }, + { + "name": "spark_thriftserver", + "description": "Spark Thrift Server", + "min_version": "2.3.2.0" + }, + { + "name": "storm_kerberos", + "description": "Storm Kerberos support (AMBARI-7570)", + "min_version": "2.2.0.0" + }, + { + "name": "storm_ams", + "description": "Storm AMS integration (AMBARI-10710)", + "min_version": "2.2.0.0" + }, + { + "name": "create_kafka_broker_id", + "description": "Ambari should create Kafka Broker Id (AMBARI-12678)", + "min_version": "2.2.0.0", + "max_version": "2.3.0.0" + }, + { + "name": "kafka_listeners", + "description": "Kafka listeners (AMBARI-10984)", + "min_version": "2.3.0.0" + }, + { + "name": "kafka_kerberos", + "description": "Kafka Kerberos support (AMBARI-10984)", + "min_version": "2.3.0.0" + }, + { + "name": "pig_on_tez", + "description": "Pig on Tez support (AMBARI-7863)", + "min_version": "2.2.0.0" + }, + { + "name": "ranger_usersync_non_root", + "description": "Ranger Usersync as non-root user (AMBARI-10416)", + "min_version": "2.3.0.0" + }, + { + "name": "ranger_audit_db_support", + "description": "Ranger Audit to DB support", + "min_version": "2.2.0.0", + "max_version": "2.4.99.99" + }, + { + "name": "accumulo_kerberos_user_auth", + "description": "Accumulo Kerberos User Auth (AMBARI-10163)", + "min_version": "2.3.0.0" + }, + { + "name": "knox_versioned_data_dir", + "description": "Use versioned data dir for Knox (AMBARI-13164)", + "min_version": "2.3.2.0" + }, + { + "name": "knox_sso_topology", + "description": "Knox SSO Topology support (AMBARI-13975)", + "min_version": "2.3.8.0" + }, + { + "name": "atlas_rolling_upgrade", + "description": "Rolling upgrade support for Atlas", + "min_version": "2.3.0.0" + }, + { + "name": "oozie_admin_user", + "description": "Oozie install user as an Oozie admin user (AMBARI-7976)", + "min_version": "2.2.0.0" + }, + { + "name": "oozie_create_hive_tez_configs", + "description": "Oozie create configs for Ambari Hive and Tez deployments (AMBARI-8074)", + "min_version": "2.2.0.0" + }, + { + "name": "oozie_setup_shared_lib", + "description": "Oozie setup tools used to shared Oozie lib to HDFS (AMBARI-7240)", + "min_version": "2.2.0.0" + }, + { + "name": "oozie_host_kerberos", + "description": "Oozie in secured clusters uses _HOST in Kerberos principal (AMBARI-9775)", + "min_version": "2.0.0.0" + }, + { + "name": "falcon_extensions", + "description": "Falcon Extension", + "min_version": "2.5.0.0" + }, + { + "name": "hive_metastore_upgrade_schema", + "description": "Hive metastore upgrade schema support (AMBARI-11176)", + "min_version": "2.3.0.0" + }, + { + "name": "hive_server_interactive", + "description": "Hive server interactive support (AMBARI-15573)", + "min_version": "2.5.0.0" + }, + { + "name": "hive_webhcat_specific_configs", + "description": "Hive webhcat specific configurations support (AMBARI-12364)", + "min_version": "2.3.0.0" + }, + { + "name": "hive_purge_table", + "description": "Hive purge table support (AMBARI-12260)", + "min_version": "2.3.0.0" + }, + { + "name": "hive_server2_kerberized_env", + "description": "Hive server2 working on kerberized environment (AMBARI-13749)", + "min_version": "2.2.3.0", + "max_version": "2.2.5.0" + }, + { + "name": "hive_env_heapsize", + "description": "Hive heapsize property defined in hive-env (AMBARI-12801)", + "min_version": "2.2.0.0" + }, + { + "name": "ranger_kms_hsm_support", + "description": "Ranger KMS HSM support (AMBARI-15752)", + "min_version": "2.5.0.0" + }, + { + "name": "ranger_log4j_support", + "description": "Ranger supporting log-4j properties (AMBARI-15681)", + "min_version": "2.5.0.0" + }, + { + "name": "ranger_kerberos_support", + "description": "Ranger Kerberos support", + "min_version": "2.5.0.0" + }, + { + "name": "hive_metastore_site_support", + "description": "Hive Metastore site support", + "min_version": "2.5.0.0" + }, + { + "name": "ranger_usersync_password_jceks", + "description": "Saving Ranger Usersync credentials in jceks", + "min_version": "2.5.0.0" + }, + { + "name": "ranger_install_infra_client", + "description": "Ambari Infra Service support", + "min_version": "2.5.0.0" + }, + { + "name": "falcon_atlas_support_2_3", + "description": "Falcon Atlas integration support for 2.3 stack", + "min_version": "2.3.99.0", + "max_version": "2.4.0.0" + }, + { + "name": "falcon_atlas_support", + "description": "Falcon Atlas integration", + "min_version": "2.5.0.0" + }, + { + "name": "hbase_home_directory", + "description": "Hbase home directory in HDFS needed for HBASE backup", + "min_version": "2.5.0.0" + }, + { + "name": "spark_livy", + "description": "Livy as slave component of spark", + "min_version": "2.5.0.0" + }, + { + "name": "spark_livy2", + "description": "Livy as slave component of spark", + "min_version": "2.6.0.0" + }, + { + "name": "atlas_ranger_plugin_support", + "description": "Atlas Ranger plugin support", + "min_version": "2.5.0.0" + }, + { + "name": "atlas_conf_dir_in_path", + "description": "Prepend the Atlas conf dir (/etc/atlas/conf) to the classpath of Storm and Falcon", + "min_version": "2.3.0.0", + "max_version": "2.4.99.99" + }, + { + "name": "atlas_upgrade_support", + "description": "Atlas supports express and rolling upgrades", + "min_version": "2.5.0.0" + }, + { + "name": "atlas_hook_support", + "description": "Atlas support for hooks in Hive, Storm, Falcon, and Sqoop", + "min_version": "2.5.0.0" + }, + { + "name": "ranger_pid_support", + "description": "Ranger Service support pid generation AMBARI-16756", + "min_version": "2.5.0.0" + }, + { + "name": "ranger_kms_pid_support", + "description": "Ranger KMS Service support pid generation", + "min_version": "2.5.0.0" + }, + { + "name": "ranger_admin_password_change", + "description": "Allow ranger admin credentials to be specified during cluster creation (AMBARI-17000)", + "min_version": "2.5.0.0" + }, + { + "name": "ranger_setup_db_on_start", + "description": "Allows setup of ranger db and java patches to be called multiple times on each START", + "min_version": "2.6.0.0" + }, + { + "name": "storm_metrics_apache_classes", + "description": "Metrics sink for Storm that uses Apache class names", + "min_version": "2.5.0.0" + }, + { + "name": "spark_java_opts_support", + "description": "Allow Spark to generate java-opts file", + "min_version": "2.2.0.0", + "max_version": "2.4.0.0" + }, + { + "name": "atlas_hbase_setup", + "description": "Use script to create Atlas tables in Hbase and set permissions for Atlas user.", + "min_version": "2.5.0.0" + }, + { + "name": "ranger_hive_plugin_jdbc_url", + "description": "Handle Ranger hive repo config jdbc url change for stack 2.5 (AMBARI-18386)", + "min_version": "2.5.0.0" + }, + { + "name": "zkfc_version_advertised", + "description": "ZKFC advertise version", + "min_version": "2.5.0.0" + }, + { + "name": "phoenix_core_hdfs_site_required", + "description": "HDFS and CORE site required for Phoenix", + "max_version": "2.5.9.9" + }, + { + "name": "ranger_tagsync_ssl_xml_support", + "description": "Ranger Tagsync ssl xml support.", + "min_version": "2.6.0.0" + }, + { + "name": "ranger_xml_configuration", + "description": "Ranger code base support xml configurations", + "min_version": "2.3.0.0" + }, + { + "name": "kafka_ranger_plugin_support", + "description": "Ambari stack changes for Ranger Kafka Plugin (AMBARI-11299)", + "min_version": "2.3.0.0" + }, + { + "name": "yarn_ranger_plugin_support", + "description": "Implement Stack changes for Ranger Yarn Plugin integration (AMBARI-10866)", + "min_version": "2.3.0.0" + }, + { + "name": "ranger_solr_config_support", + "description": "Showing Ranger solrconfig.xml on UI", + "min_version": "2.6.0.0" + }, + { + "name": "hive_interactive_atlas_hook_required", + "description": "Registering Atlas Hook for Hive Interactive.", + "min_version": "2.6.0.0" + }, + { + "name": "core_site_for_ranger_plugins", + "description": "Adding core-site.xml in when Ranger plugin is enabled for Storm, Kafka, and Knox.", + "min_version": "2.6.0.0" + }, + { + "name": "atlas_install_hook_package_support", + "description": "Stop installing packages from 2.6", + "max_version": "2.5.9.9" + }, + { + "name": "atlas_hdfs_site_on_namenode_ha", + "description": "Need to create hdfs-site under atlas-conf dir when Namenode-HA is enabled.", + "min_version": "2.6.0.0" + }, + { + "name": "hive_interactive_ga", + "description": "Hive Interactive GA support", + "min_version": "2.6.0.0" + }, + { + "name": "secure_ranger_ssl_password", + "description": "Securing Ranger Admin and Usersync SSL and Trustore related passwords in jceks", + "min_version": "2.6.0.0" + }, + { + "name": "ranger_kms_ssl", + "description": "Ranger KMS SSL properties in ambari stack", + "min_version": "2.6.0.0" + }, + { + "name": "nifi_encrypt_config", + "description": "Encrypt sensitive properties written to nifi property file", + "min_version": "2.6.0.0" + }, + { + "name": "toolkit_config_update", + "description": "Support separate input and output for toolkit configuration", + "min_version": "2.6.0.0" + }, + { + "name": "admin_toolkit_support", + "description": "Supports the nifi admin toolkit", + "min_version": "2.6.0.0" + }, + { + "name": "tls_toolkit_san", + "description": "Support subject alternative name flag", + "min_version": "2.6.0.0" + }, + { + "name": "nifi_jaas_conf_create", + "description": "Create NIFI jaas configuration when kerberos is enabled", + "min_version": "2.6.0.0" + } + ] + } } http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_tools.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_tools.json b/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_tools.json index d1aab4b..c515d57 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_tools.json +++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_tools.json @@ -1,4 +1,14 @@ { - "stack_selector": ["hdp-select", "/usr/bin/hdp-select", "hdp-select"], - "conf_selector": ["conf-select", "/usr/bin/conf-select", "conf-select"] -} \ No newline at end of file + "HDP": { + "stack_selector": [ + "hdp-select", + "/usr/bin/hdp-select", + "hdp-select" + ], + "conf_selector": [ + "conf-select", + "/usr/bin/conf-select", + "conf-select" + ] + } +} http://git-wip-us.apache.org/repos/asf/ambari/blob/db550102/ambari-server/src/main/resources/stacks/PERF/1.0/configuration/cluster-env.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/configuration/cluster-env.xml b/ambari-server/src/main/resources/stacks/PERF/1.0/configuration/cluster-env.xml index 7df00ee..f19ac52 100644 --- a/ambari-server/src/main/resources/stacks/PERF/1.0/configuration/cluster-env.xml +++ b/ambari-server/src/main/resources/stacks/PERF/1.0/configuration/cluster-env.xml @@ -20,6 +20,18 @@ */ --> <configuration> + <!-- Define stack_name property in the base stack. DO NOT override this property for each stack version --> + <property> + <name>stack_name</name> + <value>PERF</value> + <description>The name of the stack.</description> + <value-attributes> + <read-only>true</read-only> + <overridable>false</overridable> + <visible>false</visible> + </value-attributes> + <on-ambari-upgrade add="true"/> + </property> <!-- Define stack_tools property in the base stack. DO NOT override this property for each stack version --> <property> @@ -55,8 +67,8 @@ <property> <name>stack_root</name> - <value>/usr/perf</value> - <description>Stack root folder</description> + <value>{"PERF":"/usr/perf"}</value> + <description>JSON which defines the stack root by stack name</description> <value-attributes> <read-only>true</read-only> <overridable>false</overridable>
