You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ao...@apache.org on 2018/05/30 08:25:30 UTC

[ambari] branch trunk updated: AMBARI-23976. Ambari changes required for YARN are missing (aonishuk)

This is an automated email from the ASF dual-hosted git repository.

aonishuk pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 2c25dec  AMBARI-23976. Ambari changes required for YARN are missing (aonishuk)
2c25dec is described below

commit 2c25deca9b77d14d31019c74c6ef2966740d2548
Author: Andrew Onishuk <ao...@hortonworks.com>
AuthorDate: Wed May 30 11:17:08 2018 +0300

    AMBARI-23976. Ambari changes required for YARN are missing (aonishuk)
---
 .../src/main/python/ambari_agent/HostInfo.py       |   2 +-
 .../libraries/functions/copy_tarball.py            |  10 +-
 .../libraries/functions/install_windows_msi.py     |   3 +-
 .../libraries/functions/reload_windows_env.py      |   2 +-
 .../libraries/functions/stack_select.py            |   3 +-
 ambari-server/conf/unix/log4j.properties           |   1 -
 ambari-server/src/main/assemblies/server.xml       |   5 -
 .../internal/BlueprintConfigurationProcessor.java  |   3 -
 .../internal/StackAdvisorResourceProvider.java     |   2 +-
 .../resources/custom_actions/scripts/check_host.py |   2 +-
 .../src/main/resources/scripts/Ambaripreupload.py  |  29 +-
 .../resources/scripts/takeover_files_mapping.json  |   3 +-
 .../src/main/resources/slider_resources/README.txt |  17 -
 .../data/configurations/config_versions.json       |   3 +-
 .../app/data/configs/services/yarn_properties.js   | 126 ++++
 ambari-web/app/models/stack_service.js             |   7 +-
 ambari-web/pom.xml                                 | 715 ++++++++++-----------
 17 files changed, 520 insertions(+), 413 deletions(-)

diff --git a/ambari-agent/src/main/python/ambari_agent/HostInfo.py b/ambari-agent/src/main/python/ambari_agent/HostInfo.py
index 62f8975..8307b23 100644
--- a/ambari-agent/src/main/python/ambari_agent/HostInfo.py
+++ b/ambari-agent/src/main/python/ambari_agent/HostInfo.py
@@ -160,7 +160,7 @@ class HostInfoLinux(HostInfo):
     "storm", "hive-hcatalog", "tez", "falcon", "ambari_qa", "hadoop_deploy",
     "rrdcached", "hcat", "ambari-qa", "sqoop-ambari-qa", "sqoop-ambari_qa",
     "webhcat", "hadoop-hdfs", "hadoop-yarn", "hadoop-mapreduce",
-    "knox", "yarn", "hive-webhcat", "kafka", "slider", "storm-slider-client",
+    "knox", "yarn", "hive-webhcat", "kafka",
     "mahout", "spark", "pig", "phoenix", "ranger", "accumulo",
     "ambari-metrics-collector", "ambari-metrics-monitor", "atlas", "zeppelin"
   ]
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py b/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py
index d480f72..148a0bd 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py
@@ -204,10 +204,10 @@ def _prepare_mapreduce_tarball():
 # especially since it is an attribute of a stack and becomes
 # complicated to change during a Rolling/Express upgrade.
 TARBALL_MAP = {
-  "slider": {
-    "dirs": ("{0}/{1}/slider/lib/slider.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
-              "/{0}/apps/{1}/slider/slider.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
-    "service": "SLIDER"
+  "yarn": {
+    "dirs": ("{0}/{1}/hadoop-yarn/lib/service-dep.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+             "/{0}/apps/{1}/yarn/service-dep.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+    "service": "YARN"
   },
 
   "tez": {
@@ -268,7 +268,7 @@ TARBALL_MAP = {
 }
 
 SERVICE_TO_CONFIG_MAP = {
-  "slider": "slider-env",
+  "yarn": "yarn-env",
   "tez": "tez-env",
   "pig": "pig-env",
   "sqoop": "sqoop-env",
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/install_windows_msi.py b/ambari-common/src/main/python/resource_management/libraries/functions/install_windows_msi.py
index 96d8661..fe2f27f 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/install_windows_msi.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/install_windows_msi.py
@@ -48,7 +48,6 @@ HDFS_NAMENODE_DATA_DIR={data_dir}\\hdpdatann
 #Datanode Data directory
 HDFS_DATANODE_DATA_DIR={data_dir}\\hdpdatadn
 
-IS_SLIDER=yes
 IS_PHOENIX=no
 """
 cluster_properties = """#Log directory
@@ -95,7 +94,7 @@ OOZIE_DB_PASSWORD=oozie
 
 INSTALL_MSI_CMD = 'cmd /C start /wait msiexec /qn /i  {msi_path} /lv {log_path} MSIUSEREALADMINDETECTION=1 ' \
                   'HDP_LAYOUT={layout_path} DESTROY_DATA=yes HDP_USER={hadoop_user} HDP_USER_PASSWORD={hadoop_password_arg} HDP=yes ' \
-                  'KNOX=yes KNOX_MASTER_SECRET="AmbariHDP2Windows" FALCON=yes STORM=yes HBase=yes STORM=yes FLUME=yes SLIDER=yes PHOENIX=no RANGER=no'
+                  'KNOX=yes KNOX_MASTER_SECRET="AmbariHDP2Windows" FALCON=yes STORM=yes HBase=yes STORM=yes FLUME=yes PHOENIX=no RANGER=no'
 CREATE_SERVICE_SCRIPT = os.path.abspath("sbin\createservice.ps1")
 CREATE_SERVICE_CMD = 'cmd /C powershell -ExecutionPolicy Bypass -File "{script}" -username {username} -password "{password}" -servicename ' \
                      '{servicename} -hdpresourcesdir "{resourcedir}" -servicecmdpath "{servicecmd}"'
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/reload_windows_env.py b/ambari-common/src/main/python/resource_management/libraries/functions/reload_windows_env.py
index f69b6a3..e616954 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/reload_windows_env.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/reload_windows_env.py
@@ -28,7 +28,7 @@ default_whitelist = ["FALCON_CONF_DIR", "FALCON_DATA_DIR", "FALCON_HOME", "FALCO
                      "HADOOP_SETUP_TOOLS", "HADOOP_YARN_HOME", "HBASE_CONF_DIR", "HBASE_HOME", "HCAT_HOME",
                      "HDFS_AUDIT_LOGGER", "HDFS_DATA_DIR", "HIVE_CONF_DIR", "HIVE_HOME", "HIVE_LIB_DIR", "HIVE_LOG_DIR",
                      "HIVE_OPTS", "KNOX_CONF_DIR", "KNOX_HOME", "KNOX_LOG_DIR", "MAHOUT_HOME", "OOZIE_DATA",
-                     "OOZIE_HOME", "OOZIE_LOG", "OOZIE_ROOT", "PIG_HOME", "SLIDER_HOME", "SQOOP_HOME", "STORM_CONF_DIR",
+                     "OOZIE_HOME", "OOZIE_LOG", "OOZIE_ROOT", "PIG_HOME", "SQOOP_HOME", "STORM_CONF_DIR",
                      "STORM_HOME", "STORM_LOG_DIR", "TEZ_HOME", "WEBHCAT_CONF_DIR", "YARN_LOG_DIR", "ZOOKEEPER_CONF_DIR",
                      "ZOOKEEPER_HOME", "ZOOKEEPER_LIB_DIR", "ZOO_LOG_DIR", "COLLECTOR_CONF_DIR", "COLLECTOR_HOME",
                      "MONITOR_CONF_DIR", "MONITOR_HOME", "SINK_HOME"]
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/stack_select.py b/ambari-common/src/main/python/resource_management/libraries/functions/stack_select.py
index 7c9a30a..526bef7 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/stack_select.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/stack_select.py
@@ -54,8 +54,7 @@ SERVICE_CHECK_DIRECTORY_MAP = {
   "OOZIE_SERVICE_CHECK" : "hadoop-client",
   "MAHOUT_SERVICE_CHECK" : "mahout-client",
   "MAPREDUCE2_SERVICE_CHECK" : "hadoop-client",
-  "YARN_SERVICE_CHECK" : "hadoop-client",
-  "SLIDER_SERVICE_CHECK" : "slider-client"
+  "YARN_SERVICE_CHECK" : "hadoop-client"
 }
 
 # <stack-root>/current/hadoop-client/[bin|sbin|libexec|lib]
diff --git a/ambari-server/conf/unix/log4j.properties b/ambari-server/conf/unix/log4j.properties
index dec1334..06968e4 100644
--- a/ambari-server/conf/unix/log4j.properties
+++ b/ambari-server/conf/unix/log4j.properties
@@ -98,7 +98,6 @@ log4j.appender.audit.layout=org.apache.log4j.PatternLayout
 log4j.appender.audit.layout.ConversionPattern=%m%n
 
 log4j.logger.org.apache.hadoop.yarn.client=WARN
-log4j.logger.org.apache.slider.common.tools.SliderUtils=WARN
 log4j.logger.org.apache.ambari.server.security.authorization=WARN
 
 log4j.logger.org.apache.ambari.server.security.authorization.AuthorizationHelper=INFO
diff --git a/ambari-server/src/main/assemblies/server.xml b/ambari-server/src/main/assemblies/server.xml
index e45ad70..67858e7 100644
--- a/ambari-server/src/main/assemblies/server.xml
+++ b/ambari-server/src/main/assemblies/server.xml
@@ -402,11 +402,6 @@
       <outputDirectory>/var/lib/ambari-server/resources</outputDirectory>
     </file>
     <file>
-      <fileMode>644</fileMode>
-      <source>src/main/resources/slider_resources/README.txt</source>
-      <outputDirectory>/var/lib/ambari-server/resources/apps</outputDirectory>
-    </file>
-    <file>
       <fileMode>755</fileMode>
       <source>src/main/resources/stacks/stack_advisor.py</source>
       <outputDirectory>/var/lib/ambari-server/resources/stacks</outputDirectory>
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
index 06bac12..7ae1e43 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
@@ -2818,7 +2818,6 @@ public class BlueprintConfigurationProcessor {
     Map<String, PropertyUpdater> multiHdfsSiteMap = new HashMap<>();
     Map<String, PropertyUpdater> multiHiveSiteMap = new HashMap<>();
     Map<String, PropertyUpdater> multiKafkaBrokerMap = new HashMap<>();
-    Map<String, PropertyUpdater> multiSliderClientMap = new HashMap<>();
     Map<String, PropertyUpdater> multiYarnSiteMap = new HashMap<>();
     Map<String, PropertyUpdater> multiOozieSiteMap = new HashMap<>();
     Map<String, PropertyUpdater> multiAccumuloSiteMap = new HashMap<>();
@@ -2883,7 +2882,6 @@ public class BlueprintConfigurationProcessor {
     multiHostTopologyUpdaters.put("hive-site", multiHiveSiteMap);
     multiHostTopologyUpdaters.put("hive-interactive-site", hiveInteractiveSiteMap);
     multiHostTopologyUpdaters.put("kafka-broker", multiKafkaBrokerMap);
-    multiHostTopologyUpdaters.put("slider-client", multiSliderClientMap);
     multiHostTopologyUpdaters.put("yarn-site", multiYarnSiteMap);
     multiHostTopologyUpdaters.put("oozie-site", multiOozieSiteMap);
     multiHostTopologyUpdaters.put("accumulo-site", multiAccumuloSiteMap);
@@ -3085,7 +3083,6 @@ public class BlueprintConfigurationProcessor {
     multiCoreSiteMap.put("ha.zookeeper.quorum", new MultipleHostTopologyUpdater("ZOOKEEPER_SERVER"));
     multiYarnSiteMap.put("hadoop.registry.zk.quorum", new MultipleHostTopologyUpdater("ZOOKEEPER_SERVER"));
     multiYarnSiteMap.put("yarn.resourcemanager.zk-address", new MultipleHostTopologyUpdater("ZOOKEEPER_SERVER"));
-    multiSliderClientMap.put("slider.zookeeper.quorum", new MultipleHostTopologyUpdater("ZOOKEEPER_SERVER"));
     multiKafkaBrokerMap.put("zookeeper.connect", new MultipleHostTopologyUpdater("ZOOKEEPER_SERVER"));
     multiAccumuloSiteMap.put("instance.zookeeper.host", new MultipleHostTopologyUpdater("ZOOKEEPER_SERVER"));
 
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java
index 599b7c7..cf716ea 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java
@@ -273,7 +273,7 @@ public abstract class StackAdvisorResourceProvider extends ReadOnlyResourceProvi
   /**
    * Parse the user contex for the call. Typical structure
    * { "operation" : "createCluster" }
-   * { "operation" : "addService", "services" : "Atlas,Slider" }
+   * { "operation" : "addService", "services" : "Atlas,Ranger" }
    * @param request
    * @return
    */
diff --git a/ambari-server/src/main/resources/custom_actions/scripts/check_host.py b/ambari-server/src/main/resources/custom_actions/scripts/check_host.py
index 25783de..9fd2fe5 100644
--- a/ambari-server/src/main/resources/custom_actions/scripts/check_host.py
+++ b/ambari-server/src/main/resources/custom_actions/scripts/check_host.py
@@ -83,7 +83,7 @@ class CheckHost(Script):
   PACKAGES = [
     "^hadoop.*$", "^zookeeper.*$", "^webhcat.*$", "^oozie.*$", "^ambari.*$", "^.+-manager-server-db.*$",
     "^.+-manager-daemons.*$", "^mahout[_\-]\d.*$", "^spark.*$", "^falcon.*$", "^hbase.*$", "^kafka.*$", "^knox.*$",
-    "^slider.*$", "^sqoop.*$", "^storm.*$", "^flume.*$","^hcatalog.*$", "^phoenix.*$", "^ranger.*$", "^accumulo.*$", "^hive_.*$",
+    "^sqoop.*$", "^storm.*$", "^flume.*$","^hcatalog.*$", "^phoenix.*$", "^ranger.*$", "^accumulo.*$", "^hive_.*$",
     "^pig[_\-.].*$" # there's a default 'pigz' package which we should avoid
   ]
   
diff --git a/ambari-server/src/main/resources/scripts/Ambaripreupload.py b/ambari-server/src/main/resources/scripts/Ambaripreupload.py
index 14d4a5c..1820d87 100644
--- a/ambari-server/src/main/resources/scripts/Ambaripreupload.py
+++ b/ambari-server/src/main/resources/scripts/Ambaripreupload.py
@@ -148,9 +148,14 @@ with Environment() as env:
     hdfs_site = ConfigDictionary({'dfs.webhdfs.enabled':False, 
     })
     fs_default = get_fs_root()
-    slider_home_dir = '/usr/hdp/' + stack_version + '/slider'
-    slider_lib_dir = slider_home_dir + '/lib'
-    slider_tarball = slider_lib_dir + "/slider.tar.gz"
+    yarn_home_dir = '/usr/hdp/' + stack_version + '/hadoop-yarn'
+    yarn_lib_dir = yarn_home_dir + '/lib'
+    yarn_service_tarball = yarn_lib_dir + '/service-dep.tar.gz'
+    hdfs_home_dir = '/usr/hdp/' + stack_version + '/hadoop-hdfs'
+    hdfs_lib_dir = hdfs_home_dir + '/lib'
+    hadoop_home_dir = '/usr/hdp/' + stack_version + '/hadoop'
+    hadoop_lib_dir = hadoop_home_dir + '/lib'
+   
     oozie_secure = ''
     oozie_home="/usr/hdp/" + stack_version + "/oozie"
     oozie_setup_sh=format("/usr/hdp/" + stack_version + "/oozie/bin/oozie-setup.sh")
@@ -304,14 +309,16 @@ with Environment() as env:
     params.HdfsResource(hdfs_path_prefix + '/user/oozie/share/lib/sqoop/{0}'.format(os.path.basename(SQL_DRIVER_PATH)),
                         owner='hdfs', type='file', action=['create_on_execute'], mode=0644, source=SQL_DRIVER_PATH)
 
-  def recreate_slider_tarball():
+  def create_yarn_service_tarball():
     """
-    Re-create tarball to include extra jars, which were put into slider lib dir.
+    Create tarball to include YARN Service dependency jars
     """
-    Logger.info(format("Re-creating {slider_tarball}"))
-    with closing(tarfile.open(params.slider_tarball, "w:gz")) as tar:
-      for filepath in glob.glob(format("{slider_lib_dir}/*.jar")):
-        tar.add(os.path.realpath(filepath), arcname=os.path.basename(filepath))
+    Logger.info(format("Creating {yarn_service_tarball}"))
+    folders = [yarn_home_dir, yarn_lib_dir, hdfs_home_dir, hdfs_lib_dir, hadoop_home_dir, hadoop_lib_dir]
+    with closing(tarfile.open(params.yarn_service_tarball, "w:gz")) as tar:
+      for folder in folders:
+        for filepath in glob.glob(format("{folder}/*.jar")):
+          tar.add(os.path.realpath(filepath), arcname=os.path.basename(filepath))
       
   env.set_params(params)
   hadoop_conf_dir = params.hadoop_conf_dir
@@ -350,7 +357,7 @@ with Environment() as env:
   oozie_hdfs_user_dir = format("{hdfs_path_prefix}/user/{oozie_user}")
   kinit_if_needed = ''
 
-  recreate_slider_tarball()
+  create_yarn_service_tarball()
 
   if options.upgrade:
     Logger.info("Skipping uploading oozie shared lib during upgrade")
@@ -429,7 +436,7 @@ with Environment() as env:
   copy_tarballs_to_hdfs(format("/usr/hdp/{stack_version}/pig/pig.tar.gz"), hdfs_path_prefix+"/hdp/apps/{{ stack_version_formatted }}/pig/", 'hadoop-mapreduce-historyserver', params.mapred_user, params.hdfs_user, params.user_group)
   copy_tarballs_to_hdfs(format("/usr/hdp/{stack_version}/hadoop-mapreduce/hadoop-streaming.jar"), hdfs_path_prefix+"/hdp/apps/{{ stack_version_formatted }}/mapreduce/", 'hadoop-mapreduce-historyserver', params.mapred_user, params.hdfs_user, params.user_group)
   copy_tarballs_to_hdfs(format("/usr/hdp/{stack_version}/sqoop/sqoop.tar.gz"), hdfs_path_prefix+"/hdp/apps/{{ stack_version_formatted }}/sqoop/", 'hadoop-mapreduce-historyserver', params.mapred_user, params.hdfs_user, params.user_group)
-  copy_tarballs_to_hdfs(format("/usr/hdp/{stack_version}/slider/lib/slider.tar.gz"), hdfs_path_prefix+"/hdp/apps/{{ stack_version_formatted }}/slider/", 'hadoop-mapreduce-historyserver', params.hdfs_user, params.hdfs_user, params.user_group)
+  copy_tarballs_to_hdfs(format("/usr/hdp/{stack_version}/hadoop-yarn/lib/service-dep.tar.gz"), hdfs_path_prefix+"/hdp/apps/{{ stack_version_formatted }}/yarn/", 'hadoop-mapreduce-historyserver', params.hdfs_user, params.hdfs_user, params.user_group)
   
   createHdfsResources()
   copy_zeppelin_dependencies_to_hdfs(format("/usr/hdp/{stack_version}/zeppelin/interpreter/spark/dep/zeppelin-spark-dependencies*.jar"))
diff --git a/ambari-server/src/main/resources/scripts/takeover_files_mapping.json b/ambari-server/src/main/resources/scripts/takeover_files_mapping.json
index 69b4085..b99b093 100644
--- a/ambari-server/src/main/resources/scripts/takeover_files_mapping.json
+++ b/ambari-server/src/main/resources/scripts/takeover_files_mapping.json
@@ -15,9 +15,8 @@
   ".+/etc/hive/.+/log4j.properties" : "hive-log4j",
   ".+/etc/kafka/.+/log4j.properties" : "kafka-log4j",
   ".+/etc/oozie/.+/log4j.properties" : "oozie-log4j",
-  ".+/etc/slider/.+/log4j.properties" : "slider-log4j",
   ".+/etc/ambari-metrics-collector/.+/log4j.properties" : "ams-log4j",
   ".+/storm.yaml" : "storm-site",
   ".+/runtime.properties" : "falcon-runtime",
   ".+/startup.properties" : "falcon-startup"
-}
\ No newline at end of file
+}
diff --git a/ambari-server/src/main/resources/slider_resources/README.txt b/ambari-server/src/main/resources/slider_resources/README.txt
deleted file mode 100644
index 4123e05..0000000
--- a/ambari-server/src/main/resources/slider_resources/README.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-Drop Apache Slider application .zip packages in this folder.
\ No newline at end of file
diff --git a/ambari-web/app/assets/data/configurations/config_versions.json b/ambari-web/app/assets/data/configurations/config_versions.json
index c9af200..8b20994 100644
--- a/ambari-web/app/assets/data/configurations/config_versions.json
+++ b/ambari-web/app/assets/data/configurations/config_versions.json
@@ -1764,7 +1764,8 @@
             "yarn.timeline-service.ttl-enable" : "true",
             "yarn.timeline-service.ttl-ms" : "2678400000",
             "yarn.timeline-service.webapp.address" : "c6402.ambari.apache.org:8188",
-            "yarn.timeline-service.webapp.https.address" : "c6402.ambari.apache.org:8190"
+            "yarn.timeline-service.webapp.https.address" : "c6402.ambari.apache.org:8190",
+            "yarn.service.framework.path" : "/hdp/apps/${hdp.version}/yarn/service-dep.tar.gz"
           },
           "properties_attributes" : { }
         },
diff --git a/ambari-web/app/data/configs/services/yarn_properties.js b/ambari-web/app/data/configs/services/yarn_properties.js
index 3ea131d..cbc9500 100644
--- a/ambari-web/app/data/configs/services/yarn_properties.js
+++ b/ambari-web/app/data/configs/services/yarn_properties.js
@@ -121,6 +121,18 @@ module.exports = [
     "serviceName": "YARN"
   },
   {
+    "category": "ResourceTypes",
+    "filename": "resource-types.xml",
+    "name": "yarn.resource-types",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "ResourceTypes",
+    "filename": "resource-types.xml",
+    "name": "yarn.resource-types.yarn.io/gpu.maximum-allocation",
+    "serviceName": "YARN"
+  },
+  {
     "category": "RESOURCEMANAGER",
     "filename": "yarn-env.xml",
     "index": 1,
@@ -302,5 +314,119 @@ module.exports = [
     "index": 1,
     "name": "ranger-yarn-plugin-enabled",
     "serviceName": "YARN"
+  },
+  {
+    "category": "ContainerExecutor",
+    "filename": "container-executor.xml",
+    "name": "docker_module_enabled",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "ContainerExecutor",
+    "filename": "container-executor.xml",
+    "name": "docker_binary",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "ContainerExecutor",
+    "filename": "container-executor.xml",
+    "name": "docker_allowed_capabilities",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "ContainerExecutor",
+    "filename": "container-executor.xml",
+    "name": "docker_allowed_devices",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "ContainerExecutor",
+    "filename": "container-executor.xml",
+    "name": "docker_allowed_networks",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "ContainerExecutor",
+    "filename": "container-executor.xml",
+    "name": "docker_allowed_ro-mounts",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "ContainerExecutor",
+    "filename": "container-executor.xml",
+    "name": "docker_allowed_rw-mounts",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "ContainerExecutor",
+    "filename": "container-executor.xml",
+    "name": "docker_allowed_volume-drivers",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "ContainerExecutor",
+    "filename": "container-executor.xml",
+    "name": "docker_privileged-containers_enabled",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "ContainerExecutor",
+    "filename": "container-executor.xml",
+    "name": "min_user_id",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "ContainerExecutor",
+    "filename": "container-executor.xml",
+    "name": "gpu_module_enabled",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "ContainerExecutor",
+    "filename": "container-executor.xml",
+    "name": "cgroup_root",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "ContainerExecutor",
+    "filename": "container-executor.xml",
+    "name": "yarn_hierarchy",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "Registry",
+    "filename": "yarn-site.xml",
+    "name": "hadoop.registry.zk.quorum",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "Registry",
+    "filename": "yarn-env.xml",
+    "name": "registry.dns.bind-port",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "Registry",
+    "filename": "yarn-site.xml",
+    "name": "hadoop.registry.dns.zone-mask",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "Registry",
+    "filename": "yarn-site.xml",
+    "name": "hadoop.registry.dns.zone-subnet",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "Registry",
+    "filename": "yarn-site.xml",
+    "name": "hadoop.registry.dns.enabled",
+    "serviceName": "YARN"
+  },
+  {
+    "category": "Registry",
+    "filename": "yarn-site.xml",
+    "name": "hadoop.registry.dns.domain-name",
+    "serviceName": "YARN"
   }
 ];
\ No newline at end of file
diff --git a/ambari-web/app/models/stack_service.js b/ambari-web/app/models/stack_service.js
index aa48e17..a8d3e3e 100644
--- a/ambari-web/app/models/stack_service.js
+++ b/ambari-web/app/models/stack_service.js
@@ -269,7 +269,7 @@ App.StackService = DS.Model.extend({
     var configTypes = this.get('configTypes');
     var serviceComponents = this.get('serviceComponents');
     if (configTypes && Object.keys(configTypes).length) {
-      var pattern = ["General", "CapacityScheduler", "FaultTolerance", "Isolation", "Performance", "HIVE_SERVER2", "KDC", "Kadmin","^Advanced", "Env$", "^Custom", "Falcon - Oozie integration", "FalconStartupSite", "FalconRuntimeSite", "MetricCollector", "Settings$", "AdvancedHawqCheck", "LogsearchAdminJson"];
+      var pattern = ["General", "ResourceType", "CapacityScheduler", "ContainerExecutor", "Registry", "FaultTolerance", "Isolation", "Performance", "HIVE_SERVER2", "KDC", "Kadmin","^Advanced", "Env$", "^Custom", "Falcon - Oozie integration", "FalconStartupSite", "FalconRuntimeSite", "MetricCollector", "Settings$", "AdvancedHawqCheck", "LogsearchAdminJson"];
       configCategories = App.StackService.configCategories.call(this).filter(function (_configCategory) {
         var serviceComponentName = _configCategory.get('name');
         var isServiceComponent = serviceComponents.someProperty('componentName', serviceComponentName);
@@ -375,9 +375,12 @@ App.StackService.configCategories = function () {
         App.ServiceConfigCategory.create({ name: 'NODEMANAGER', displayName: 'Node Manager', showHost: true}),
         App.ServiceConfigCategory.create({ name: 'APP_TIMELINE_SERVER', displayName: 'Application Timeline Server', showHost: true}),
         App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'}),
+        App.ServiceConfigCategory.create({ name: 'ResourceTypes', displayName: 'Resource Types'}),
         App.ServiceConfigCategory.create({ name: 'FaultTolerance', displayName: 'Fault Tolerance'}),
         App.ServiceConfigCategory.create({ name: 'Isolation', displayName: 'Isolation'}),
-        App.ServiceConfigCategory.create({ name: 'CapacityScheduler', displayName: 'Scheduler', siteFileName: 'capacity-scheduler.xml'})
+        App.ServiceConfigCategory.create({ name: 'CapacityScheduler', displayName: 'Scheduler', siteFileName: 'capacity-scheduler.xml'}),
+        App.ServiceConfigCategory.create({ name: 'ContainerExecutor', displayName: 'Container Executor', siteFileName: 'container-executor.xml'}),
+        App.ServiceConfigCategory.create({ name: 'Registry', displayName: 'Registry'})
       ]);
       break;
     case 'MAPREDUCE2':
diff --git a/ambari-web/pom.xml b/ambari-web/pom.xml
index a483f19..128f5e6 100644
--- a/ambari-web/pom.xml
+++ b/ambari-web/pom.xml
@@ -17,367 +17,366 @@
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <parent>
-        <groupId>org.apache.ambari</groupId>
-        <artifactId>ambari-project</artifactId>
-        <version>2.0.0.0-SNAPSHOT</version>
-        <relativePath>../ambari-project</relativePath>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>ambari-web</artifactId>
-    <packaging>pom</packaging>
-    <name>Ambari Web</name>
+  <parent>
+    <groupId>org.apache.ambari</groupId>
+    <artifactId>ambari-project</artifactId>
     <version>2.0.0.0-SNAPSHOT</version>
-    <description>Ambari Web</description>
-    <properties>
-        <ambari.dir>${project.parent.parent.basedir}</ambari.dir>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <nodemodules.dir>node_modules</nodemodules.dir> <!-- specify -Dnodemodules.dir option to reduce ambari-web build time by not re-downloading npm modules -->
-    </properties>
-    <build>
+    <relativePath>../ambari-project</relativePath>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>ambari-web</artifactId>
+  <packaging>pom</packaging>
+  <name>Ambari Web</name>
+  <version>2.99.99.0-SNAPSHOT</version>
+  <description>Ambari Web</description>
+  <properties>
+    <ambari.dir>${project.parent.parent.basedir}</ambari.dir>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <nodemodules.dir>node_modules</nodemodules.dir> <!-- specify -Dnodemodules.dir option to reduce ambari-web build time by not re-downloading npm modules -->
+  </properties>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <version>1.8</version>
+        <executions>
+          <execution>
+            <id>parse-version</id>
+            <phase>validate</phase>
+            <goals>
+              <goal>parse-version</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>regex-property</id>
+            <goals>
+              <goal>regex-property</goal>
+            </goals>
+            <configuration>
+              <name>ambariVersion</name>
+              <value>${project.version}</value>
+              <regex>^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)(\.|-).*</regex>
+              <replacement>$1.$2.$3.$4</replacement>
+              <failIfNoMatch>false</failIfNoMatch>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.0</version>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>rpm-maven-plugin</artifactId>
+        <version>2.0.1</version>
+        <executions>
+          <execution>
+            <!-- unbinds rpm creation from maven lifecycle -->
+            <phase>none</phase>
+            <goals>
+              <goal>attached-rpm</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <copyright>2012, Apache Software Foundation</copyright>
+          <group>Development</group>
+          <description>Maven Recipe: RPM Package.</description>
+          <mappings/>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>com.github.eirslett</groupId>
+        <artifactId>frontend-maven-plugin</artifactId>
+        <version>1.4</version>
+        <configuration>
+          <nodeVersion>v4.5.0</nodeVersion>
+          <yarnVersion>v0.23.2</yarnVersion>
+          <workingDirectory>${basedir}</workingDirectory>
+          <npmInheritsProxyConfigFromMaven>false</npmInheritsProxyConfigFromMaven>
+          <!-- setting npm_config_tmp environment variable is a workaround for 
+               https://github.com/Medium/phantomjs/issues/673 -->
+          <environmentVariables>
+            <npm_config_tmp>/tmp/npm_config_tmp</npm_config_tmp>
+          </environmentVariables>
+        </configuration>
+        <executions>
+          <execution>
+            <id>install node and yarn</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>install-node-and-yarn</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>yarn install</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>yarn</goal>
+            </goals>
+            <configuration>
+              <arguments>install --ignore-engines --pure-lockfile</arguments>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>exec-maven-plugin</artifactId>
+        <version>1.2.1</version>
+        <executions>
+          <execution>
+            <id>clean-rmdir</id>
+            <phase>clean</phase>
+            <goals>
+              <goal>exec</goal>
+            </goals>
+            <configuration>
+              <executable>${executable.rmdir}</executable>
+              <workingDirectory>${basedir}</workingDirectory>
+              <commandlineArgs>${args.rm.clean} public ${nodemodules.dir}</commandlineArgs>
+              <successCodes>
+                <successCode>0</successCode>
+                <successCode>1</successCode>
+                <successCode>2</successCode>
+              </successCodes>
+            </configuration>
+          </execution>
+          <execution>
+            <id>clean-mkdir</id>
+            <phase>clean</phase>
+            <goals>
+              <goal>exec</goal>
+            </goals>
+            <configuration>
+              <executable>${executable.mkdir}</executable>
+              <workingDirectory>${basedir}</workingDirectory>
+              <commandlineArgs>${args.mkdir} public</commandlineArgs>
+            </configuration>
+          </execution>
+          <execution>
+            <id>Brunch build</id>
+            <phase>generate-resources</phase>
+            <goals>
+              <goal>exec</goal>
+            </goals>
+            <configuration>
+              <workingDirectory>${basedir}</workingDirectory>
+              <executable>${basedir}/node/${node.executable}</executable>
+              <arguments>
+                <argument>node_modules/brunch/bin/brunch</argument>
+                <argument>build</argument>
+              </arguments>
+            </configuration>
+          </execution>
+          <execution>
+            <id>set-ambari-version</id>
+            <phase>compile</phase>
+            <goals>
+              <goal>exec</goal>
+            </goals>
+            <configuration>
+              <!-- sets Ambari version to make it accessible from code -->
+              <executable>${executable.shell}</executable>
+              <workingDirectory>${basedir}</workingDirectory>
+              <commandlineArgs>${args.shell} ${basedir}${dirsep}set-ambari-version.${fileextension.shell} ${ambariVersion}</commandlineArgs>
+            </configuration>
+          </execution>
+          <execution>
+            <id>set-default-stack-version</id>
+            <phase>compile</phase>
+            <goals>
+              <goal>exec</goal>
+            </goals>
+            <configuration>
+              <!-- sets default stack and version to use for install -->
+              <executable>${executable.shell}</executable>
+              <workingDirectory>${basedir}</workingDirectory>
+              <commandlineArgs>${args.shell} ${basedir}${dirsep}set-default-stack-version.${fileextension.shell} ${defaultStackVersion}</commandlineArgs>
+            </configuration>
+          </execution>
+          <execution>
+            <id>toggle-experimental</id>
+            <phase>compile</phase>
+            <goals>
+              <goal>exec</goal>
+            </goals>
+            <configuration>
+              <!-- enables experimental features if enableExperimental is set to true -->
+              <executable>${executable.shell}</executable>
+              <workingDirectory>${basedir}</workingDirectory>
+              <commandlineArgs>${args.shell} ${basedir}${dirsep}toggle-experimental.${fileextension.shell} ${enableExperimental}</commandlineArgs>
+            </configuration>
+          </execution>
+          <execution>
+            <id>ambari-web unit tests</id>
+            <phase>test</phase>
+            <goals>
+              <goal>exec</goal>
+            </goals>
+            <configuration>
+              <skip>${skipTests}</skip>
+              <executable>${executable.npm}</executable>
+              <workingDirectory>${basedir}</workingDirectory>
+              <commandlineArgs>${args.npm} test</commandlineArgs>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <version>1.7</version>
+        <executions>
+          <execution>
+            <id>gzip ambari-web images</id>
+            <phase>prepare-package</phase>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <configuration>
+              <tasks>
+                <apply executable="${executable.gzip}">
+                  <arg value="-f"/>
+                  <fileset dir="${basedir}/public/img/">
+                    <patternset>
+                      <include name="**/*.png"/>
+                    </patternset>
+                  </fileset>
+                </apply>
+              </tasks>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.rat</groupId>
+        <artifactId>apache-rat-plugin</artifactId>
+        <configuration>
+          <excludes>
+            <exclude>.idea/**</exclude>
+            <exclude>package.json</exclude>
+            <exclude>public/**</exclude>
+            <exclude>public-static/**</exclude>
+            <exclude>app/assets/**</exclude>
+            <exclude>api-docs/**</exclude>
+            <exclude>vendor/**</exclude>
+            <exclude>node_modules/**</exclude>
+            <exclude>node/**</exclude>
+            <exclude>npm-debug.log</exclude>
+            <exclude>yarn.lock</exclude>
+          </excludes>
+        </configuration>
+        <executions>
+          <execution>
+            <phase>test</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.vafer</groupId>
+        <artifactId>jdeb</artifactId>
+        <version>1.0.1</version>
+        <executions>
+          <execution>
+            <phase>none</phase>
+            <goals>
+              <goal>jdeb</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <skip>true</skip>
+          <submodules>false</submodules>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <profiles>
+    <profile>
+      <id>windows</id>
+      <activation>
+        <os>
+          <family>win</family>
+        </os>
+      </activation>
+      <properties>
+        <envClassifier>win</envClassifier>
+        <dirsep>\</dirsep>
+        <executable.brunch>cmd</executable.brunch>
+        <executable.gzip>${basedir}\gzip-content.cmd</executable.gzip>
+        <args.brunch>/C brunch</args.brunch>
+        <node.executable>node.exe</node.executable>
+        <executable.mkdir>cmd</executable.mkdir>
+        <args.mkdir>/C mkdir</args.mkdir>
+        <executable.npm>cmd</executable.npm>
+        <args.npm>/C npm</args.npm>
+        <executable.rmdir>cmd</executable.rmdir>
+        <args.rm.clean>/C rmdir /S /Q</args.rm.clean>
+        <executable.shell>cmd</executable.shell>
+        <fileextension.shell>cmd</fileextension.shell>
+        <args.shell>/C</args.shell>
+      </properties>
+    </profile>
+    <profile>
+      <id>linux</id>
+      <activation>
+        <os>
+          <family>unix</family>
+        </os>
+      </activation>
+      <properties>
+        <envClassifier>linux</envClassifier>
+        <dirsep>/</dirsep>
+        <executable.brunch>brunch</executable.brunch>
+        <executable.gzip>gzip</executable.gzip>
+        <args.brunch></args.brunch>
+        <node.executable>node</node.executable>
+        <executable.mkdir>mkdir</executable.mkdir>
+        <args.mkdir></args.mkdir>
+        <executable.npm>npm</executable.npm>
+        <args.npm></args.npm>
+        <executable.rmdir>rm</executable.rmdir>
+        <args.rm.clean>-rf</args.rm.clean>
+        <executable.shell>sh</executable.shell>
+        <fileextension.shell>sh</fileextension.shell>
+        <args.shell></args.shell>
+      </properties>
+    </profile>
+    <profile>
+      <id>pluggable-stack-definition</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
         <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>1.8</version>
-                <executions>
-                    <execution>
-                        <id>parse-version</id>
-                        <phase>validate</phase>
-                        <goals>
-                            <goal>parse-version</goal>
-                        </goals>
-                    </execution>
-                    <execution>
-                        <id>regex-property</id>
-                        <goals>
-                            <goal>regex-property</goal>
-                        </goals>
-                        <configuration>
-                            <name>ambariVersion</name>
-                            <value>${project.version}</value>
-                            <regex>^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)(\.|-).*</regex>
-                            <replacement>$1.$2.$3.$4</replacement>
-                            <failIfNoMatch>false</failIfNoMatch>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.0</version>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>rpm-maven-plugin</artifactId>
-                <version>2.0.1</version>
-                <executions>
-                    <execution>
-                        <!-- unbinds rpm creation from maven lifecycle -->
-                        <phase>none</phase>
-                        <goals>
-                            <goal>attached-rpm</goal>
-                        </goals>
-                    </execution>
-                </executions>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>exec-maven-plugin</artifactId>
+            <version>1.2.1</version>
+            <executions>
+              <execution>
+                <id>copy-pluggable-stack-resources</id>
+                <phase>initialize</phase>
+                <goals>
+                  <goal>exec</goal>
+                </goals>
                 <configuration>
-                    <copyright>2012, Apache Software Foundation</copyright>
-                    <group>Development</group>
-                    <description>Maven Recipe: RPM Package.</description>
-                    <mappings/>
+                  <!-- Copy stack specific UI resources -->
+                  <executable>${executable.shell}</executable>
+                  <workingDirectory>${basedir}</workingDirectory>
+                  <commandlineArgs>${args.shell} ${basedir}${dirsep}copy-pluggable-stack-resources.${fileextension.shell} ${stack.distribution}</commandlineArgs>
                 </configuration>
-            </plugin>
-            <plugin>
-                <groupId>com.github.eirslett</groupId>
-                <artifactId>frontend-maven-plugin</artifactId>
-                <version>1.4</version>
-                <configuration>
-                    <nodeVersion>v4.5.0</nodeVersion>
-                    <yarnVersion>v0.23.2</yarnVersion>
-                    <workingDirectory>${basedir}</workingDirectory>
-                    <npmInheritsProxyConfigFromMaven>false</npmInheritsProxyConfigFromMaven>
-                    <!-- setting npm_config_tmp environment variable is a workaround for
-                         https://github.com/Medium/phantomjs/issues/673 -->
-                    <environmentVariables>
-                        <npm_config_tmp>/tmp/npm_config_tmp</npm_config_tmp>
-                    </environmentVariables>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>install node and yarn</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>install-node-and-yarn</goal>
-                        </goals>
-                    </execution>
-                    <execution>
-                        <id>yarn install</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>yarn</goal>
-                        </goals>
-                        <configuration>
-                            <arguments>install --ignore-engines --pure-lockfile</arguments>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>exec-maven-plugin</artifactId>
-                <version>1.2.1</version>
-                <executions>
-                    <execution>
-                        <id>clean-rmdir</id>
-                        <phase>clean</phase>
-                        <goals>
-                            <goal>exec</goal>
-                        </goals>
-                        <configuration>
-                            <executable>${executable.rmdir}</executable>
-                            <workingDirectory>${basedir}</workingDirectory>
-                            <commandlineArgs>${args.rm.clean} public ${nodemodules.dir}</commandlineArgs>
-                            <successCodes>
-                                <successCode>0</successCode>
-                                <successCode>1</successCode>
-                                <successCode>2</successCode>
-                            </successCodes>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>clean-mkdir</id>
-                        <phase>clean</phase>
-                        <goals>
-                            <goal>exec</goal>
-                        </goals>
-                        <configuration>
-                            <executable>${executable.mkdir}</executable>
-                            <workingDirectory>${basedir}</workingDirectory>
-                            <commandlineArgs>${args.mkdir} public</commandlineArgs>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>Brunch build</id>
-                        <phase>generate-resources</phase>
-                        <goals>
-                            <goal>exec</goal>
-                        </goals>
-                        <configuration>
-                            <workingDirectory>${basedir}</workingDirectory>
-                            <executable>${basedir}/node/${node.executable}</executable>
-                            <arguments>
-                                <argument>node_modules/brunch/bin/brunch</argument>
-                                <argument>build</argument>
-                            </arguments>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>set-ambari-version</id>
-                        <phase>compile</phase>
-                        <goals>
-                            <goal>exec</goal>
-                        </goals>
-                        <configuration>
-                            <!-- sets Ambari version to make it accessible from code -->
-                            <executable>${executable.shell}</executable>
-                            <workingDirectory>${basedir}</workingDirectory>
-                            <commandlineArgs>${args.shell} ${basedir}${dirsep}set-ambari-version.${fileextension.shell} ${ambariVersion}</commandlineArgs>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>set-default-stack-version</id>
-                        <phase>compile</phase>
-                        <goals>
-                            <goal>exec</goal>
-                        </goals>
-                        <configuration>
-                            <!-- sets default stack and version to use for install -->
-                            <executable>${executable.shell}</executable>
-                            <workingDirectory>${basedir}</workingDirectory>
-                            <commandlineArgs>${args.shell} ${basedir}${dirsep}set-default-stack-version.${fileextension.shell} ${defaultStackVersion}</commandlineArgs>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>toggle-experimental</id>
-                        <phase>compile</phase>
-                        <goals>
-                            <goal>exec</goal>
-                        </goals>
-                        <configuration>
-                            <!-- enables experimental features if enableExperimental is set to true -->
-                            <executable>${executable.shell}</executable>
-                            <workingDirectory>${basedir}</workingDirectory>
-                            <commandlineArgs>${args.shell} ${basedir}${dirsep}toggle-experimental.${fileextension.shell} ${enableExperimental}</commandlineArgs>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>ambari-web unit tests</id>
-                        <phase>test</phase>
-                        <goals>
-                            <goal>exec</goal>
-                        </goals>
-                        <configuration>
-                            <skip>${skipTests}</skip>
-                            <executable>${executable.npm}</executable>
-                            <workingDirectory>${basedir}</workingDirectory>
-                            <commandlineArgs>${args.npm} test</commandlineArgs>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-antrun-plugin</artifactId>
-                <version>1.7</version>
-                <executions>
-                    <execution>
-                        <id>gzip ambari-web images</id>
-                        <phase>prepare-package</phase>
-                        <goals>
-                            <goal>run</goal>
-                        </goals>
-                        <configuration>
-                            <tasks>
-                                <apply executable="${executable.gzip}">
-                                    <arg value="-f"/>
-                                    <arg value="-c"/>
-                                    <fileset dir="${basedir}/public/img/">
-                                        <patternset>
-                                            <include name="**/*.png"/>
-                                        </patternset>
-                                    </fileset>
-                                </apply>
-                            </tasks>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.rat</groupId>
-                <artifactId>apache-rat-plugin</artifactId>
-                <configuration>
-                    <excludes>
-                        <exclude>.idea/**</exclude>
-                        <exclude>package.json</exclude>
-                        <exclude>public/**</exclude>
-                        <exclude>public-static/**</exclude>
-                        <exclude>app/assets/**</exclude>
-                        <exclude>api-docs/**</exclude>
-                        <exclude>vendor/**</exclude>
-                        <exclude>node_modules/**</exclude>
-                        <exclude>node/**</exclude>
-                        <exclude>npm-debug.log</exclude>
-                        <exclude>yarn.lock</exclude>
-                    </excludes>
-                </configuration>
-                <executions>
-                    <execution>
-                        <phase>test</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.vafer</groupId>
-                <artifactId>jdeb</artifactId>
-                <version>1.0.1</version>
-                <executions>
-                    <execution>
-                        <phase>none</phase>
-                        <goals>
-                            <goal>jdeb</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <skip>true</skip>
-                    <submodules>false</submodules>
-                </configuration>
-            </plugin>
+              </execution>
+            </executions>
+          </plugin>
         </plugins>
-    </build>
-    <profiles>
-        <profile>
-            <id>windows</id>
-            <activation>
-                <os>
-                    <family>win</family>
-                </os>
-            </activation>
-            <properties>
-                <envClassifier>win</envClassifier>
-                <dirsep>\</dirsep>
-                <executable.brunch>cmd</executable.brunch>
-                <executable.gzip>${basedir}\gzip-content.cmd</executable.gzip>
-                <args.brunch>/C brunch</args.brunch>
-                <node.executable>node.exe</node.executable>
-                <executable.mkdir>cmd</executable.mkdir>
-                <args.mkdir>/C mkdir</args.mkdir>
-                <executable.npm>cmd</executable.npm>
-                <args.npm>/C npm</args.npm>
-                <executable.rmdir>cmd</executable.rmdir>
-                <args.rm.clean>/C rmdir /S /Q</args.rm.clean>
-                <executable.shell>cmd</executable.shell>
-                <fileextension.shell>cmd</fileextension.shell>
-                <args.shell>/C</args.shell>
-            </properties>
-        </profile>
-        <profile>
-            <id>linux</id>
-            <activation>
-                <os>
-                    <family>unix</family>
-                </os>
-            </activation>
-            <properties>
-                <envClassifier>linux</envClassifier>
-                <dirsep>/</dirsep>
-                <executable.brunch>brunch</executable.brunch>
-                <executable.gzip>${basedir}/gzip-content.sh</executable.gzip>
-                <args.brunch></args.brunch>
-                <node.executable>node</node.executable>
-                <executable.mkdir>mkdir</executable.mkdir>
-                <args.mkdir></args.mkdir>
-                <executable.npm>npm</executable.npm>
-                <args.npm></args.npm>
-                <executable.rmdir>rm</executable.rmdir>
-                <args.rm.clean>-rf</args.rm.clean>
-                <executable.shell>sh</executable.shell>
-                <fileextension.shell>sh</fileextension.shell>
-                <args.shell></args.shell>
-            </properties>
-        </profile>
-        <profile>
-            <id>pluggable-stack-definition</id>
-            <activation>
-                <activeByDefault>false</activeByDefault>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.codehaus.mojo</groupId>
-                        <artifactId>exec-maven-plugin</artifactId>
-                        <version>1.2.1</version>
-                        <executions>
-                            <execution>
-                                <id>copy-pluggable-stack-resources</id>
-                                <phase>initialize</phase>
-                                <goals>
-                                    <goal>exec</goal>
-                                </goals>
-                                <configuration>
-                                    <!-- Copy stack specific UI resources -->
-                                    <executable>${executable.shell}</executable>
-                                    <workingDirectory>${basedir}</workingDirectory>
-                                    <commandlineArgs>${args.shell} ${basedir}${dirsep}copy-pluggable-stack-resources.${fileextension.shell} ${stack.distribution}</commandlineArgs>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
+      </build>
+    </profile>
+  </profiles>
 </project>

-- 
To stop receiving notification emails like this one, please contact
aonishuk@apache.org.