浏览代码

AMBARI-6858. Service config page: Advanced section should appear for each affiliated configType. (jaimin)

Jaimin Jetly 10 年之前
父节点
当前提交
6afba61c64
共有 51 个文件被更改,包括 315 次插入394 次删除
  1. 1 1
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HBASE/configuration/hbase-env.xml
  2. 1 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HBASE/configuration/hbase-log4j.xml
  3. 2 2
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HDFS/configuration/hadoop-env.xml
  4. 1 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HDFS/configuration/hdfs-log4j.xml
  5. 1 1
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/configuration/hive-env.xml
  6. 1 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/configuration/hive-exec-log4j.xml
  7. 1 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/configuration/hive-log4j.xml
  8. 0 85
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/MAPREDUCE/configuration/mapred-env.xml
  9. 1 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/MAPREDUCE/configuration/mapreduce-log4j.xml
  10. 1 1
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/OOZIE/configuration/oozie-env.xml
  11. 1 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/OOZIE/configuration/oozie-log4j.xml
  12. 1 1
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/PIG/configuration/pig-env.xml
  13. 1 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/PIG/configuration/pig-log4j.xml
  14. 1 1
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/SQOOP/configuration/sqoop-env.xml
  15. 1 1
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/ZOOKEEPER/configuration/zookeeper-env.xml
  16. 1 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/ZOOKEEPER/configuration/zookeeper-log4j.xml
  17. 1 1
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/FLUME/configuration/flume-conf.xml
  18. 1 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/FLUME/configuration/flume-log4j.xml
  19. 1 1
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HBASE/configuration/hbase-env.xml
  20. 1 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HBASE/configuration/hbase-log4j.xml
  21. 2 2
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HDFS/configuration/hadoop-env.xml
  22. 1 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HDFS/configuration/hdfs-log4j.xml
  23. 1 1
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/configuration/hive-env.xml
  24. 1 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/configuration/hive-exec-log4j.xml
  25. 1 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/configuration/hive-log4j.xml
  26. 1 1
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/OOZIE/configuration/oozie-env.xml
  27. 1 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/OOZIE/configuration/oozie-log4j.xml
  28. 1 1
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/PIG/configuration/pig-env.xml
  29. 1 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/PIG/configuration/pig-log4j.xml
  30. 1 1
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/SQOOP/configuration/sqoop-env.xml
  31. 1 1
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/YARN/configuration-mapred/mapred-env.xml
  32. 0 52
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/YARN/configuration-mapred/mapred-queue-acls.xml
  33. 1 1
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/YARN/configuration/yarn-env.xml
  34. 1 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/YARN/configuration/yarn-log4j.xml
  35. 0 2
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/YARN/metainfo.xml
  36. 0 16
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/YARN/package/scripts/yarn.py
  37. 1 1
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/ZOOKEEPER/configuration/zookeeper-env.xml
  38. 1 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/ZOOKEEPER/configuration/zookeeper-log4j.xml
  39. 1 1
      ambari-server/src/main/resources/stacks/HDP/2.1/services/FALCON/configuration/falcon-env.xml
  40. 1 1
      ambari-server/src/main/resources/stacks/HDP/2.1/services/STORM/configuration/storm-env.xml
  41. 1 1
      ambari-server/src/main/resources/stacks/HDP/2.1/services/TEZ/configuration/tez-env.xml
  42. 1 1
      ambari-server/src/main/resources/stacks/HDP/2.1/services/YARN/configuration/yarn-env.xml
  43. 2 2
      ambari-web/app/controllers/main/service/info/configs.js
  44. 2 1
      ambari-web/app/controllers/wizard.js
  45. 7 2
      ambari-web/app/controllers/wizard/step7_controller.js
  46. 76 59
      ambari-web/app/data/HDP2/site_properties.js
  47. 62 44
      ambari-web/app/data/site_properties.js
  48. 0 1
      ambari-web/app/mappers/stack_service_mapper.js
  49. 63 89
      ambari-web/app/models/stack_service.js
  50. 36 17
      ambari-web/app/utils/config.js
  51. 27 1
      ambari-web/app/views/common/configs/services_config.js

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HBASE/configuration/hbase-env.xml

@@ -60,7 +60,7 @@
   <!-- hbase-env.sh -->
   <property>
     <name>content</name>
-    <description>hbase-env.sh content</description>
+    <description>This is the jinja template for hbase-env.sh file</description>
     <value>
 # Set environment variables here.
 

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HBASE/configuration/hbase-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 #
 #

+ 2 - 2
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HDFS/configuration/hadoop-env.xml

@@ -76,7 +76,7 @@
   <property>
     <name>hdfs_user</name>
     <value>hdfs</value>
-    <description>User and Groups.</description>
+    <description>User to run HDFS as</description>
   </property>
   <property>
     <name>ignore_groupsusers_create</name>
@@ -97,7 +97,7 @@
   <!-- hadoop-env.sh -->
   <property>
     <name>content</name>
-    <description>hadoop-env.sh content</description>
+    <description>This is the jinja template for hadoop-env.sh file</description>
     <value>
 # Set Hadoop-specific environment variables here.
 

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HDFS/configuration/hdfs-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 # Copyright 2011 The Apache Software Foundation
 #

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/configuration/hive-env.xml

@@ -100,7 +100,7 @@
   <!-- hive-env.sh -->
   <property>
     <name>content</name>
-    <description>hive-env.sh content</description>
+    <description>This is the jinja template for hive-env.sh file</description>
     <value>
  if [ "$SERVICE" = "cli" ]; then
    if [ -z "$DEBUG" ]; then

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/configuration/hive-exec-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom hive-exec-log4j</description>
     <value>
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/configuration/hive-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file

+ 0 - 85
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/MAPREDUCE/configuration/mapred-env.xml

@@ -21,21 +21,6 @@
 -->
 
 <configuration>
-  <property>
-    <name>mapred_local_dir</name>
-    <value>/hadoop/mapred</value>
-    <description>MapRed Local Directories.</description>
-  </property>
-  <property>
-    <name>mapred_system_dir</name>
-    <value>/mapred/system</value>
-    <description>MapRed System Directories.</description>
-  </property>
-  <property>
-    <name>scheduler_name</name>
-    <value>org.apache.hadoop.mapred.CapacityTaskScheduler</value>
-    <description>MapRed Capacity Scheduler.</description>
-  </property>
   <property>
     <name>jtnode_opt_newsize</name>
     <value>200</value>
@@ -51,56 +36,6 @@
     <value>1024</value>
     <description>Maximum Java heap size for JobTracker in MB (Java option -Xmx)</description>
   </property>
-  <property>
-    <name>mapred_map_tasks_max</name>
-    <value>4</value>
-    <description>Number of slots that Map tasks that run simultaneously can occupy on a TaskTracker</description>
-  </property>
-  <property>
-    <name>mapred_red_tasks_max</name>
-    <value>2</value>
-    <description>Number of slots that Reduce tasks that run simultaneously can occupy on a TaskTracker</description>
-  </property>
-  <property>
-    <name>mapred_cluster_map_mem_mb</name>
-    <value>-1</value>
-    <description>The virtual memory size of a single Map slot in the MapReduce framework</description>
-  </property>
-  <property>
-    <name>mapred_cluster_red_mem_mb</name>
-    <value>-1</value>
-    <description>The virtual memory size of a single Reduce slot in the MapReduce framework</description>
-  </property>
-  <property>
-    <name>mapred_job_map_mem_mb</name>
-    <value>-1</value>
-    <description>Virtual memory for single Map task</description>
-  </property>
-  <property>
-    <name>mapred_child_java_opts_sz</name>
-    <value>768</value>
-    <description>Java options for the TaskTracker child processes.</description>
-  </property>
-  <property>
-    <name>io_sort_mb</name>
-    <value>200</value>
-    <description>The total amount of Map-side buffer memory to use while sorting files (Expert-only configuration).</description>
-  </property>
-  <property>
-    <name>io_sort_spill_percent</name>
-    <value>0.9</value>
-    <description>Percentage of sort buffer used for record collection (Expert-only configuration.</description>
-  </property>
-  <property>
-    <name>mapreduce_userlog_retainhours</name>
-    <value>24</value>
-    <description>The maximum time, in hours, for which the user-logs are to be retained after the job completion.</description>
-  </property>
-  <property>
-    <name>maxtasks_per_job</name>
-    <value>-1</value>
-    <description>Maximum number of tasks for a single Job</description>
-  </property>
   <property>
     <name>lzo_enabled</name>
     <value>true</value>
@@ -116,26 +51,6 @@
     <value>true</value>
     <description>Enable Job Diagnostics.</description>
   </property>
-  <property>
-    <name>mapred_hosts_exclude</name>
-    <value></value>
-    <description>Exclude entered hosts</description>
-  </property>
-  <property>
-    <name>mapred_hosts_include</name>
-    <value></value>
-    <description>Include entered hosts</description>
-  </property>
-  <property>
-    <name>mapred_jobstatus_dir</name>
-    <value>/mapred/jobstatus</value>
-    <description>Job Status directory</description>
-  </property>
-  <property>
-    <name>task_controller</name>
-    <value>org.apache.hadoop.mapred.DefaultTaskController</value>
-    <description>Task Controller.</description>
-  </property>
   <property>
     <name>mapred_user</name>
     <value>mapred</value>

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/MAPREDUCE/configuration/mapreduce-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 #Relative to Mapred LOG DIR Prefix
 mapred.log.dir=.

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/OOZIE/configuration/oozie-env.xml

@@ -60,7 +60,7 @@
   <!-- oozie-env.sh -->
   <property>
     <name>content</name>
-    <description>oozie-env.sh content</description>
+    <description>This is the jinja template for oozie-env.sh file</description>
     <value>
 #!/bin/bash
 

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/OOZIE/configuration/oozie-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 #
 # Licensed to the Apache Software Foundation (ASF) under one

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/PIG/configuration/pig-env.xml

@@ -24,7 +24,7 @@
   <!-- pig-env.sh -->
   <property>
     <name>content</name>
-    <description>pig-env.sh content</description>
+    <description>This is the jinja template for pig-env.sh file</description>
     <value>
 JAVA_HOME={{java64_home}}
 HADOOP_HOME=${HADOOP_HOME:-{{hadoop_home}}}

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/PIG/configuration/pig-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 #
 #

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/SQOOP/configuration/sqoop-env.xml

@@ -24,7 +24,7 @@
   <!-- sqoop-env.sh -->
   <property>
     <name>content</name>
-    <description>sqoop-env.sh content</description>
+    <description>This is the jinja template for sqoop-env.sh file</description>
     <value>
 # Set Hadoop-specific environment variables here.
 

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/ZOOKEEPER/configuration/zookeeper-env.xml

@@ -65,7 +65,7 @@
   <!-- zookeeper-env.sh -->
   <property>
     <name>content</name>
-    <description>zookeeper-env.sh content</description>
+    <description>This is the jinja template for zookeeper-env.sh file</description>
     <value>
 export JAVA_HOME={{java64_home}}
 export ZOO_LOG_DIR={{zk_log_dir}}

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/ZOOKEEPER/configuration/zookeeper-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 #
 #

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/FLUME/configuration/flume-conf.xml

@@ -22,7 +22,7 @@
 
 <configuration supports_final="false">
   <property>
-    <name>content</name>
+    <name>flume-content</name>
     <description>Describe all the Flume agent configurations</description>
     <value>
 # Flume agent config

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/FLUME/configuration/flume-log4j.xml

@@ -23,6 +23,7 @@
 <configuration supports_final="false">
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 # Flume log4j config
     </value>

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HBASE/configuration/hbase-env.xml

@@ -60,7 +60,7 @@
   <!-- hbase-env.sh -->
   <property>
     <name>content</name>
-    <description>hbase-env.sh content</description>
+    <description>This is the jinja template for hbase-env.sh file</description>
     <value>
 # Set environment variables here.
 

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HBASE/configuration/hbase-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file

+ 2 - 2
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HDFS/configuration/hadoop-env.xml

@@ -74,7 +74,7 @@
   <property>
     <name>hdfs_user</name>
     <value>hdfs</value>
-    <description>User and Groups.</description>
+    <description>User to run HDFS as</description>
   </property>
   <property>
     <name>ignore_groupsusers_create</name>
@@ -95,7 +95,7 @@
   <!-- hadoop-env.sh -->
   <property>
     <name>content</name>
-    <description>hadoop-env.sh content</description>
+    <description>This is the jinja template for hadoop-env.sh file</description>
     <value>
 # Set Hadoop-specific environment variables here.
 

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HDFS/configuration/hdfs-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 #
 # Licensed to the Apache Software Foundation (ASF) under one

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/configuration/hive-env.xml

@@ -90,7 +90,7 @@
   <!-- hive-env.sh -->
   <property>
     <name>content</name>
-    <description>hive-env.sh content</description>
+    <description>This is the jinja template for hive-env.sh file</description>
     <value>
  if [ "$SERVICE" = "cli" ]; then
    if [ -z "$DEBUG" ]; then

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/configuration/hive-exec-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom hive-exec-log4j</description>
     <value>
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/configuration/hive-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/OOZIE/configuration/oozie-env.xml

@@ -60,7 +60,7 @@
   <!-- oozie-env.sh -->
   <property>
     <name>content</name>
-    <description>oozie-env.sh content</description>
+    <description>This is the jinja template for oozie-env.sh file</description>
     <value>
 #!/bin/bash
 

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/OOZIE/configuration/oozie-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 #
 # Licensed to the Apache Software Foundation (ASF) under one

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/PIG/configuration/pig-env.xml

@@ -24,7 +24,7 @@
   <!-- pig-env.sh -->
   <property>
     <name>content</name>
-    <description>pig-env.sh content</description>
+    <description>This is the jinja template for pig-env.sh file</description>
     <value>
 JAVA_HOME={{java64_home}}
 HADOOP_HOME=${HADOOP_HOME:-{{hadoop_home}}}

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/PIG/configuration/pig-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 #
 #

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/SQOOP/configuration/sqoop-env.xml

@@ -24,7 +24,7 @@
   <!-- sqoop-env.sh -->
   <property>
     <name>content</name>
-    <description>sqoop-env.sh content</description>
+    <description>This is the jinja template for sqoop-env.sh file</description>
     <value>
 # Set Hadoop-specific environment variables here.
 

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/YARN/configuration-mapred/mapred-env.xml

@@ -45,7 +45,7 @@
   <!-- mapred-env.sh -->
   <property>
     <name>content</name>
-    <description>mapred-env.sh content</description>
+    <description>This is the jinja template for mapred-env.sh file</description>
     <value>
 # export JAVA_HOME=/home/y/libexec/jdk1.6.0/
 

+ 0 - 52
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/YARN/configuration-mapred/mapred-queue-acls.xml

@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!--
-   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.
--->
-
-<!-- mapred-queue-acls.xml -->
-<configuration supports_final="true">
-
-
-<!-- queue default -->
-
-  <property>
-    <name>mapred.queue.default.acl-submit-job</name>
-    <value>*</value>
-    <description> Comma separated list of user and group names that are allowed
-      to submit jobs to the 'default' queue. The user list and the group list
-      are separated by a blank. For e.g. alice,bob group1,group2.
-      If set to the special value '*', it means all users are allowed to
-      submit jobs.
-    </description>
-  </property>
-
-  <property>
-    <name>mapred.queue.default.acl-administer-jobs</name>
-    <value>*</value>
-    <description> Comma separated list of user and group names that are allowed
-      to delete jobs or modify job's priority for jobs not owned by the current
-      user in the 'default' queue. The user list and the group list
-      are separated by a blank. For e.g. alice,bob group1,group2.
-      If set to the special value '*', it means all users are allowed to do
-      this operation.
-    </description>
-  </property>
-
-  <!-- END ACLs -->
-
-</configuration>

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/YARN/configuration/yarn-env.xml

@@ -55,7 +55,7 @@
   <!-- yarn-env.sh -->
   <property>
     <name>content</name>
-    <description>yarn-env.sh content</description>
+    <description>This is the jinja template for yarn-env.sh file</description>
     <value>
 export HADOOP_YARN_HOME={{hadoop_yarn_home}}
 export YARN_LOG_DIR={{yarn_log_dir_prefix}}/$USER

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/YARN/configuration/yarn-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 #Relative to Yarn Log Dir Prefix
 yarn.log.dir=.

+ 0 - 2
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/YARN/metainfo.xml

@@ -132,7 +132,6 @@
         <config-type>yarn-env</config-type>
         <config-type>core-site</config-type>
         <config-type>mapred-site</config-type>
-        <config-type>mapred-queue-acls</config-type>
         <config-type>yarn-log4j</config-type>
       </configuration-dependencies>
     </service>
@@ -223,7 +222,6 @@
         <config-type>core-site</config-type>
         <config-type>mapred-site</config-type>
         <config-type>mapred-env</config-type>
-        <config-type>mapred-queue-acls</config-type>
       </configuration-dependencies>
     </service>
 

+ 0 - 16
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/YARN/package/scripts/yarn.py

@@ -200,22 +200,6 @@ def yarn(name = None):
               group=params.user_group
     )
 
-  if "mapred-queue-acls" in params.config['configurations']:
-    XmlConfig("mapred-queue-acls.xml",
-              conf_dir=params.hadoop_conf_dir,
-              configurations=params.config['configurations'][
-                'mapred-queue-acls'],
-              configuration_attributes=params.config['configuration_attributes']['mapred-queue-acls'],
-              owner=params.mapred_user,
-              group=params.user_group
-    )
-  elif os.path.exists(
-    os.path.join(params.hadoop_conf_dir, "mapred-queue-acls.xml")):
-    File(os.path.join(params.hadoop_conf_dir, "mapred-queue-acls.xml"),
-         owner=params.mapred_user,
-         group=params.user_group
-    )
-
   if "capacity-scheduler" in params.config['configurations']:
     XmlConfig("capacity-scheduler.xml",
               conf_dir=params.hadoop_conf_dir,

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/ZOOKEEPER/configuration/zookeeper-env.xml

@@ -65,7 +65,7 @@
   <!-- zookeeper-env.sh -->
   <property>
     <name>content</name>
-    <description>zookeeper-env.sh content</description>
+    <description>This is the jinja template for zookeeper-env.sh file</description>
     <value>
 export JAVA_HOME={{java64_home}}
 export ZOO_LOG_DIR={{zk_log_dir}}

+ 1 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/ZOOKEEPER/configuration/zookeeper-log4j.xml

@@ -24,6 +24,7 @@
 
   <property>
     <name>content</name>
+    <description>Custom log4j.properties</description>
     <value>
 #
 #

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/2.1/services/FALCON/configuration/falcon-env.xml

@@ -64,7 +64,7 @@
   <!-- falcon-env.sh -->
   <property>
     <name>content</name>
-    <description>falcon-env.sh content</description>
+    <description>This is the jinja template for falcon-env.sh file</description>
     <value>
 # The java implementation to use. If JAVA_HOME is not found we expect java and jar to be in path
 export JAVA_HOME={{java_home}}

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/2.1/services/STORM/configuration/storm-env.xml

@@ -40,7 +40,7 @@
   <!-- storm-env.sh -->
   <property>
     <name>content</name>
-    <description>storm-env.sh content</description>
+    <description>This is the jinja template for storm-env.sh file</description>
     <value>
 #!/bin/bash
 

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/2.1/services/TEZ/configuration/tez-env.xml

@@ -30,7 +30,7 @@
   <!-- tez-env.sh -->
   <property>
     <name>content</name>
-    <description>tez-env.sh content</description>
+    <description>This is the jinja template for tez-env.sh file</description>
     <value>
 # Tez specific configuration
 export TEZ_CONF_DIR={{config_dir}}

+ 1 - 1
ambari-server/src/main/resources/stacks/HDP/2.1/services/YARN/configuration/yarn-env.xml

@@ -60,7 +60,7 @@
   <!-- yarn-env.sh -->
   <property>
     <name>content</name>
-    <description>yarn-env.sh content</description>
+    <description>This is the jinja template for yarn-env.sh file</description>
     <value>
 export HADOOP_YARN_HOME={{hadoop_yarn_home}}
 export YARN_LOG_DIR={{yarn_log_dir_prefix}}/$USER

+ 2 - 2
ambari-web/app/controllers/main/service/info/configs.js

@@ -643,7 +643,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
       App.config.OnNnHAHideSnn(serviceConfig);
     }
 
-    if ((serviceName || serviceConfig.serviceName === 'MISC') && !App.supports.serverRecommendValidate) {
+    if (serviceName && !App.supports.serverRecommendValidate) {
       // set recommended Defaults first then load the configs (including set validator)
       var s = App.StackService.find().findProperty('serviceName', this.get('content.serviceName'));
       var defaultsProvider = s.get('defaultsProviders');
@@ -654,7 +654,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
       }
     } else {
       if (App.supports.serverRecommendValidate) {
-        var serviceConfig = App.config.createServiceConfig(this.get('content.serviceName'));
+        serviceConfig = App.config.createServiceConfig(this.get('content.serviceName'));
         this.loadConfigs(this.get('allConfigs'), serviceConfig);
         this.checkOverrideProperty(serviceConfig);
         this.checkDatabaseProperties(serviceConfig);

+ 2 - 1
ambari-web/app/controllers/wizard.js

@@ -845,7 +845,8 @@ App.WizardController = Em.Controller.extend(App.LocalStorage, {
           isRequiredByAgent: _configProperties.get('isRequiredByAgent'),
           hasInitialValue: !!_configProperties.get('hasInitialValue'),
           isRequired: _configProperties.get('isRequired'), // flag that allow saving property with empty value
-          group: !!_configProperties.get('group') ? _configProperties.get('group.name') : null
+          group: !!_configProperties.get('group') ? _configProperties.get('group.name') : null,
+          showLabel: _configProperties.get('showLabel'),
         };
         serviceConfigProperties.push(configProperty);
       }, this);

+ 7 - 2
ambari-web/app/controllers/wizard/step7_controller.js

@@ -683,7 +683,7 @@ App.WizardStep7Controller = Em.Controller.extend({
       return;
     }
     this.clearStep();
-    App.config.setPreDefinedServiceConfigs();
+
     var self = this;
     //STEP 1: Load advanced configs
     var advancedConfigs = this.get('content.advancedServiceConfig');
@@ -695,6 +695,7 @@ App.WizardStep7Controller = Em.Controller.extend({
       advancedConfigs,
       this.get('selectedServiceNames').concat(this.get('installedServiceNames'))
     );
+    App.config.setPreDefinedServiceConfigs();
     //STEP 4: Add advanced configs
     App.config.addAdvancedConfigs(configs, advancedConfigs);
     //STEP 5: Add custom configs
@@ -878,6 +879,8 @@ App.WizardStep7Controller = Em.Controller.extend({
    * set configs actual values from server
    * @param serviceConfigTags
    * @param configs
+   * @param configsByTags
+   * @param installedServiceNames
    * @method setInstalledServiceConfigs
    */
   setInstalledServiceConfigs: function (serviceConfigTags, configs, configsByTags, installedServiceNames) {
@@ -893,7 +896,8 @@ App.WizardStep7Controller = Em.Controller.extend({
       }
     });
     configs.forEach(function (_config) {
-      if (!Em.isNone(configsMap[_config.name]) && installedServiceNames && installedServiceNames.contains(_config.serviceName)) {
+      var nonServiceTab = require('data/service_configs');
+      if (!Em.isNone(configsMap[_config.name]) && ((installedServiceNames && installedServiceNames.contains(_config.serviceName)  || nonServiceTab.someProperty('serviceName',_config.serviceName))) ) {
         // prevent overriding already edited properties
         if (_config.defaultValue != configsMap[_config.name])
           _config.value = configsMap[_config.name];
@@ -905,6 +909,7 @@ App.WizardStep7Controller = Em.Controller.extend({
     });
     self.setServiceDatabaseConfigs(configs);
     //add user properties
+
     for (var name in configsMap) {
       configs.push(configMixin.addUserProperty({
         id: 'site property',

+ 76 - 59
ambari-web/app/data/HDP2/site_properties.js

@@ -97,7 +97,7 @@ module.exports =
       "name": "dfs.replication",
       "displayName": "Block replication",
       "displayType": "int",
-      "category": "Advanced",
+      "category": "General",
       "serviceName": "HDFS"
     },
     {
@@ -115,7 +115,7 @@ module.exports =
       "name": "dfs.client.read.shortcircuit",
       "displayName": "HDFS Short-circuit read",
       "displayType": "checkbox",
-      "category": "Advanced",
+      "category": "Advanced hdfs-site",
       "serviceName": "HDFS"
     },
     {
@@ -126,7 +126,7 @@ module.exports =
       "isRequired": false,
       "isRequiredByAgent": false,
       "isVisible": false,
-      "category": "Advanced",
+      "category": "Advanced hdfs-site",
       "serviceName": "HDFS"
     },
     {
@@ -137,7 +137,7 @@ module.exports =
       "isRequiredByAgent": false,
       "isRequired": false,
       "isVisible": false,
-      "category": "Advanced",
+      "category": "Advanced hdfs-site",
       "serviceName": "HDFS"
     },
 
@@ -262,7 +262,7 @@ module.exports =
       "id": "site property",
       "name": "yarn.log.server.url",
       "displayName": "yarn.log.server.url",
-      "category": "Advanced",
+      "category": "Advanced yarn-site",
       "serviceName": "YARN"
     },
     {
@@ -378,14 +378,14 @@ module.exports =
       "displayName": "hadoop.security.auth_to_local",
       "displayType": "multiLine",
       "serviceName": "HDFS",
-      "category": "Advanced"
+      "category": "Advanced core-site"
     },
     {
       "id": "site property",
       "name": "yarn.app.mapreduce.am.resource.mb",
       "displayName": "yarn.app.mapreduce.am.resource.mb",
       "displayType": "int",
-      "category": "Advanced",
+      "category": "Advanced mapred-site",
       "serviceName": "MAPREDUCE2"
     },
 
@@ -510,7 +510,7 @@ module.exports =
       "displayName": "hive.server2.tez.default.queues",
       "isRequired": false,
       "serviceName": "HIVE",
-      "category": "Advanced"
+      "category": "Advanced hive-site"
     },
     {
       "id": "site property",
@@ -522,7 +522,7 @@ module.exports =
       "isReconfigurable": true,
       "isOverridable": false,
       "isVisible": true,
-      "category": "Advanced",
+      "category": "Advanced hive-site",
       "serviceName": "HIVE"
     },
   /**********************************************tez-site*****************************************/
@@ -613,7 +613,7 @@ module.exports =
       "displayName": "HBase local directory",
       "defaultDirectory": "/hadoop/hbase",
       "displayType": "directory",
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "serviceName": "HBASE"
 
     },
@@ -626,14 +626,14 @@ module.exports =
     "isOverridable": false,
     "isVisible": true,
     "serviceName": "HBASE",
-    "category": "Advanced"
+    "category": "Advanced hbase-site"
     },
     {
       "id": "site property",
       "name": "hbase.regionserver.global.memstore.upperLimit",
       "displayName": "hbase.regionserver.global.memstore.upperLimit",
       "displayType": "float",
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "serviceName": "HBASE"
     },
     {
@@ -641,7 +641,7 @@ module.exports =
       "name": "hbase.regionserver.global.memstore.lowerLimit",
       "displayName": "hbase.regionserver.global.memstore.lowerLimit",
       "displayType": "float",
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "serviceName": "HBASE"
     },
     {
@@ -649,7 +649,7 @@ module.exports =
       "name": "hbase.hstore.blockingStoreFiles",
       "displayName": "hstore blocking storefiles",
       "displayType": "int",
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "serviceName": "HBASE"
     },
     {
@@ -713,7 +713,7 @@ module.exports =
       "name": "hbase.hregion.memstore.mslab.enabled",
       "displayName": "hbase.hregion.memstore.mslab.enabled",
       "displayType": "checkbox",
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "serviceName": "HBASE"
     },
     {
@@ -760,7 +760,7 @@ module.exports =
       "id": "site property",
       "name": "hbase.coprocessor.region.classes",
       "displayName": "hbase.coprocessor.region.classes",
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "isRequired": false,
       "serviceName": "HBASE"
     },
@@ -768,7 +768,7 @@ module.exports =
       "id": "site property",
       "name": "hbase.coprocessor.master.classes",
       "displayName": "hbase.coprocessor.master.classes",
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "isRequired": false,
       "serviceName": "HBASE"
     },
@@ -778,7 +778,7 @@ module.exports =
       "displayName": "hbase.zookeeper.quorum",
       "displayType": "multiLine",
       "serviceName": "HBASE",
-      "category": "Advanced"
+      "category": "Advanced hbase-site"
     },
 
   /**********************************************storm-site***************************************/
@@ -1203,7 +1203,7 @@ module.exports =
     {
       "id": "site property",
       "serviceName": "STORM",
-      "category": "Advanced",
+      "category": "Advanced storm-site",
       "displayName": "worker.childopts",
       "name": "worker.childopts",
       "displayType": "multiLine",
@@ -1565,7 +1565,7 @@ module.exports =
       "displayName": "templeton.hive.archive",
       "isRequired": false,
       "serviceName": "WEBHCAT",
-      "category": "Advanced"
+      "category": "Advanced webhcat-site"
     },
     {
       "id": "site property",
@@ -1573,7 +1573,7 @@ module.exports =
       "displayName": "templeton.pig.archive",
       "isRequired": false,
       "serviceName": "WEBHCAT",
-      "category": "Advanced"
+      "category": "Advanced webhcat-site"
     },
     {
       "id": "site property",
@@ -1581,7 +1581,7 @@ module.exports =
       "displayName": "templeton.zookeeper.hosts",
       "displayType": "multiLine",
       "serviceName": "WEBHCAT",
-      "category": "Advanced"
+      "category": "Advanced webhcat-site"
     },
   /**********************************************pig.properties*****************************************/
     {
@@ -1596,7 +1596,7 @@ module.exports =
       "showLabel": false,
       "serviceName": "PIG",
       "filename": "pig-properties.xml",
-      "category": "Advanced"
+      "category": "Advanced pig-properties"
     },
 
     //***************************************** GLUSTERFS stack********************************************
@@ -1640,7 +1640,7 @@ module.exports =
   /********************************************* flume-agent *****************************/
     {
       "id": "site property",
-      "name": "content",
+      "name": "flume-content",
       "displayName": "content",
       "showLabel": false,
       "isRequired": false,
@@ -1739,7 +1739,6 @@ module.exports =
       "isOverridable": false,
       "isVisible": true,
       "isRequiredByAgent": false,
-      "domain": "datanode-global",
       "serviceName": "HDFS",
       "filename": "hadoop-env.xml",
       "category": "DATANODE",
@@ -1754,7 +1753,6 @@ module.exports =
       "displayType": "int",
       "unit": "MB",
       "isVisible": true,
-      "domain": "datanode-global",
       "serviceName": "HDFS",
       "filename": "hadoop-env.xml",
       "category": "DATANODE",
@@ -1771,6 +1769,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HDFS",
       "filename": "hadoop-env.xml",
+      "category": "General",
       "index": 1
     },
     {
@@ -1785,7 +1784,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HDFS",
       "filename": "hadoop-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hadoop-env"
     },
     {
       "id": "puppet var",
@@ -1799,7 +1798,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HDFS",
       "filename": "hadoop-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hadoop-env"
     },
     {
       "id": "puppet var",
@@ -1813,7 +1812,7 @@ module.exports =
       "isVisible": false,
       "serviceName": "HDFS",
       "filename": "hadoop-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hadoop-env"
     },
 
   /**********************************************MAPREDUCE2***************************************/
@@ -1859,7 +1858,7 @@ module.exports =
       "isReconfigurable": false,
       "serviceName": "MAPREDUCE2",
       "filename": "mapred-env.xml",
-      "category": "Advanced"
+      "category": "Advanced mapred-env"
     },
     {
       "id": "puppet var",
@@ -1873,7 +1872,7 @@ module.exports =
       "isReconfigurable": false,
       "serviceName": "MAPREDUCE2",
       "filename": "mapred-env.xml",
-      "category": "Advanced"
+      "category": "Advanced mapred-env"
     },
   /**********************************************YARN***************************************/
     {
@@ -1963,7 +1962,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "YARN",
       "filename": "yarn-env.xml",
-      "category": "Advanced"
+      "category": "Advanced yarn-env"
     },
     {
       "id": "puppet var",
@@ -1977,7 +1976,7 @@ module.exports =
       "isReconfigurable": false,
       "serviceName": "YARN",
       "filename": "yarn-env.xml",
-      "category": "Advanced"
+      "category": "Advanced yarn-env"
     },
     {
       "id": "puppet var",
@@ -2105,7 +2104,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HBASE",
       "filename": "hbase-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hbase-env"
     },
     {
       "id": "puppet var",
@@ -2119,7 +2118,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HBASE",
       "filename": "hbase-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hbase-env"
     },
   /**********************************************GLUSTERFS***************************************/
     {
@@ -2216,7 +2215,7 @@ module.exports =
       "isVisible": false,
       "serviceName": "GLUSTERFS",
       "filename": "glusterfs-env.xml",
-      "category": "category"
+      "category": "Advanced"
     },
     {
       "id": "puppet var",
@@ -2241,7 +2240,6 @@ module.exports =
       "displayType": "int",
       "unit": "MB",
       "isVisible": false,
-      "domain": "datanode-global",
       "serviceName": "GLUSTERFS",
       "filename": "glusterfs-env.xml",
       "category": "Advanced"
@@ -2461,7 +2459,7 @@ module.exports =
       "isVisible": false,
       "serviceName": "HIVE",
       "filename": "hive-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hive-env"
     },
     {
       "id": "puppet var",
@@ -2475,7 +2473,7 @@ module.exports =
       "isRequiredByAgent": false, // Make this to true when we expose the property on ui by making "isVisible": true
       "serviceName": "HIVE",
       "filename": "hive-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hive-env"
     },
     {
       "id": "puppet var",
@@ -2489,7 +2487,7 @@ module.exports =
       "isRequiredByAgent": false, // Make this to true when we expose the property on ui by making "isVisible": true
       "serviceName": "HIVE",
       "filename": "hive-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hive-env"
     },
     {
       "id": "puppet var",
@@ -2503,7 +2501,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HIVE",
       "filename": "hive-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hive-env"
     },
     {
       "id": "puppet var",
@@ -2517,7 +2515,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HIVE",
       "filename": "hive-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hive-env"
     },
   /**********************************************WEBHCAT***************************************/
     {
@@ -2547,7 +2545,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "WEBHCAT",
       "filename": "webhcat-env.xml",
-      "category": "Advanced"
+      "category": "Advanced webhcat-env"
     },
     {
       "id": "puppet var",
@@ -2561,7 +2559,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "WEBHCAT",
       "filename": "webhcat-env.xml",
-      "category": "Advanced"
+      "category": "Advanced webhcat-env"
     },
   /**********************************************OOZIE***************************************/
     {
@@ -2813,7 +2811,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "OOZIE",
       "filename": "oozie-env.xml",
-      "category": "Advanced"
+      "category": "Advanced oozie-env"
     },
     {
       "id": "puppet var",
@@ -2827,7 +2825,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "OOZIE",
       "filename": "oozie-env.xml",
-      "category": "Advanced"
+      "category": "Advanced oozie-env"
     },
     {
       "id": "puppet var",
@@ -2839,7 +2837,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "OOZIE",
       "filename": "oozie-env.xml",
-      "category": "Advanced"
+      "category": "Advanced oozie-env"
     },
   /**********************************************NAGIOS***************************************/
     {
@@ -2853,6 +2851,7 @@ module.exports =
       "isOverridable": false,
       "isVisible": true,
       "serviceName": "NAGIOS",
+      "category": "General",
       "filename": "nagios-env.xml",
       "index": 0
     },
@@ -2868,6 +2867,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "NAGIOS",
       "filename": "nagios-env.xml",
+      "category": "General",
       "index": 1
     },
     {
@@ -2881,6 +2881,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "NAGIOS",
       "filename": "nagios-env.xml",
+      "category": "General",
       "index": 2
     },
   /**********************************************ZOOKEEPER***************************************/
@@ -2985,7 +2986,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "ZOOKEEPER",
       "filename": "zookeeper-env.xml",
-      "category": "Advanced",
+      "category": "Advanced zookeeper-env",
       "index": 0
     },
     {
@@ -3000,7 +3001,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "ZOOKEEPER",
       "filename": "zookeeper-env.xml",
-      "category": "Advanced",
+      "category": "Advanced zookeeper-env",
       "index": 1
     },
   /**********************************************GANGLIA***************************************/
@@ -3016,7 +3017,7 @@ module.exports =
       "isRequiredByAgent": false,
       "serviceName": "GANGLIA",
       "filename": "ganglia-env.xml",
-      "category": "Advanced"
+      "category": "Advanced ganglia-env"
     },
   /**********************************************FALCON***************************************/
     {
@@ -3087,7 +3088,7 @@ module.exports =
       "isReconfigurable": false,
       "serviceName": "FALCON",
       "filename": "falcon-env.xml",
-      "category": "Advanced"
+      "category": "Advanced falcon-env"
     },
     {
       "id": "puppet var",
@@ -3102,7 +3103,7 @@ module.exports =
       "isReconfigurable": false,
       "serviceName": "FALCON",
       "filename": "falcon-env.xml",
-      "category": "Advanced"
+      "category": "Advanced falcon-env"
     },
     {
       "id": "puppet var",
@@ -3117,7 +3118,7 @@ module.exports =
       "isReconfigurable": true,
       "serviceName": "FALCON",
       "filename": "falcon-env.xml",
-      "category": "Advanced"
+      "category": "Advanced falcon-env"
     },
     {
       "id": "puppet var",
@@ -3132,7 +3133,7 @@ module.exports =
       "isReconfigurable": true,
       "serviceName": "FALCON",
       "filename": "falcon-env.xml",
-      "category": "Advanced"
+      "category": "Advanced falcon-env"
     },
     {
       "id": "puppet var",
@@ -3147,7 +3148,7 @@ module.exports =
       "isReconfigurable": true,
       "serviceName": "FALCON",
       "filename": "falcon-env.xml",
-      "category": "Advanced"
+      "category": "Advanced falcon-env"
     },
   /**********************************************STORM***************************************/
     {
@@ -3162,7 +3163,7 @@ module.exports =
       "isRequiredByAgent": true,
       "serviceName": "STORM",
       "filename": "storm-env.xml",
-      "category": "General"
+      "category": "Advanced storm-env"
     },
     {
       "id": "puppet var",
@@ -3176,7 +3177,7 @@ module.exports =
       "isRequiredByAgent": true,
       "serviceName": "STORM",
       "filename": "storm-env.xml",
-      "category": "General"
+      "category": "Advanced storm-env"
     },
     {
       "id": "puppet var",
@@ -3458,6 +3459,22 @@ module.exports =
       "belongsToService": ["ZOOKEEPER"],
       "index": 11
     },
+    {
+      "id": "puppet var",
+      "name": "flume_user",
+      "displayName": "Flume User",
+      "description": "User to run Flume as",
+      "defaultValue": "flume",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "flume-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["FLUME"],
+      "index": 12
+    },
     {
       "id": "puppet var",
       "name": "gmetad_user",
@@ -3472,7 +3489,7 @@ module.exports =
       "filename": "ganglia-env.xml",
       "category": "Users and Groups",
       "belongsToService": ["GANGLIA"],
-      "index": 12
+      "index": 13
     },
     {
       "id": "puppet var",
@@ -3567,7 +3584,7 @@ module.exports =
       "filename": "hadoop-env.xml",
       "category": "Users and Groups",
       "belongsToService": ["HDFS"],
-      "index": 16
+      "index": 17
     },
     {
       "id": "puppet var",

+ 62 - 44
ambari-web/app/data/site_properties.js

@@ -129,7 +129,7 @@ module.exports =
       "displayType": "int",
       "defaultValue": "",
       "isVisible": true,
-      "category": "Advanced",
+      "category": "General",
       "serviceName": "HDFS"
     },
     {
@@ -168,6 +168,7 @@ module.exports =
       "displayType": "advanced",
       "isOverridable": false,
       "serviceName": "MAPREDUCE",
+      "category": "General",
       "index": 0
     },
     {
@@ -201,6 +202,7 @@ module.exports =
       "displayType": "int",
       "unit": "MB",
       "serviceName": "MAPREDUCE",
+      "category": "General",
       "index": 2
     },
     {
@@ -212,6 +214,7 @@ module.exports =
       "displayType": "int",
       "unit": "MB",
       "serviceName": "MAPREDUCE",
+      "category": "General",
       "index": 5
     },
     {
@@ -223,6 +226,7 @@ module.exports =
       "displayType": "int",
       "unit": "MB",
       "serviceName": "MAPREDUCE",
+      "category": "General",
       "index": 3
     },
     {
@@ -234,6 +238,7 @@ module.exports =
       "displayType": "int",
       "unit": "MB",
       "serviceName": "MAPREDUCE",
+      "category": "General",
       "index": 4
     },
     {
@@ -245,6 +250,7 @@ module.exports =
       "displayType": "int",
       "unit": "MB",
       "serviceName": "MAPREDUCE",
+      "category": "General",
       "index": 6
     },
     {
@@ -256,6 +262,7 @@ module.exports =
       "displayType": "int",
       "unit": "MB",
       "serviceName": "MAPREDUCE",
+      "category": "General",
       "index": 1
     },
     {
@@ -267,6 +274,7 @@ module.exports =
       "displayType": "int",
       "unit": "MB",
       "serviceName": "MAPREDUCE",
+      "category": "General",
       "index": 7
     },
     {
@@ -277,6 +285,7 @@ module.exports =
       "defaultValue": "",
       "displayType": "float",
       "serviceName": "MAPREDUCE",
+      "category": "General",
       "index": 8
     },
     {
@@ -287,7 +296,7 @@ module.exports =
       "defaultValue": "/mapred/system",
       "displayType": "directories",
       "serviceName": "MAPREDUCE",
-      "category": "Advanced"
+      "category": "Advanced mapred-site"
     },
     {
       "id": "site property",
@@ -298,6 +307,7 @@ module.exports =
       "displayType": "int",
       "unit": "hours",
       "serviceName": "MAPREDUCE",
+      "category": "General",
       "index": 9
     },
     {
@@ -308,6 +318,7 @@ module.exports =
       "defaultValue": "",
       "displayType": "int",
       "serviceName": "MAPREDUCE",
+      "category": "General",
       "index": 10
     },
     {
@@ -319,7 +330,7 @@ module.exports =
       permitted.",
       "defaultValue": "",
       "displayType": "directory",
-      "category": "Advanced",
+      "category": "Advanced mapred-site",
       "serviceName": "MAPREDUCE"
     },
     {
@@ -331,7 +342,7 @@ module.exports =
       hosts are excluded.",
       "defaultValue": "",
       "displayType": "directory",
-      "category": "Advanced",
+      "category": "Advanced mapred-site",
       "serviceName": "MAPREDUCE"
     },
     {
@@ -503,7 +514,7 @@ module.exports =
       "isReconfigurable": true,
       "isOverridable": false,
       "isVisible": true,
-      "category": "Advanced",
+      "category": "Advanced hive-site",
       "serviceName": "HIVE"
     },
   /**********************************************hbase-site***************************************/
@@ -516,7 +527,7 @@ module.exports =
       "defaultValue": "",
       "displayType": "directory",
       "isVisible": true,
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "serviceName": "HBASE"
 
     },
@@ -529,7 +540,7 @@ module.exports =
       "isOverridable": false,
       "isVisible": true,
       "serviceName": "HBASE",
-      "category": "Advanced"
+      "category": "Advanced hbase-site"
     },
     {
       "id": "site property",
@@ -538,7 +549,7 @@ module.exports =
       "description": "",
       "defaultValue": "",
       "displayType": "float",
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "serviceName": "HBASE"
     },
     {
@@ -552,7 +563,7 @@ module.exports =
       the minimum possible flushing to occur when updates are blocked due to\
       memstore limiting.",
       "displayType": "float",
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "serviceName": "HBASE"
     },
     {
@@ -565,7 +576,7 @@ module.exports =
       "defaultValue": "",
       "isRequired": true,
       "displayType": "int",
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "serviceName": "HBASE"
     },
     {
@@ -648,7 +659,7 @@ module.exports =
       GC pauses on large heaps.",
       "defaultValue": "",
       "displayType": "checkbox",
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "serviceName": "HBASE"
     },
     {
@@ -705,7 +716,7 @@ module.exports =
       "id": "site property",
       "name": "hbase.coprocessor.region.classes",
       "displayName": "hbase.coprocessor.region.classes",
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "isRequired": false,
       "serviceName": "HBASE"
     },
@@ -713,7 +724,7 @@ module.exports =
       "id": "site property",
       "name": "hbase.coprocessor.master.classes",
       "displayName": "hbase.coprocessor.master.classes",
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "isRequired": false,
       "serviceName": "HBASE"
     },
@@ -724,7 +735,7 @@ module.exports =
       "description": "This configuration parameter turns on short-circuit local reads.",
       "defaultValue": "",
       "displayType": "checkbox",
-      "category": "Advanced",
+      "category": "Advanced hbase-site",
       "serviceName": "HBASE"
     },
     {
@@ -735,7 +746,7 @@ module.exports =
       "defaultValue": "",
       "displayType": "checkbox",
       "serviceName": "HBASE",
-      "category": "Advanced"
+      "category": "Advanced hbase-site"
     },
     {
       "id": "site property",
@@ -744,7 +755,7 @@ module.exports =
       "defaultValue": "",
       "displayType": "multiLine",
       "serviceName": "HBASE",
-      "category": "Advanced"
+      "category": "Advanced hbase-site"
     },
 
   /**********************************************webhcat-site***************************************/
@@ -754,7 +765,7 @@ module.exports =
       "displayName": "templeton.hive.archive",
       "isRequired": false,
       "serviceName": "WEBHCAT",
-      "category": "Advanced"
+      "category": "Advanced webhcat-site"
     },
     {
       "id": "site property",
@@ -762,7 +773,7 @@ module.exports =
       "displayName": "templeton.pig.archive",
       "isRequired": false,
       "serviceName": "WEBHCAT",
-      "category": "Advanced"
+      "category": "Advanced webhcat-site"
     },
     {
       "id": "site property",
@@ -771,7 +782,7 @@ module.exports =
       "defaultValue": "",
       "displayType": "multiLine",
       "serviceName": "WEBHCAT",
-      "category": "Advanced"
+      "category": "Advanced webhcat-site"
     },
     //***************************************** GLUSTERFS stack********************************************
     {
@@ -931,7 +942,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HDFS",
       "filename": "hadoop-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hadoop-env"
     },
     {
       "id": "puppet var",
@@ -945,7 +956,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HDFS",
       "filename": "hadoop-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hadoop-env"
     },
     {
       "id": "puppet var",
@@ -973,7 +984,7 @@ module.exports =
       "isVisible": false,
       "serviceName": "HDFS",
       "filename": "hadoop-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hadoop-env"
     },
     {
       "id": "puppet var",
@@ -1041,6 +1052,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "GLUSTERFS",
       "filename": "hadoop-env.xml",
+      "category": "General",
       "index": 1
     },
     {
@@ -1055,7 +1067,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "GLUSTERFS",
       "filename": "hadoop-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hadoop-env"
     },
     {
       "id": "puppet var",
@@ -1069,7 +1081,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "GLUSTERFS",
       "filename": "hadoop-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hadoop-env"
     },
     {
       "id": "puppet var",
@@ -1083,7 +1095,7 @@ module.exports =
       "isVisible": false,
       "serviceName": "GLUSTERFS",
       "filename": "hadoop-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hadoop-env"
     },
     {
       "id": "puppet var",
@@ -1097,7 +1109,7 @@ module.exports =
       "isVisible": false,
       "serviceName": "GLUSTERFS",
       "filename": "hadoop-env.xml",
-      "category": "category"
+      "category": "Advanced hadoop-env"
     },
     {
       "id": "puppet var",
@@ -1111,7 +1123,7 @@ module.exports =
       "isVisible": false,
       "serviceName": "GLUSTERFS",
       "filename": "hadoop-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hadoop-env"
     },
     {
       "id": "puppet var",
@@ -1125,7 +1137,7 @@ module.exports =
       "domain": "datanode-global",
       "serviceName": "GLUSTERFS",
       "filename": "hadoop-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hadoop-env"
     },
   /**********************************************MAPREDUCE***************************************/
     {
@@ -1245,6 +1257,7 @@ module.exports =
       "isVisible": false,
       "serviceName": "MAPREDUCE",
       "filename": "mapred-env.xml",
+      "category": "General",
       "index": 11
     },
     {
@@ -1259,6 +1272,7 @@ module.exports =
       "isVisible": false,
       "serviceName": "MAPREDUCE",
       "filename": "mapred-env.xml",
+      "category": "General",
       "index": 12
     },
     {
@@ -1272,6 +1286,7 @@ module.exports =
       "displayType": "checkbox",
       "isVisible": true,
       "serviceName": "MAPREDUCE",
+      "category": "General",
       "filename": "mapred-env.xml",
       "index": 13
     },
@@ -1375,7 +1390,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HBASE",
       "filename": "hbase-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hbase-env"
     },
     {
       "id": "puppet var",
@@ -1389,7 +1404,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HBASE",
       "filename": "hbase-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hbase-env"
     },
   /**********************************************HIVE***************************************/
     {
@@ -1604,7 +1619,7 @@ module.exports =
       "isVisible": false,
       "serviceName": "HIVE",
       "filename": "hive-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hive-env"
     },
     {
       "id": "puppet var",
@@ -1618,7 +1633,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HIVE",
       "filename": "hive-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hive-env"
     },
     {
       "id": "puppet var",
@@ -1632,7 +1647,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HIVE",
       "filename": "hive-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hive-env"
     },
     {
       "id": "puppet var",
@@ -1645,7 +1660,7 @@ module.exports =
       "isVisible": false,
       "serviceName": "HIVE",
       "filename": "hive-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hive-env"
     },
   /**********************************************WEBHCAT***************************************/
     {
@@ -1675,7 +1690,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "WEBHCAT",
       "filename": "webhcat-env.xml",
-      "category": "Advanced"
+      "category": "Advanced webhcat-env"
     },
     {
       "id": "puppet var",
@@ -1689,7 +1704,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "WEBHCAT",
       "filename": "webhcat-env.xml",
-      "category": "Advanced"
+      "category": "Advanced webhcat-env"
     },
   /**********************************************OOZIE***************************************/
     {
@@ -1924,7 +1939,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "OOZIE",
       "filename": "oozie-env.xml",
-      "category": "Advanced"
+      "category": "Advanced oozie-env"
     },
     {
       "id": "puppet var",
@@ -1938,7 +1953,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "OOZIE",
       "filename": "oozie-env.xml",
-      "category": "Advanced"
+      "category": "Advanced oozie-env"
     },
     {
       "id": "puppet var",
@@ -1950,7 +1965,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "OOZIE",
       "filename": "oozie-env.xml",
-      "category": "Advanced"
+      "category": "Advanced oozie-env"
     },
   /**********************************************NAGIOS***************************************/
     {
@@ -1965,6 +1980,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "NAGIOS",
       "filename": "nagios-env.xml",
+      "category": "General",
       "index": 0
     },
     {
@@ -1979,6 +1995,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "NAGIOS",
       "filename": "nagios-env.xml",
+      "category": "General",
       "index": 1
     },
     {
@@ -1992,6 +2009,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "NAGIOS",
       "filename": "nagios-env.xml",
+      "category": "General",
       "index": 2
     },
   /**********************************************ZOOKEEPER***************************************/
@@ -2096,7 +2114,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "ZOOKEEPER",
       "filename": "zookeeper-env.xml",
-      "category": "Advanced",
+      "category": "Advanced zookeeper-env",
       "index": 0
     },
     {
@@ -2111,7 +2129,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "ZOOKEEPER",
       "filename": "zookeeper-env.xml",
-      "category": "Advanced",
+      "category": "Advanced zookeeper-env",
       "index": 1
     },
   /**********************************************HUE***************************************/
@@ -2143,7 +2161,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HUE",
       "filename": "hue-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hue-env"
     },
     {
       "id": "puppet var",
@@ -2158,7 +2176,7 @@ module.exports =
       "isVisible": true,
       "serviceName": "HUE",
       "filename": "hue-env.xml",
-      "category": "Advanced"
+      "category": "Advanced hue-env"
     },
   /**********************************************GANGLIA***************************************/
     {
@@ -2172,7 +2190,7 @@ module.exports =
       "isVisible": false,
       "serviceName": "GANGLIA",
       "filename": "ganglia-env.xml",
-      "category": "Advanced"
+      "category": "Advanced ganglia-env"
     },
   /**********************************************MISC******************************************/
     {

+ 0 - 1
ambari-web/app/mappers/stack_service_mapper.js

@@ -78,7 +78,6 @@ App.stackServiceMapper = App.QuickDataMapper.create({
         item.serviceComponents.forEach(function (serviceComponent) {
           serviceComponent.StackServiceComponents.id = serviceComponent.StackServiceComponents.component_name;
           serviceComponent.StackServiceComponents.dependencies = serviceComponent.dependencies;
-          serviceComponent.StackServiceComponents.custom_commands = serviceComponent.StackServiceComponents.custom_commands;
           serviceComponents.push(serviceComponent.StackServiceComponents);
           stackServiceComponents.push(this.parseIt(serviceComponent.StackServiceComponents, this.get('component_config')));
         }, this);

+ 63 - 89
ambari-web/app/models/stack_service.js

@@ -272,18 +272,12 @@ App.StackService.configCategories = function () {
         App.ServiceConfigCategory.create({ name: 'NAMENODE', displayName: 'NameNode'}),
         App.ServiceConfigCategory.create({ name: 'SECONDARY_NAMENODE', displayName: 'Secondary NameNode'}),
         App.ServiceConfigCategory.create({ name: 'DATANODE', displayName: 'DataNode'}),
-        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Advanced'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced core-site', displayName: 'Custom core-site.xml', siteFileName: 'core-site.xml', canAddProperty: true}),
-        App.ServiceConfigCategory.create({ name: 'Advanced hdfs-site', displayName: 'Custom hdfs-site.xml', siteFileName: 'hdfs-site.xml', canAddProperty: true}),
-        App.ServiceConfigCategory.create({ name: 'Advanced hdfs-log4j', displayName: 'Custom log4j.properties', siteFileName: 'hdfs-log4j.xml', canAddProperty: false}),
-        App.ServiceConfigCategory.create({ name: 'Advanced hadoop-env', displayName: 'hadoop-env.sh content', siteFileName: 'hadoop-env.xml', canAddProperty: false})
+        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'})
       ]);
       break;
     case 'GLUSTERFS':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced core-site', displayName : 'Custom core-site.xml', siteFileName: 'core-site.xml', canAddProperty: true})
+        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'})
       ]);
       break;
     case 'MAPREDUCE':
@@ -291,11 +285,7 @@ App.StackService.configCategories = function () {
         App.ServiceConfigCategory.create({ name: 'HISTORYSERVER', displayName: 'History Server'}),
         App.ServiceConfigCategory.create({ name: 'JOBTRACKER', displayName: 'JobTracker'}),
         App.ServiceConfigCategory.create({ name: 'TASKTRACKER', displayName: 'TaskTracker'}),
-        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Advanced'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced mapred-site', displayName: 'Custom mapred-site.xml', siteFileName: 'mapred-site.xml', canAddProperty: true}),
-        App.ServiceConfigCategory.create({ name: 'Advanced mapreduce-log4j', displayName: 'Custom log4j.properties', siteFileName: 'mapreduce-log4j.xml', canAddProperty: false}),
-        App.ServiceConfigCategory.create({ name: 'Advanced mapred-env', displayName: 'mapred-env.sh content', siteFileName: 'mapred-env.xml', canAddProperty: false})
+        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'})
       ]);
       break;
     case 'YARN':
@@ -304,74 +294,39 @@ App.StackService.configCategories = function () {
         App.ServiceConfigCategory.create({ name: 'NODEMANAGER', displayName: 'Node Manager'}),
         App.ServiceConfigCategory.create({ name: 'APP_TIMELINE_SERVER', displayName: 'Application Timeline Server'}),
         App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'}),
-        App.ServiceConfigCategory.create({ name: 'CapacityScheduler', displayName: 'Scheduler', isCapacityScheduler: true, isCustomView: true, siteFileName: 'capacity-scheduler.xml', siteFileNames: ['capacity-scheduler.xml', 'mapred-queue-acls.xml'], canAddProperty: App.supports.capacitySchedulerUi}),
-        App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Advanced'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced yarn-site', displayName: 'Custom yarn-site.xml', siteFileName: 'yarn-site.xml', canAddProperty: true}),
-        App.ServiceConfigCategory.create({ name: 'Advanced yarn-log4j', displayName: 'Custom log4j.properties', siteFileName: 'yarn-log4j.xml', canAddProperty: false}),
-        App.ServiceConfigCategory.create({ name: 'Advanced yarn-env', displayName: 'yarn-env.sh content', siteFileName: 'yarn-env.xml', canAddProperty: false})
+        App.ServiceConfigCategory.create({ name: 'CapacityScheduler', displayName: 'Scheduler', isCustomView: true, siteFileName: 'capacity-scheduler.xml'})
       ]);
       break;
     case 'MAPREDUCE2':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'HISTORYSERVER', displayName: 'History Server'}),
-        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Advanced'}),
-        App.ServiceConfigCategory.create({ name: 'AdvancedMapredSite', displayName: 'Custom mapred-site.xml', siteFileName: 'mapred-site.xml', canAddProperty: true}),
-        App.ServiceConfigCategory.create({ name: 'Advanced mapred-env', displayName: 'mapred-env.sh content', siteFileName: 'mapred-env.xml', canAddProperty: false})
+        App.ServiceConfigCategory.create({ name: 'HISTORYSERVER', displayName: 'History Server'})
       ]);
       break;
     case 'HIVE':
-     serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'HIVE_METASTORE', displayName: 'Hive Metastore'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Advanced'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced hive-site', displayName: 'Custom hive-site.xml', siteFileName: 'hive-site.xml', canAddProperty: true}),
-        App.ServiceConfigCategory.create({ name: 'Advanced hive-log4j', displayName: 'Custom log4j.properties', siteFileName: 'hive-log4j.xml', canAddProperty: false}),
-        App.ServiceConfigCategory.create({ name: 'Advanced hive-exec-log4j', displayName: 'Custom hive-exec-log4j', siteFileName: 'hive-exec-log4j.xml', canAddProperty: false}),
-        App.ServiceConfigCategory.create({ name: 'Advanced hive-env', displayName: 'hive-env.sh content', siteFileName: 'hive-env.xml', canAddProperty: false})
+      serviceConfigCategories.pushObjects([
+        App.ServiceConfigCategory.create({ name: 'HIVE_METASTORE', displayName: 'Hive Metastore'})
       ]);
       break;
     case 'WEBHCAT':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'WEBHCAT_SERVER', displayName: 'WebHCat Server'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Advanced'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced webhcat-site', displayName: 'Custom webhcat-site.xml', siteFileName: 'webhcat-site.xml', canAddProperty: true}),
-        App.ServiceConfigCategory.create({ name: 'Advanced webhcat-env', displayName: 'webhcat-env.sh content', siteFileName: 'webhcat-env.xml', canAddProperty: false})
+        App.ServiceConfigCategory.create({ name: 'WEBHCAT_SERVER', displayName: 'WebHCat Server'})
       ]);
       break;
     case 'HBASE':
       serviceConfigCategories.pushObjects([
         App.ServiceConfigCategory.create({ name: 'HBASE_MASTER', displayName: 'HBase Master'}),
         App.ServiceConfigCategory.create({ name: 'HBASE_REGIONSERVER', displayName: 'RegionServer'}),
-        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Advanced'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced hbase-site', displayName: 'Custom hbase-site.xml', siteFileName: 'hbase-site.xml', canAddProperty: true}),
-        App.ServiceConfigCategory.create({ name: 'Advanced hbase-log4j', displayName: 'Custom log4j.properties', siteFileName: 'hbase-log4j.xml', canAddProperty: false}),
-        App.ServiceConfigCategory.create({ name: 'Advanced hbase-env', displayName: 'hbase-env.sh content', siteFileName: 'hbase-env.xml', canAddProperty: false})
+        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'})
       ]);
       break;
     case 'ZOOKEEPER':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'ZOOKEEPER_SERVER', displayName: 'ZooKeeper Server'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Advanced'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced zookeeper-log4j', displayName: 'Custom log4j.properties', siteFileName: 'zookeeper-log4j.xml', canAddProperty: false}),
-        App.ServiceConfigCategory.create({ name: 'Advanced zoo.cfg', displayName: 'Custom zoo.cfg', siteFileName: 'zoo.cfg', canAddProperty: true}),
-        App.ServiceConfigCategory.create({ name: 'Advanced zookeeper-env', displayName: 'zookeeper-env.sh content', siteFileName: 'zookeeper-env.xml', canAddProperty: false})
+        App.ServiceConfigCategory.create({ name: 'ZOOKEEPER_SERVER', displayName: 'ZooKeeper Server'})
       ]);
       break;
     case 'OOZIE':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'OOZIE_SERVER', displayName: 'Oozie Server'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Advanced'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced oozie-site', displayName: 'Custom oozie-site.xml', siteFileName: 'oozie-site.xml', canAddProperty: true}),
-        App.ServiceConfigCategory.create({ name: 'Advanced oozie-log4j', displayName: 'Custom log4j.properties', siteFileName: 'oozie-log4j.xml', canAddProperty: false}),
-        App.ServiceConfigCategory.create({ name: 'Advanced oozie-env', displayName: 'oozie-env.sh content', siteFileName: 'oozie-env.xml', canAddProperty: false})
-      ]);
-      break;
-    case 'PIG':
-      serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Custom pig.properties', siteFileName: 'pig-properties.xml', canAddProperty: false}),
-        App.ServiceConfigCategory.create({ name: 'Advanced pig-log4j', displayName: 'Custom log4j.properties', siteFileName: 'pig-log4j.xml', canAddProperty: false}),
-        App.ServiceConfigCategory.create({ name: 'Advanced pig-env', displayName: 'pig-env.sh content', siteFileName: 'pig-env.xml', canAddProperty: false})
+        App.ServiceConfigCategory.create({ name: 'OOZIE_SERVER', displayName: 'Oozie Server'})
       ]);
       break;
     case 'FALCON':
@@ -380,10 +335,7 @@ App.StackService.configCategories = function () {
         App.ServiceConfigCategory.create({ name: 'Falcon - Oozie integration', displayName: 'Falcon - Oozie integration'}),
         App.ServiceConfigCategory.create({ name: 'FalconStartupSite', displayName: 'Falcon startup.properties'}),
         App.ServiceConfigCategory.create({ name: 'FalconRuntimeSite', displayName: 'Falcon runtime.properties'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Advanced'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced falcon-startup.properties', displayName: 'Custom startup.properties', siteFileName: 'falcon-startup.properties.xml', canAddProperty: true}),
-        App.ServiceConfigCategory.create({ name: 'Advanced falcon-runtime.properties', displayName: 'Custom runtime.properties', siteFileName: 'falcon-runtime.properties.xml', canAddProperty: true}),
-        App.ServiceConfigCategory.create({ name: 'Advanced falcon-env', displayName: 'falcon-env.sh content', siteFileName: 'falcon-env.xml', canAddProperty: false})
+        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'})
       ]);
       break;
     case 'STORM':
@@ -393,18 +345,12 @@ App.StackService.configCategories = function () {
         App.ServiceConfigCategory.create({ name: 'STORM_UI_SERVER', displayName: 'Storm UI Server'}),
         App.ServiceConfigCategory.create({ name: 'STORM_REST_API', displayName: 'Storm REST API Server'}),
         App.ServiceConfigCategory.create({ name: 'DRPC_SERVER', displayName: 'DRPC Server'}),
-        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Advanced'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced storm-site', displayName: 'Custom storm.yaml', siteFileName: 'storm-site.xml', canAddProperty: true}),
-        App.ServiceConfigCategory.create({ name: 'Advanced storm-env', displayName: 'storm-env.sh content', siteFileName: 'storm-env.xml', canAddProperty: false})
+        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'})
       ]);
       break;
     case 'TEZ':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Advanced'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced tez-site', displayName: 'Custom tez-site.xml', siteFileName: 'tez-site.xml', canAddProperty: true}),
-        App.ServiceConfigCategory.create({ name: 'Advanced tez-env', displayName: 'tez-env.sh content', siteFileName: 'tez-env.xml', canAddProperty: false})
+        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'})
       ]);
       break;
     case 'FLUME':
@@ -412,34 +358,62 @@ App.StackService.configCategories = function () {
         App.ServiceConfigCategory.create({ name: 'FLUME_HANDLER', displayName: 'flume.conf', siteFileName: 'flume-conf', canAddProperty: false})
       ]);
       break;
+    case 'PIG':
+      break;
     case 'SQOOP':
-      serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'Advanced sqoop-env', displayName: 'sqoop-env.sh content', siteFileName: 'sqoop-env.xml', canAddProperty: false})
-      ]);
       break;
     case 'HCATALOG':
       break;
     default:
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'}),
-        App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Advanced'})
+        App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'})
       ]);
-      var configTypes = Object.keys(this.get('configTypes')).without('core-site').without('global');
-      configTypes.forEach(function (type) {
-        var displayName = 'Custom ' + type;
-        var canAddProperty = true;
-        var siteFileName = type + '.xml';
-        if (type.endsWith('-env') || type.endsWith('-log4j')){
-          var content =  this.get('configs').findProperty('name',"content");
-          if (!content) {
-            return;
-          }
-          canAddProperty = false;
-          displayName = content.get('description');
-        }
-        serviceConfigCategories.pushObject(App.ServiceConfigCategory.create({ name: 'Advanced ' + type, displayName: displayName, siteFileName: siteFileName,
-          canAddProperty: canAddProperty}));
-      }, this);
   }
+  serviceConfigCategories.pushObject(App.ServiceConfigCategory.create({ name: 'Advanced', displayName: 'Advanced'}));
+
+  var configTypes = Object.keys(this.get('configTypes'));
+  if (this.get('serviceName') !== 'HDFS') {
+    configTypes = configTypes.without('core-site');
+  }
+  //Falcon has dependency on oozie-site but oozie-site advanced/custom section should not be shown on Falcon page
+  if (this.get('serviceName') !== 'OOZIE') {
+    configTypes = configTypes.without('oozie-site');
+  }
+
+  //Hive has dependency on tez-site but tez-site advanced/custom section should not be shown on Hive page
+  if (this.get('serviceName') !== 'TEZ') {
+    configTypes = configTypes.without('tez-site');
+  }
+
+  //oozie has dependency on yarn-site but yarn-site advanced/custom section should not be shown on Oozie page
+  if (this.get('serviceName') !== 'YARN') {
+    configTypes = configTypes.without('yarn-site');
+  }
+
+
+  // Add Advanced section for every configType to all the services
+  configTypes.forEach(function (type) {
+    var displayName = 'Advanced ' + type;
+    var canAddProperty = false;
+    var advancedSection;
+    advancedSection = App.ServiceConfigCategory.create({ name: 'Advanced ' + type, displayName: displayName,
+      canAddProperty: canAddProperty});
+    serviceConfigCategories.pushObject(advancedSection);
+  }, this);
+
+  // Add custom section for every configType to all the services
+  configTypes.forEach(function (type) {
+    var displayName = 'Custom ' + type;
+    var canAddProperty = true;
+    var customSection;
+    var siteFileName = type + '.xml';
+    var configTypesWithNoCustomSection = ['capacity-scheduler','mapred-queue-acls','flume-conf', 'pig-properties'];
+    if (type.endsWith('-env') || type.endsWith('-log4j') || configTypesWithNoCustomSection.contains(type)) {
+      return;
+    }
+    customSection = App.ServiceConfigCategory.create({ name: displayName, displayName: displayName, siteFileName: siteFileName,
+      canAddProperty: canAddProperty});
+    serviceConfigCategories.pushObject(customSection);
+  }, this);
   return serviceConfigCategories;
 };

+ 36 - 17
ambari-web/app/utils/config.js

@@ -94,13 +94,28 @@ App.config = Em.Object.create({
     return this.get('filenameExceptions').contains(fileName) ? fileName : fileName + '.xml';
   },
 
+  /**
+   *
+   * Returns the configuration tagName from supplied filename
+   *
+   * Example:
+   *   App.config.getConfigTagFromFileName('core-site.xml') // returns core-site
+   *   App.config.getConfigTagFromFileName('zoo.cfg') // returns zoo.cfg
+   *
+   * @param {String} fileName
+   * @method getConfigTagFromFileName
+   **/
+  getConfigTagFromFileName: function(fileName) {
+    return fileName.endsWith('.xml') ? fileName.slice(0,-4) : filename;
+  },
+
   setPreDefinedServiceConfigs: function () {
     var configs = this.get('preDefinedSiteProperties');
     var services = [];
     var nonServiceTab = require('data/service_configs');
     var stackServices = App.StackService.find().filterProperty('id');
     // Only include services that has configTypes related to them for service configuration page
-    // Also Remove HCatalog from this list. HCatalog has and hive-site related to it but none of them should be exposed under HCatalog Service
+    // Also Remove HCatalog from this list. HCatalog has hive-site affiliated to it but none of the properties of it should be exposed under HCatalog Service
     // HCatalog should be eventually made a part of Hive Service. See AMBARI-6302 description for further details
     var servicesWithConfigTypes = stackServices.filter(function (service) {
       var configtypes = service.get('configTypes');
@@ -145,17 +160,18 @@ App.config = Em.Object.create({
    * Create array of service properties for Log4j files
    * @returns {Array}
    */
-  createContentProperties: function () {
+  createContentProperties: function (configs) {
     var services = App.StackService.find();
     var contentProperties = [];
     services.forEach(function (service) {
       if (service.get('configTypes')) {
         Object.keys(service.get('configTypes')).forEach(function (type) {
-          if (type.endsWith('-log4j') || type.endsWith('-env')) {
+          var contentProperty = configs.filterProperty('filename',type + '.xml').someProperty('name','content');
+          if (contentProperty && (type.endsWith('-log4j') || type.endsWith('-env'))) {
             var property = {
               "id": "site property",
               "name": "content",
-              "displayName": "content",
+              "displayName": type.endsWith('-env') ? type + ' template' : "content",
               "value": "",
               "defaultValue": "",
               "description": type + " properties",
@@ -163,7 +179,7 @@ App.config = Em.Object.create({
               "isOverridable": true,
               "isRequired": false,
               "isVisible": true,
-              "showLabel": false,
+              "showLabel": type.endsWith('-env'),
               "serviceName": service.get('serviceName'),
               "filename": type + '.xml',
               "category": "Advanced " + type
@@ -263,12 +279,14 @@ App.config = Em.Object.create({
       }
     } else {
       var advancedProperty = null;
+      var configType = this.getConfigTagFromFileName(config.filename);
       if (isAdvanced) {
-        advancedProperty = advancedConfigs.findProperty('name', config.name);
+        advancedProperty = advancedConfigs.filterProperty('filename', config.filename).findProperty('name', config.name);
+      }
+      config.category = config.category ? config.category : 'Advanced ' + configType;
+      if (isAdvanced) {
+        config.description = advancedProperty.description;
       }
-
-      config.category = config.category ? config.category : 'Advanced';
-      config.description = isAdvanced && advancedProperty.description;
     }
   },
 
@@ -298,7 +316,7 @@ App.config = Em.Object.create({
    */
   mergePreDefinedWithLoaded: function (configGroups, advancedConfigs, tags, serviceName) {
     var configs = [];
-    var contentProperties = this.createContentProperties();
+    var contentProperties = this.createContentProperties(advancedConfigs);
     var preDefinedConfigs = this.get('preDefinedSiteProperties').concat(contentProperties);
     var mappingConfigs = [];
     var filenameExceptions = this.get('filenameExceptions');
@@ -426,7 +444,7 @@ App.config = Em.Object.create({
       siteStart = [];
 
     var preDefinedSiteProperties = this.get('preDefinedSiteProperties').mapProperty('name');
-    var contentProperties = this.createContentProperties().mapProperty('name');
+    var contentProperties = this.createContentProperties(siteConfigs).mapProperty('name');
     var siteProperties = preDefinedSiteProperties.concat(contentProperties);
     siteProperties.forEach(function (name) {
       var _site = siteConfigs.filterProperty('name', name);
@@ -456,7 +474,7 @@ App.config = Em.Object.create({
    */
   mergePreDefinedWithStored: function (storedConfigs, advancedConfigs, selectedServiceNames) {
     var mergedConfigs = [];
-    var contentProperties = this.createContentProperties();
+    var contentProperties = this.createContentProperties(advancedConfigs);
     var preDefinedConfigs = this.get('preDefinedSiteProperties').concat(contentProperties);
 
     storedConfigs = (storedConfigs) ? storedConfigs : [];
@@ -492,7 +510,7 @@ App.config = Em.Object.create({
           configData.supportsFinal = stored.supportsFinal;
           configData.isRequired = (configData.isRequired !== undefined) ? configData.isRequired : true;
           configData.isRequiredByAgent = (configData.isRequiredByAgent !== undefined) ? configData.isRequiredByAgent : true;
-          configData.showLabel = stored.showLabel !== false;
+          configData.showLabel = !!stored.showLabel;
         }
         else if (!preDefined && stored) {
           configData = this.addUserProperty(stored, isAdvanced, advancedConfigs);
@@ -523,9 +541,9 @@ App.config = Em.Object.create({
             configData.overrides = storedCfg.overrides;
             configData.filename = storedCfg.filename;
             configData.description = storedCfg.description;
-            configData.description = storedCfg.showLabel !== false;
             configData.isFinal = storedCfg.isFinal;
             configData.supportsFinal = storedCfg.supportsFinal;
+            configData.showLabel = !!storedCfg.showLabel;
           } else if (isAdvanced) {
             advanced = advancedConfigs.filterProperty('filename', configData.filename).findProperty('name', configData.name);
             this.setPropertyFromStack(configData, advanced);
@@ -564,9 +582,11 @@ App.config = Em.Object.create({
    * @param serviceName
    */
   addAdvancedConfigs: function (serviceConfigs, advancedConfigs, serviceName) {
-    var configsToVerifying = (serviceName) ? serviceConfigs.filterProperty('serviceName', serviceName) : serviceConfigs.slice();
+    var miscConfigs = serviceConfigs.filterProperty('serviceName', 'MISC');
+    var configsToVerifying = (serviceName) ? serviceConfigs.filterProperty('serviceName', serviceName).concat(miscConfigs) : serviceConfigs.slice();
     advancedConfigs.forEach(function (_config) {
-      var configCategory = 'Advanced';
+      var configType = this.getConfigTagFromFileName(_config.filename);
+      var configCategory = 'Advanced ' + configType;
       var categoryMetaData = null;
       if (_config) {
         if (this.get('configMapping').computed().someProperty('name', _config.name)) {
@@ -1105,7 +1125,6 @@ App.config = Em.Object.create({
       defaultValue: stored.defaultValue,
       displayType: stringUtils.isSingleLine(stored.value) ? 'advanced' : 'multiLine',
       filename: stored.filename,
-      category: 'Advanced',
       isUserProperty: stored.isUserProperty === true,
       hasInitialValue: !!stored.hasInitialValue,
       isOverridable: true,

+ 27 - 1
ambari-web/app/views/common/configs/services_config.js

@@ -104,7 +104,8 @@ App.ServiceConfigsByCategoryView = Ember.View.extend(App.UserPref, {
   // default,
   // cacheable )
   categoryConfigs: function () {
-    return this.get('serviceConfigs').filterProperty('category', this.get('category.name')).filterProperty('isVisible', true);
+    var categoryConfigs = this.get('serviceConfigs').filterProperty('category', this.get('category.name'));
+    return this.orderContentAtLast(categoryConfigs).filterProperty('isVisible', true);
   }.property('serviceConfigs.@each', 'categoryConfigsAll.@each.isVisible').cacheable(),
 
   /**
@@ -118,6 +119,31 @@ App.ServiceConfigsByCategoryView = Ember.View.extend(App.UserPref, {
     return this.get('serviceConfigs').filterProperty('category', this.get('category.name'));
   }.property('serviceConfigs.@each').cacheable(),
 
+  /**
+   * Re-order the configs to list content displayType properties at last in the category
+   * @param categoryConfigs
+   */
+  orderContentAtLast: function(categoryConfigs) {
+    var contentProperties =  categoryConfigs.filterProperty('displayType','content');
+    var self = this;
+    if (!contentProperties.length) {
+      return categoryConfigs
+    } else {
+      var comparator;
+      return categoryConfigs.sort(function(a,b){
+        var aContent = contentProperties.someProperty('name', a.get('name'));
+        var bContent = contentProperties.someProperty('name', b.get('name'));
+        if (aContent && bContent) {
+          return 0;
+        } else if (aContent){
+          return 1;
+        } else {
+          return -1;
+        }
+      });
+    }
+  },
+
   /**
    * Warn/prompt user to adjust Service props when changing user/groups in Misc
    * Is triggered when user ended editing text field