You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ab...@apache.org on 2014/07/16 14:59:39 UTC

[1/6] AMBARI-6501 Extend server-side stack definition to include metadata for additional configurations (including -env.sh files) for each service. (ababiichuk)

Repository: ambari
Updated Branches:
  refs/heads/trunk b0ae1fdde -> 4e23fa2d8


http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/data/site_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/site_properties.js b/ambari-web/app/data/site_properties.js
index 5f0bf9a..94aaadc 100644
--- a/ambari-web/app/data/site_properties.js
+++ b/ambari-web/app/data/site_properties.js
@@ -810,6 +810,1615 @@ module.exports =
       "filename": "core-site.xml",
       "serviceName": "GLUSTERFS",
       "category": "General"
-    }    
+    },
+  /**********************************************HDFS***************************************/
+    {
+      "id": "puppet var",
+      "name": "namenode_host",
+      "displayName": "NameNode host",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run NameNode",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "NAMENODE",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "namenode_heapsize",
+      "displayName": "NameNode Java heap size",
+      "description": "Initial and maximum Java heap size for NameNode (Java options -Xms and -Xmx).  This also applies to the Secondary NameNode.",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "NAMENODE",
+      "index": 2
+    },
+    {
+      "id": "puppet var",
+      "name": "namenode_opt_newsize",
+      "displayName": "NameNode new generation size",
+      "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize).  This also applies to the Secondary NameNode.",
+      "defaultValue": "200",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "NAMENODE",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "snamenode_host",
+      "displayName": "SNameNode host",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run SecondaryNameNode",
+      "displayType": "masterHost",
+      "isRequiredByAgent": false,
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "SECONDARY_NAMENODE",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "datanode_hosts", //not in the schema. For UI purpose
+      "displayName": "DataNode hosts",
+      "value": "",
+      "defaultValue": "",
+      "description": "The hosts that have been assigned to run DataNode",
+      "displayType": "slaveHosts",
+      "isRequired": false,
+      "isRequiredByAgent": false,
+      "isOverridable": false,
+      "isVisible": true,
+      "domain": "datanode-global",
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "DATANODE",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "dtnode_heapsize",
+      "displayName": "DataNode maximum Java heap size",
+      "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isVisible": true,
+      "domain": "datanode-global",
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "DATANODE",
+      "index": 2
+    },
+    {
+      "id": "puppet var",
+      "name": "hadoop_heapsize",
+      "displayName": "Hadoop maximum Java heap size",
+      "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "hdfs_log_dir_prefix",
+      "displayName": "Hadoop Log Dir Prefix",
+      "description": "The parent directory for Hadoop log files.  The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.",
+      "defaultValue": "/var/log/hadoop",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hadoop_pid_dir_prefix",
+      "displayName": "Hadoop PID Dir Prefix",
+      "description": "The parent directory in which the PID files for Hadoop processes will be created.  The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.",
+      "defaultValue": "/var/run/hadoop",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "namenode_opt_maxnewsize",
+      "displayName": "NameNode maximum new generation size",
+      "description": "",
+      "defaultValue": "200",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "NAMENODE"
+    },
+    {
+      "id": "puppet var",
+      "name": "security_enabled",
+      "displayName": "Hadoop Security",
+      "description": "Enable hadoop security",
+      "defaultValue": 'false',
+      "isRequired": false,
+      "displayType": "checkbox",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "namenode_formatted_mark_dir",
+      "displayName": "Hadoop formatted mark directory",
+      "description": "",
+      "defaultValue": "/var/run/hadoop/hdfs/namenode/formatted/",
+      "isRequired": false,
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isVisible": false,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "NAMENODE"
+    },
+
+  /**********************************************GLUSTERFS***************************************/
+    {
+      "id": "puppet var",
+      "name": "fs_glusterfs_default_name",
+      "displayName": "GlusterFS default fs name 1.x Hadoop",
+      "description": "GlusterFS default filesystem name (glusterfs://{MasterFQDN}:9000)",
+      "defaultValue": "glusterfs:///localhost:8020",
+      "displayType": "string",
+      "isVisible": true,
+      "domain": "global",
+      "serviceName": "GLUSTERFS",
+      "filename": "hadoop-env.xml",
+      "category": "General"
+    },
+    {
+      "id": "puppet var",
+      "name": "glusterfs_defaultFS_name",
+      "displayName": "GlusterFS default fs name 2.x Hadoop",
+      "description": "GlusterFS default filesystem name (glusterfs:///)",
+      "defaultValue": "glusterfs:///localhost:8020",
+      "displayType": "string",
+      "isVisible": true,
+      "domain": "global",
+      "serviceName": "GLUSTERFS",
+      "filename": "hadoop-env.xml",
+      "category": "General"
+    },
+    {
+      "id": "puppet var",
+      "name": "fs_AbstractFileSystem_glusterfs_impl",
+      "displayName": "GlusterFS Abstract Filesystem declaration",
+      "description": "GlusterFS Abstract Filesystem declaration",
+      "defaultValue": "org.apache.hadoop.fs.local.GlusterFs",
+      "displayType": "string",
+      "isVisible": true,
+      "domain": "global",
+      "serviceName": "GLUSTERFS",
+      "filename": "hadoop-env.xml",
+      "category": "General"
+    },
+    {
+      "id": "puppet var",
+      "name": "hadoop_heapsize",
+      "displayName": "Hadoop maximum Java heap size",
+      "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isVisible": true,
+      "serviceName": "GLUSTERFS",
+      "filename": "hadoop-env.xml",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "hdfs_log_dir_prefix",
+      "displayName": "Hadoop Log Dir Prefix",
+      "description": "The parent directory for Hadoop log files.  The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.",
+      "defaultValue": "/var/log/hadoop",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "GLUSTERFS",
+      "filename": "hadoop-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hadoop_pid_dir_prefix",
+      "displayName": "Hadoop PID Dir Prefix",
+      "description": "The parent directory in which the PID files for Hadoop processes will be created.  The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.",
+      "defaultValue": "/var/run/hadoop",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "GLUSTERFS",
+      "filename": "hadoop-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "namenode_heapsize",
+      "displayName": "Name Node Heap Size",
+      "description": "Name Node Heap Size, default jvm memory setting",
+      "defaultValue": "1024",
+      "isReconfigurable": false,
+      "displayType": "int",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "GLUSTERFS",
+      "filename": "hadoop-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "namenode_opt_newsize",
+      "displayName": "NameNode new generation size",
+      "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize).  This also applies to the Secondary NameNode.",
+      "defaultValue": "200",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "GLUSTERFS",
+      "filename": "hadoop-env.xml",
+      "category": "category"
+    },
+    {
+      "id": "puppet var",
+      "name": "namenode_opt_maxnewsize",
+      "displayName": "NameNode maximum new generation size",
+      "description": "Maximum size of Java new generation for NameNode (Java option -XX:MaxnewSize).",
+      "defaultValue": "200",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "GLUSTERFS",
+      "filename": "hadoop-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "dtnode_heapsize",
+      "displayName": "DataNode maximum Java heap size",
+      "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isVisible": false,
+      "domain": "datanode-global",
+      "serviceName": "GLUSTERFS",
+      "filename": "hadoop-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************MAPREDUCE***************************************/
+    {
+      "id": "puppet var",
+      "name": "hs_host",
+      "displayName": "History Server",
+      "description": "History Server",
+      "defaultValue": "",
+      "isOverridable": false,
+      "displayType": "masterHost",
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "MAPREDUCE",
+      "filename": "mapred-env.xml",
+      "category": "HISTORYSERVER",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "jobtracker_host",
+      "displayName": "JobTracker host",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run JobTracker",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "MAPREDUCE",
+      "filename": "mapred-env.xml",
+      "category": "JOBTRACKER",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "jtnode_opt_newsize",
+      "displayName": "JobTracker new generation size",
+      "description": "Default size of Java new generation size for JobTracker in MB (Java option -XX:NewSize)",
+      "defaultValue": "200",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MAPREDUCE",
+      "filename": "mapred-env.xml",
+      "category": "JOBTRACKER",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "jtnode_opt_maxnewsize",
+      "displayName": "JobTracker maximum new generation size",
+      "description": "Maximum size of Java new generation for JobTracker in MB (Java option -XX:MaxNewSize)",
+      "defaultValue": "200",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MAPREDUCE",
+      "filename": "mapred-env.xml",
+      "category": "JOBTRACKER",
+      "index": 2
+    },
+    {
+      "id": "puppet var",
+      "name": "jtnode_heapsize",
+      "displayName": "JobTracker maximum Java heap size",
+      "description": "Maximum Java heap size for JobTracker in MB (Java option -Xmx)",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MAPREDUCE",
+      "filename": "mapred-env.xml",
+      "category": "JOBTRACKER",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "tasktracker_hosts",
+      "displayName": "TaskTracker hosts",
+      "value": "",
+      "defaultValue": "",
+      "description": "The hosts that have been assigned to run TaskTracker",
+      "displayType": "slaveHosts",
+      "isOverridable": false,
+      "isVisible": true,
+      "isRequired": false,
+      "isRequiredByAgent": false,
+      "serviceName": "MAPREDUCE",
+      "filename": "mapred-env.xml",
+      "category": "TASKTRACKER",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "ttnode_heapsize",
+      "displayName": "TaskTracker maximum Java heap size",
+      "description": "Maximum Java heap size for TaskTracker in MB (Java option -Xmx)",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "serviceName": "MAPREDUCE",
+      "filename": "mapred-env.xml",
+      "category": "TASKTRACKER",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "lzo_enabled",
+      "displayName": "LZO compression",
+      "description": "LZO compression enabled",
+      "defaultValue": true,
+      "displayType": "checkbox",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "MAPREDUCE",
+      "filename": "mapred-env.xml",
+      "index": 11
+    },
+    {
+      "id": "puppet var",
+      "name": "snappy_enabled",
+      "displayName": "Snappy compression",
+      "description": "Snappy compression enabled",
+      "defaultValue": true,
+      "isReconfigurable": false,
+      "displayType": "checkbox",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "MAPREDUCE",
+      "filename": "mapred-env.xml",
+      "index": 12
+    },
+    {
+      "id": "puppet var",
+      "name": "rca_enabled",
+      "displayName": "Enable Job Diagnostics",
+      "description": "Tools for tracing the path and troubleshooting the performance of MapReduce jobs",
+      "defaultValue": true,
+      "isReconfigurable": true,
+      "isOverridable": false,
+      "displayType": "checkbox",
+      "isVisible": true,
+      "serviceName": "MAPREDUCE",
+      "filename": "mapred-env.xml",
+      "index": 13
+    },
+  /**********************************************HBASE***************************************/
+    {
+      "id": "puppet var",
+      "name": "hbasemaster_host",
+      "displayName": "HBase Master hosts",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run HBase Master",
+      "displayType": "masterHosts",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "HBASE",
+      "filename": "hbase-env.xml",
+      "category": "HBASE_MASTER",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "hbase_master_heapsize",
+      "displayName": "HBase Master Maximum Java heap size",
+      "description": "Maximum Java heap size for HBase master (Java option -Xmx)",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": true,
+      "isVisible": true,
+      "serviceName": "HBASE",
+      "filename": "hbase-env.xml",
+      "category": "HBASE_MASTER",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "regionserver_hosts",
+      "displayName": "RegionServer hosts",
+      "value": "",
+      "defaultValue": "",
+      "description": "The hosts that have been assigned to run RegionServer",
+      "displayType": "slaveHosts",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "isRequired": false,
+      "domain": "regionserver-global",
+      "serviceName": "HBASE",
+      "filename": "hbase-env.xml",
+      "category": "HBASE_REGIONSERVER",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "hbase_regionserver_heapsize",
+      "displayName": "RegionServers maximum Java heap size",
+      "description": "Maximum Java heap size for RegionServers (Java option -Xmx)",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isVisible": true,
+      "domain": "regionserver-global",
+      "serviceName": "HBASE",
+      "filename": "hbase-env.xml",
+      "category": "HBASE_REGIONSERVER",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "hbase_log_dir",
+      "displayName": "HBase Log Dir",
+      "description": "Directory for HBase logs",
+      "defaultValue": "/var/log/hbase",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HBASE",
+      "filename": "hbase-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hbase_pid_dir",
+      "displayName": "HBase PID Dir",
+      "description": "Directory in which the pid files for HBase processes will be created",
+      "defaultValue": "/var/run/hbase",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HBASE",
+      "filename": "hbase-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************HIVE***************************************/
+    {
+      "id": "puppet var",
+      "name": "hivemetastore_host",
+      "displayName": "Hive Metastore host",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run Hive Metastore",
+      "displayType": "masterHost",
+      "isRequiredByAgent": false,
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 0
+    },
+    // for existing MySQL
+    {
+      "id": "puppet var",
+      "name": "hive_existing_mysql_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "MySQL",
+      "description": "Using an existing MySQL database for Hive Metastore",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isVisible": false,
+      "isReconfigurable": false,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 1
+    },
+    // for existing PostgreSQL
+    {
+      "id": "puppet var",
+      "name": "hive_existing_postgresql_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "PostgreSQL",
+      "description": "Using an existing PostgreSQL database for Hive Metastore",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isVisible": false,
+      "isReconfigurable": false,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 1
+    },
+    // for existing Oracle
+    {
+      "id": "puppet var",
+      "name": "hive_existing_oracle_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "Oracle",
+      "description": "Using an existing Oracle database for Hive Metastore",
+      "displayType": "masterHost",
+      "isVisible": false,
+      "isOverridable": false,
+      "isReconfigurable": false,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 1
+    },
+    // for new MySQL
+    {
+      "id": "puppet var",
+      "name": "hive_ambari_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "MySQL",
+      "description": "MySQL will be installed by Ambari",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_database",
+      "displayName": "Hive Database",
+      "value": "",
+      "defaultValue": "New MySQL Database",
+      "options": [
+        {
+          displayName: 'New MySQL Database',
+          foreignKeys: ['hive_ambari_database', 'hive_ambari_host']
+        },
+        {
+          displayName: 'Existing MySQL Database',
+          foreignKeys: ['hive_existing_mysql_database', 'hive_existing_mysql_host']
+        },
+        {
+          displayName: 'Existing PostgreSQL Database',
+          foreignKeys: ['hive_existing_postgresql_database', 'hive_existing_postgresql_host']
+        },
+        {
+          displayName: 'Existing Oracle Database',
+          foreignKeys: ['hive_existing_oracle_database', 'hive_existing_oracle_host'],
+          hidden: !App.supports.hiveOozieExtraDatabases
+        }
+      ],
+      "description": "MySQL will be installed by Ambari",
+      "displayType": "radio button",
+      "isReconfigurable": false,
+      "radioName": "hive-database",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 2
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_hostname",
+      "displayName": "Database Host",
+      "description": "Specify the host on which the database is hosted",
+      "defaultValue": "",
+      "isReconfigurable": true,
+      "displayType": "host",
+      "isOverridable": false,
+      "isVisible": false,
+      "isObserved": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_existing_mysql_host",
+      "displayName": "Database Host",
+      "description": "Specify the host on which the existing database is hosted",
+      "defaultValue": "",
+      "displayType": "host",
+      "isRequiredByAgent": false,
+      "isOverridable": false,
+      "isVisible": false,
+      "isObserved": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_existing_oracle_host",
+      "displayName": "Database Host",
+      "description": "Specify the host on which the existing database is hosted",
+      "defaultValue": "",
+      "displayType": "host",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": false,
+      "isObserved": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_existing_postgresql_host",
+      "displayName": "Database Host",
+      "description": "Specify the host on which the existing database is hosted",
+      "defaultValue": "",
+      "displayType": "host",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": false,
+      "isObserved": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_ambari_host",
+      "value": "",
+      "defaultValue": "",
+      "displayName": "Database Host",
+      "description": "The host where Hive Metastore database is located",
+      "isReconfigurable": false,
+      "displayType": "masterHost",
+      "isRequiredByAgent": false,
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_metastore_port",
+      "displayName": "Hive metastore port",
+      "description": "",
+      "defaultValue": "9083",
+      "isReconfigurable": false,
+      "displayType": "int",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_log_dir",
+      "displayName": "Hive Log Dir",
+      "description": "Directory for Hive log files",
+      "defaultValue": "/var/log/hive",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_pid_dir",
+      "displayName": "Hive PID Dir",
+      "description": "Directory in which the PID files for Hive processes will be created",
+      "defaultValue": "/var/run/hive",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_aux_jars_path",
+      "displayName": "Hive auxilary jar path",
+      "description": "",
+      "defaultValue": "/usr/lib/hcatalog/share/hcatalog/hcatalog-core.jar",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isVisible": false,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************WEBHCAT***************************************/
+    {
+      "id": "puppet var",
+      "name": "webhcatserver_host",
+      "displayName": "WebHCat Server host",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run WebHCat Server",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "WEBHCAT",
+      "filename": "webhcat-env.xml",
+      "category": "WEBHCAT_SERVER"
+    },
+    {
+      "id": "puppet var",
+      "name": "hcat_log_dir",
+      "displayName": "WebHCat Log Dir",
+      "description": "Directory for WebHCat log files",
+      "defaultValue": "/var/log/webhcat",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "WEBHCAT",
+      "filename": "webhcat-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hcat_pid_dir",
+      "displayName": "WebHCat PID Dir",
+      "description": "Directory in which the PID files for WebHCat processes will be created",
+      "defaultValue": "/var/run/webhcat",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "WEBHCAT",
+      "filename": "webhcat-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************OOZIE***************************************/
+    {
+      "id": "puppet var",
+      "name": "oozieserver_host",
+      "displayName": "Oozie Server host",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run Oozie Server",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 0
+    },
+    // for existing PostgreSQL
+    {
+      "id": "puppet var",
+      "name": "oozie_existing_postgresql_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "PostgreSQL",
+      "description": "Using an existing PostgreSQL database for Oozie Metastore",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isVisible": false,
+      "isReconfigurable": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 1
+    },
+    // for existing Oracle
+    {
+      "id": "puppet var",
+      "name": "oozie_existing_oracle_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "Oracle",
+      "description": "Using an existing Oracle database for Oozie Metastore",
+      "displayType": "masterHost",
+      "isVisible": false,
+      "isObserved": true,
+      "isReconfigurable": false,
+      "isOverridable": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 1
+    },
+    // for current derby
+    {
+      "id": "puppet var",
+      "name": "oozie_derby_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "Derby",
+      "description": "Using current Derby database for Oozie Metastore",
+      "displayType": "masterHost",
+      "isVisible": false,
+      "isReconfigurable": false,
+      "isOverridable": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 1
+    },
+    // for existing MySQL oozie
+    {
+      "id": "puppet var",
+      "name": "oozie_existing_mysql_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "MySQL",
+      "description": "Using an existing MySQL database for Oozie Metastore",
+      "displayType": "masterHost",
+      "isVisible": false,
+      "isReconfigurable": false,
+      "isOverridable": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_database",
+      "displayName": "Oozie Database",
+      "value": "",
+      "defaultValue": "New Derby Database",
+      "options": [
+        {
+          displayName: 'New Derby Database',
+          foreignKeys: ['oozie_derby_database', 'oozie_ambari_host']
+        },
+        {
+          displayName: 'Existing MySQL Database',
+          foreignKeys: ['oozie_existing_mysql_database', 'oozie_existing_mysql_host'],
+          hidden: !App.supports.hiveOozieExtraDatabases
+        },
+        {
+          displayName: 'Existing PostgreSQL Database',
+          foreignKeys: ['oozie_existing_postgresql_database', 'oozie_existing_postgresql_host']
+        },
+        {
+          displayName: 'Existing Oracle Database',
+          foreignKeys: ['oozie_existing_oracle_database', 'oozie_existing_oracle_host'],
+          hidden: !App.supports.hiveOozieExtraDatabases
+        }
+      ],
+      "description": "Current Derby Database will be installed by Ambari",
+      "displayType": "radio button",
+      "isReconfigurable": false,
+      "isOverridable": false,
+      "radioName": "oozie-database",
+      "isVisible": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 2
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_hostname",
+      "defaultValue": "",
+      "displayName": "Database Host",
+      "description": "The host where the Oozie database is located",
+      "isReconfigurable": true,
+      "isOverridable": false,
+      "displayType": "host",
+      "isVisible": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_existing_mysql_host",
+      "displayName": "Database Host",
+      "description": "Specify the host on which the existing database is hosted",
+      "defaultValue": "",
+      "isOverridable": false,
+      "displayType": "host",
+      "isRequiredByAgent": false,
+      "isVisible": false,
+      "isObserved": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_existing_postgresql_host",
+      "displayName": "Database Host",
+      "description": "Specify the host on which the existing database is hosted",
+      "defaultValue": "",
+      "isOverridable": false,
+      "displayType": "host",
+      "isRequiredByAgent": false,
+      "isVisible": false,   // This is dynamically set to true if database selected by the user is existing postgresql
+      "isObserved": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_existing_oracle_host",
+      "displayName": "Database Host",
+      "description": "Specify the host on which the existing database is hosted",
+      "defaultValue": "",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "displayType": "host",
+      "isVisible": false,
+      "isObserved": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_ambari_host",
+      "value": "",
+      "defaultValue": "",
+      "displayName": "Database Host",
+      "description": "Host on which the database will be created by Ambari",
+      "isReconfigurable": false,
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "displayType": "masterHost",
+      "isVisible": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_data_dir",
+      "displayName": "Oozie Data Dir",
+      "description": "Data directory in which the Oozie DB exists",
+      "defaultValue": "",
+      "defaultDirectory": "/hadoop/oozie/data",
+      "isReconfigurable": true,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "isRequired": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 8
+    },
+
+    {
+      "id": "puppet var",
+      "name": "oozie_log_dir",
+      "displayName": "Oozie Log Dir",
+      "description": "Directory for oozie logs",
+      "defaultValue": "/var/log/oozie",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_pid_dir",
+      "displayName": "Oozie PID Dir",
+      "description": "Directory in which the pid files for oozie processes will be created",
+      "defaultValue": "/var/run/oozie",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_admin_port",
+      "displayName": "Oozie Server Admin Port",
+      "isReconfigurable": true,
+      "displayType": "int",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************NAGIOS***************************************/
+    {
+      "id": "puppet var",
+      "name": "nagios_web_login",
+      "displayName": "Nagios Admin username",
+      "description": "Nagios Web UI Admin username",
+      "defaultValue": "nagiosadmin",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "NAGIOS",
+      "filename": "nagios-env.xml",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "nagios_web_password",
+      "displayName": "Nagios Admin password",
+      "description": "Nagios Web UI Admin password",
+      "defaultValue": "",
+      "isReconfigurable": true,
+      "displayType": "password",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "NAGIOS",
+      "filename": "nagios-env.xml",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "nagios_contact",
+      "displayName": "Hadoop Admin email",
+      "description": "Hadoop Administrator email for alert notification",
+      "defaultValue": "",
+      "displayType": "email",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "NAGIOS",
+      "filename": "nagios-env.xml",
+      "index": 2
+    },
+  /**********************************************ZOOKEEPER***************************************/
+    {
+      "id": "puppet var",
+      "name": "zookeeperserver_hosts",
+      "displayName": "ZooKeeper Server hosts",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run ZooKeeper Server",
+      "displayType": "masterHosts",
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "isOverridable": false,
+      "isRequired": false,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "ZOOKEEPER_SERVER",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "zk_data_dir",
+      "displayName": "ZooKeeper directory",
+      "description": "Data directory for ZooKeeper",
+      "defaultValue": "",
+      "defaultDirectory": "/hadoop/zookeeper",
+      "isReconfigurable": true,
+      "displayType": "directory",
+      "isVisible": true,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "ZOOKEEPER_SERVER",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "tickTime",
+      "displayName": "Length of single Tick",
+      "description": "The length of a single tick in milliseconds, which is the basic time unit used by ZooKeeper",
+      "defaultValue": "2000",
+      "displayType": "int",
+      "unit": "ms",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "ZOOKEEPER_SERVER",
+      "index": 2
+    },
+    {
+      "id": "puppet var",
+      "name": "initLimit",
+      "displayName": "Ticks to allow for sync at Init",
+      "description": "Amount of time, in ticks to allow followers to connect and sync to a leader",
+      "defaultValue": "10",
+      "displayType": "int",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "ZOOKEEPER_SERVER",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "syncLimit",
+      "displayName": "Ticks to allow for sync at Runtime",
+      "description": "Amount of time, in ticks to allow followers to connect",
+      "defaultValue": "5",
+      "displayType": "int",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "ZOOKEEPER_SERVER",
+      "index": 4
+    },
+    {
+      "id": "puppet var",
+      "name": "clientPort",
+      "displayName": "Port for running ZK Server",
+      "description": "Port for running ZooKeeper server",
+      "defaultValue": "2181",
+      "displayType": "int",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "ZOOKEEPER_SERVER",
+      "index": 5
+    },
+    {
+      "id": "puppet var",
+      "name": "zk_log_dir",
+      "displayName": "ZooKeeper Log Dir",
+      "description": "Directory for ZooKeeper log files",
+      "defaultValue": "/var/log/zookeeper",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "Advanced",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "zk_pid_dir",
+      "displayName": "ZooKeeper PID Dir",
+      "description": "Directory in which the pid files for zookeeper processes will be created",
+      "defaultValue": "/var/run/zookeeper",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "Advanced",
+      "index": 1
+    },
+  /**********************************************HUE***************************************/
+    {
+      "id": "puppet var",
+      "name": "hueserver_host",
+      "displayName": "Hue Server host",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run Hue Server",
+      "displayType": "masterHost",
+      "isRequiredByAgent": false,
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HUE",
+      "filename": "hue-env.xml",
+      "category": "Hue Server"
+    },
+    {
+      "id": "puppet var",
+      "name": "hue_log_dir",
+      "displayName": "HUE Log Dir",
+      "description": "Directory for HUE logs",
+      "defaultValue": "/var/log/hue",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "HUE",
+      "filename": "hue-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hue_pid_dir",
+      "displayName": "HUE Pid Dir",
+      "description": "Directory in which the pid files for HUE processes will be created",
+      "defaultValue": "/var/run/hue",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "HUE",
+      "filename": "hue-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************GANGLIA***************************************/
+    {
+      "id": "puppet var",
+      "name": "ganglia_conf_dir",
+      "displayName": "Ganglia conf directory",
+      "description": "",
+      "defaultValue": "/etc/ganglia/hdp",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isVisible": false,
+      "serviceName": "GANGLIA",
+      "filename": "ganglia-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************MISC******************************************/
+    {
+      "id": "puppet var",
+      "name": "proxyuser_group",
+      "displayName": "Proxy group for Hive, WebHCat and Oozie",
+      "description": "",
+      "defaultValue": "users",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "filename": "core-site.xml",
+      "serviceName": "MISC",
+      "category": "Users and Groups",
+      "belongsToService": ["HIVE", "WEBHCAT", "OOZIE"]
+    },
+    {
+      "id": "puppet var",
+      "name": "ganglia_runtime_dir",
+      "displayName": "Ganglia runtime directory",
+      "description": "",
+      "defaultValue": "/var/run/ganglia/hdp",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isVisible": false,
+      "serviceName": "MISC",
+      "filename": "ganglia-env.xml",
+      "category": "General",
+      "belongsToService": []
+    },
+    {
+      "id": "puppet var",
+      "name": "hdfs_user",
+      "displayName": "HDFS User",
+      "description": "User to run HDFS as",
+      "defaultValue": "hdfs",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "hadoop-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["HDFS"]
+    },
+    {
+      "id": "puppet var",
+      "name": "mapred_user",
+      "displayName": "MapReduce User",
+      "description": "User to run MapReduce as",
+      "defaultValue": "mapred",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "mapred-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["MAPREDUCE"]
+    },
+    {
+      "id": "puppet var",
+      "name": "hbase_user",
+      "displayName": "HBase User",
+      "description": "User to run HBase as",
+      "defaultValue": "hbase",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "hbase-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["HBASE"]
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_user",
+      "displayName": "Hive User",
+      "description": "User to run Hive as",
+      "defaultValue": "hive",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "hive-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["HIVE"]
+    },
+    {
+      "id": "puppet var",
+      "name": "hcat_user",
+      "displayName": "HCat User",
+      "description": "User to run HCatalog as",
+      "defaultValue": "hcat",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "hcatalog-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["HCATALOG"]
+    },
+    {
+      "id": "puppet var",
+      "name": "webhcat_user",
+      "displayName": "WebHCat User",
+      "description": "User to run WebHCat as",
+      "defaultValue": "hcat",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "webhcat-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["WEBHCAT"]
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_user",
+      "displayName": "Oozie User",
+      "description": "User to run Oozie as",
+      "defaultValue": "oozie",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "oozie-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["OOZIE"]
+    },
+    {
+      "id": "puppet var",
+      "name": "zk_user",
+      "displayName": "ZooKeeper User",
+      "description": "User to run ZooKeeper as",
+      "defaultValue": "zookeeper",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "zookeeper-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["ZOOKEEPER"]
+    },
+    {
+      "id": "puppet var",
+      "name": "gmetad_user",
+      "displayName": "Ganglia User",
+      "description": "The user used to run Ganglia",
+      "defaultValue": "nobody",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "ganglia-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["GANGLIA"]
+    },
+    {
+      "id": "puppet var",
+      "name": "gmond_user",
+      "displayName": "Gmond User",
+      "description": "The user used to run gmond for Ganglia",
+      "defaultValue": "nobody",
+      "isReconfigurable": false,
+      "displayType": "advanced",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "MISC",
+      "filename": "ganglia-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": []
+    },
+    {
+      "id": "puppet var",
+      "name": "nagios_user",
+      "displayName": "Nagios User",
+      "description": "User to run Nagios as",
+      "defaultValue": "nagios",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "nagios-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["NAGIOS"]
+    },
+    {
+      "id": "puppet var",
+      "name": "nagios_group",
+      "displayName": "Nagios Group",
+      "description": "Nagios Group",
+      "defaultValue": "nagios",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "nagios-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["NAGIOS"]
+    },
+    {
+      "id": "puppet var",
+      "name": "smokeuser",
+      "displayName": "Smoke Test User",
+      "description": "The user used to run service smoke tests",
+      "defaultValue": "ambari-qa",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": App.supports.customizeSmokeTestUser,
+      "serviceName": "MISC",
+      "filename": "hadoop-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["HDFS"]
+    },
+    {
+      "id": "puppet var",
+      "name": "user_group",
+      "displayName": "Hadoop Group",
+      "description": "Group that the users specified above belong to",
+      "defaultValue": "hadoop",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "hadoop-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["HDFS"]
+    },
+    {
+      "id": "puppet var",
+      "name": "rrdcached_base_dir",
+      "displayName": "Ganglia rrdcached base directory",
+      "description": "Default directory for saving the rrd files on ganglia server",
+      "defaultValue": "/var/lib/ganglia/rrds",
+      "displayType": "directory",
+      "isReconfigurable": true,
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "GANGLIA",
+      "filename": "ganglia-env.xml",
+      "category": "General",
+      "belongsToService": ["GANGLIA"]
+    },
+    {
+      "id": "puppet var",
+      "name": "ignore_groupsusers_create",
+      "displayName": "Skip group modifications during install",
+      "displayType": "checkbox",
+      "isReconfigurable": true,
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "hadoop-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["HDFS"]
+    }
   ]
 };

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/models/quick_links.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/quick_links.js b/ambari-web/app/models/quick_links.js
index ec333f4..2da22e7 100644
--- a/ambari-web/app/models/quick_links.js
+++ b/ambari-web/app/models/quick_links.js
@@ -408,7 +408,7 @@ App.QuickLinks.FIXTURES = [
     service_id: 'FALCON',
     template:'%@://%@:%@/',
     http_config: 'falcon_port',
-    site: 'global',
+    site: 'falcon-env',
     regex: '^(\\d+)$',
     default_http_port: 15000
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/models/service.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/service.js b/ambari-web/app/models/service.js
index c72d7be..3dca304 100644
--- a/ambari-web/app/models/service.js
+++ b/ambari-web/app/models/service.js
@@ -87,8 +87,7 @@ App.Service = DS.Model.extend(App.ServiceModelMixin, {
 
   /**
    * For each host-component, if the desired_configs dont match the
-   * actual_configs, then a restart is required. Except for Global site
-   * properties, which need to be checked with map.
+   * actual_configs, then a restart is required.
    */
   isRestartRequired: function () {
     var rhc = this.get('hostComponents').filterProperty('staleConfigs', true);

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/models/service_config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/service_config.js b/ambari-web/app/models/service_config.js
index 9e6823c..dd62835 100644
--- a/ambari-web/app/models/service_config.js
+++ b/ambari-web/app/models/service_config.js
@@ -149,7 +149,7 @@ App.ServiceConfigProperty = Ember.Object.extend({
   isFinal: false,
   supportsFinal: false,
   isVisible: true,
-  isRequiredByAgent: true, // Setting it to true implies property will be stored in global configuration
+  isRequiredByAgent: true, // Setting it to true implies property will be stored in configuration
   isSecureConfig: false,
   errorMessage: '',
   warnMessage: '',

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/models/stack_service.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/stack_service.js b/ambari-web/app/models/stack_service.js
index 812453b..c5c774b 100644
--- a/ambari-web/app/models/stack_service.js
+++ b/ambari-web/app/models/stack_service.js
@@ -179,7 +179,7 @@ App.StackService = DS.Model.extend(App.ServiceModelMixin, {
     var configTypes = this.get('configTypes');
     var serviceComponents = this.get('serviceComponents');
     if (configTypes && Object.keys(configTypes).length) {
-      var pattern = ["General", "CapacityScheduler", "^Advanced", "^Custom", "Falcon - Oozie integration", "FalconStartupSite", "FalconRuntimeSite"];
+      var pattern = ["General", "CapacityScheduler", "^Advanced", "Env$", "^Custom", "Falcon - Oozie integration", "FalconStartupSite", "FalconRuntimeSite"];
       configCategories = App.StackService.configCategories.call(this).filter(function (_configCategory) {
         var serviceComponentName = _configCategory.get('name');
         var isServiceComponent = serviceComponents.someProperty('componentName', serviceComponentName);
@@ -272,7 +272,8 @@ App.StackService.configCategories = function () {
         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 hdfs-log4j', displayName: 'Custom log4j.properties', siteFileName: 'hdfs-log4j.xml', canAddProperty: false}),
+        App.ServiceConfigCategory.create({ name: 'HadoopEnv', displayName: 'Custom Hadoop Env', siteFileName: 'hadoop-env.xml', canAddProperty: false})
       ]);
       break;
     case 'GLUSTERFS':
@@ -289,7 +290,8 @@ App.StackService.configCategories = function () {
         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 mapreduce-log4j', displayName: 'Custom log4j.properties', siteFileName: 'mapreduce-log4j.xml', canAddProperty: false}),
+        App.ServiceConfigCategory.create({ name: 'MapredEnv', displayName: 'Custom Mapreduce Env', siteFileName: 'mapred-env.xml', canAddProperty: false})
       ]);
       break;
     case 'YARN':
@@ -301,7 +303,8 @@ App.StackService.configCategories = function () {
         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-log4j', displayName: 'Custom log4j.properties', siteFileName: 'yarn-log4j.xml', canAddProperty: false}),
+        App.ServiceConfigCategory.create({ name: 'YarnEnv', displayName: 'Custom Yarn Env', siteFileName: 'yarn-env.xml', canAddProperty: false})
       ]);
       break;
     case 'MAPREDUCE2':
@@ -309,7 +312,8 @@ App.StackService.configCategories = function () {
         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: 'AdvancedMapredSite', displayName: 'Custom mapred-site.xml', siteFileName: 'mapred-site.xml', canAddProperty: true}),
+        App.ServiceConfigCategory.create({ name: 'MapredEnv', displayName: 'Custom Mapred Env', siteFileName: 'mapred-env.xml', canAddProperty: false})
       ]);
       break;
     case 'HIVE':
@@ -318,14 +322,16 @@ App.StackService.configCategories = function () {
         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-exec-log4j', displayName: 'Custom hive-exec-log4j', siteFileName: 'hive-exec-log4j.xml', canAddProperty: false}),
+        App.ServiceConfigCategory.create({ name: 'HiveEnv', displayName: 'Custom Hive Env', siteFileName: 'hive-env.xml', canAddProperty: false})
       ]);
       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-site', displayName: 'Custom webhcat-site.xml', siteFileName: 'webhcat-site.xml', canAddProperty: true}),
+        App.ServiceConfigCategory.create({ name: 'WebhcatEnv', displayName: 'Custom WebHCat Env', siteFileName: 'webhcat-env.xml', canAddProperty: false})
       ]);
       break;
     case 'HBASE':
@@ -335,7 +341,8 @@ App.StackService.configCategories = function () {
         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-log4j', displayName: 'Custom log4j.properties', siteFileName: 'hbase-log4j.xml', canAddProperty: false}),
+        App.ServiceConfigCategory.create({ name: 'HbaseEnv', displayName: 'Custom Hbase Env', siteFileName: 'hbase-env.xml', canAddProperty: false})
       ]);
       break;
     case 'ZOOKEEPER':
@@ -343,7 +350,8 @@ App.StackService.configCategories = function () {
         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 zoo.cfg', displayName: 'Custom zoo.cfg', siteFileName: 'zoo.cfg', canAddProperty: true}),
+        App.ServiceConfigCategory.create({ name: 'ZookeeperEnv', displayName: 'Custom Zookeeper Env', siteFileName: 'zookeeper-env.xml', canAddProperty: false})
       ]);
       break;
     case 'OOZIE':
@@ -351,13 +359,15 @@ App.StackService.configCategories = function () {
         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-log4j', displayName: 'Custom log4j.properties', siteFileName: 'oozie-log4j.xml', canAddProperty: false}),
+        App.ServiceConfigCategory.create({ name: 'OozieEnv', displayName: 'Custom Oozie Env', 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-log4j', displayName: 'Custom log4j.properties', siteFileName: 'pig-log4j.xml', canAddProperty: false}),
+        App.ServiceConfigCategory.create({ name: 'PigEnv', displayName: 'Custom Pig Env', siteFileName: 'pig-env.xml', canAddProperty: false})
       ]);
       break;
     case 'FALCON':
@@ -368,7 +378,8 @@ App.StackService.configCategories = function () {
         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-runtime.properties', displayName: 'Custom runtime.properties', siteFileName: 'falcon-runtime.properties.xml', canAddProperty: true}),
+        App.ServiceConfigCategory.create({ name: 'FalconEnv', displayName: 'Custom Falcon Env', siteFileName: 'falcon-env.xml', canAddProperty: false})
       ]);
       break;
     case 'STORM':
@@ -380,19 +391,22 @@ App.StackService.configCategories = function () {
         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-site', displayName: 'Custom storm.yaml', siteFileName: 'storm-site.xml', canAddProperty: true}),
+        App.ServiceConfigCategory.create({ name: 'StormEnv', displayName: 'Custom Storm Env', siteFileName: 'storm-env.xml', canAddProperty: false})
       ]);
       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-site', displayName: 'Custom tez-site.xml', siteFileName: 'tez-site.xml', canAddProperty: true}),
+        App.ServiceConfigCategory.create({ name: 'TezpEnv', displayName: 'Custom Tez Env', siteFileName: 'tez-env.xml', canAddProperty: false})
       ]);
       break;
     case 'FLUME':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'FLUME_HANDLER', displayName: 'flume.conf', siteFileName: 'flume-conf', canAddProperty: false})
+        App.ServiceConfigCategory.create({ name: 'FLUME_HANDLER', displayName: 'flume.conf', siteFileName: 'flume-conf', canAddProperty: false}),
+        App.ServiceConfigCategory.create({ name: 'FlumeEnv', displayName: 'Custom Flume Env', siteFileName: 'flume-env.xml', canAddProperty: false})
       ]);
       break;
     case 'HCATALOG':

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/utils/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js
index 226f839..f82bd97 100644
--- a/ambari-web/app/utils/config.js
+++ b/ambari-web/app/utils/config.js
@@ -77,50 +77,15 @@ App.config = Em.Object.create({
     }
   },
 
-  preDefinedGlobalProperties: [],
-
-  setPreDefinedGlobalProperties: function () {
-    var globalProperties = [];
-    if (App.get('isHadoop2Stack')) {
-      globalProperties = require('data/HDP2/global_properties').configProperties;
-    } else {
-      globalProperties = require('data/global_properties').configProperties;
-    }
-    var preDefinedGlobalProperties = globalProperties;
-    var categories = [];
-    var nonServicePages = require('data/service_configs');
-    var services = App.StackService.find().filterProperty('id');
-
-    // Only services that have configTypes associated with it should display service config page
-    // Also Remove HCatalog from this list. HCatalog has global and hive-site related to it but none of them 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 = services.filter(function (service) {
-      var configtypes = service.get('configTypes');
-      return configtypes && !!Object.keys(configtypes).length && service.get('serviceName') != 'HCATALOG';
-    }, this);
-    var serviceTabs = servicesWithConfigTypes.concat(nonServicePages);
-    serviceTabs.forEach(function (stackService) {
-      categories.pushObjects(stackService.get('configCategories'));
-    });
-    var categoryNames = categories.mapProperty('name').uniq();
-    if (!!categoryNames.length) {
-      preDefinedGlobalProperties = globalProperties.filter(function (_globalProperty) {
-        return !_globalProperty.category || (serviceTabs.someProperty('serviceName', _globalProperty.serviceName) &&
-          categoryNames.contains(_globalProperty.category));
-      });
-    }
-    this.set('preDefinedGlobalProperties', preDefinedGlobalProperties);
-  },
-
   preDefinedServiceConfigs: [],
 
   setPreDefinedServiceConfigs: function () {
-    var configs = this.get('preDefinedGlobalProperties');
+    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 global and hive-site related to it but none of them should be exposed under HCatalog Service
+    // Also Remove HCatalog from this list. HCatalog has and hive-site related to it but none of them 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');
@@ -130,9 +95,6 @@ App.config = Em.Object.create({
     var allTabs = servicesWithConfigTypes.concat(nonServiceTab);
     allTabs.forEach(function (service) {
       var serviceConfigs = configs.filterProperty('serviceName', service.get('serviceName'));
-      serviceConfigs = serviceConfigs.filter(function (_globalProperty) {
-        !_globalProperty.category || service.get('configCategories').someProperty('name', _globalProperty.category);
-      });
       service.set('configs', serviceConfigs);
       services.push(service);
     });
@@ -236,21 +198,13 @@ App.config = Em.Object.create({
    *
    * Example:
    * {
-   *  'global_version1': {...},
-   *  'global_version2': {...},
    *  'hdfs-site_version3': {...},
    * }
    */
   loadedConfigurationsCache: {},
 
-  /**
-   * Array of global "service/desired_tag/actual_tag" strings which
-   * indicate different configurations. We cache these so that
-   * we don't have to recalculate if two tags are difference.
-   */
-  differentGlobalTagsCache: [],
-
   identifyCategory: function (config) {
+    if(config.filename.indexOf("env")!=-1) return;
     var category = null;
     var serviceConfigMetaData = this.get('preDefinedServiceConfigs').findProperty('serviceName', config.serviceName);
     if (serviceConfigMetaData) {
@@ -320,7 +274,6 @@ App.config = Em.Object.create({
   /**
    * return:
    *   configs,
-   *   globalConfigs,
    *   mappingConfigs
    *
    * @param configGroups
@@ -331,9 +284,8 @@ App.config = Em.Object.create({
    */
   mergePreDefinedWithLoaded: function (configGroups, advancedConfigs, tags, serviceName) {
     var configs = [];
-    var globalConfigs = [];
     var log4jContentProperties = this.createLog4jContent();
-    var preDefinedConfigs = this.get('preDefinedGlobalProperties').concat(this.get('preDefinedSiteProperties')).concat(log4jContentProperties);
+    var preDefinedConfigs = this.get('preDefinedSiteProperties').concat(log4jContentProperties);
     var mappingConfigs = [];
     var filenameExceptions = this.get('filenameExceptions');
     var selectedServiceNames = App.Service.find().mapProperty('serviceName');
@@ -349,23 +301,14 @@ App.config = Em.Object.create({
       var finalAttributes = attributes.final || {};
       var properties = siteConfig.properties || {};
       for (var index in properties) {
-        var configsPropertyDef = null;
-        var preDefinedConfig = [];
-        if (_tag.siteName === 'global') {
-          // Unlike other site where one site maps to ones service, global site contains configurations for multiple services
-          // So Global Configuration should not be filtered out with serviceName.
-          preDefinedConfig = preDefinedConfigs.filterProperty('name', index);
-          preDefinedConfig.forEach(function (_preDefinedConfig) {
-            var isServiceInstalled = selectedServiceNames.contains(_preDefinedConfig.serviceName);
-            if (isServiceInstalled || _preDefinedConfig.serviceName === 'MISC') {
-              configsPropertyDef = _preDefinedConfig;
-            }
-          }, this);
-        } else {
-          configsPropertyDef = preDefinedConfigs.filterProperty('name', index).findProperty('filename', filename);
+        var configsPropertyDef = preDefinedConfigs.filterProperty('name', index).findProperty('filename', filename);
           if (!configsPropertyDef) {
-            configsPropertyDef = preDefinedConfigs.filterProperty('name', index).findProperty('serviceName', serviceName);
-          }
+            preDefinedConfigs.filterProperty('name', index).forEach(function (_preDefinedConfig) {
+              var isServiceInstalled = selectedServiceNames.contains(_preDefinedConfig.serviceName);
+              if (isServiceInstalled || _preDefinedConfig.serviceName === 'MISC') {
+                configsPropertyDef = _preDefinedConfig;
+              }
+            }, this);
         }
 
         var serviceConfigObj = App.ServiceConfig.create({
@@ -386,27 +329,21 @@ App.config = Em.Object.create({
           this.setServiceConfigUiAttributes(serviceConfigObj, configsPropertyDef);
         }
 
-        if (_tag.siteName === 'global') {
+        if (!this.getBySitename(serviceConfigObj.get('filename')).someProperty('name', index)) {
+          isAdvanced = advancedConfigs.someProperty('name', index);
+          serviceConfigObj.id = 'site property';
           if (configsPropertyDef) {
             if (configsPropertyDef.isRequiredByAgent === false) {
               continue;
             }
             this.handleSpecialProperties(serviceConfigObj);
           } else {
-            serviceConfigObj.isVisible = false;  // if the global property is not defined on ui metadata global_properties.js then it shouldn't be a part of errorCount
-          }
-          serviceConfigObj.id = 'puppet var';
-          serviceConfigObj.displayName = configsPropertyDef ? configsPropertyDef.displayName : null;
-          serviceConfigObj.options = configsPropertyDef ? configsPropertyDef.options : null;
-          globalConfigs.push(serviceConfigObj);
-        } else if (!this.getBySitename(serviceConfigObj.get('filename')).someProperty('name', index)) {
-          isAdvanced = advancedConfigs.someProperty('name', index);
-          serviceConfigObj.id = 'site property';
-          if (!configsPropertyDef) {
+            serviceConfigObj.isVisible = false;  // if the property is not defined on ui metadata site_properties.js then it shouldn't be a part of errorCount
             serviceConfigObj.displayType = stringUtils.isSingleLine(serviceConfigObj.value) ? 'advanced' : 'multiLine';
           }
 
           serviceConfigObj.displayName = configsPropertyDef ? configsPropertyDef.displayName : index;
+          serviceConfigObj.options = configsPropertyDef ? configsPropertyDef.options : null;
           this.calculateConfigProperties(serviceConfigObj, isAdvanced, advancedConfigs);
 
           if (serviceConfigObj.get('displayType') == 'directories'
@@ -438,7 +375,6 @@ App.config = Em.Object.create({
     }, this);
     return {
       configs: configs,
-      globalConfigs: globalConfigs,
       mappingConfigs: mappingConfigs
     }
   },
@@ -472,18 +408,9 @@ App.config = Em.Object.create({
    * @return {Object}
    */
   syncOrderWithPredefined: function (configSet) {
-    var globalConfigs = configSet.globalConfigs,
-      siteConfigs = configSet.configs,
-      globalStart = [],
+    var siteConfigs = configSet.configs,
       siteStart = [];
 
-    this.get('preDefinedGlobalProperties').mapProperty('name').forEach(function (name) {
-      var _global = globalConfigs.findProperty('name', name);
-      if (_global) {
-        globalStart.push(_global);
-        globalConfigs = globalConfigs.without(_global);
-      }
-    }, this);
     var preDefinedSiteProperties = this.get('preDefinedSiteProperties').mapProperty('name');
     var log4jContentProperties = this.createLog4jContent().mapProperty('name');
     var siteProperties = preDefinedSiteProperties.concat(log4jContentProperties);
@@ -501,7 +428,6 @@ App.config = Em.Object.create({
     }, this);
 
     return {
-      globalConfigs: globalStart.concat(globalConfigs.sortProperty('name')),
       configs: siteStart.concat(siteConfigs.sortProperty('name')),
       mappingConfigs: configSet.mappingConfigs
     }
@@ -517,7 +443,7 @@ App.config = Em.Object.create({
   mergePreDefinedWithStored: function (storedConfigs, advancedConfigs, selectedServiceNames) {
     var mergedConfigs = [];
     var log4jContentProperties = this.createLog4jContent();
-    var preDefinedConfigs = this.get('preDefinedGlobalProperties').concat(this.get('preDefinedSiteProperties')).concat(log4jContentProperties);
+    var preDefinedConfigs = this.get('preDefinedSiteProperties').concat(log4jContentProperties);
 
     storedConfigs = (storedConfigs) ? storedConfigs : [];
 
@@ -882,7 +808,7 @@ App.config = Em.Object.create({
     if (data.items.length) {
       data.items.forEach(function (item) {
         item = item.StackConfigurations;
-        item.isVisible = item.type !== 'global.xml';
+        item.isVisible = true;
         var serviceName = item.service_name;
         var fileName = item.type;
         var isHDP2 = App.get('isHadoop2Stack');
@@ -993,7 +919,7 @@ App.config = Em.Object.create({
   /**
    * Set all site property that are derived from other site-properties
    */
-  setConfigValue: function (mappedConfigs, allConfigs, config, globalConfigs) {
+  setConfigValue: function (mappedConfigs, allConfigs, config) {
     var globalValue;
     if (config.value == null) {
       return;
@@ -1040,8 +966,8 @@ App.config = Em.Object.create({
     if (templateValue) {
       templateValue.forEach(function (_value) {
         var index = parseInt(_value.match(/\[([\d]*)(?=\])/)[1]);
-        if (globalConfigs.someProperty('name', config.templateName[index])) {
-          var globalValue = globalConfigs.findProperty('name', config.templateName[index]).value;
+        if (allConfigs.someProperty('name', config.templateName[index])) {
+          var globalValue = allConfigs.findProperty('name', config.templateName[index]).value;
           config.value = config.value.replace(_value, globalValue);
         } else {
           config.value = null;

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/views/common/quick_view_link_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/quick_view_link_view.js b/ambari-web/app/views/common/quick_view_link_view.js
index 703523a..a3f1ce7 100644
--- a/ambari-web/app/views/common/quick_view_link_view.js
+++ b/ambari-web/app/views/common/quick_view_link_view.js
@@ -72,7 +72,7 @@ App.QuickViewLinks = Em.View.extend({
   /**
    * list of files that contains properties for enabling/disabling ssl
    */
-  requiredSiteNames: ['global','core-site', 'hdfs-site', 'hbase-site', 'oozie-site', 'yarn-site', 'mapred-site'],
+  requiredSiteNames: ['hadoop-env','yarn-env','hbase-env','oozie-env','mapred-env','core-site', 'hdfs-site', 'hbase-site', 'oozie-site', 'yarn-site', 'mapred-site'],
   /**
    * Get public host name by its host name.
    *

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/views/main/admin/security.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/security.js b/ambari-web/app/views/main/admin/security.js
index 50ccf4e..4dcd0af 100644
--- a/ambari-web/app/views/main/admin/security.js
+++ b/ambari-web/app/views/main/admin/security.js
@@ -43,9 +43,9 @@ App.MainAdminSecurityView = Em.View.extend({
   }.property('configProperties'),
 
   onRealmNameChange: function () {
-    this.get('configProperties').forEach(function (_globalProperty) {
-      if (/principal_name?$/.test(_globalProperty.get('name'))) {
-        _globalProperty.set('unit', '@' + this.get('realmName.value'));
+    this.get('configProperties').forEach(function (_property) {
+      if (/principal_name?$/.test(_property.get('name'))) {
+        _property.set('unit', '@' + this.get('realmName.value'));
       }
     }, this);
   }.observes('realmName.value')

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/views/main/admin/security/add/step2.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/security/add/step2.js b/ambari-web/app/views/main/admin/security/add/step2.js
index 66c66dc..c97203f 100644
--- a/ambari-web/app/views/main/admin/security/add/step2.js
+++ b/ambari-web/app/views/main/admin/security/add/step2.js
@@ -40,9 +40,9 @@ App.MainAdminSecurityAddStep2View = Em.View.extend({
   }.property('configProperties'),
 
   onRealmNameChange: function () {
-    this.get('configProperties').forEach(function (_globalProperty) {
-      if (/principal_name?$/.test(_globalProperty.get('name')) || _globalProperty.get('name') == 'namenode_principal_name_falcon') {
-        _globalProperty.set('unit', '@' + this.get('realmName.value'));
+    this.get('configProperties').forEach(function (_property) {
+      if (/principal_name?$/.test(_property.get('name')) || _property.get('name') == 'namenode_principal_name_falcon') {
+        _property.set('unit', '@' + this.get('realmName.value'));
       }
     }, this);
   }.observes('realmName.value')


[2/6] AMBARI-6501 Extend server-side stack definition to include metadata for additional configurations (including -env.sh files) for each service. (ababiichuk)

Posted by ab...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/data/global_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/global_properties.js b/ambari-web/app/data/global_properties.js
deleted file mode 100644
index bdd05bf..0000000
--- a/ambari-web/app/data/global_properties.js
+++ /dev/null
@@ -1,1589 +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.
- */
-/**
- * Defines service configuration properties.
- *   name:
- *     The name of the config property that is understood by Ambari server and agent.
- *     E.g., "datanode_du_reserved"
- *
- *   displayName:
- *     The human-friendly display name of the config property.
- *     E.g., "Reserved space for HDFS"
- *
- *   description:
- *     The description of the config property.
- *     E.g., "Reserved space in GB per volume"
- *
- *   defaultValue:
- *     The default value of the config property.
- *     E.g., "1"
- *
- *   isReconfigurable:
- *     Whether the config property can be reconfigured after it has been initially set and deployed.
- *     If this is unspecified, true is assumed.
- *     E.g., true, false
- *
- *   isOverridable:
- *     Whether the config property can be overridden by hosts.
- *     If this is unspecified, true is assumed.
- *
- *   isRequired:
- *     Whether the config property is required or not.
- *     If this is unspecified, true is assumed.
- *     E.g., true, false
- *
- *   displayType:
- *     How the config property is to be rendered for user input.
- *     If this is left unspecified, "string" is assumed
- *     E.g., "string", "int", "float", "checkbox", "directories", "custom", "email", "masterHost", "slaveHosts"
- *
- *   unit
- *     The unit for the config property.
- *     E.g., "ms", "MB", "bytes"
- *
- *   isRequiredByAgent:
- *     Whether the config property is required by agent or not.
- *     If value is false then it will be not persisted in global configuration
- *
- *   serviceName:
- *     The service that the config property belongs to.
- *     E.g., "HDFS", "MAPREDUCE", "ZOOKEEPER", etc.
- *
- *   category: the category that the config property belongs to (used for grouping config properties in the UI).
- *     if unspecified, "General" is assumed.
- *     E.g., "General", "Advanced", "NameNode", "DataNode"
- *
- *   index: the sequence number in category, that point to place where config located regarding all rest in category.
- *     if unspecified, push to the end of array.
- *     E.g., 0, 1, '2'
- */
-
-var App = require('app');
-require('config');
-
-module.exports =
-{
-  "configProperties": [
-  /**********************************************HDFS***************************************/
-    {
-      "id": "puppet var",
-      "name": "namenode_host",
-      "displayName": "NameNode host",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run NameNode",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "category": "NAMENODE",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "namenode_heapsize",
-      "displayName": "NameNode Java heap size",
-      "description": "Initial and maximum Java heap size for NameNode (Java options -Xms and -Xmx).  This also applies to the Secondary NameNode.",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "category": "NAMENODE",
-      "index": 2
-    },
-    {
-      "id": "puppet var",
-      "name": "namenode_opt_newsize",
-      "displayName": "NameNode new generation size",
-      "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize).  This also applies to the Secondary NameNode.",
-      "defaultValue": "200",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "category": "NAMENODE",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "snamenode_host",
-      "displayName": "SNameNode host",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run SecondaryNameNode",
-      "displayType": "masterHost",
-      "isRequiredByAgent": false,
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "category": "SECONDARY_NAMENODE",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "datanode_hosts", //not in the schema. For UI purpose
-      "displayName": "DataNode hosts",
-      "value": "",
-      "defaultValue": "",
-      "description": "The hosts that have been assigned to run DataNode",
-      "displayType": "slaveHosts",
-      "isRequired": false,
-      "isRequiredByAgent": false,
-      "isOverridable": false,
-      "isVisible": true,
-      "domain": "datanode-global",
-      "serviceName": "HDFS",
-      "category": "DATANODE",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "dtnode_heapsize",
-      "displayName": "DataNode maximum Java heap size",
-      "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "isVisible": true,
-      "domain": "datanode-global",
-      "serviceName": "HDFS",
-      "category": "DATANODE",
-      "index": 2
-    },
-    {
-      "id": "puppet var",
-      "name": "hadoop_heapsize",
-      "displayName": "Hadoop maximum Java heap size",
-      "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "hdfs_log_dir_prefix",
-      "displayName": "Hadoop Log Dir Prefix",
-      "description": "The parent directory for Hadoop log files.  The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.",
-      "defaultValue": "/var/log/hadoop",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hadoop_pid_dir_prefix",
-      "displayName": "Hadoop PID Dir Prefix",
-      "description": "The parent directory in which the PID files for Hadoop processes will be created.  The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.",
-      "defaultValue": "/var/run/hadoop",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "namenode_opt_maxnewsize",
-      "displayName": "NameNode maximum new generation size",
-      "description": "",
-      "defaultValue": "200",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "category": "NAMENODE"
-    },
-    {
-      "id": "puppet var",
-      "name": "security_enabled",
-      "displayName": "Hadoop Security",
-      "description": "Enable hadoop security",
-      "defaultValue": 'false',
-      "isRequired": false,
-      "displayType": "checkbox",
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "HDFS",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "namenode_formatted_mark_dir",
-      "displayName": "Hadoop formatted mark directory",
-      "description": "",
-      "defaultValue": "/var/run/hadoop/hdfs/namenode/formatted/",
-      "isRequired": false,
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "serviceName": "HDFS",
-      "category": "NAMENODE"
-    },
-
-  /**********************************************GLUSTERFS***************************************/
-    {
-        "id": "puppet var",
-        "name": "fs_glusterfs_default_name",
-        "displayName": "GlusterFS default fs name 1.x Hadoop",
-        "description": "GlusterFS default filesystem name (glusterfs://{MasterFQDN}:9000)",
-        "defaultValue": "glusterfs:///localhost:8020",
-        "displayType": "string",
-        "isVisible": true,
-        "domain": "global",
-        "serviceName": "GLUSTERFS",
-        "category": "General"
-      },
-      {
-          "id": "puppet var",
-          "name": "glusterfs_defaultFS_name",
-          "displayName": "GlusterFS default fs name 2.x Hadoop",
-          "description": "GlusterFS default filesystem name (glusterfs:///)",
-          "defaultValue": "glusterfs:///localhost:8020",
-          "displayType": "string",
-          "isVisible": true,
-          "domain": "global",
-          "serviceName": "GLUSTERFS",
-          "category": "General"
-        },
-        {
-            "id": "puppet var",
-            "name": "fs_AbstractFileSystem_glusterfs_impl",
-            "displayName": "GlusterFS Abstract Filesystem declaration",
-            "description": "GlusterFS Abstract Filesystem declaration",
-            "defaultValue": "org.apache.hadoop.fs.local.GlusterFs",
-            "displayType": "string",
-            "isVisible": true,
-            "domain": "global",
-            "serviceName": "GLUSTERFS",
-            "category": "General"
-          },
-          {
-            "id": "puppet var",
-            "name": "hadoop_heapsize",
-            "displayName": "Hadoop maximum Java heap size",
-            "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)",
-            "defaultValue": "1024",
-            "displayType": "int",
-            "unit": "MB",
-	          "isVisible": true,
-	          "serviceName": "GLUSTERFS",
-            "index": 1
-          },
-      {
-          "id": "puppet var",
-          "name": "hdfs_log_dir_prefix",
-          "displayName": "Hadoop Log Dir Prefix",
-          "description": "The parent directory for Hadoop log files.  The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.",
-          "defaultValue": "/var/log/hadoop",
-          "isReconfigurable": false,
-          "displayType": "directory",
-          "isOverridable": false,
-          "isVisible": true,
-          "serviceName": "GLUSTERFS",
-          "category": "Advanced"
-      },
-      {
-          "id": "puppet var",
-          "name": "hadoop_pid_dir_prefix",
-          "displayName": "Hadoop PID Dir Prefix",
-          "description": "The parent directory in which the PID files for Hadoop processes will be created.  The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.",
-          "defaultValue": "/var/run/hadoop",
-          "isReconfigurable": false,
-          "displayType": "directory",
-          "isOverridable": false,
-          "isVisible": true,
-          "serviceName": "GLUSTERFS",
-          "category": "Advanced"
-       },  
-      {
-          "id": "puppet var",
-          "name": "namenode_heapsize",
-          "displayName": "Name Node Heap Size",
-          "description": "Name Node Heap Size, default jvm memory setting",
-          "defaultValue": "1024",
-          "isReconfigurable": false,
-          "displayType": "int",
-          "isOverridable": false,
-          "isVisible": false,
-          "serviceName": "GLUSTERFS",
-          "category": "Advanced"
-       },      
-    {
-      "id": "puppet var",
-      "name": "namenode_opt_newsize",
-      "displayName": "NameNode new generation size",
-      "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize).  This also applies to the Secondary NameNode.",
-      "defaultValue": "200",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "GLUSTERFS",
-      "category": "category"
-    },
-    {
-      "id": "puppet var",
-      "name": "namenode_opt_maxnewsize",
-      "displayName": "NameNode maximum new generation size",
-      "description": "Maximum size of Java new generation for NameNode (Java option -XX:MaxnewSize).",
-      "defaultValue": "200",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "GLUSTERFS",
-      "category": "Advanced"
-    }, 
-    {
-      "id": "puppet var",
-      "name": "dtnode_heapsize",
-      "displayName": "DataNode maximum Java heap size",
-      "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "isVisible": false,
-      "domain": "datanode-global",
-      "serviceName": "GLUSTERFS",
-      "category": "Advanced"
-    },                            
-  /**********************************************MAPREDUCE***************************************/
-    {
-      "id": "puppet var",
-      "name": "hs_host",
-      "displayName": "History Server",
-      "description": "History Server",
-      "defaultValue": "",
-      "isOverridable": false,
-      "displayType": "masterHost",
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "MAPREDUCE",
-      "category": "HISTORYSERVER",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "jobtracker_host",
-      "displayName": "JobTracker host",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run JobTracker",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "MAPREDUCE",
-      "category": "JOBTRACKER",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "jtnode_opt_newsize",
-      "displayName": "JobTracker new generation size",
-      "description": "Default size of Java new generation size for JobTracker in MB (Java option -XX:NewSize)",
-      "defaultValue": "200",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MAPREDUCE",
-      "category": "JOBTRACKER",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "jtnode_opt_maxnewsize",
-      "displayName": "JobTracker maximum new generation size",
-      "description": "Maximum size of Java new generation for JobTracker in MB (Java option -XX:MaxNewSize)",
-      "defaultValue": "200",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MAPREDUCE",
-      "category": "JOBTRACKER",
-      "index": 2
-    },
-    {
-      "id": "puppet var",
-      "name": "jtnode_heapsize",
-      "displayName": "JobTracker maximum Java heap size",
-      "description": "Maximum Java heap size for JobTracker in MB (Java option -Xmx)",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MAPREDUCE",
-      "category": "JOBTRACKER",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "tasktracker_hosts",
-      "displayName": "TaskTracker hosts",
-      "value": "",
-      "defaultValue": "",
-      "description": "The hosts that have been assigned to run TaskTracker",
-      "displayType": "slaveHosts",
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequired": false,
-      "isRequiredByAgent": false,
-      "serviceName": "MAPREDUCE",
-      "category": "TASKTRACKER",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "ttnode_heapsize",
-      "displayName": "TaskTracker maximum Java heap size",
-      "description": "Maximum Java heap size for TaskTracker in MB (Java option -Xmx)",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "serviceName": "MAPREDUCE",
-      "category": "TASKTRACKER",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "lzo_enabled",
-      "displayName": "LZO compression",
-      "description": "LZO compression enabled",
-      "defaultValue": true,
-      "displayType": "checkbox",
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "MAPREDUCE",
-      "index": 11
-    },
-    {
-      "id": "puppet var",
-      "name": "snappy_enabled",
-      "displayName": "Snappy compression",
-      "description": "Snappy compression enabled",
-      "defaultValue": true,
-      "isReconfigurable": false,
-      "displayType": "checkbox",
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "MAPREDUCE",
-      "index": 12
-    },
-    {
-      "id": "puppet var",
-      "name": "rca_enabled",
-      "displayName": "Enable Job Diagnostics",
-      "description": "Tools for tracing the path and troubleshooting the performance of MapReduce jobs",
-      "defaultValue": true,
-      "isReconfigurable": true,
-      "isOverridable": false,
-      "displayType": "checkbox",
-      "isVisible": true,
-      "serviceName": "MAPREDUCE",
-      "index": 13
-    },
-  /**********************************************HBASE***************************************/
-    {
-      "id": "puppet var",
-      "name": "hbasemaster_host",
-      "displayName": "HBase Master hosts",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run HBase Master",
-      "displayType": "masterHosts",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "HBASE",
-      "category": "HBASE_MASTER",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "hbase_master_heapsize",
-      "displayName": "HBase Master Maximum Java heap size",
-      "description": "Maximum Java heap size for HBase master (Java option -Xmx)",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": true,
-      "isVisible": true,
-      "serviceName": "HBASE",
-      "category": "HBASE_MASTER",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "regionserver_hosts",
-      "displayName": "RegionServer hosts",
-      "value": "",
-      "defaultValue": "",
-      "description": "The hosts that have been assigned to run RegionServer",
-      "displayType": "slaveHosts",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "isRequired": false,
-      "domain": "regionserver-global",
-      "serviceName": "HBASE",
-      "category": "HBASE_REGIONSERVER",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "hbase_regionserver_heapsize",
-      "displayName": "RegionServers maximum Java heap size",
-      "description": "Maximum Java heap size for RegionServers (Java option -Xmx)",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "isVisible": true,
-      "domain": "regionserver-global",
-      "serviceName": "HBASE",
-      "category": "HBASE_REGIONSERVER",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "hbase_log_dir",
-      "displayName": "HBase Log Dir",
-      "description": "Directory for HBase logs",
-      "defaultValue": "/var/log/hbase",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HBASE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hbase_pid_dir",
-      "displayName": "HBase PID Dir",
-      "description": "Directory in which the pid files for HBase processes will be created",
-      "defaultValue": "/var/run/hbase",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HBASE",
-      "category": "Advanced"
-    },
-  /**********************************************HIVE***************************************/
-    {
-      "id": "puppet var",
-      "name": "hivemetastore_host",
-      "displayName": "Hive Metastore host",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run Hive Metastore",
-      "displayType": "masterHost",
-      "isRequiredByAgent": false,
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 0
-    },
-    // for existing MySQL
-    {
-      "id": "puppet var",
-      "name": "hive_existing_mysql_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "MySQL",
-      "description": "Using an existing MySQL database for Hive Metastore",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": false,
-      "isReconfigurable": false,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 1
-    },
-    // for existing PostgreSQL
-    {
-      "id": "puppet var",
-      "name": "hive_existing_postgresql_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "PostgreSQL",
-      "description": "Using an existing PostgreSQL database for Hive Metastore",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": false,
-      "isReconfigurable": false,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 1
-    },
-    // for existing Oracle
-    {
-      "id": "puppet var",
-      "name": "hive_existing_oracle_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "Oracle",
-      "description": "Using an existing Oracle database for Hive Metastore",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isOverridable": false,
-      "isReconfigurable": false,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 1
-    },
-    // for new MySQL
-    {
-      "id": "puppet var",
-      "name": "hive_ambari_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "MySQL",
-      "description": "MySQL will be installed by Ambari",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_database",
-      "displayName": "Hive Database",
-      "value": "",
-      "defaultValue": "New MySQL Database",
-      "options": [
-        {
-          displayName: 'New MySQL Database',
-          foreignKeys: ['hive_ambari_database', 'hive_ambari_host']
-        },
-        {
-          displayName: 'Existing MySQL Database',
-          foreignKeys: ['hive_existing_mysql_database', 'hive_existing_mysql_host']
-        },
-        {
-          displayName: 'Existing PostgreSQL Database',
-          foreignKeys: ['hive_existing_postgresql_database', 'hive_existing_postgresql_host']
-        },
-        {
-          displayName: 'Existing Oracle Database',
-          foreignKeys: ['hive_existing_oracle_database', 'hive_existing_oracle_host'],
-          hidden: !App.supports.hiveOozieExtraDatabases
-        }
-      ],
-      "description": "MySQL will be installed by Ambari",
-      "displayType": "radio button",
-      "isReconfigurable": false,
-      "radioName": "hive-database",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 2
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_hostname",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the database is hosted",
-      "defaultValue": "",
-      "isReconfigurable": true,
-      "displayType": "host",
-      "isOverridable": false,
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_existing_mysql_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
-      "displayType": "host",
-      "isRequiredByAgent": false,
-      "isOverridable": false,
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_existing_oracle_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
-      "displayType": "host",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_existing_postgresql_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
-      "displayType": "host",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_ambari_host",
-      "value": "",
-      "defaultValue": "",
-      "displayName": "Database Host",
-      "description": "The host where Hive Metastore database is located",
-      "isReconfigurable": false,
-      "displayType": "masterHost",
-      "isRequiredByAgent": false,
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_metastore_port",
-      "displayName": "Hive metastore port",
-      "description": "",
-      "defaultValue": "9083",
-      "isReconfigurable": false,
-      "displayType": "int",
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_log_dir",
-      "displayName": "Hive Log Dir",
-      "description": "Directory for Hive log files",
-      "defaultValue": "/var/log/hive",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_pid_dir",
-      "displayName": "Hive PID Dir",
-      "description": "Directory in which the PID files for Hive processes will be created",
-      "defaultValue": "/var/run/hive",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_aux_jars_path",
-      "displayName": "Hive auxilary jar path",
-      "description": "",
-      "defaultValue": "/usr/lib/hcatalog/share/hcatalog/hcatalog-core.jar",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
-  /**********************************************WEBHCAT***************************************/
-    {
-      "id": "puppet var",
-      "name": "webhcatserver_host",
-      "displayName": "WebHCat Server host",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run WebHCat Server",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "WEBHCAT",
-      "category": "WEBHCAT_SERVER"
-    },
-    {
-      "id": "puppet var",
-      "name": "hcat_log_dir",
-      "displayName": "WebHCat Log Dir",
-      "description": "Directory for WebHCat log files",
-      "defaultValue": "/var/log/webhcat",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "WEBHCAT",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hcat_pid_dir",
-      "displayName": "WebHCat PID Dir",
-      "description": "Directory in which the PID files for WebHCat processes will be created",
-      "defaultValue": "/var/run/webhcat",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "WEBHCAT",
-      "category": "Advanced"
-    },
-  /**********************************************OOZIE***************************************/
-    {
-      "id": "puppet var",
-      "name": "oozieserver_host",
-      "displayName": "Oozie Server host",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run Oozie Server",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 0
-    },
-    // for existing PostgreSQL
-    {
-      "id": "puppet var",
-      "name": "oozie_existing_postgresql_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "PostgreSQL",
-      "description": "Using an existing PostgreSQL database for Oozie Metastore",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": false,
-      "isReconfigurable": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 1
-    },
-    // for existing Oracle
-    {
-      "id": "puppet var",
-      "name": "oozie_existing_oracle_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "Oracle",
-      "description": "Using an existing Oracle database for Oozie Metastore",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isObserved": true,
-      "isReconfigurable": false,
-      "isOverridable": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 1
-    },
-    // for current derby
-    {
-      "id": "puppet var",
-      "name": "oozie_derby_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "Derby",
-      "description": "Using current Derby database for Oozie Metastore",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isReconfigurable": false,
-      "isOverridable": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 1
-    },
-    // for existing MySQL oozie
-    {
-      "id": "puppet var",
-      "name": "oozie_existing_mysql_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "MySQL",
-      "description": "Using an existing MySQL database for Oozie Metastore",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isReconfigurable": false,
-      "isOverridable": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_database",
-      "displayName": "Oozie Database",
-      "value": "",
-      "defaultValue": "New Derby Database",
-      "options": [
-        {
-          displayName: 'New Derby Database',
-          foreignKeys: ['oozie_derby_database', 'oozie_ambari_host']
-        },
-        {
-          displayName: 'Existing MySQL Database',
-          foreignKeys: ['oozie_existing_mysql_database', 'oozie_existing_mysql_host'],
-          hidden: !App.supports.hiveOozieExtraDatabases
-        },
-                {
-          displayName: 'Existing PostgreSQL Database',
-          foreignKeys: ['oozie_existing_postgresql_database', 'oozie_existing_postgresql_host']
-          },
-        {
-          displayName: 'Existing Oracle Database',
-          foreignKeys: ['oozie_existing_oracle_database', 'oozie_existing_oracle_host'],
-          hidden: !App.supports.hiveOozieExtraDatabases
-        }
-      ],
-      "description": "Current Derby Database will be installed by Ambari",
-      "displayType": "radio button",
-      "isReconfigurable": false,
-      "isOverridable": false,
-      "radioName": "oozie-database",
-      "isVisible": true,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 2
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_hostname",
-      "defaultValue": "",
-      "displayName": "Database Host",
-      "description": "The host where the Oozie database is located",
-      "isReconfigurable": true,
-      "isOverridable": false,
-      "displayType": "host",
-      "isVisible": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_existing_mysql_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
-      "isOverridable": false,
-      "displayType": "host",
-      "isRequiredByAgent": false,
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_existing_postgresql_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
-      "isOverridable": false,
-      "displayType": "host",
-      "isRequiredByAgent": false,
-      "isVisible": false,   // This is dynamically set to true if database selected by the user is existing postgresql
-      "isObserved": true,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_existing_oracle_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "displayType": "host",
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_ambari_host",
-      "value": "",
-      "defaultValue": "",
-      "displayName": "Database Host",
-      "description": "Host on which the database will be created by Ambari",
-      "isReconfigurable": false,
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "displayType": "masterHost",
-      "isVisible": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_data_dir",
-      "displayName": "Oozie Data Dir",
-      "description": "Data directory in which the Oozie DB exists",
-      "defaultValue": "",
-      "defaultDirectory": "/hadoop/oozie/data",
-      "isReconfigurable": true,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequired": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 8
-    },
-
-    {
-      "id": "puppet var",
-      "name": "oozie_log_dir",
-      "displayName": "Oozie Log Dir",
-      "description": "Directory for oozie logs",
-      "defaultValue": "/var/log/oozie",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "OOZIE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_pid_dir",
-      "displayName": "Oozie PID Dir",
-      "description": "Directory in which the pid files for oozie processes will be created",
-      "defaultValue": "/var/run/oozie",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "OOZIE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_admin_port",
-      "displayName": "Oozie Server Admin Port",
-      "isReconfigurable": true,
-      "displayType": "int",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "OOZIE",
-      "category": "Advanced"
-    },
-  /**********************************************NAGIOS***************************************/
-    {
-      "id": "puppet var",
-      "name": "nagios_web_login",
-      "displayName": "Nagios Admin username",
-      "description": "Nagios Web UI Admin username",
-      "defaultValue": "nagiosadmin",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "NAGIOS",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "nagios_web_password",
-      "displayName": "Nagios Admin password",
-      "description": "Nagios Web UI Admin password",
-      "defaultValue": "",
-      "isReconfigurable": true,
-      "displayType": "password",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "NAGIOS",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "nagios_contact",
-      "displayName": "Hadoop Admin email",
-      "description": "Hadoop Administrator email for alert notification",
-      "defaultValue": "",
-      "displayType": "email",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "NAGIOS",
-      "index": 2
-    },
-  /**********************************************ZOOKEEPER***************************************/
-    {
-      "id": "puppet var",
-      "name": "zookeeperserver_hosts",
-      "displayName": "ZooKeeper Server hosts",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run ZooKeeper Server",
-      "displayType": "masterHosts",
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "isOverridable": false,
-      "isRequired": false,
-      "serviceName": "ZOOKEEPER",
-      "category": "ZOOKEEPER_SERVER",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "zk_data_dir",
-      "displayName": "ZooKeeper directory",
-      "description": "Data directory for ZooKeeper",
-      "defaultValue": "",
-      "defaultDirectory": "/hadoop/zookeeper",
-      "isReconfigurable": true,
-      "displayType": "directory",
-      "isVisible": true,
-      "serviceName": "ZOOKEEPER",
-      "category": "ZOOKEEPER_SERVER",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "tickTime",
-      "displayName": "Length of single Tick",
-      "description": "The length of a single tick in milliseconds, which is the basic time unit used by ZooKeeper",
-      "defaultValue": "2000",
-      "displayType": "int",
-      "unit": "ms",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "ZOOKEEPER",
-      "category": "ZOOKEEPER_SERVER",
-      "index": 2
-    },
-    {
-      "id": "puppet var",
-      "name": "initLimit",
-      "displayName": "Ticks to allow for sync at Init",
-      "description": "Amount of time, in ticks to allow followers to connect and sync to a leader",
-      "defaultValue": "10",
-      "displayType": "int",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "ZOOKEEPER",
-      "category": "ZOOKEEPER_SERVER",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "syncLimit",
-      "displayName": "Ticks to allow for sync at Runtime",
-      "description": "Amount of time, in ticks to allow followers to connect",
-      "defaultValue": "5",
-      "displayType": "int",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "ZOOKEEPER",
-      "category": "ZOOKEEPER_SERVER",
-      "index": 4
-    },
-    {
-      "id": "puppet var",
-      "name": "clientPort",
-      "displayName": "Port for running ZK Server",
-      "description": "Port for running ZooKeeper server",
-      "defaultValue": "2181",
-      "displayType": "int",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "ZOOKEEPER",
-      "category": "ZOOKEEPER_SERVER",
-      "index": 5
-    },
-    {
-      "id": "puppet var",
-      "name": "zk_log_dir",
-      "displayName": "ZooKeeper Log Dir",
-      "description": "Directory for ZooKeeper log files",
-      "defaultValue": "/var/log/zookeeper",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "ZOOKEEPER",
-      "category": "Advanced",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "zk_pid_dir",
-      "displayName": "ZooKeeper PID Dir",
-      "description": "Directory in which the pid files for zookeeper processes will be created",
-      "defaultValue": "/var/run/zookeeper",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "ZOOKEEPER",
-      "category": "Advanced",
-      "index": 1
-    },
-  /**********************************************HUE***************************************/
-    {
-      "id": "puppet var",
-      "name": "hueserver_host",
-      "displayName": "Hue Server host",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run Hue Server",
-      "displayType": "masterHost",
-      "isRequiredByAgent": false,
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HUE",
-      "category": "Hue Server"
-    },
-    {
-      "id": "puppet var",
-      "name": "hue_log_dir",
-      "displayName": "HUE Log Dir",
-      "description": "Directory for HUE logs",
-      "defaultValue": "/var/log/hue",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "HUE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hue_pid_dir",
-      "displayName": "HUE Pid Dir",
-      "description": "Directory in which the pid files for HUE processes will be created",
-      "defaultValue": "/var/run/hue",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "HUE",
-      "category": "Advanced"
-    },
-  /**********************************************GANGLIA***************************************/
-    {
-      "id": "puppet var",
-      "name": "ganglia_conf_dir",
-      "displayName": "Ganglia conf directory",
-      "description": "",
-      "defaultValue": "/etc/ganglia/hdp",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "serviceName": "GANGLIA",
-      "category": "Advanced"
-    },
-  /**********************************************MISC******************************************/
-    {
-      "id": "puppet var",
-      "name": "proxyuser_group",
-      "displayName": "Proxy group for Hive, WebHCat and Oozie",
-      "description": "",
-      "defaultValue": "users",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "filename": "core-site.xml",
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HIVE", "WEBHCAT", "OOZIE"]
-    },
-    {
-      "id": "puppet var",
-      "name": "ganglia_runtime_dir",
-      "displayName": "Ganglia runtime directory",
-      "description": "",
-      "defaultValue": "/var/run/ganglia/hdp",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "serviceName": "MISC",
-      "category": "General",
-      "belongsToService": []
-    },
-    {
-      "id": "puppet var",
-      "name": "hdfs_user",
-      "displayName": "HDFS User",
-      "description": "User to run HDFS as",
-      "defaultValue": "hdfs",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HDFS"]
-    },
-    {
-      "id": "puppet var",
-      "name": "mapred_user",
-      "displayName": "MapReduce User",
-      "description": "User to run MapReduce as",
-      "defaultValue": "mapred",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["MAPREDUCE"]
-    },
-    {
-      "id": "puppet var",
-      "name": "hbase_user",
-      "displayName": "HBase User",
-      "description": "User to run HBase as",
-      "defaultValue": "hbase",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HBASE"]
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_user",
-      "displayName": "Hive User",
-      "description": "User to run Hive as",
-      "defaultValue": "hive",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HIVE"]
-    },
-    {
-      "id": "puppet var",
-      "name": "hcat_user",
-      "displayName": "HCat User",
-      "description": "User to run HCatalog as",
-      "defaultValue": "hcat",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HCATALOG"]
-    },
-    {
-      "id": "puppet var",
-      "name": "webhcat_user",
-      "displayName": "WebHCat User",
-      "description": "User to run WebHCat as",
-      "defaultValue": "hcat",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["WEBHCAT"]
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_user",
-      "displayName": "Oozie User",
-      "description": "User to run Oozie as",
-      "defaultValue": "oozie",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["OOZIE"]
-    },
-    {
-      "id": "puppet var",
-      "name": "zk_user",
-      "displayName": "ZooKeeper User",
-      "description": "User to run ZooKeeper as",
-      "defaultValue": "zookeeper",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["ZOOKEEPER"]
-    },
-    {
-      "id": "puppet var",
-      "name": "gmetad_user",
-      "displayName": "Ganglia User",
-      "description": "The user used to run Ganglia",
-      "defaultValue": "nobody",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["GANGLIA"]
-    },
-    {
-      "id": "puppet var",
-      "name": "gmond_user",
-      "displayName": "Gmond User",
-      "description": "The user used to run gmond for Ganglia",
-      "defaultValue": "nobody",
-      "isReconfigurable": false,
-      "displayType": "advanced",
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": []
-    },
-    {
-      "id": "puppet var",
-      "name": "nagios_user",
-      "displayName": "Nagios User",
-      "description": "User to run Nagios as",
-      "defaultValue": "nagios",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["NAGIOS"]
-    },
-    {
-      "id": "puppet var",
-      "name": "nagios_group",
-      "displayName": "Nagios Group",
-      "description": "Nagios Group",
-      "defaultValue": "nagios",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["NAGIOS"]
-    },
-    {
-      "id": "puppet var",
-      "name": "smokeuser",
-      "displayName": "Smoke Test User",
-      "description": "The user used to run service smoke tests",
-      "defaultValue": "ambari-qa",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": App.supports.customizeSmokeTestUser,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HDFS"]
-    },
-    {
-      "id": "puppet var",
-      "name": "user_group",
-      "displayName": "Hadoop Group",
-      "description": "Group that the users specified above belong to",
-      "defaultValue": "hadoop",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HDFS"]
-    },
-    {
-      "id": "puppet var",
-      "name": "rrdcached_base_dir",
-      "displayName": "Ganglia rrdcached base directory",
-      "description": "Default directory for saving the rrd files on ganglia server",
-      "defaultValue": "/var/lib/ganglia/rrds",
-      "displayType": "directory",
-      "isReconfigurable": true,
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "GANGLIA",
-      "category": "General",
-      "belongsToService": ["GANGLIA"]
-    },
-    {
-      "id": "puppet var",
-      "name": "ignore_groupsusers_create",
-      "displayName": "Skip group modifications during install",
-      "displayType": "checkbox",
-      "isReconfigurable": true,
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HDFS"]
-    }
-  ]
-};

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/data/service_configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/service_configs.js b/ambari-web/app/data/service_configs.js
index 9164c95..bd957df 100644
--- a/ambari-web/app/data/service_configs.js
+++ b/ambari-web/app/data/service_configs.js
@@ -35,7 +35,23 @@ module.exports = [
       App.ServiceConfigCategory.create({ name: 'General', displayName : 'General'}),
       App.ServiceConfigCategory.create({ name: 'Users and Groups', displayName : 'Users and Groups'})
     ],
-    configTypes: {global: {supports: {final: false}}},
+    configTypes: {
+      "hadoop-env": {supports: {final: false}},
+      "mapred-env": {supports: {final: false}},
+      "yarn-env": {supports: {final: false}},
+      "hbase-env": {supports: {final: false}},
+      "ganglia-env": {supports: {final: false}},
+      "nagios-env": {supports: {final: false}},
+      "oozie-env": {supports: {final: false}},
+      "zookeeper-env": {supports: {final: false}},
+      "hive-env": {supports: {final: false}},
+      "tez-env": {supports: {final: false}},
+      "storm-env": {supports: {final: false}},
+      "falcon-env": {supports: {final: false}},
+      "webhcat-env": {supports: {final: false}},
+      "pig-env": {supports: {final: false}},
+      "sqoop-env": {supports: {final: false}}
+    },
     configs: []
   })
 ];


[3/6] AMBARI-6501 Extend server-side stack definition to include metadata for additional configurations (including -env.sh files) for each service. (ababiichuk)

Posted by ab...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/data/HDP2/site_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/site_properties.js b/ambari-web/app/data/HDP2/site_properties.js
index b858e38..9d02e4a 100644
--- a/ambari-web/app/data/HDP2/site_properties.js
+++ b/ambari-web/app/data/HDP2/site_properties.js
@@ -1648,6 +1648,2162 @@ module.exports =
       "serviceName": "FLUME",
       "category": "FLUME_HANDLER",
       "filename": "flume-conf.xml"
+    },
+  /**********************************************HDFS***************************************/
+    {
+      "id": "site property",
+      "name": "content",
+      "displayName": "content",
+      "value": "",
+      "defaultValue": "",
+      "description": "-env.sh content",
+      "displayType": "content",
+      "isRequired": false,
+      "showLabel": false,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "HadoopEnv"
+    },
+    {
+      "id": "puppet var",
+      "name": "namenode_host",
+      "displayName": "NameNode hosts",
+      "value": "",
+      "defaultValue": "",
+      "description": "The hosts that has been assigned to run NameNode",
+      "displayType": "masterHosts",
+      "isOverridable": false,
+      "isVisible": true,
+      "isRequiredByAgent": false,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "NAMENODE",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "namenode_heapsize",
+      "displayName": "NameNode Java heap size",
+      "description": "Initial and maximum Java heap size for NameNode (Java options -Xms and -Xmx).  This also applies to the Secondary NameNode.",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "NAMENODE",
+      "index": 2
+    },
+    {
+      "id": "puppet var",
+      "name": "namenode_opt_newsize",
+      "displayName": "NameNode new generation size",
+      "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize).  This also applies to the Secondary NameNode.",
+      "defaultValue": "200",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "NAMENODE",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "namenode_opt_maxnewsize",
+      "displayName": "NameNode maximum new generation size",
+      "description": "Maximum size of Java new generation for NameNode (Java option -XX:MaxnewSize).",
+      "defaultValue": "200",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "NAMENODE",
+      "index": 4
+    },
+    {
+      "id": "puppet var",
+      "name": "snamenode_host",
+      "displayName": "SNameNode host",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run SecondaryNameNode",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "SECONDARY_NAMENODE",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "datanode_hosts", //not in the schema. For UI purpose
+      "displayName": "DataNode hosts",
+      "value": "",
+      "defaultValue": "",
+      "description": "The hosts that have been assigned to run DataNode",
+      "displayType": "slaveHosts",
+      "isRequired": false,
+      "isOverridable": false,
+      "isVisible": true,
+      "isRequiredByAgent": false,
+      "domain": "datanode-global",
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "DATANODE",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "dtnode_heapsize",
+      "displayName": "DataNode maximum Java heap size",
+      "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isVisible": true,
+      "domain": "datanode-global",
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "DATANODE",
+      "index": 2
+    },
+    {
+      "id": "puppet var",
+      "name": "hadoop_heapsize",
+      "displayName": "Hadoop maximum Java heap size",
+      "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "hdfs_log_dir_prefix",
+      "displayName": "Hadoop Log Dir Prefix",
+      "description": "The parent directory for Hadoop log files.  The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.",
+      "defaultValue": "/var/log/hadoop",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hadoop_pid_dir_prefix",
+      "displayName": "Hadoop PID Dir Prefix",
+      "description": "The parent directory in which the PID files for Hadoop processes will be created.  The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.",
+      "defaultValue": "/var/run/hadoop",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "security_enabled",
+      "displayName": "Hadoop Security",
+      "description": "Enable hadoop security",
+      "defaultValue": 'false',
+      "isRequired": false,
+      "displayType": "checkbox",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "HDFS",
+      "filename": "hadoop-env.xml",
+      "category": "Advanced"
+    },
+
+  /**********************************************MAPREDUCE2***************************************/
+    {
+      "id": "site property",
+      "name": "content",
+      "displayName": "content",
+      "value": "",
+      "defaultValue": "",
+      "description": "-env.sh content",
+      "displayType": "content",
+      "isRequired": false,
+      "showLabel": false,
+      "serviceName": "MAPREDUCE2",
+      "filename": "mapred-env.xml",
+      "category": "MapredEnv"
+    },
+    {
+      "id": "puppet var",
+      "name": "hs_host",
+      "displayName": "History Server",
+      "description": "History Server",
+      "defaultValue": "",
+      "isOverridable": false,
+      "displayType": "masterHost",
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "MAPREDUCE2",
+      "filename": "mapred-env.xml",
+      "category": "HISTORYSERVER",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "jobhistory_heapsize",
+      "displayName": "History Server heap size",
+      "description": "History Server heap size",
+      "defaultValue": "900",
+      "unit": "MB",
+      "isOverridable": true,
+      "displayType": "int",
+      "isVisible": true,
+      "serviceName": "MAPREDUCE2",
+      "filename": "mapred-env.xml",
+      "category": "HISTORYSERVER",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "mapred_log_dir_prefix",
+      "displayName": "Mapreduce Log Dir Prefix",
+      "description": "",
+      "defaultValue": "/var/log/hadoop-mapreduce",
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "isReconfigurable": false,
+      "serviceName": "MAPREDUCE2",
+      "filename": "mapred-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "mapred_pid_dir_prefix",
+      "displayName": "Mapreduce PID Dir Prefix",
+      "description": "",
+      "defaultValue": "/var/run/hadoop-mapreduce",
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "isReconfigurable": false,
+      "serviceName": "MAPREDUCE2",
+      "filename": "mapred-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************YARN***************************************/
+    {
+      "id": "site property",
+      "name": "content",
+      "displayName": "content",
+      "value": "",
+      "defaultValue": "",
+      "description": "-env.sh content",
+      "displayType": "content",
+      "isRequired": false,
+      "showLabel": false,
+      "serviceName": "YARN",
+      "filename": "yarn-env.xml",
+      "category": "YarnEnv"
+    },
+    {
+      "id": "puppet var",
+      "name": "yarn_heapsize",
+      "displayName": "YARN Java heap size",
+      "description": "Max heapsize for all YARN components",
+      "defaultValue": "1024",
+      "isOverridable": true,
+      "displayType": "int",
+      "unit": "MB",
+      "isVisible": true,
+      "serviceName": "YARN",
+      "filename": "yarn-env.xml",
+      "category": "General",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "rm_host",
+      "displayName": "ResourceManager",
+      "description": "ResourceManager",
+      "defaultValue": "",
+      "isOverridable": false,
+      "displayType": "masterHost",
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "YARN",
+      "filename": "yarn-env.xml",
+      "category": "RESOURCEMANAGER",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "resourcemanager_heapsize",
+      "displayName": "ResourceManager Java heap size",
+      "description": "Max heapsize for ResourceManager",
+      "defaultValue": "1024",
+      "isOverridable": false,
+      "displayType": "int",
+      "unit": "MB",
+      "isVisible": true,
+      "serviceName": "YARN",
+      "filename": "yarn-env.xml",
+      "category": "RESOURCEMANAGER",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "nm_hosts",
+      "displayName": "NodeManager",
+      "description": "List of NodeManager Hosts.",
+      "defaultValue": "",
+      "isOverridable": false,
+      "displayType": "slaveHosts",
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "YARN",
+      "filename": "yarn-env.xml",
+      "category": "NODEMANAGER",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "nodemanager_heapsize",
+      "displayName": "NodeManager Java heap size",
+      "description": "Max heapsize for NodeManager",
+      "defaultValue": "1024",
+      "isOverridable": true,
+      "displayType": "int",
+      "unit": "MB",
+      "isVisible": true,
+      "serviceName": "YARN",
+      "filename": "yarn-env.xml",
+      "category": "NODEMANAGER",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "yarn_log_dir_prefix",
+      "displayName": "YARN Log Dir Prefix",
+      "description": "",
+      "defaultValue": "/var/log/hadoop-yarn",
+      "displayType": "directory",
+      "isOverridable": false,
+      "isReconfigurable": false,
+      "isVisible": true,
+      "serviceName": "YARN",
+      "filename": "yarn-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "yarn_pid_dir_prefix",
+      "displayName": "YARN PID Dir Prefix",
+      "description": "",
+      "defaultValue": "/var/run/hadoop-yarn",
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "isReconfigurable": false,
+      "serviceName": "YARN",
+      "filename": "yarn-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "ats_host",
+      "displayName": "App Timeline Server",
+      "description": "Application Timeline Server Host",
+      "defaultValue": "",
+      "isOverridable": false,
+      "displayType": "masterHost",
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "YARN",
+      "filename": "yarn-env.xml",
+      "category": "APP_TIMELINE_SERVER",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "apptimelineserver_heapsize",
+      "displayName": "AppTimelineServer Java heap size",
+      "description": "AppTimelineServer Java heap size",
+      "defaultValue": "1024",
+      "isOverridable": false,
+      "displayType": "int",
+      "unit": "MB",
+      "isVisible": true,
+      "serviceName": "YARN",
+      "filename": "yarn-env.xml",
+      "category": "APP_TIMELINE_SERVER",
+      "index": 1
+    },
+  /**********************************************HBASE***************************************/
+    {
+      "id": "site property",
+      "name": "content",
+      "displayName": "content",
+      "value": "",
+      "defaultValue": "",
+      "description": "-env.sh content",
+      "displayType": "content",
+      "isRequired": false,
+      "showLabel": false,
+      "serviceName": "HBASE",
+      "filename": "hbase-env.xml",
+      "category": "HbaseEnv"
+    },
+    {
+      "id": "puppet var",
+      "name": "hbasemaster_host",
+      "displayName": "HBase Master hosts",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run HBase Master",
+      "displayType": "masterHosts",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "HBASE",
+      "filename": "hbase-env.xml",
+      "category": "HBASE_MASTER",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "hbase_master_heapsize",
+      "displayName": "HBase Master Maximum Java heap size",
+      "description": "Maximum Java heap size for HBase master (Java option -Xmx)",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": true,
+      "isVisible": true,
+      "serviceName": "HBASE",
+      "filename": "hbase-env.xml",
+      "category": "HBASE_MASTER",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "regionserver_hosts",
+      "displayName": "RegionServer hosts",
+      "value": "",
+      "defaultValue": "",
+      "description": "The hosts that have been assigned to run RegionServer",
+      "displayType": "slaveHosts",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "isRequired": false,
+      "serviceName": "HBASE",
+      "filename": "hbase-env.xml",
+      "category": "HBASE_REGIONSERVER",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "hbase_regionserver_heapsize",
+      "displayName": "RegionServers maximum Java heap size",
+      "description": "Maximum Java heap size for RegionServers (Java option -Xmx)",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isVisible": true,
+      "serviceName": "HBASE",
+      "filename": "hbase-env.xml",
+      "category": "HBASE_REGIONSERVER",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "hbase_log_dir",
+      "displayName": "HBase Log Dir",
+      "description": "Directory for HBase logs",
+      "defaultValue": "/var/log/hbase",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HBASE",
+      "filename": "hbase-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hbase_pid_dir",
+      "displayName": "HBase PID Dir",
+      "description": "Directory in which the pid files for HBase processes will be created",
+      "defaultValue": "/var/run/hbase",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HBASE",
+      "filename": "hbase-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************GLUSTERFS***************************************/
+    {
+      "id": "site property",
+      "name": "content",
+      "displayName": "content",
+      "value": "",
+      "defaultValue": "",
+      "description": "-env.sh content",
+      "displayType": "content",
+      "isRequired": false,
+      "showLabel": false,
+      "serviceName": "GLUSTERFS",
+      "filename": "glusterfs-env.xml",
+      "category": "GlusterfsEnv"
+    },
+    {
+      "id": "puppet var",
+      "name": "glusterfs_defaultFS_name",
+      "displayName": "GlusterFS default fs name",
+      "description": "GlusterFS default filesystem name (glusterfs:///)",
+      "defaultValue": "glusterfs:///localhost:8020",
+      "displayType": "string",
+      "isVisible": true,
+      "domain": "global",
+      "serviceName": "GLUSTERFS",
+      "filename": "glusterfs-env.xml",
+      "category": "General"
+    },
+    {
+      "id": "puppet var",
+      "name": "fs_glusterfs_default_name",
+      "displayName": "GlusterFS default fs name",
+      "description": "GlusterFS default filesystem name (glusterfs:///)",
+      "defaultValue": "glusterfs:///localhost:8020",
+      "displayType": "string",
+      "isVisible": true,
+      "domain": "global",
+      "serviceName": "GLUSTERFS",
+      "filename": "glusterfs-env.xml",
+      "category": "General"
+    },
+    {
+      "id": "puppet var",
+      "name": "hadoop_heapsize",
+      "displayName": "Hadoop maximum Java heap size",
+      "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isVisible": true,
+      "domain": "global",
+      "serviceName": "GLUSTERFS",
+      "filename": "glusterfs-env.xml",
+      "category": "General"
+    },
+    {
+      "id": "puppet var",
+      "name": "hdfs_log_dir_prefix",
+      "displayName": "Hadoop Log Dir Prefix",
+      "description": "The parent directory for Hadoop log files.  The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.",
+      "defaultValue": "/var/log/hadoop",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "GLUSTERFS",
+      "filename": "glusterfs-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hadoop_pid_dir_prefix",
+      "displayName": "Hadoop PID Dir Prefix",
+      "description": "The parent directory in which the PID files for Hadoop processes will be created.  The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.",
+      "defaultValue": "/var/run/hadoop",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "GLUSTERFS",
+      "filename": "glusterfs-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "namenode_heapsize",
+      "displayName": "Name Node Heap Size",
+      "description": "Name Node Heap Size, default jvm memory setting",
+      "defaultValue": "1024",
+      "isReconfigurable": false,
+      "displayType": "int",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "GLUSTERFS",
+      "filename": "glusterfs-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "namenode_opt_newsize",
+      "displayName": "NameNode new generation size",
+      "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize).  This also applies to the Secondary NameNode.",
+      "defaultValue": "200",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "GLUSTERFS",
+      "filename": "glusterfs-env.xml",
+      "category": "category"
+    },
+    {
+      "id": "puppet var",
+      "name": "namenode_opt_maxnewsize",
+      "displayName": "NameNode maximum new generation size",
+      "description": "Maximum size of Java new generation for NameNode (Java option -XX:MaxnewSize).",
+      "defaultValue": "200",
+      "displayType": "int",
+      "unit": "MB",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "GLUSTERFS",
+      "filename": "glusterfs-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "dtnode_heapsize",
+      "displayName": "DataNode maximum Java heap size",
+      "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
+      "defaultValue": "1024",
+      "displayType": "int",
+      "unit": "MB",
+      "isVisible": false,
+      "domain": "datanode-global",
+      "serviceName": "GLUSTERFS",
+      "filename": "glusterfs-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************HIVE***************************************/
+    {
+      "id": "site property",
+      "name": "content",
+      "displayName": "content",
+      "value": "",
+      "defaultValue": "",
+      "description": "-env.sh content",
+      "displayType": "content",
+      "isRequired": false,
+      "showLabel": false,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HiveEnv"
+    },
+    {
+      "id": "puppet var",
+      "name": "hivemetastore_host",
+      "displayName": "Hive Metastore host",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run Hive Metastore",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 0
+    },
+    // for existing MySQL
+    {
+      "id": "puppet var",
+      "name": "hive_existing_mysql_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "MySQL",
+      "description": "Using an existing MySQL database for Hive Metastore",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isVisible": false,
+      "isReconfigurable": false,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 1
+    },
+    // for existing PostgreSQL
+    {
+      "id": "puppet var",
+      "name": "hive_existing_postgresql_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "PostgreSQL",
+      "description": "Using an existing PostgreSQL database for Hive Metastore",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isVisible": false,
+      "isReconfigurable": false,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 1
+    },
+    // for existing Oracle
+    {
+      "id": "puppet var",
+      "name": "hive_existing_oracle_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "Oracle",
+      "description": "Using an existing Oracle database for Hive Metastore",
+      "displayType": "masterHost",
+      "isVisible": false,
+      "isOverridable": false,
+      "isReconfigurable": false,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 1
+    },
+    // for new MySQL
+    {
+      "id": "puppet var",
+      "name": "hive_ambari_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "MySQL",
+      "description": "MySQL will be installed by Ambari",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_database",
+      "displayName": "Hive Database",
+      "value": "",
+      "defaultValue": "New MySQL Database",
+      "options": [
+        {
+          displayName: 'New MySQL Database',
+          foreignKeys: ['hive_ambari_database', 'hive_ambari_host']
+        },
+        {
+          displayName: 'Existing MySQL Database',
+          foreignKeys: ['hive_existing_mysql_database', 'hive_existing_mysql_host']
+        },
+        {
+          displayName: 'Existing PostgreSQL Database',
+          foreignKeys: ['hive_existing_postgresql_database', 'hive_existing_postgresql_host']
+        },
+        {
+          displayName: 'Existing Oracle Database',
+          foreignKeys: ['hive_existing_oracle_database', 'hive_existing_oracle_host'],
+          hidden: !App.supports.hiveOozieExtraDatabases
+        }
+      ],
+      "description": "MySQL will be installed by Ambari",
+      "displayType": "radio button",
+      "isReconfigurable": false,
+      "radioName": "hive-database",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 2
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_hostname",
+      "displayName": "Database Host",
+      "description": "Specify the host on which the database is hosted",
+      "defaultValue": "",
+      "isReconfigurable": true,
+      "displayType": "host",
+      "isOverridable": false,
+      "isVisible": false,
+      "isObserved": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_existing_mysql_host",
+      "displayName": "Database Host",
+      "description": "Specify the host on which the existing database is hosted",
+      "defaultValue": "",
+      "isReconfigurable": false,
+      "displayType": "host",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": false,
+      "isObserved": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_existing_postgresql_host",
+      "displayName": "Database Host",
+      "description": "Specify the host on which the existing database is hosted",
+      "defaultValue": "",
+      "isReconfigurable": false,
+      "displayType": "host",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": false,
+      "isObserved": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_existing_oracle_host",
+      "displayName": "Database Host",
+      "description": "Specify the host on which the existing database is hosted",
+      "defaultValue": "",
+      "displayType": "host",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": false,
+      "isObserved": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_ambari_host",
+      "value": "",
+      "defaultValue": "",
+      "displayName": "Database Host",
+      "description": "Host on which the database will be created by Ambari",
+      "isReconfigurable": false,
+      "displayType": "masterHost",
+      "isRequiredByAgent": false,
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "HIVE_METASTORE",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_metastore_port",
+      "displayName": "Hive metastore port",
+      "description": "",
+      "defaultValue": "9083",
+      "isReconfigurable": false,
+      "displayType": "int",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_lib",
+      "displayName": "Hive library",
+      "description": "",
+      "defaultValue": "/usr/lib/hive/lib/",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isVisible": false,
+      "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"
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_dbroot",
+      "displayName": "Hive db directory",
+      "description": "",
+      "defaultValue": "/usr/lib/hive/lib",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isVisible": false,
+      "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"
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_log_dir",
+      "displayName": "Hive Log Dir",
+      "description": "Directory for Hive log files",
+      "defaultValue": "/var/log/hive",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_pid_dir",
+      "displayName": "Hive PID Dir",
+      "description": "Directory in which the PID files for Hive processes will be created",
+      "defaultValue": "/var/run/hive",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "HIVE",
+      "filename": "hive-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************WEBHCAT***************************************/
+    {
+      "id": "site property",
+      "name": "content",
+      "displayName": "content",
+      "value": "",
+      "defaultValue": "",
+      "description": "-env.sh content",
+      "displayType": "content",
+      "isRequired": false,
+      "showLabel": false,
+      "serviceName": "WEBHCAT",
+      "filename": "webhcat-env.xml",
+      "category": "WebhcatEnv"
+    },
+    {
+      "id": "puppet var",
+      "name": "webhcatserver_host",
+      "displayName": "WebHCat Server host",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run WebHCat Server",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isVisible": true,
+      "isRequiredByAgent": false,
+      "serviceName": "WEBHCAT",
+      "filename": "webhcat-env.xml",
+      "category": "WEBHCAT_SERVER"
+    },
+    {
+      "id": "puppet var",
+      "name": "hcat_log_dir",
+      "displayName": "WebHCat Log Dir",
+      "description": "Directory for WebHCat log files",
+      "defaultValue": "/var/log/webhcat",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "WEBHCAT",
+      "filename": "webhcat-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hcat_pid_dir",
+      "displayName": "WebHCat PID Dir",
+      "description": "Directory in which the PID files for WebHCat processes will be created",
+      "defaultValue": "/var/run/webhcat",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "WEBHCAT",
+      "filename": "webhcat-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************OOZIE***************************************/
+    {
+      "id": "site property",
+      "name": "content",
+      "displayName": "content",
+      "value": "",
+      "defaultValue": "",
+      "description": "-env.sh content",
+      "displayType": "content",
+      "isRequired": false,
+      "showLabel": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OozieEnv"
+    },
+    {
+      "id": "puppet var",
+      "name": "oozieserver_host",
+      "displayName": "Oozie Server host",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run Oozie Server",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isVisible": true,
+      "isRequiredByAgent": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 0
+    },
+    // for existing Oracle
+    {
+      "id": "puppet var",
+      "name": "oozie_existing_oracle_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "Oracle",
+      "description": "Using an existing Oracle database for Oozie Metastore",
+      "displayType": "masterHost",
+      "isVisible": false,
+      "isObserved": true,
+      "isReconfigurable": false,
+      "isOverridable": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 1
+    },
+    // for existing PostgreSQL
+    {
+      "id": "puppet var",
+      "name": "oozie_existing_postgresql_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "PostgreSQL",
+      "description": "Using an existing PostgreSQL database for Oozie Metastore",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isVisible": false,
+      "isReconfigurable": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 1
+    },
+    // for new MySQL
+    {
+      "id": "puppet var",
+      "name": "oozie_ambari_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "MySQL",
+      "description": "MySQL will be installed by Ambari",
+      "displayType": "masterHost",
+      "isVisible": false,
+      "isOverridable": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 1
+    },
+    // for current derby
+    {
+      "id": "puppet var",
+      "name": "oozie_derby_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "Derby",
+      "description": "Using current Derby database for Oozie Metastore",
+      "displayType": "masterHost",
+      "isVisible": false,
+      "isReconfigurable": false,
+      "isOverridable": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 1
+    },
+    // for existing MySQL oozie
+    {
+      "id": "puppet var",
+      "name": "oozie_existing_mysql_database",
+      "displayName": "Database Type",
+      "value": "",
+      "defaultValue": "MySQL",
+      "description": "Using an existing MySQL database for Oozie Metastore",
+      "displayType": "masterHost",
+      "isVisible": false,
+      "isReconfigurable": false,
+      "isOverridable": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_database",
+      "displayName": "Oozie Database",
+      "value": "",
+      "defaultValue": "New Derby Database",
+      "options": [
+        {
+          displayName: 'New Derby Database',
+          foreignKeys: ['oozie_derby_database']
+        },
+        /*{
+         displayName: 'New MySQL Database',
+         foreignKeys: ['oozie_ambari_database', 'oozie_ambari_host'],
+         hidden: !App.supports.hiveOozieExtraDatabases
+         },*/
+        {
+          displayName: 'Existing MySQL Database',
+          foreignKeys: ['oozie_existing_mysql_database', 'oozie_existing_mysql_host'],
+          hidden: !App.supports.hiveOozieExtraDatabases
+        },
+        {
+          displayName: 'Existing PostgreSQL Database',
+          foreignKeys: ['oozie_existing_postgresql_database', 'oozie_existing_postgresql_host'],
+          hidden: !App.supports.hiveOozieExtraDatabases
+        },
+        {
+          displayName: 'Existing Oracle Database',
+          foreignKeys: ['oozie_existing_oracle_database', 'oozie_existing_oracle_host'],
+          hidden: !App.supports.hiveOozieExtraDatabases
+        }
+      ],
+      "description": "Current Derby Database will be installed by Ambari",
+      "displayType": "radio button",
+      "isReconfigurable": false,
+      "isOverridable": false,
+      "radioName": "oozie-database",
+      "isVisible": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 2
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_data_dir",
+      "displayName": "Oozie Data Dir",
+      "description": "Data directory in which the Oozie DB exists",
+      "defaultValue": "",
+      "defaultDirectory": "/hadoop/oozie/data",
+      "isReconfigurable": true,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "isRequired": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 9
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_hostname",
+      "defaultValue": "",
+      "displayName": "Database Host",
+      "description": "The host where the Oozie database is located",
+      "isReconfigurable": true,
+      "isOverridable": false,
+      "displayType": "host",
+      "isVisible": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_existing_mysql_host",
+      "displayName": "Database Host",
+      "description": "Specify the host on which the existing database is hosted",
+      "defaultValue": "",
+      "isOverridable": false,
+      "displayType": "host",
+      "isVisible": false,
+      "isObserved": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_existing_postgresql_host",
+      "displayName": "Database Host",
+      "description": "Specify the host on which the existing database is hosted",
+      "defaultValue": "",
+      "isOverridable": false,
+      "displayType": "host",
+      "isVisible": false,
+      "isObserved": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_existing_oracle_host",
+      "displayName": "Database Host",
+      "description": "Specify the host on which the existing database is hosted",
+      "defaultValue": "",
+      "isOverridable": false,
+      "displayType": "host",
+      "isVisible": false,
+      "isObserved": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_ambari_host",
+      "value": "",
+      "defaultValue": "",
+      "displayName": "Database Host",
+      "description": "Host on which the database will be created by Ambari",
+      "isReconfigurable": false,
+      "isOverridable": false,
+      "displayType": "masterHost",
+      "isVisible": false,
+      "isRequiredByAgent": false,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "OOZIE_SERVER"
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_log_dir",
+      "displayName": "Oozie Log Dir",
+      "description": "Directory for oozie logs",
+      "defaultValue": "/var/log/oozie",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_pid_dir",
+      "displayName": "Oozie PID Dir",
+      "description": "Directory in which the pid files for oozie processes will be created",
+      "defaultValue": "/var/run/oozie",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_admin_port",
+      "displayName": "Oozie Server Admin Port",
+      "isReconfigurable": true,
+      "displayType": "int",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "OOZIE",
+      "filename": "oozie-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************NAGIOS***************************************/
+    {
+      "id": "puppet var",
+      "name": "nagios_web_login",
+      "displayName": "Nagios Admin username",
+      "description": "Nagios Web UI Admin username",
+      "defaultValue": "nagiosadmin",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "NAGIOS",
+      "filename": "nagios-env.xml",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "nagios_web_password",
+      "displayName": "Nagios Admin password",
+      "description": "Nagios Web UI Admin password",
+      "defaultValue": "",
+      "isReconfigurable": true,
+      "displayType": "password",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "NAGIOS",
+      "filename": "nagios-env.xml",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "nagios_contact",
+      "displayName": "Hadoop Admin email",
+      "description": "Hadoop Administrator email for alert notification",
+      "defaultValue": "",
+      "displayType": "email",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "NAGIOS",
+      "filename": "nagios-env.xml",
+      "index": 2
+    },
+  /**********************************************ZOOKEEPER***************************************/
+    {
+      "id": "site property",
+      "name": "content",
+      "displayName": "content",
+      "value": "",
+      "defaultValue": "",
+      "description": "-env.sh content",
+      "displayType": "content",
+      "isRequired": false,
+      "showLabel": false,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "ZookeeperEnv"
+    },
+    {
+      "id": "puppet var",
+      "name": "zookeeperserver_hosts",
+      "displayName": "ZooKeeper Server hosts",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run ZooKeeper Server",
+      "displayType": "masterHosts",
+      "isVisible": true,
+      "isRequiredByAgent": false,
+      "isOverridable": false,
+      "isRequired": false,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "ZOOKEEPER_SERVER",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "zk_data_dir",
+      "displayName": "ZooKeeper directory",
+      "description": "Data directory for ZooKeeper",
+      "defaultValue": "",
+      "defaultDirectory": "/hadoop/zookeeper",
+      "isReconfigurable": true,
+      "displayType": "directory",
+      "isVisible": true,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "ZOOKEEPER_SERVER",
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "tickTime",
+      "displayName": "Length of single Tick",
+      "description": "The length of a single tick in milliseconds, which is the basic time unit used by ZooKeeper",
+      "defaultValue": "2000",
+      "displayType": "int",
+      "unit": "ms",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "ZOOKEEPER_SERVER",
+      "index": 2
+    },
+    {
+      "id": "puppet var",
+      "name": "initLimit",
+      "displayName": "Ticks to allow for sync at Init",
+      "description": "Amount of time, in ticks to allow followers to connect and sync to a leader",
+      "defaultValue": "10",
+      "displayType": "int",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "ZOOKEEPER_SERVER",
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "syncLimit",
+      "displayName": "Ticks to allow for sync at Runtime",
+      "description": "Amount of time, in ticks to allow followers to connect",
+      "defaultValue": "5",
+      "displayType": "int",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "ZOOKEEPER_SERVER",
+      "index": 4
+    },
+    {
+      "id": "puppet var",
+      "name": "clientPort",
+      "displayName": "Port for running ZK Server",
+      "description": "Port for running ZooKeeper server",
+      "defaultValue": "2181",
+      "displayType": "int",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "ZOOKEEPER_SERVER",
+      "index": 5
+    },
+    {
+      "id": "puppet var",
+      "name": "zk_log_dir",
+      "displayName": "ZooKeeper Log Dir",
+      "description": "Directory for ZooKeeper log files",
+      "defaultValue": "/var/log/zookeeper",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "Advanced",
+      "index": 0
+    },
+    {
+      "id": "puppet var",
+      "name": "zk_pid_dir",
+      "displayName": "ZooKeeper PID Dir",
+      "description": "Directory in which the pid files for zookeeper processes will be created",
+      "defaultValue": "/var/run/zookeeper",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "ZOOKEEPER",
+      "filename": "zookeeper-env.xml",
+      "category": "Advanced",
+      "index": 1
+    },
+  /**********************************************HUE***************************************/
+    {
+      "id": "site property",
+      "name": "content",
+      "displayName": "content",
+      "value": "",
+      "defaultValue": "",
+      "description": "-env.sh content",
+      "displayType": "content",
+      "isRequired": false,
+      "showLabel": false,
+      "serviceName": "HUE",
+      "filename": "hue-env.xml",
+      "category": "HueEnv"
+    },
+    {
+      "id": "puppet var",
+      "name": "hueserver_host",
+      "displayName": "Hue Server host",
+      "value": "",
+      "defaultValue": "",
+      "description": "The host that has been assigned to run Hue Server",
+      "displayType": "masterHost",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "HUE",
+      "filename": "hue-env.xml",
+      "category": "Hue Server"
+    },
+    {
+      "id": "puppet var",
+      "name": "hue_log_dir",
+      "displayName": "HUE Log Dir",
+      "description": "Directory for HUE logs",
+      "defaultValue": "/var/log/hue",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "HUE",
+      "filename": "hue-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "hue_pid_dir",
+      "displayName": "HUE Pid Dir",
+      "description": "Directory in which the pid files for HUE processes will be created",
+      "defaultValue": "/var/run/hue",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "isVisible": true,
+      "serviceName": "HUE",
+      "filename": "hue-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************GANGLIA***************************************/
+    {
+      "id": "puppet var",
+      "name": "ganglia_conf_dir",
+      "displayName": "Ganglia conf directory",
+      "description": "",
+      "defaultValue": "/etc/ganglia/hdp",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isVisible": false,
+      "isRequiredByAgent": false,
+      "serviceName": "GANGLIA",
+      "filename": "ganglia-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************FALCON***************************************/
+    {
+      "id": "site property",
+      "name": "content",
+      "displayName": "content",
+      "value": "",
+      "defaultValue": "",
+      "description": "-env.sh content",
+      "displayType": "content",
+      "isRequired": false,
+      "showLabel": false,
+      "serviceName": "FALCON",
+      "filename": "falcon-env.xml",
+      "category": "FalconEnv"
+    },
+    {
+      "id": "puppet var",
+      "name": "falconserver_host",
+      "displayName": "Falcon Server",
+      "description": "The host that has been assigned to run Falcon Server",
+      "defaultValue": "falcon",
+      "displayType": "masterHost",
+      "isVisible": true,
+      "isRequiredByAgent": false,
+      "serviceName": "FALCON",
+      "filename": "falcon-env.xml",
+      "category": "FALCON_SERVER"
+    },
+    {
+      "id": "puppet var",
+      "name": "falcon_port",
+      "displayName": "Falcon server port",
+      "description": "Port the Falcon Server listens on",
+      "defaultValue": "15000",
+      "isReconfigurable": true,
+      "displayType": "int",
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "FALCON",
+      "filename": "falcon-env.xml",
+      "category": "FALCON_SERVER"
+    },
+    {
+      "id": "puppet var",
+      "name": "falcon_local_dir",
+      "displayName": "Falcon data directory",
+      "description": "Directory where Falcon data, such as activemq data, is stored",
+      "defaultValue": "/hadoop/falcon",
+      "isReconfigurable": true,
+      "displayType": "directory",
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "FALCON",
+      "filename": "falcon-env.xml",
+      "category": "FALCON_SERVER"
+    },
+    {
+      "id": "puppet var",
+      "name": "falcon_store_uri",
+      "displayName": "Falcon store URI",
+      "description": "Directory where entity definitions are stored",
+      "defaultValue": "file:///hadoop/falcon/store",
+      "isReconfigurable": true,
+      "displayType": "string",
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "FALCON",
+      "filename": "falcon-env.xml",
+      "category": "FALCON_SERVER"
+    },
+    {
+      "id": "puppet var",
+      "name": "falcon_log_dir",
+      "displayName": "Falcon Log Dir",
+      "description": "Directory for Falcon logs",
+      "defaultValue": "/var/log/falcon",
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "isReconfigurable": false,
+      "serviceName": "FALCON",
+      "filename": "falcon-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "falcon_pid_dir",
+      "displayName": "Falcon PID Dir",
+      "description": "Directory in which the pid files for Falcon processes will be created",
+      "defaultValue": "/var/run/falcon",
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "isReconfigurable": false,
+      "serviceName": "FALCON",
+      "filename": "falcon-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "falcon.embeddedmq",
+      "displayName": "falcon.embeddedmq",
+      "description": "Whether embeddedmq is enabled or not.",
+      "defaultValue": "true",
+      "displayType": "string",
+      "isOverridable": false,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "isReconfigurable": true,
+      "serviceName": "FALCON",
+      "filename": "falcon-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "falcon.embeddedmq.data",
+      "displayName": "falcon.embeddedmq.data",
+      "description": "Directory in which embeddedmq data is stored.",
+      "defaultValue": "/hadoop/falcon/embeddedmq/data",
+      "displayType": "directory",
+      "isOverridable": false,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "isReconfigurable": true,
+      "serviceName": "FALCON",
+      "filename": "falcon-env.xml",
+      "category": "Advanced"
+    },
+    {
+      "id": "puppet var",
+      "name": "falcon.emeddedmq.port",
+      "displayName": "falcon.emeddedmq.port",
+      "description": "Port that embeddedmq will listen on.",
+      "defaultValue": "61616",
+      "displayType": "string",
+      "isOverridable": false,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "isReconfigurable": true,
+      "serviceName": "FALCON",
+      "filename": "falcon-env.xml",
+      "category": "Advanced"
+    },
+  /**********************************************STORM***************************************/
+    {
+      "id": "site property",
+      "name": "content",
+      "displayName": "content",
+      "value": "",
+      "defaultValue": "",
+      "description": "-env.sh content",
+      "displayType": "content",
+      "isRequired": false,
+      "showLabel": false,
+      "serviceName": "STORM",
+      "filename": "storm-env.xml",
+      "category": "StormEnv"
+    },
+    {
+      "id": "puppet var",
+      "name": "storm_log_dir",
+      "displayName": "storm_log_dir",
+      "description": "Storm log directory",
+      "defaultValue": "/var/log/storm",
+      "displayType": "directory",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "STORM",
+      "filename": "storm-env.xml",
+      "category": "General"
+    },
+    {
+      "id": "puppet var",
+      "name": "storm_pid_dir",
+      "displayName": "storm_pid_dir",
+      "description": "Storm PID directory",
+      "defaultValue": "/var/run/storm",
+      "displayType": "directory",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "STORM",
+      "filename": "storm-env.xml",
+      "category": "General"
+    },
+    {
+      "id": "puppet var",
+      "name": "stormuiserver_host",
+      "displayName": "Storm UI Server host",
+      "description": "The host that has been assigned to run Storm UI Server",
+      "defaultValue": "",
+      "displayType": "masterHost",
+      "isReconfigurable": false,
+      "isVisible": true,
+      "isRequiredByAgent": false,
+      "serviceName": "STORM",
+      "filename": "storm-env.xml",
+      "category": "STORM_UI_SERVER"
+    },
+    {
+      "id": "puppet var",
+      "name": "drpcserver_host",
+      "displayName": "DRPC Server host",
+      "description": "The host that has been assigned to run DRPC Server",
+      "defaultValue": "",
+      "displayType": "masterHost",
+      "isReconfigurable": false,
+      "isVisible": true,
+      "isRequiredByAgent": false,
+      "serviceName": "STORM",
+      "filename": "storm-env.xml",
+      "category": "DRPC_SERVER"
+    },
+    {
+      "id": "puppet var",
+      "name": "supervisor_hosts",
+      "displayName": "Supervisor hosts",
+      "description": "The host that has been assigned to run Supervisor",
+      "defaultValue": "",
+      "displayType": "slaveHosts",
+      "isReconfigurable": false,
+      "isVisible": true,
+      "isRequiredByAgent": false,
+      "serviceName": "STORM",
+      "filename": "storm-env.xml",
+      "isOverridable": false,
+      "category": "SUPERVISOR"
+    },
+    {
+      "id": "puppet var",
+      "name": "storm_rest_api_host",
+      "displayName": "Storm REST API host",
+      "description": "The host that has been assigned to run Storm REST API Server",
+      "defaultValue": "",
+      "displayType": "masterHost",
+      "isReconfigurable": false,
+      "isVisible": true,
+      "isRequiredByAgent": false,
+      "serviceName": "STORM",
+      "filename": "storm-env.xml",
+      "isOverridable": false,
+      "category": "STORM_REST_API"
+    },
+  /**********************************************TEZ***************************************/
+    {
+      "id": "site property",
+      "name": "content",
+      "displayName": "content",
+      "value": "",
+      "defaultValue": "",
+      "description": "-env.sh content",
+      "displayType": "content",
+      "isRequired": false,
+      "showLabel": false,
+      "serviceName": "TEZ",
+      "filename": "tez-env.xml",
+      "category": "TezEnv"
+    },
+  /**********************************************MISC***************************************/
+    {
+      "id": "puppet var",
+      "name": "hbase_conf_dir",
+      "displayName": "HBase conf dir",
+      "description": "",
+      "defaultValue": "/etc/hbase",
+      "isRequired": false,
+      "displayType": "directory",
+      "isVisible": false,
+      "isRequiredByAgent": false,
+      "serviceName": "MISC",
+      "filename": "hbase-env.xml",
+      "category": "General",
+      "belongsToService": []
+    },
+    {
+      "id": "puppet var",
+      "name": "proxyuser_group",
+      "displayName": "Proxy group for Hive, WebHCat, Oozie and Falcon",
+      "description": "",
+      "defaultValue": "users",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "filename": "core-site.xml",
+      "serviceName": "MISC",
+      "category": "Users and Groups",
+      "belongsToService": ["HIVE", "WEBHCAT", "OOZIE", "FALCON"],
+      "index": 18
+    },
+    {
+      "id": "puppet var",
+      "name": "ganglia_runtime_dir",
+      "displayName": "Ganglia runtime directory",
+      "description": "",
+      "defaultValue": "/var/run/ganglia/hdp",
+      "isReconfigurable": false,
+      "displayType": "directory",
+      "isVisible": false,
+      "serviceName": "MISC",
+      "filename": "ganglia-env.xml",
+      "category": "General",
+      "belongsToService": []
+    },
+    {
+      "id": "puppet var",
+      "name": "hdfs_user",
+      "displayName": "HDFS User",
+      "description": "User to run HDFS as",
+      "defaultValue": "hdfs",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "hadoop-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["HDFS"],
+      "index": 1
+    },
+    {
+      "id": "puppet var",
+      "name": "mapred_user",
+      "displayName": "MapReduce User",
+      "description": "User to run MapReduce as",
+      "defaultValue": "mapred",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "mapred-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["MAPREDUCE2"],
+      "index": 2
+    },
+    {
+      "id": "puppet var",
+      "name": "yarn_user",
+      "displayName": "YARN User",
+      "description": "User to run YARN as",
+      "defaultValue": "yarn",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "yarn-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["YARN"],
+      "index": 3
+    },
+    {
+      "id": "puppet var",
+      "name": "hbase_user",
+      "displayName": "HBase User",
+      "description": "User to run HBase as",
+      "defaultValue": "hbase",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "hbase-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["HBASE"],
+      "index": 4
+    },
+    {
+      "id": "puppet var",
+      "name": "hive_user",
+      "displayName": "Hive User",
+      "description": "User to run Hive as",
+      "defaultValue": "hive",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "hive-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["HIVE"],
+      "index": 5
+    },
+    {
+      "id": "puppet var",
+      "name": "hcat_user",
+      "displayName": "HCat User",
+      "description": "User to run HCatalog as",
+      "defaultValue": "hcat",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "hcatalog-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["HCATALOG"],
+      "index": 6
+    },
+    {
+      "id": "puppet var",
+      "name": "webhcat_user",
+      "displayName": "WebHCat User",
+      "description": "User to run WebHCat as",
+      "defaultValue": "hcat",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "webhcat-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["WEBHCAT"],
+      "index": 7
+    },
+    {
+      "id": "puppet var",
+      "name": "oozie_user",
+      "displayName": "Oozie User",
+      "description": "User to run Oozie as",
+      "defaultValue": "oozie",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "oozie-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["OOZIE"],
+      "index": 8
+    },
+    {
+      "id": "puppet var",
+      "name": "falcon_user",
+      "displayName": "Falcon User",
+      "description": "User to run Falcon as",
+      "defaultValue": "falcon",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "falcon-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["FALCON"],
+      "index": 10
+    },
+    {
+      "id": "puppet var",
+      "name": "storm_user",
+      "displayName": "Storm User",
+      "description": "User to run Storm as",
+      "defaultValue": "storm",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "storm-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["STORM"],
+      "index": 9
+    },
+    {
+      "id": "puppet var",
+      "name": "zk_user",
+      "displayName": "ZooKeeper User",
+      "description": "User to run ZooKeeper as",
+      "defaultValue": "zookeeper",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "zookeeper-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["ZOOKEEPER"],
+      "index": 11
+    },
+    {
+      "id": "puppet var",
+      "name": "gmetad_user",
+      "displayName": "Ganglia User",
+      "description": "The user used to run Ganglia",
+      "defaultValue": "nobody",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "ganglia-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["GANGLIA"],
+      "index": 12
+    },
+    {
+      "id": "puppet var",
+      "name": "gmond_user",
+      "displayName": "Gmond User",
+      "description": "The user used to run gmond for Ganglia",
+      "defaultValue": "nobody",
+      "isReconfigurable": false,
+      "displayType": "advanced",
+      "isOverridable": false,
+      "isVisible": false,
+      "serviceName": "MISC",
+      "filename": "ganglia-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": []
+    },
+    {
+      "id": "puppet var",
+      "name": "nagios_user",
+      "displayName": "Nagios User",
+      "description": "User to run Nagios as",
+      "defaultValue": "nagios",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "nagios-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["NAGIOS"],
+      "index": 14
+    },
+    {
+      "id": "puppet var",
+      "name": "nagios_group",
+      "displayName": "Nagios Group",
+      "description": "Nagios Group",
+      "defaultValue": "nagios",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "nagios-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["NAGIOS"],
+      "index": 13
+    },
+    {
+      "id": "puppet var",
+      "name": "smokeuser",
+      "displayName": "Smoke Test User",
+      "description": "The user used to run service smoke tests",
+      "defaultValue": "ambari-qa",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": App.supports.customizeSmokeTestUser,
+      "serviceName": "MISC",
+      "filename": "hadoop-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["HDFS"],
+      "index": 16
+    },
+    {
+      "id": "puppet var",
+      "name": "tez_user",
+      "displayName": "Tez User",
+      "description": "User to run Tez as",
+      "defaultValue": "tez",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "tez-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["TEZ"],
+      "index": 15
+    },
+    {
+      "id": "puppet var",
+      "name": "user_group",
+      "displayName": "Hadoop Group",
+      "description": "Group that the users specified above belong to",
+      "defaultValue": "hadoop",
+      "isReconfigurable": false,
+      "displayType": "user",
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "hadoop-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["HDFS"],
+      "index": 16
+    },
+    {
+      "id": "puppet var",
+      "name": "rrdcached_base_dir",
+      "displayName": "Ganglia rrdcached base directory",
+      "description": "Default directory for saving the rrd files on ganglia server",
+      "defaultValue": "/var/lib/ganglia/rrds",
+      "displayType": "directory",
+      "isReconfigurable": true,
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "GANGLIA",
+      "filename": "nagios-env.xml",
+      "category": "General",
+      "belongsToService": ["GANGLIA"]
+    },
+    {
+      "id": "puppet var",
+      "name": "ignore_groupsusers_create",
+      "displayName": "Skip group modifications during install",
+      "displayType": "checkbox",
+      "isReconfigurable": true,
+      "isOverridable": false,
+      "isVisible": true,
+      "serviceName": "MISC",
+      "filename": "hadoop-env.xml",
+      "category": "Users and Groups",
+      "belongsToService": ["HDFS"]
     }
   ]
 };


[4/6] AMBARI-6501 Extend server-side stack definition to include metadata for additional configurations (including -env.sh files) for each service. (ababiichuk)

Posted by ab...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/data/HDP2/global_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/global_properties.js b/ambari-web/app/data/HDP2/global_properties.js
deleted file mode 100644
index 09ba19a..0000000
--- a/ambari-web/app/data/HDP2/global_properties.js
+++ /dev/null
@@ -1,1934 +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.
- */
-/**
- * Defines service configuration properties.
- *   name:
- *     The name of the config property that is understood by Ambari server and agent.
- *     E.g., "datanode_du_reserved"
- *
- *   displayName:
- *     The human-friendly display name of the config property.
- *     E.g., "Reserved space for HDFS"
- *
- *   description:
- *     The description of the config property.
- *     E.g., "Reserved space in GB per volume"
- *
- *   defaultValue:
- *     The default value of the config property.
- *     E.g., "1"
- *
- *   isReconfigurable:
- *     Whether the config property can be reconfigured after it has been initially set and deployed.
- *     If this is unspecified, true is assumed.
- *     E.g., true, false
- *
- *   isOverridable:
- *     Whether the config property can be overridden by hosts.
- *     If this is unspecified, true is assumed.
- *
- *   isRequired:
- *     Whether the config property is required or not.
- *     If this is unspecified, true is assumed.
- *     E.g., true, false
- *
- *     isRequiredByAgent:
- *     Whether the config property is required by agent or not.
- *     If value is false then it will be not persisted in global configuration
- *
- *   displayType:
- *     How the config property is to be rendered for user input.
- *     If this is left unspecified, "string" is assumed
- *     E.g., "string", "int", "float", "checkbox", "directories", "custom", "email", "masterHost", "slaveHosts"
- *
- *   unit
- *     The unit for the config property.
- *     E.g., "ms", "MB", "bytes"
- *
- *   serviceName:
- *     The service that the config property belongs to.
- *     E.g., "HDFS", "MAPREDUCE2", "ZOOKEEPER", etc.
- *
- *   category: the category that the config property belongs to (used for grouping config properties in the UI).
- *     if unspecified, "General" is assumed.
- *     E.g., "General", "Advanced", "NameNode", "DataNode"
- *
- *   index: the sequence number in category, that point to place where config located regarding all rest in category.
- *     if unspecified, push to the end of array.
- *     E.g., 0, 1, '2'
- */
-
-var App = require('app');
-require('config');
-
-module.exports =
-{
-  "configProperties": [
-  /**********************************************HDFS***************************************/
-    {
-      "id": "puppet var",
-      "name": "namenode_host",
-      "displayName": "NameNode hosts",
-      "value": "",
-      "defaultValue": "",
-      "description": "The hosts that has been assigned to run NameNode",
-      "displayType": "masterHosts",
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "HDFS",
-      "category": "NAMENODE",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "namenode_heapsize",
-      "displayName": "NameNode Java heap size",
-      "description": "Initial and maximum Java heap size for NameNode (Java options -Xms and -Xmx).  This also applies to the Secondary NameNode.",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "category": "NAMENODE",
-      "index": 2
-    },
-    {
-      "id": "puppet var",
-      "name": "namenode_opt_newsize",
-      "displayName": "NameNode new generation size",
-      "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize).  This also applies to the Secondary NameNode.",
-      "defaultValue": "200",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "category": "NAMENODE",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "namenode_opt_maxnewsize",
-      "displayName": "NameNode maximum new generation size",
-      "description": "Maximum size of Java new generation for NameNode (Java option -XX:MaxnewSize).",
-      "defaultValue": "200",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "category": "NAMENODE",
-      "index": 4
-    },
-    {
-      "id": "puppet var",
-      "name": "snamenode_host",
-      "displayName": "SNameNode host",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run SecondaryNameNode",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "category": "SECONDARY_NAMENODE",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "datanode_hosts", //not in the schema. For UI purpose
-      "displayName": "DataNode hosts",
-      "value": "",
-      "defaultValue": "",
-      "description": "The hosts that have been assigned to run DataNode",
-      "displayType": "slaveHosts",
-      "isRequired": false,
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "domain": "datanode-global",
-      "serviceName": "HDFS",
-      "category": "DATANODE",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "dtnode_heapsize",
-      "displayName": "DataNode maximum Java heap size",
-      "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "isVisible": true,
-      "domain": "datanode-global",
-      "serviceName": "HDFS",
-      "category": "DATANODE",
-      "index": 2
-    },
-    {
-      "id": "puppet var",
-      "name": "hadoop_heapsize",
-      "displayName": "Hadoop maximum Java heap size",
-      "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "hdfs_log_dir_prefix",
-      "displayName": "Hadoop Log Dir Prefix",
-      "description": "The parent directory for Hadoop log files.  The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.",
-      "defaultValue": "/var/log/hadoop",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hadoop_pid_dir_prefix",
-      "displayName": "Hadoop PID Dir Prefix",
-      "description": "The parent directory in which the PID files for Hadoop processes will be created.  The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.",
-      "defaultValue": "/var/run/hadoop",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "security_enabled",
-      "displayName": "Hadoop Security",
-      "description": "Enable hadoop security",
-      "defaultValue": 'false',
-      "isRequired": false,
-      "displayType": "checkbox",
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "HDFS",
-      "category": "Advanced"
-    },
-
-  /**********************************************MAPREDUCE2***************************************/
-    {
-      "id": "puppet var",
-      "name": "hs_host",
-      "displayName": "History Server",
-      "description": "History Server",
-      "defaultValue": "",
-      "isOverridable": false,
-      "displayType": "masterHost",
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "MAPREDUCE2",
-      "category": "HISTORYSERVER",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "jobhistory_heapsize",
-      "displayName": "History Server heap size",
-      "description": "History Server heap size",
-      "defaultValue": "900",
-      "unit": "MB",
-      "isOverridable": true,
-      "displayType": "int",
-      "isVisible": true,
-      "serviceName": "MAPREDUCE2",
-      "category": "HISTORYSERVER",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "mapred_log_dir_prefix",
-      "displayName": "Mapreduce Log Dir Prefix",
-      "description": "",
-      "defaultValue": "/var/log/hadoop-mapreduce",
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "isReconfigurable": false,
-      "serviceName": "MAPREDUCE2",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "mapred_pid_dir_prefix",
-      "displayName": "Mapreduce PID Dir Prefix",
-      "description": "",
-      "defaultValue": "/var/run/hadoop-mapreduce",
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "isReconfigurable": false,
-      "serviceName": "MAPREDUCE2",
-      "category": "Advanced"
-    },
-  /**********************************************YARN***************************************/
-    {
-      "id": "puppet var",
-      "name": "yarn_heapsize",
-      "displayName": "YARN Java heap size",
-      "description": "Max heapsize for all YARN components",
-      "defaultValue": "1024",
-      "isOverridable": true,
-      "displayType": "int",
-      "unit": "MB",
-      "isVisible": true,
-      "serviceName": "YARN",
-      "category": "General",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "rm_host",
-      "displayName": "ResourceManager",
-      "description": "ResourceManager",
-      "defaultValue": "",
-      "isOverridable": false,
-      "displayType": "masterHost",
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "YARN",
-      "category": "RESOURCEMANAGER",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "resourcemanager_heapsize",
-      "displayName": "ResourceManager Java heap size",
-      "description": "Max heapsize for ResourceManager",
-      "defaultValue": "1024",
-      "isOverridable": false,
-      "displayType": "int",
-      "unit": "MB",
-      "isVisible": true,
-      "serviceName": "YARN",
-      "category": "RESOURCEMANAGER",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "nm_hosts",
-      "displayName": "NodeManager",
-      "description": "List of NodeManager Hosts.",
-      "defaultValue": "",
-      "isOverridable": false,
-      "displayType": "slaveHosts",
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "YARN",
-      "category": "NODEMANAGER",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "nodemanager_heapsize",
-      "displayName": "NodeManager Java heap size",
-      "description": "Max heapsize for NodeManager",
-      "defaultValue": "1024",
-      "isOverridable": true,
-      "displayType": "int",
-      "unit": "MB",
-      "isVisible": true,
-      "serviceName": "YARN",
-      "category": "NODEMANAGER",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "yarn_log_dir_prefix",
-      "displayName": "YARN Log Dir Prefix",
-      "description": "",
-      "defaultValue": "/var/log/hadoop-yarn",
-      "displayType": "directory",
-      "isOverridable": false,
-      "isReconfigurable": false,
-      "isVisible": true,
-      "serviceName": "YARN",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "yarn_pid_dir_prefix",
-      "displayName": "YARN PID Dir Prefix",
-      "description": "",
-      "defaultValue": "/var/run/hadoop-yarn",
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "isReconfigurable": false,
-      "serviceName": "YARN",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "ats_host",
-      "displayName": "App Timeline Server",
-      "description": "Application Timeline Server Host",
-      "defaultValue": "",
-      "isOverridable": false,
-      "displayType": "masterHost",
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "YARN",
-      "category": "APP_TIMELINE_SERVER",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "apptimelineserver_heapsize",
-      "displayName": "AppTimelineServer Java heap size",
-      "description": "AppTimelineServer Java heap size",
-      "defaultValue": "1024",
-      "isOverridable": false,
-      "displayType": "int",
-      "unit": "MB",
-      "isVisible": true,
-      "serviceName": "YARN",
-      "category": "APP_TIMELINE_SERVER",
-      "index": 1
-    },
-  /**********************************************HBASE***************************************/
-    {
-      "id": "puppet var",
-      "name": "hbasemaster_host",
-      "displayName": "HBase Master hosts",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run HBase Master",
-      "displayType": "masterHosts",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "HBASE",
-      "category": "HBASE_MASTER",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "hbase_master_heapsize",
-      "displayName": "HBase Master Maximum Java heap size",
-      "description": "Maximum Java heap size for HBase master (Java option -Xmx)",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": true,
-      "isVisible": true,
-      "serviceName": "HBASE",
-      "category": "HBASE_MASTER",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "regionserver_hosts",
-      "displayName": "RegionServer hosts",
-      "value": "",
-      "defaultValue": "",
-      "description": "The hosts that have been assigned to run RegionServer",
-      "displayType": "slaveHosts",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "isRequired": false,
-      "serviceName": "HBASE",
-      "category": "HBASE_REGIONSERVER",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "hbase_regionserver_heapsize",
-      "displayName": "RegionServers maximum Java heap size",
-      "description": "Maximum Java heap size for RegionServers (Java option -Xmx)",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "isVisible": true,
-      "serviceName": "HBASE",
-      "category": "HBASE_REGIONSERVER",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "hbase_log_dir",
-      "displayName": "HBase Log Dir",
-      "description": "Directory for HBase logs",
-      "defaultValue": "/var/log/hbase",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HBASE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hbase_pid_dir",
-      "displayName": "HBase PID Dir",
-      "description": "Directory in which the pid files for HBase processes will be created",
-      "defaultValue": "/var/run/hbase",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HBASE",
-      "category": "Advanced"
-    },
-  /**********************************************GLUSTERFS***************************************/
-    {
-      "id": "puppet var",
-      "name": "glusterfs_defaultFS_name",
-      "displayName": "GlusterFS default fs name",
-      "description": "GlusterFS default filesystem name (glusterfs:///)",
-      "defaultValue": "glusterfs:///localhost:8020",
-      "displayType": "string",
-      "isVisible": true,
-      "domain": "global",
-      "serviceName": "GLUSTERFS",
-      "category": "General"
-    },
-    {
-      "id": "puppet var",
-      "name": "fs_glusterfs_default_name",
-      "displayName": "GlusterFS default fs name",
-      "description": "GlusterFS default filesystem name (glusterfs:///)",
-      "defaultValue": "glusterfs:///localhost:8020",
-      "displayType": "string",
-      "isVisible": true,
-      "domain": "global",
-      "serviceName": "GLUSTERFS",
-      "category": "General"
-    },
-    {
-      "id": "puppet var",
-      "name": "hadoop_heapsize",
-      "displayName": "Hadoop maximum Java heap size",
-      "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "isVisible": true,
-      "domain": "global",
-      "serviceName": "GLUSTERFS",
-      "category": "General"
-    },
-    {
-        "id": "puppet var",
-        "name": "hdfs_log_dir_prefix",
-        "displayName": "Hadoop Log Dir Prefix",
-        "description": "The parent directory for Hadoop log files.  The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.",
-        "defaultValue": "/var/log/hadoop",
-        "isReconfigurable": false,
-        "displayType": "directory",
-        "isOverridable": false,
-        "isVisible": true,
-        "serviceName": "GLUSTERFS",
-        "category": "Advanced"
-    },
-    {
-        "id": "puppet var",
-        "name": "hadoop_pid_dir_prefix",
-        "displayName": "Hadoop PID Dir Prefix",
-        "description": "The parent directory in which the PID files for Hadoop processes will be created.  The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.",
-        "defaultValue": "/var/run/hadoop",
-        "isReconfigurable": false,
-        "displayType": "directory",
-        "isOverridable": false,
-        "isVisible": true,
-        "serviceName": "GLUSTERFS",
-        "category": "Advanced"
-    },
-    {
-        "id": "puppet var",
-        "name": "namenode_heapsize",
-        "displayName": "Name Node Heap Size",
-        "description": "Name Node Heap Size, default jvm memory setting",
-        "defaultValue": "1024",
-        "isReconfigurable": false,
-        "displayType": "int",
-        "isOverridable": false,
-        "isVisible": false,
-        "serviceName": "GLUSTERFS",
-        "category": "Advanced"
-     },
-    {
-      "id": "puppet var",
-      "name": "namenode_opt_newsize",
-      "displayName": "NameNode new generation size",
-      "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize).  This also applies to the Secondary NameNode.",
-      "defaultValue": "200",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "GLUSTERFS",
-      "category": "category"
-    },
-    {
-      "id": "puppet var",
-      "name": "namenode_opt_maxnewsize",
-      "displayName": "NameNode maximum new generation size",
-      "description": "Maximum size of Java new generation for NameNode (Java option -XX:MaxnewSize).",
-      "defaultValue": "200",
-      "displayType": "int",
-      "unit": "MB",
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "GLUSTERFS",
-      "category": "Advanced"
-    },  
-    {
-      "id": "puppet var",
-      "name": "dtnode_heapsize",
-      "displayName": "DataNode maximum Java heap size",
-      "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
-      "defaultValue": "1024",
-      "displayType": "int",
-      "unit": "MB",
-      "isVisible": false,
-      "domain": "datanode-global",
-      "serviceName": "GLUSTERFS",
-      "category": "Advanced"
-    },                 
-  /**********************************************HIVE***************************************/
-    {
-      "id": "puppet var",
-      "name": "hivemetastore_host",
-      "displayName": "Hive Metastore host",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run Hive Metastore",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 0
-    },
-    // for existing MySQL
-    {
-      "id": "puppet var",
-      "name": "hive_existing_mysql_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "MySQL",
-      "description": "Using an existing MySQL database for Hive Metastore",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": false,
-      "isReconfigurable": false,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 1
-    },
-    // for existing PostgreSQL
-    {
-      "id": "puppet var",
-      "name": "hive_existing_postgresql_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "PostgreSQL",
-      "description": "Using an existing PostgreSQL database for Hive Metastore",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": false,
-      "isReconfigurable": false,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 1
-    },
-    // for existing Oracle
-    {
-      "id": "puppet var",
-      "name": "hive_existing_oracle_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "Oracle",
-      "description": "Using an existing Oracle database for Hive Metastore",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isOverridable": false,
-      "isReconfigurable": false,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 1
-    },
-    // for new MySQL
-    {
-      "id": "puppet var",
-      "name": "hive_ambari_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "MySQL",
-      "description": "MySQL will be installed by Ambari",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_database",
-      "displayName": "Hive Database",
-      "value": "",
-      "defaultValue": "New MySQL Database",
-      "options": [
-        {
-          displayName: 'New MySQL Database',
-          foreignKeys: ['hive_ambari_database', 'hive_ambari_host']
-        },
-        {
-          displayName: 'Existing MySQL Database',
-          foreignKeys: ['hive_existing_mysql_database', 'hive_existing_mysql_host']
-        },
-        {
-            displayName: 'Existing PostgreSQL Database',
-            foreignKeys: ['hive_existing_postgresql_database', 'hive_existing_postgresql_host']
-        },
-        {
-          displayName: 'Existing Oracle Database',
-          foreignKeys: ['hive_existing_oracle_database', 'hive_existing_oracle_host'],
-          hidden: !App.supports.hiveOozieExtraDatabases
-        }
-      ],
-      "description": "MySQL will be installed by Ambari",
-      "displayType": "radio button",
-      "isReconfigurable": false,
-      "radioName": "hive-database",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 2
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_hostname",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the database is hosted",
-      "defaultValue": "",
-      "isReconfigurable": true,
-      "displayType": "host",
-      "isOverridable": false,
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_existing_mysql_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
-      "isReconfigurable": false,
-      "displayType": "host",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_existing_postgresql_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
-      "isReconfigurable": false,
-      "displayType": "host",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_existing_oracle_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
-      "displayType": "host",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_ambari_host",
-      "value": "",
-      "defaultValue": "",
-      "displayName": "Database Host",
-      "description": "Host on which the database will be created by Ambari",
-      "isReconfigurable": false,
-      "displayType": "masterHost",
-      "isRequiredByAgent": false,
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "HIVE",
-      "category": "HIVE_METASTORE",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_metastore_port",
-      "displayName": "Hive metastore port",
-      "description": "",
-      "defaultValue": "9083",
-      "isReconfigurable": false,
-      "displayType": "int",
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_lib",
-      "displayName": "Hive library",
-      "description": "",
-      "defaultValue": "/usr/lib/hive/lib/",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "isRequiredByAgent": false, // Make this to true when we expose the property on ui by making "isVisible": true
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_dbroot",
-      "displayName": "Hive db directory",
-      "description": "",
-      "defaultValue": "/usr/lib/hive/lib",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "isRequiredByAgent": false, // Make this to true when we expose the property on ui by making "isVisible": true
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_log_dir",
-      "displayName": "Hive Log Dir",
-      "description": "Directory for Hive log files",
-      "defaultValue": "/var/log/hive",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_pid_dir",
-      "displayName": "Hive PID Dir",
-      "description": "Directory in which the PID files for Hive processes will be created",
-      "defaultValue": "/var/run/hive",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
-  /**********************************************WEBHCAT***************************************/
-    {
-      "id": "puppet var",
-      "name": "webhcatserver_host",
-      "displayName": "WebHCat Server host",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run WebHCat Server",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "WEBHCAT",
-      "category": "WEBHCAT_SERVER"
-    },
-    {
-      "id": "puppet var",
-      "name": "hcat_log_dir",
-      "displayName": "WebHCat Log Dir",
-      "description": "Directory for WebHCat log files",
-      "defaultValue": "/var/log/webhcat",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "WEBHCAT",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hcat_pid_dir",
-      "displayName": "WebHCat PID Dir",
-      "description": "Directory in which the PID files for WebHCat processes will be created",
-      "defaultValue": "/var/run/webhcat",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "WEBHCAT",
-      "category": "Advanced"
-    },
-  /**********************************************OOZIE***************************************/
-    {
-      "id": "puppet var",
-      "name": "oozieserver_host",
-      "displayName": "Oozie Server host",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run Oozie Server",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 0
-    },
-    // for existing Oracle
-    {
-      "id": "puppet var",
-      "name": "oozie_existing_oracle_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "Oracle",
-      "description": "Using an existing Oracle database for Oozie Metastore",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isObserved": true,
-      "isReconfigurable": false,
-      "isOverridable": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 1
-    },
-    // for existing PostgreSQL
-    {
-      "id": "puppet var",
-      "name": "oozie_existing_postgresql_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "PostgreSQL",
-      "description": "Using an existing PostgreSQL database for Oozie Metastore",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": false,
-      "isReconfigurable": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 1
-    },
-    // for new MySQL
-    {
-      "id": "puppet var",
-      "name": "oozie_ambari_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "MySQL",
-      "description": "MySQL will be installed by Ambari",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isOverridable": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 1
-    },
-    // for current derby
-    {
-      "id": "puppet var",
-      "name": "oozie_derby_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "Derby",
-      "description": "Using current Derby database for Oozie Metastore",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isReconfigurable": false,
-      "isOverridable": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 1
-    },
-    // for existing MySQL oozie
-    {
-      "id": "puppet var",
-      "name": "oozie_existing_mysql_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "MySQL",
-      "description": "Using an existing MySQL database for Oozie Metastore",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isReconfigurable": false,
-      "isOverridable": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_database",
-      "displayName": "Oozie Database",
-      "value": "",
-      "defaultValue": "New Derby Database",
-      "options": [
-        {
-          displayName: 'New Derby Database',
-          foreignKeys: ['oozie_derby_database']
-        },
-        /*{
-         displayName: 'New MySQL Database',
-         foreignKeys: ['oozie_ambari_database', 'oozie_ambari_host'],
-         hidden: !App.supports.hiveOozieExtraDatabases
-         },*/
-        {
-          displayName: 'Existing MySQL Database',
-          foreignKeys: ['oozie_existing_mysql_database', 'oozie_existing_mysql_host'],
-          hidden: !App.supports.hiveOozieExtraDatabases
-        },
-                {
-          displayName: 'Existing PostgreSQL Database',
-          foreignKeys: ['oozie_existing_postgresql_database', 'oozie_existing_postgresql_host'],
-          hidden: !App.supports.hiveOozieExtraDatabases
-        },
-        {
-          displayName: 'Existing Oracle Database',
-          foreignKeys: ['oozie_existing_oracle_database', 'oozie_existing_oracle_host'],
-          hidden: !App.supports.hiveOozieExtraDatabases
-        }
-      ],
-      "description": "Current Derby Database will be installed by Ambari",
-      "displayType": "radio button",
-      "isReconfigurable": false,
-      "isOverridable": false,
-      "radioName": "oozie-database",
-      "isVisible": true,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 2
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_data_dir",
-      "displayName": "Oozie Data Dir",
-      "description": "Data directory in which the Oozie DB exists",
-      "defaultValue": "",
-      "defaultDirectory": "/hadoop/oozie/data",
-      "isReconfigurable": true,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequired": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 9
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_hostname",
-      "defaultValue": "",
-      "displayName": "Database Host",
-      "description": "The host where the Oozie database is located",
-      "isReconfigurable": true,
-      "isOverridable": false,
-      "displayType": "host",
-      "isVisible": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_existing_mysql_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
-      "isOverridable": false,
-      "displayType": "host",
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_existing_postgresql_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
-      "isOverridable": false,
-      "displayType": "host",
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_existing_oracle_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
-      "isOverridable": false,
-      "displayType": "host",
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_ambari_host",
-      "value": "",
-      "defaultValue": "",
-      "displayName": "Database Host",
-      "description": "Host on which the database will be created by Ambari",
-      "isReconfigurable": false,
-      "isOverridable": false,
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isRequiredByAgent": false,
-      "serviceName": "OOZIE",
-      "category": "OOZIE_SERVER"
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_log_dir",
-      "displayName": "Oozie Log Dir",
-      "description": "Directory for oozie logs",
-      "defaultValue": "/var/log/oozie",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "OOZIE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_pid_dir",
-      "displayName": "Oozie PID Dir",
-      "description": "Directory in which the pid files for oozie processes will be created",
-      "defaultValue": "/var/run/oozie",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "OOZIE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_admin_port",
-      "displayName": "Oozie Server Admin Port",
-      "isReconfigurable": true,
-      "displayType": "int",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "OOZIE",
-      "category": "Advanced"
-    },
-  /**********************************************NAGIOS***************************************/
-    {
-      "id": "puppet var",
-      "name": "nagios_web_login",
-      "displayName": "Nagios Admin username",
-      "description": "Nagios Web UI Admin username",
-      "defaultValue": "nagiosadmin",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "NAGIOS",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "nagios_web_password",
-      "displayName": "Nagios Admin password",
-      "description": "Nagios Web UI Admin password",
-      "defaultValue": "",
-      "isReconfigurable": true,
-      "displayType": "password",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "NAGIOS",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "nagios_contact",
-      "displayName": "Hadoop Admin email",
-      "description": "Hadoop Administrator email for alert notification",
-      "defaultValue": "",
-      "displayType": "email",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "NAGIOS",
-      "index": 2
-    },
-  /**********************************************ZOOKEEPER***************************************/
-    {
-      "id": "puppet var",
-      "name": "zookeeperserver_hosts",
-      "displayName": "ZooKeeper Server hosts",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run ZooKeeper Server",
-      "displayType": "masterHosts",
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "isOverridable": false,
-      "isRequired": false,
-      "serviceName": "ZOOKEEPER",
-      "category": "ZOOKEEPER_SERVER",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "zk_data_dir",
-      "displayName": "ZooKeeper directory",
-      "description": "Data directory for ZooKeeper",
-      "defaultValue": "",
-      "defaultDirectory": "/hadoop/zookeeper",
-      "isReconfigurable": true,
-      "displayType": "directory",
-      "isVisible": true,
-      "serviceName": "ZOOKEEPER",
-      "category": "ZOOKEEPER_SERVER",
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "tickTime",
-      "displayName": "Length of single Tick",
-      "description": "The length of a single tick in milliseconds, which is the basic time unit used by ZooKeeper",
-      "defaultValue": "2000",
-      "displayType": "int",
-      "unit": "ms",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "ZOOKEEPER",
-      "category": "ZOOKEEPER_SERVER",
-      "index": 2
-    },
-    {
-      "id": "puppet var",
-      "name": "initLimit",
-      "displayName": "Ticks to allow for sync at Init",
-      "description": "Amount of time, in ticks to allow followers to connect and sync to a leader",
-      "defaultValue": "10",
-      "displayType": "int",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "ZOOKEEPER",
-      "category": "ZOOKEEPER_SERVER",
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "syncLimit",
-      "displayName": "Ticks to allow for sync at Runtime",
-      "description": "Amount of time, in ticks to allow followers to connect",
-      "defaultValue": "5",
-      "displayType": "int",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "ZOOKEEPER",
-      "category": "ZOOKEEPER_SERVER",
-      "index": 4
-    },
-    {
-      "id": "puppet var",
-      "name": "clientPort",
-      "displayName": "Port for running ZK Server",
-      "description": "Port for running ZooKeeper server",
-      "defaultValue": "2181",
-      "displayType": "int",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "ZOOKEEPER",
-      "category": "ZOOKEEPER_SERVER",
-      "index": 5
-    },
-    {
-      "id": "puppet var",
-      "name": "zk_log_dir",
-      "displayName": "ZooKeeper Log Dir",
-      "description": "Directory for ZooKeeper log files",
-      "defaultValue": "/var/log/zookeeper",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "ZOOKEEPER",
-      "category": "Advanced",
-      "index": 0
-    },
-    {
-      "id": "puppet var",
-      "name": "zk_pid_dir",
-      "displayName": "ZooKeeper PID Dir",
-      "description": "Directory in which the pid files for zookeeper processes will be created",
-      "defaultValue": "/var/run/zookeeper",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "ZOOKEEPER",
-      "category": "Advanced",
-      "index": 1
-    },
-  /**********************************************HUE***************************************/
-    {
-      "id": "puppet var",
-      "name": "hueserver_host",
-      "displayName": "Hue Server host",
-      "value": "",
-      "defaultValue": "",
-      "description": "The host that has been assigned to run Hue Server",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "HUE",
-      "category": "Hue Server"
-    },
-    {
-      "id": "puppet var",
-      "name": "hue_log_dir",
-      "displayName": "HUE Log Dir",
-      "description": "Directory for HUE logs",
-      "defaultValue": "/var/log/hue",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "HUE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hue_pid_dir",
-      "displayName": "HUE Pid Dir",
-      "description": "Directory in which the pid files for HUE processes will be created",
-      "defaultValue": "/var/run/hue",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "HUE",
-      "category": "Advanced"
-    },
-  /**********************************************GANGLIA***************************************/
-    {
-      "id": "puppet var",
-      "name": "ganglia_conf_dir",
-      "displayName": "Ganglia conf directory",
-      "description": "",
-      "defaultValue": "/etc/ganglia/hdp",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "isRequiredByAgent": false,
-      "serviceName": "GANGLIA",
-      "category": "Advanced"
-    },
-  /**********************************************FALCON***************************************/
-    {
-      "id": "puppet var",
-      "name": "falconserver_host",
-      "displayName": "Falcon Server",
-      "description": "The host that has been assigned to run Falcon Server",
-      "defaultValue": "falcon",
-      "displayType": "masterHost",
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "FALCON",
-      "category": "FALCON_SERVER"
-    },
-    {
-      "id": "puppet var",
-      "name": "falcon_port",
-      "displayName": "Falcon server port",
-      "description": "Port the Falcon Server listens on",
-      "defaultValue": "15000",
-      "isReconfigurable": true,
-      "displayType": "int",
-      "isVisible": true,
-      "isRequiredByAgent": true,
-      "serviceName": "FALCON",
-      "category": "FALCON_SERVER"
-    },
-    {
-      "id": "puppet var",
-      "name": "falcon_local_dir",
-      "displayName": "Falcon data directory",
-      "description": "Directory where Falcon data, such as activemq data, is stored",
-      "defaultValue": "/hadoop/falcon",
-      "isReconfigurable": true,
-      "displayType": "directory",
-      "isVisible": true,
-      "isRequiredByAgent": true,
-      "serviceName": "FALCON",
-      "category": "FALCON_SERVER"
-    },
-    {
-      "id": "puppet var",
-      "name": "falcon_store_uri",
-      "displayName": "Falcon store URI",
-      "description": "Directory where entity definitions are stored",
-      "defaultValue": "file:///hadoop/falcon/store",
-      "isReconfigurable": true,
-      "displayType": "string",
-      "isVisible": true,
-      "isRequiredByAgent": true,
-      "serviceName": "FALCON",
-      "category": "FALCON_SERVER"
-    },
-    {
-      "id": "puppet var",
-      "name": "falcon_log_dir",
-      "displayName": "Falcon Log Dir",
-      "description": "Directory for Falcon logs",
-      "defaultValue": "/var/log/falcon",
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequiredByAgent": true,
-      "isReconfigurable": false,
-      "serviceName": "FALCON",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "falcon_pid_dir",
-      "displayName": "Falcon PID Dir",
-      "description": "Directory in which the pid files for Falcon processes will be created",
-      "defaultValue": "/var/run/falcon",
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequiredByAgent": true,
-      "isReconfigurable": false,
-      "serviceName": "FALCON",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "falcon.embeddedmq",
-      "displayName": "falcon.embeddedmq",
-      "description": "Whether embeddedmq is enabled or not.",
-      "defaultValue": "true",
-      "displayType": "string",
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequiredByAgent": true,
-      "isReconfigurable": true,
-      "serviceName": "FALCON",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "falcon.embeddedmq.data",
-      "displayName": "falcon.embeddedmq.data",
-      "description": "Directory in which embeddedmq data is stored.",
-      "defaultValue": "/hadoop/falcon/embeddedmq/data",
-      "displayType": "directory",
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequiredByAgent": true,
-      "isReconfigurable": true,
-      "serviceName": "FALCON",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "falcon.emeddedmq.port",
-      "displayName": "falcon.emeddedmq.port",
-      "description": "Port that embeddedmq will listen on.",
-      "defaultValue": "61616",
-      "displayType": "string",
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequiredByAgent": true,
-      "isReconfigurable": true,
-      "serviceName": "FALCON",
-      "category": "Advanced"
-    },
-  /**********************************************STORM***************************************/
-    {
-      "id": "puppet var",
-      "name": "storm_log_dir",
-      "displayName": "storm_log_dir",
-      "description": "Storm log directory",
-      "defaultValue": "/var/log/storm",
-      "displayType": "directory",
-      "isReconfigurable": true,
-      "isVisible": true,
-      "isRequiredByAgent": true,
-      "serviceName": "STORM",
-      "category": "General"
-    },
-    {
-      "id": "puppet var",
-      "name": "storm_pid_dir",
-      "displayName": "storm_pid_dir",
-      "description": "Storm PID directory",
-      "defaultValue": "/var/run/storm",
-      "displayType": "directory",
-      "isReconfigurable": true,
-      "isVisible": true,
-      "isRequiredByAgent": true,
-      "serviceName": "STORM",
-      "category": "General"
-    },
-    {
-      "id": "puppet var",
-      "name": "stormuiserver_host",
-      "displayName": "Storm UI Server host",
-      "description": "The host that has been assigned to run Storm UI Server",
-      "defaultValue": "",
-      "displayType": "masterHost",
-      "isReconfigurable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "STORM",
-      "category": "STORM_UI_SERVER",
-      "filename": "global.xml"
-    },
-    {
-      "id": "puppet var",
-      "name": "drpcserver_host",
-      "displayName": "DRPC Server host",
-      "description": "The host that has been assigned to run DRPC Server",
-      "defaultValue": "",
-      "displayType": "masterHost",
-      "isReconfigurable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "STORM",
-      "category": "DRPC_SERVER",
-      "filename": "global.xml"
-    },
-    {
-      "id": "puppet var",
-      "name": "supervisor_hosts",
-      "displayName": "Supervisor hosts",
-      "description": "The host that has been assigned to run Supervisor",
-      "defaultValue": "",
-      "displayType": "slaveHosts",
-      "isReconfigurable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "STORM",
-      "isOverridable": false,
-      "category": "SUPERVISOR",
-      "filename": "global.xml"
-    },
-    {
-      "id": "puppet var",
-      "name": "storm_rest_api_host",
-      "displayName": "Storm REST API host",
-      "description": "The host that has been assigned to run Storm REST API Server",
-      "defaultValue": "",
-      "displayType": "masterHost",
-      "isReconfigurable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "STORM",
-      "isOverridable": false,
-      "category": "STORM_REST_API",
-      "filename": "global.xml"
-    },
-  /**********************************************MISC***************************************/
-    {
-      "id": "puppet var",
-      "name": "hbase_conf_dir",
-      "displayName": "HBase conf dir",
-      "description": "",
-      "defaultValue": "/etc/hbase",
-      "isRequired": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "isRequiredByAgent": false,
-      "serviceName": "MISC",
-      "category": "General",
-      "belongsToService": []
-    },
-    {
-      "id": "puppet var",
-      "name": "proxyuser_group",
-      "displayName": "Proxy group for Hive, WebHCat, Oozie and Falcon",
-      "description": "",
-      "defaultValue": "users",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "filename": "core-site.xml",
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HIVE", "WEBHCAT", "OOZIE", "FALCON"],
-      "index": 18
-    },
-    {
-      "id": "puppet var",
-      "name": "ganglia_runtime_dir",
-      "displayName": "Ganglia runtime directory",
-      "description": "",
-      "defaultValue": "/var/run/ganglia/hdp",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "serviceName": "MISC",
-      "category": "General",
-      "belongsToService": []
-    },
-    {
-      "id": "puppet var",
-      "name": "hdfs_user",
-      "displayName": "HDFS User",
-      "description": "User to run HDFS as",
-      "defaultValue": "hdfs",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HDFS"],
-      "index": 1
-    },
-    {
-      "id": "puppet var",
-      "name": "mapred_user",
-      "displayName": "MapReduce User",
-      "description": "User to run MapReduce as",
-      "defaultValue": "mapred",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["MAPREDUCE2"],
-      "index": 2
-    },
-    {
-      "id": "puppet var",
-      "name": "yarn_user",
-      "displayName": "YARN User",
-      "description": "User to run YARN as",
-      "defaultValue": "yarn",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["YARN"],
-      "index": 3
-    },
-    {
-      "id": "puppet var",
-      "name": "hbase_user",
-      "displayName": "HBase User",
-      "description": "User to run HBase as",
-      "defaultValue": "hbase",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HBASE"],
-      "index": 4
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_user",
-      "displayName": "Hive User",
-      "description": "User to run Hive as",
-      "defaultValue": "hive",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HIVE"],
-      "index": 5
-    },
-    {
-      "id": "puppet var",
-      "name": "hcat_user",
-      "displayName": "HCat User",
-      "description": "User to run HCatalog as",
-      "defaultValue": "hcat",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HCATALOG"],
-      "index": 6
-    },
-    {
-      "id": "puppet var",
-      "name": "webhcat_user",
-      "displayName": "WebHCat User",
-      "description": "User to run WebHCat as",
-      "defaultValue": "hcat",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["WEBHCAT"],
-      "index": 7
-    },
-    {
-      "id": "puppet var",
-      "name": "oozie_user",
-      "displayName": "Oozie User",
-      "description": "User to run Oozie as",
-      "defaultValue": "oozie",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["OOZIE"],
-      "index": 8
-    },
-    {
-      "id": "puppet var",
-      "name": "falcon_user",
-      "displayName": "Falcon User",
-      "description": "User to run Falcon as",
-      "defaultValue": "falcon",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["FALCON"],
-      "index": 10
-    },
-    {
-      "id": "puppet var",
-      "name": "storm_user",
-      "displayName": "Storm User",
-      "description": "User to run Storm as",
-      "defaultValue": "storm",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["STORM"],
-      "index": 9
-    },
-    {
-      "id": "puppet var",
-      "name": "zk_user",
-      "displayName": "ZooKeeper User",
-      "description": "User to run ZooKeeper as",
-      "defaultValue": "zookeeper",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["ZOOKEEPER"],
-      "index": 11
-    },
-    {
-      "id": "puppet var",
-      "name": "gmetad_user",
-      "displayName": "Ganglia User",
-      "description": "The user used to run Ganglia",
-      "defaultValue": "nobody",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["GANGLIA"],
-      "index": 12
-    },
-    {
-      "id": "puppet var",
-      "name": "gmond_user",
-      "displayName": "Gmond User",
-      "description": "The user used to run gmond for Ganglia",
-      "defaultValue": "nobody",
-      "isReconfigurable": false,
-      "displayType": "advanced",
-      "isOverridable": false,
-      "isVisible": false,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": []
-    },
-    {
-      "id": "puppet var",
-      "name": "nagios_user",
-      "displayName": "Nagios User",
-      "description": "User to run Nagios as",
-      "defaultValue": "nagios",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["NAGIOS"],
-      "index": 14
-    },
-    {
-      "id": "puppet var",
-      "name": "nagios_group",
-      "displayName": "Nagios Group",
-      "description": "Nagios Group",
-      "defaultValue": "nagios",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["NAGIOS"],
-      "index": 13
-    },
-    {
-      "id": "puppet var",
-      "name": "smokeuser",
-      "displayName": "Smoke Test User",
-      "description": "The user used to run service smoke tests",
-      "defaultValue": "ambari-qa",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": App.supports.customizeSmokeTestUser,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HDFS"],
-      "index": 16
-    },
-    {
-      "id": "puppet var",
-      "name": "tez_user",
-      "displayName": "Tez User",
-      "description": "User to run Tez as",
-      "defaultValue": "tez",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["TEZ"],
-      "index": 15
-    },
-    {
-      "id": "puppet var",
-      "name": "user_group",
-      "displayName": "Hadoop Group",
-      "description": "Group that the users specified above belong to",
-      "defaultValue": "hadoop",
-      "isReconfigurable": false,
-      "displayType": "user",
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HDFS"],
-      "index": 16
-    },
-    {
-      "id": "puppet var",
-      "name": "rrdcached_base_dir",
-      "displayName": "Ganglia rrdcached base directory",
-      "description": "Default directory for saving the rrd files on ganglia server",
-      "defaultValue": "/var/lib/ganglia/rrds",
-      "displayType": "directory",
-      "isReconfigurable": true,
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "GANGLIA",
-      "category": "General",
-      "belongsToService": ["GANGLIA"]
-    },
-    {
-      "id": "puppet var",
-      "name": "ignore_groupsusers_create",
-      "displayName": "Skip group modifications during install",
-      "displayType": "checkbox",
-      "isReconfigurable": true,
-      "isOverridable": false,
-      "isVisible": true,
-      "serviceName": "MISC",
-      "category": "Users and Groups",
-      "belongsToService": ["HDFS"]
-    }
-  ]
-};

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/data/HDP2/ha_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/ha_properties.js b/ambari-web/app/data/HDP2/ha_properties.js
index 7c546bf..2b34b8b 100644
--- a/ambari-web/app/data/HDP2/ha_properties.js
+++ b/ambari-web/app/data/HDP2/ha_properties.js
@@ -25,7 +25,7 @@ module.exports =
       App.ServiceConfigCategory.create({ name: 'HDFS', displayName: 'HDFS'}),
       App.ServiceConfigCategory.create({ name: 'HBASE', displayName: 'HBase'})
     ],
-    sites: ['global', 'core-site', 'hdfs-site','hbase-site'],
+    sites: ['core-site', 'hdfs-site','hbase-site'],
     configs: [
     /**********************************************HDFS***************************************/
       {


[6/6] git commit: Merge remote-tracking branch 'origin/trunk' into trunk

Posted by ab...@apache.org.
Merge remote-tracking branch 'origin/trunk' into trunk


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4e23fa2d
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4e23fa2d
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4e23fa2d

Branch: refs/heads/trunk
Commit: 4e23fa2d8456ebc8b5cdd2cd5c09ebde11596d6a
Parents: 6244c49 b0ae1fd
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Wed Jul 16 15:59:36 2014 +0300
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Wed Jul 16 15:59:36 2014 +0300

----------------------------------------------------------------------
 .../libraries/functions/default.py              |   5 -
 .../ambari/server/agent/HeartbeatMonitor.java   |  59 ++--
 .../internal/ClusterResourceProvider.java       |   3 +-
 .../custom_actions/ambari_hdfs_rebalancer.py    |   2 +-
 .../1.3.2/hooks/after-INSTALL/scripts/params.py |  29 +-
 .../scripts/shared_initialization.py            |   2 +-
 .../after-INSTALL/templates/hadoop-env.sh.j2    | 142 --------
 .../hooks/before-INSTALL/scripts/params.py      |  61 ++--
 .../scripts/shared_initialization.py            |   6 -
 .../1.3.2/hooks/before-START/scripts/params.py  |  34 +-
 .../GANGLIA/configuration/ganglia-env.xml       |  70 ++++
 .../services/GANGLIA/configuration/global.xml   |  70 ----
 .../HDP/1.3.2/services/GANGLIA/metainfo.xml     |   2 +-
 .../services/GANGLIA/package/scripts/params.py  |  20 +-
 .../GANGLIA/package/scripts/status_params.py    |   2 +-
 .../services/HBASE/configuration/global.xml     |  50 ---
 .../services/HBASE/configuration/hbase-env.xml  | 122 +++++++
 .../HDP/1.3.2/services/HBASE/metainfo.xml       |   2 +-
 .../services/HBASE/package/scripts/hbase.py     |   5 +-
 .../services/HBASE/package/scripts/params.py    |  35 +-
 .../HBASE/package/scripts/status_params.py      |   4 +-
 .../HBASE/package/templates/hbase-env.sh.j2     | 101 ------
 .../services/HDFS/configuration/global.xml      |  87 -----
 .../services/HDFS/configuration/hadoop-env.xml  | 211 ++++++++++++
 .../stacks/HDP/1.3.2/services/HDFS/metainfo.xml |   2 +-
 .../services/HDFS/package/scripts/params.py     |  37 +-
 .../HDFS/package/scripts/status_params.py       |   4 +-
 .../services/HIVE/configuration/global.xml      | 100 ------
 .../services/HIVE/configuration/hive-env.xml    | 139 ++++++++
 .../stacks/HDP/1.3.2/services/HIVE/metainfo.xml |   4 +-
 .../1.3.2/services/HIVE/package/scripts/hive.py |   2 +-
 .../services/HIVE/package/scripts/params.py     |  37 +-
 .../HIVE/package/scripts/status_params.py       |   4 +-
 .../HIVE/package/templates/hive-env.sh.j2       |  78 -----
 .../services/MAPREDUCE/configuration/global.xml | 150 ---------
 .../MAPREDUCE/configuration/mapred-env.xml      | 150 +++++++++
 .../HDP/1.3.2/services/MAPREDUCE/metainfo.xml   |   2 +-
 .../MAPREDUCE/package/scripts/params.py         |  18 +-
 .../MAPREDUCE/package/scripts/status_params.py  |   4 +-
 .../services/NAGIOS/configuration/global.xml    |  51 ---
 .../NAGIOS/configuration/nagios-env.xml         |  51 +++
 .../HDP/1.3.2/services/NAGIOS/metainfo.xml      |   2 +-
 .../services/NAGIOS/package/scripts/params.py   |  20 +-
 .../services/OOZIE/configuration/global.xml     |  60 ----
 .../services/OOZIE/configuration/oozie-env.xml  | 120 +++++++
 .../HDP/1.3.2/services/OOZIE/metainfo.xml       |   2 +-
 .../services/OOZIE/package/scripts/oozie.py     |   7 +-
 .../services/OOZIE/package/scripts/params.py    |  27 +-
 .../OOZIE/package/scripts/status_params.py      |   2 +-
 .../OOZIE/package/templates/oozie-env.sh.j2     |  88 -----
 .../services/PIG/configuration/pig-env.xml      |  34 ++
 .../stacks/HDP/1.3.2/services/PIG/metainfo.xml  |   2 +-
 .../services/PIG/package/scripts/params.py      |  11 +-
 .../1.3.2/services/PIG/package/scripts/pig.py   |   9 +-
 .../PIG/package/templates/pig-env.sh.j2         |  36 --
 .../services/SQOOP/configuration/sqoop-env.xml  |  49 +++
 .../HDP/1.3.2/services/SQOOP/metainfo.xml       |   3 +
 .../services/SQOOP/package/scripts/params.py    |  11 +-
 .../services/SQOOP/package/scripts/sqoop.py     |   6 +-
 .../SQOOP/package/templates/sqoop-env.sh.j2     |  36 --
 .../WEBHCAT/configuration/webhcat-env.xml       |  54 +++
 .../WEBHCAT/configuration/webhcat-site.xml      |  30 ++
 .../HDP/1.3.2/services/WEBHCAT/metainfo.xml     |   1 +
 .../services/WEBHCAT/package/scripts/params.py  |  22 +-
 .../WEBHCAT/package/scripts/status_params.py    |   2 +-
 .../services/WEBHCAT/package/scripts/webhcat.py |   2 +-
 .../WEBHCAT/package/templates/webhcat-env.sh.j2 |  63 ----
 .../services/ZOOKEEPER/configuration/global.xml |  65 ----
 .../ZOOKEEPER/configuration/zookeeper-env.xml   |  83 +++++
 .../HDP/1.3.2/services/ZOOKEEPER/metainfo.xml   |   2 +-
 .../ZOOKEEPER/package/scripts/params.py         |  27 +-
 .../ZOOKEEPER/package/scripts/status_params.py  |   2 +-
 .../ZOOKEEPER/package/scripts/zookeeper.py      |   8 +-
 .../package/templates/zookeeper-env.sh.j2       |  44 ---
 .../2.0.6/hooks/after-INSTALL/scripts/params.py |  29 +-
 .../scripts/shared_initialization.py            |   2 +-
 .../after-INSTALL/templates/hadoop-env.sh.j2    | 146 --------
 .../hooks/before-INSTALL/scripts/params.py      |  40 +--
 .../2.0.6/hooks/before-START/scripts/params.py  |  38 +--
 .../services/FLUME/configuration/flume-env.xml  |  34 ++
 .../services/FLUME/configuration/global.xml     |  34 --
 .../HDP/2.0.6/services/FLUME/metainfo.xml       |   2 +-
 .../services/FLUME/package/scripts/params.py    |   4 +-
 .../GANGLIA/configuration/ganglia-env.xml       |  70 ++++
 .../services/GANGLIA/configuration/global.xml   |  70 ----
 .../HDP/2.0.6/services/GANGLIA/metainfo.xml     |   2 +-
 .../services/GANGLIA/package/scripts/params.py  |  22 +-
 .../GANGLIA/package/scripts/status_params.py    |   2 +-
 .../services/HBASE/configuration/global.xml     |  50 ---
 .../services/HBASE/configuration/hbase-env.xml  | 122 +++++++
 .../HDP/2.0.6/services/HBASE/metainfo.xml       |   2 +-
 .../services/HBASE/package/scripts/hbase.py     |   7 +-
 .../services/HBASE/package/scripts/params.py    |  35 +-
 .../HBASE/package/scripts/status_params.py      |   4 +-
 .../HBASE/package/templates/hbase-env.sh.j2     | 100 ------
 .../services/HDFS/configuration/global.xml      |  87 -----
 .../services/HDFS/configuration/hadoop-env.xml  | 213 ++++++++++++
 .../stacks/HDP/2.0.6/services/HDFS/metainfo.xml |   2 +-
 .../services/HDFS/package/scripts/namenode.py   |   1 +
 .../services/HDFS/package/scripts/params.py     |  34 +-
 .../HDFS/package/scripts/status_params.py       |   4 +-
 .../services/HIVE/configuration/global.xml      |  90 -----
 .../services/HIVE/configuration/hive-env.xml    | 131 +++++++
 .../stacks/HDP/2.0.6/services/HIVE/metainfo.xml |   2 +-
 .../2.0.6/services/HIVE/package/scripts/hive.py |   2 +-
 .../services/HIVE/package/scripts/params.py     |  39 +--
 .../HIVE/package/scripts/status_params.py       |   4 +-
 .../HIVE/package/templates/hive-env.sh.j2       |  79 -----
 .../services/NAGIOS/configuration/global.xml    |  51 ---
 .../NAGIOS/configuration/nagios-env.xml         |  51 +++
 .../HDP/2.0.6/services/NAGIOS/metainfo.xml      |   2 +-
 .../services/NAGIOS/package/scripts/params.py   |  22 +-
 .../services/OOZIE/configuration/global.xml     |  60 ----
 .../services/OOZIE/configuration/oozie-env.xml  | 128 +++++++
 .../HDP/2.0.6/services/OOZIE/metainfo.xml       |   2 +-
 .../services/OOZIE/package/scripts/oozie.py     |   5 +-
 .../services/OOZIE/package/scripts/params.py    |  26 +-
 .../OOZIE/package/scripts/status_params.py      |   2 +-
 .../OOZIE/package/templates/oozie-env.sh.j2     |  95 ------
 .../services/PIG/configuration/pig-env.xml      |  38 +++
 .../stacks/HDP/2.0.6/services/PIG/metainfo.xml  |   2 +-
 .../services/PIG/package/scripts/params.py      |  11 +-
 .../2.0.6/services/PIG/package/scripts/pig.py   |   5 +-
 .../PIG/package/templates/pig-env.sh.j2         |  39 ---
 .../services/SQOOP/configuration/sqoop-env.xml  |  49 +++
 .../HDP/2.0.6/services/SQOOP/metainfo.xml       |   3 +
 .../services/SQOOP/package/scripts/params.py    |  11 +-
 .../services/SQOOP/package/scripts/sqoop.py     |   7 +-
 .../SQOOP/package/templates/sqoop-env.sh.j2     |  54 ---
 .../WEBHCAT/configuration/webhcat-env.xml       |  54 +++
 .../HDP/2.0.6/services/WEBHCAT/metainfo.xml     |   1 +
 .../services/WEBHCAT/package/scripts/params.py  |  22 +-
 .../WEBHCAT/package/scripts/status_params.py    |   2 +-
 .../services/WEBHCAT/package/scripts/webhcat.py |   2 +-
 .../WEBHCAT/package/templates/webhcat-env.sh.j2 |  62 ----
 .../YARN/configuration-mapred/global.xml        |  44 ---
 .../YARN/configuration-mapred/mapred-env.xml    |  64 ++++
 .../services/YARN/configuration/global.xml      |  55 ---
 .../services/YARN/configuration/yarn-env.xml    | 173 ++++++++++
 .../stacks/HDP/2.0.6/services/YARN/metainfo.xml |   4 +-
 .../services/YARN/package/scripts/params.py     |  34 +-
 .../YARN/package/scripts/status_params.py       |   8 +-
 .../2.0.6/services/YARN/package/scripts/yarn.py |   4 +-
 .../YARN/package/templates/mapred-env.sh.j2     |  27 --
 .../YARN/package/templates/yarn-env.sh.j2       | 146 --------
 .../services/ZOOKEEPER/configuration/global.xml |  65 ----
 .../ZOOKEEPER/configuration/zookeeper-env.xml   |  83 +++++
 .../HDP/2.0.6/services/ZOOKEEPER/metainfo.xml   |   2 +-
 .../ZOOKEEPER/package/scripts/params.py         |  27 +-
 .../ZOOKEEPER/package/scripts/status_params.py  |   2 +-
 .../ZOOKEEPER/package/scripts/zookeeper.py      |   8 +-
 .../package/templates/zookeeper-env.sh.j2       |  44 ---
 .../FALCON/configuration/falcon-env.xml         | 109 ++++++
 .../services/FALCON/configuration/global.xml    |  63 ----
 .../stacks/HDP/2.1/services/FALCON/metainfo.xml |   2 +-
 .../services/FALCON/package/scripts/falcon.py   |   2 +-
 .../services/FALCON/package/scripts/params.py   |  31 +-
 .../FALCON/package/scripts/status_params.py     |   2 +-
 .../FALCON/package/templates/falcon-env.sh.j2   |  73 ----
 .../HDP/2.1/services/HIVE/metainfo.xml.orig     |  51 +++
 .../HDP/2.1/services/HIVE/metainfo.xml.rej      |  13 +
 .../stacks/HDP/2.1/services/OOZIE/metainfo.xml  |   2 +-
 .../stacks/HDP/2.1/services/SQOOP/metainfo.xml  |   4 +
 .../2.1/services/STORM/configuration/global.xml |  39 ---
 .../services/STORM/configuration/storm-env.xml  |  55 +++
 .../stacks/HDP/2.1/services/STORM/metainfo.xml  |   2 +-
 .../services/STORM/package/scripts/params.py    |  13 +-
 .../STORM/package/scripts/status_params.py      |   2 +-
 .../2.1/services/STORM/package/scripts/storm.py |   7 +-
 .../STORM/package/templates/storm-env.sh.j2     |  45 ---
 .../2.1/services/TEZ/configuration/global.xml   |  29 --
 .../2.1/services/TEZ/configuration/tez-env.xml  |  45 +++
 .../stacks/HDP/2.1/services/TEZ/metainfo.xml    |   2 +-
 .../2.1/services/TEZ/package/scripts/params.py  |   5 +-
 .../HDP/2.1/services/TEZ/package/scripts/tez.py |   7 +-
 .../TEZ/package/templates/tez-env.sh.j2         |  23 --
 .../HDP/2.1/services/WEBHCAT/metainfo.xml       |   1 +
 .../2.1/services/YARN/configuration/global.xml  |  60 ----
 .../services/YARN/configuration/yarn-env.xml    | 178 ++++++++++
 .../stacks/HDP/2.1/services/YARN/metainfo.xml   |   2 +-
 .../server/agent/TestHeartbeatMonitor.java      |   4 +-
 .../internal/ClusterResourceProviderTest.java   |  26 +-
 .../stacks/1.3.2/HBASE/test_hbase_client.py     |   8 +-
 .../stacks/1.3.2/HBASE/test_hbase_master.py     |   8 +-
 .../1.3.2/HBASE/test_hbase_regionserver.py      |   8 +-
 .../stacks/1.3.2/HIVE/test_hive_client.py       |   4 +-
 .../stacks/1.3.2/HIVE/test_hive_metastore.py    |   4 +-
 .../stacks/1.3.2/HIVE/test_hive_server.py       |   4 +-
 .../stacks/1.3.2/OOZIE/test_oozie_client.py     |   6 +-
 .../stacks/1.3.2/OOZIE/test_oozie_server.py     |  12 +-
 .../python/stacks/1.3.2/PIG/test_pig_client.py  |   8 +-
 .../python/stacks/1.3.2/SQOOP/test_sqoop.py     |   4 +-
 .../stacks/1.3.2/WEBHCAT/test_webhcat_server.py |   4 +-
 .../1.3.2/ZOOKEEPER/test_zookeeper_client.py    |   4 +-
 .../1.3.2/ZOOKEEPER/test_zookeeper_server.py    |   4 +-
 .../1.3.2/configs/default.hbasedecom.json       | 187 ++++++----
 .../python/stacks/1.3.2/configs/default.json    | 190 +++++++----
 .../1.3.2/configs/default.non_gmetad_host.json  | 187 ++++++----
 .../python/stacks/1.3.2/configs/secured.json    | 154 +++++++++
 .../hooks/after-INSTALL/test_after_install.py   |   2 +-
 .../hooks/before-START/test_before_start.py     |   4 +-
 .../stacks/2.0.6/HBASE/test_hbase_client.py     |  14 +-
 .../stacks/2.0.6/HBASE/test_hbase_master.py     |   8 +-
 .../2.0.6/HBASE/test_hbase_regionserver.py      |   8 +-
 .../stacks/2.0.6/HIVE/test_hive_client.py       |   4 +-
 .../stacks/2.0.6/HIVE/test_hive_metastore.py    |   4 +-
 .../stacks/2.0.6/HIVE/test_hive_server.py       |   4 +-
 .../stacks/2.0.6/OOZIE/test_oozie_client.py     |  10 +-
 .../stacks/2.0.6/OOZIE/test_oozie_server.py     |   6 +-
 .../python/stacks/2.0.6/PIG/test_pig_client.py  |  10 +-
 .../python/stacks/2.0.6/SQOOP/test_sqoop.py     |   5 +-
 .../stacks/2.0.6/WEBHCAT/test_webhcat_server.py |   4 +-
 .../stacks/2.0.6/YARN/test_historyserver.py     |   8 +-
 .../stacks/2.0.6/YARN/test_mapreduce2_client.py |   8 +-
 .../stacks/2.0.6/YARN/test_nodemanager.py       |   8 +-
 .../stacks/2.0.6/YARN/test_resourcemanager.py   |   8 +-
 .../stacks/2.0.6/YARN/test_yarn_client.py       |  12 +-
 .../2.0.6/ZOOKEEPER/test_zookeeper_client.py    |  16 +-
 .../2.0.6/ZOOKEEPER/test_zookeeper_server.py    |  16 +-
 .../2.0.6/configs/default.hbasedecom.json       | 207 +++++++-----
 .../python/stacks/2.0.6/configs/default.json    | 213 +++++++-----
 .../2.0.6/configs/default.non_gmetad_host.json  | 202 ++++++-----
 .../python/stacks/2.0.6/configs/ha_default.json | 129 +++++++
 .../python/stacks/2.0.6/configs/ha_secured.json | 283 ++++++++++------
 .../python/stacks/2.0.6/configs/secured.json    | 337 ++++++++++---------
 .../hooks/after-INSTALL/test_after_install.py   |   4 +-
 .../stacks/2.1/FALCON/test_falcon_client.py     |   2 +-
 .../stacks/2.1/FALCON/test_falcon_server.py     |   2 +-
 .../stacks/2.1/HIVE/test_hive_metastore.py      |  20 +-
 .../stacks/2.1/STORM/test_storm_drpc_server.py  |   6 +-
 .../stacks/2.1/STORM/test_storm_nimbus.py       |   6 +-
 .../stacks/2.1/STORM/test_storm_nimbus_prod.py  |   8 +-
 .../2.1/STORM/test_storm_rest_api_service.py    |   6 +-
 .../stacks/2.1/STORM/test_storm_supervisor.py   |   6 +-
 .../2.1/STORM/test_storm_supervisor_prod.py     |   6 +-
 .../stacks/2.1/STORM/test_storm_ui_server.py    |   6 +-
 .../python/stacks/2.1/TEZ/test_tez_client.py    |   5 +-
 .../stacks/2.1/YARN/test_apptimelineserver.py   |   4 +-
 .../test/python/stacks/2.1/configs/default.json | 123 ++++++-
 .../test/python/stacks/2.1/configs/secured.json | 168 +++++++++
 240 files changed, 5229 insertions(+), 4352 deletions(-)
----------------------------------------------------------------------



[5/6] git commit: AMBARI-6501 Extend server-side stack definition to include metadata for additional configurations (including -env.sh files) for each service. (ababiichuk)

Posted by ab...@apache.org.
AMBARI-6501 Extend server-side stack definition to include metadata for additional configurations (including -env.sh files) for each service. (ababiichuk)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/6244c49b
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/6244c49b
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/6244c49b

Branch: refs/heads/trunk
Commit: 6244c49babe87d8bd34126c95651c42fcedc8a76
Parents: 2636029
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Thu Jul 10 14:58:44 2014 +0300
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Wed Jul 16 15:14:08 2014 +0300

----------------------------------------------------------------------
 .../controllers/global/cluster_controller.js    |    1 -
 .../main/admin/highAvailability_controller.js   |    7 +-
 .../controllers/main/admin/misc_controller.js   |    2 +-
 .../app/controllers/main/admin/security.js      |   10 +-
 .../controllers/main/admin/security/disable.js  |    2 +-
 .../controllers/main/service/info/configs.js    |  333 ++-
 .../main/service/reassign_controller.js         |    6 +-
 .../app/controllers/wizard/step7_controller.js  |    1 -
 .../app/controllers/wizard/step8_controller.js  |  228 +-
 ambari-web/app/data/HDP2/global_properties.js   | 1934 ----------------
 ambari-web/app/data/HDP2/ha_properties.js       |    2 +-
 ambari-web/app/data/HDP2/site_properties.js     | 2156 ++++++++++++++++++
 ambari-web/app/data/global_properties.js        | 1589 -------------
 ambari-web/app/data/service_configs.js          |   18 +-
 ambari-web/app/data/site_properties.js          | 1611 ++++++++++++-
 ambari-web/app/models/quick_links.js            |    2 +-
 ambari-web/app/models/service.js                |    3 +-
 ambari-web/app/models/service_config.js         |    2 +-
 ambari-web/app/models/stack_service.js          |   44 +-
 ambari-web/app/utils/config.js                  |  118 +-
 .../app/views/common/quick_view_link_view.js    |    2 +-
 ambari-web/app/views/main/admin/security.js     |    6 +-
 .../app/views/main/admin/security/add/step2.js  |    6 +-
 23 files changed, 4083 insertions(+), 4000 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/controllers/global/cluster_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/cluster_controller.js b/ambari-web/app/controllers/global/cluster_controller.js
index fd8ed2c..275cf44 100644
--- a/ambari-web/app/controllers/global/cluster_controller.js
+++ b/ambari-web/app/controllers/global/cluster_controller.js
@@ -314,7 +314,6 @@ App.ClusterController = Em.Controller.extend({
         service.StackServices.is_installed = false;
       },this);
       App.stackServiceMapper.map(data);
-      App.config.setPreDefinedGlobalProperties();
       App.config.setPreDefinedServiceConfigs();
       var updater = App.router.get('updateController');
       self.updateLoadStatus('stackComponents');

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/controllers/main/admin/highAvailability_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/highAvailability_controller.js b/ambari-web/app/controllers/main/admin/highAvailability_controller.js
index 21ae94a..2f38124 100644
--- a/ambari-web/app/controllers/main/admin/highAvailability_controller.js
+++ b/ambari-web/app/controllers/main/admin/highAvailability_controller.js
@@ -17,7 +17,6 @@
  */
 
 var App = require('app');
-var totalHosts = 0;
 
 App.MainAdminHighAvailabilityController = Em.Controller.extend({
   name: 'mainAdminHighAvailabilityController',
@@ -106,8 +105,8 @@ App.MainAdminHighAvailabilityController = Em.Controller.extend({
 
   getSecurityStatusFromServerSuccessCallback: function (data) {
     var configs = data.Clusters.desired_configs;
-    if ('global' in configs) {
-      this.set('tag', configs['global'].tag);
+    if ('hadoop-env' in configs) {
+      this.set('tag', configs['hadoop-env'].tag);
       this.getServiceConfigsFromServer();
     } else {
       this.showErrorPopup(Em.I18n.t('admin.security.status.error'));
@@ -121,7 +120,7 @@ App.MainAdminHighAvailabilityController = Em.Controller.extend({
   getServiceConfigsFromServer: function () {
     var tags = [
       {
-        siteName: "global",
+        siteName: "hadoop-env",
         tagName: this.get('tag')
       }
     ];

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/controllers/main/admin/misc_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/misc_controller.js b/ambari-web/app/controllers/main/admin/misc_controller.js
index a732c83..83e15a2 100644
--- a/ambari-web/app/controllers/main/admin/misc_controller.js
+++ b/ambari-web/app/controllers/main/admin/misc_controller.js
@@ -57,7 +57,7 @@ App.MainAdminMiscController = App.MainServiceInfoConfigsController.extend({
     var configGroups = App.router.get('configurationController').getConfigsByTags(this.get('serviceConfigTags'));
     var configSet = App.config.mergePreDefinedWithLoaded(configGroups, [], this.get('serviceConfigTags'), serviceName);
 
-    var misc_configs = configSet.globalConfigs.filterProperty('serviceName', this.get('selectedService')).filterProperty('category', 'Users and Groups').filterProperty('isVisible', true);
+    var misc_configs = configSet.configs.filterProperty('serviceName', this.get('selectedService')).filterProperty('category', 'Users and Groups').filterProperty('isVisible', true);
 
     misc_configs = App.config.miscConfigVisibleProperty(misc_configs, installedServices);
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/controllers/main/admin/security.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/security.js b/ambari-web/app/controllers/main/admin/security.js
index af8c096..bbf21b0 100644
--- a/ambari-web/app/controllers/main/admin/security.js
+++ b/ambari-web/app/controllers/main/admin/security.js
@@ -266,8 +266,8 @@ App.MainAdminSecurityController = Em.Controller.extend({
   getSecurityStatusFromServerSuccessCallback: function (data) {
     var configs = data.Clusters.desired_configs;
     this.set('desiredConfigs', configs);
-    if ('global' in configs && 'hdfs-site' in configs) {
-      this.set('tag.global', configs['global'].tag);
+    if ('hadoop-env' in configs && 'hdfs-site' in configs) {
+      this.set('tag.hadoop-env', configs['hadoop-env'].tag);
       this.set('tag.hdfs-site', configs['hdfs-site'].tag);
       this.getServiceConfigsFromServer();
     }
@@ -279,8 +279,8 @@ App.MainAdminSecurityController = Em.Controller.extend({
   getServiceConfigsFromServer: function () {
     var tags = [
       {
-        siteName: "global",
-        tagName: this.get('tag.global')
+        siteName: "hadoop-env",
+        tagName: this.get('tag.hadoop-env')
       },
       {
         siteName: "hdfs-site",
@@ -289,7 +289,7 @@ App.MainAdminSecurityController = Em.Controller.extend({
     ];
 
     var data = App.router.get('configurationController').getConfigsByTags(tags);
-    var configs = data.findProperty('tag', this.get('tag.global')).properties;
+    var configs = data.findProperty('tag', this.get('tag.hadoop-env')).properties;
     if (configs && (configs['security_enabled'] === 'true' || configs['security_enabled'] === true)) {
       this.set('securityEnabled', true);
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/controllers/main/admin/security/disable.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/security/disable.js b/ambari-web/app/controllers/main/admin/security/disable.js
index 20b8121..0191185 100644
--- a/ambari-web/app/controllers/main/admin/security/disable.js
+++ b/ambari-web/app/controllers/main/admin/security/disable.js
@@ -146,7 +146,7 @@ App.MainAdminSecurityDisableController = App.MainAdminSecurityProgressController
     } else {
       serviceConfigTags.forEach(function (_serviceConfigTags) {
         _serviceConfigTags.newTagName = 'version' + (new Date).getTime();
-        if (_serviceConfigTags.siteName === 'global') {
+        if (_serviceConfigTags.siteName === 'hadoop-env') {
           this.deleteDisabledGlobalConfigs(secureProperties, _serviceConfigTags);
           _serviceConfigTags.configs.security_enabled = 'false';
         } else {

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/controllers/main/service/info/configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/info/configs.js b/ambari-web/app/controllers/main/service/info/configs.js
index d6bff63..03f6b97 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -33,7 +33,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
   selectedServiceConfigTypes: [],
   selectedServiceSupportsFinal: [],
   configGroups: [],
-  globalConfigs: [],
+  allConfigs: [],
   uiConfigs: [],
   customConfig: [],
   isApplyingChanges: false,
@@ -51,8 +51,8 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     return App.config.get('configMapping');
   }.property('App.config.configMapping'),
   configs: function () {
-    return  App.config.get('preDefinedGlobalProperties');
-  }.property('App.config.preDefinedGlobalProperties'),
+    return  App.config.get('preDefinedSiteProperties');
+  }.property('App.config.preDefinedSiteProperties'),
 
   secureConfigs: function () {
     if (App.get('isHadoop2Stack')) {
@@ -73,7 +73,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
    *
    * Example:
    * {
-   *  'global': 'version1',
    *  'hdfs-site': 'version1',
    *  'core-site': 'version1'
    * }
@@ -123,7 +122,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     this.set('filter', '');
     this.get('filterColumns').setEach('selected', false);
     this.get('stepConfigs').clear();
-    this.get('globalConfigs').clear();
+    this.get('allConfigs').clear();
     this.get('uiConfigs').clear();
     this.get('customConfig').clear();
     this.set('loadedGroupToOverrideSiteToTagMap', {});
@@ -342,33 +341,29 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     var advancedConfigs = this.get('advancedConfigs');
     //STEP 4: Load on-site config by service from server
     var configGroups = App.router.get('configurationController').getConfigsByTags(this.get('serviceConfigTags'));
-    //STEP 5: Merge global and on-site configs with pre-defined
+    //STEP 5: Merge on-site configs with pre-defined
     var configSet = App.config.mergePreDefinedWithLoaded(configGroups, advancedConfigs, this.get('serviceConfigTags'), serviceName);
     configSet = App.config.syncOrderWithPredefined(configSet);
     //var serviceConfigs = this.getSitesConfigProperties(advancedConfigs);
     var configs = configSet.configs;
-    //put global configs into globalConfigs to save them separately
-    this.set('globalConfigs', configSet.globalConfigs);
-
     //STEP 6: add advanced configs
-    //App.config.addAdvancedConfigs(configs, advancedConfigs, serviceName);
+    App.config.addAdvancedConfigs(configs, advancedConfigs, serviceName);
     //STEP 7: add custom configs
     App.config.addCustomConfigs(configs);
     //put properties from capacity-scheduler.xml into one config with textarea view
     if (this.get('content.serviceName') === 'YARN' && !App.supports.capacitySchedulerUi) {
       configs = App.config.fileConfigsIntoTextarea(configs, 'capacity-scheduler.xml');
     }
+    this.set('allConfigs', configs);
     //STEP 8: add configs as names of host components
-    this.addHostNamesToGlobalConfig();
-
-    var allConfigs = this.get('globalConfigs').concat(configs);
+    this.addHostNamesToConfig();
     //STEP 9: Load and add overriden configs of group
-    App.config.loadServiceConfigGroupOverrides(allConfigs, this.loadedGroupToOverrideSiteToTagMap, this.get('configGroups'), this.onLoadOverrides, this);
+    App.config.loadServiceConfigGroupOverrides(this.get('allConfigs'), this.loadedGroupToOverrideSiteToTagMap, this.get('configGroups'), this.onLoadOverrides, this);
   }.observes('selectedConfigGroup'),
 
   checkDatabaseProperties: function (serviceConfig) {
     if (!['OOZIE', 'HIVE'].contains(this.get('content.serviceName'))) return;
-    var configsToHide = ['oozie_hostname'];
+    var configsToHide = ['oozie_hostname', 'hive_hostname'];
     configsToHide.forEach(function (configName) {
       var property = serviceConfig.configs.findProperty('name', configName);
       if (property) property.set('isVisible', false);
@@ -387,37 +382,42 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     }
 
     if (serviceName || serviceConfig.serviceName === 'MISC') {
-      //STEP 11: render configs and wrap each in ServiceConfigProperty object
-      var self = this;
       // set recommended Defaults first then load the configs (including set validator)
-      this.setRecommendedDefaults(advancedConfigs).done(function () {
-        self.loadConfigs(allConfigs, serviceConfig);
-        self.checkOverrideProperty(serviceConfig);
-        self.checkDatabaseProperties(serviceConfig);
-        self.get('stepConfigs').pushObject(serviceConfig);
-        self.set('selectedService', self.get('stepConfigs').objectAt(0));
-        self.checkForSecureConfig(self.get('selectedService'));
-        self.set('dataIsLoaded', true);
-        self.set('hash', self.getHash());
-        self.set('isInit', false);
-      });
+      var s = App.StackService.find().findProperty('serviceName', this.get('content.serviceName'));
+      var defaultsProvider = s.get('defaultsProviders');
+      if (defaultsProvider) {
+        this.getInfoForDefaults(defaultsProvider);
+      } else {
+        Em.run(this, 'setDefaults');
+      }
     } else {
       this.set('selectedService', this.get('stepConfigs').objectAt(0));
       this.checkForSecureConfig(this.get('selectedService'));
       this.set('dataIsLoaded', true);
-
       this.set('hash', this.getHash());
       this.set('isInit', false);
     }
   },
 
+  setDefaults: function(){
+    var serviceConfig = App.config.createServiceConfig(this.get('content.serviceName'));
+    this.loadConfigs(this.get('allConfigs'), serviceConfig);
+    this.checkOverrideProperty(serviceConfig);
+    this.checkDatabaseProperties(serviceConfig);
+    this.get('stepConfigs').pushObject(serviceConfig);
+    this.set('selectedService', this.get('stepConfigs').objectAt(0));
+    this.checkForSecureConfig(this.get('selectedService'));
+    this.set('dataIsLoaded', true);
+    this.set('hash', this.getHash());
+    this.set('isInit', false);
+  }.observes('defaultsInfo'),
+
   /**
    * Changes format from Object to Array
    *
    * {
    *  'core-site': 'version1',
    *  'hdfs-site': 'version1',
-   *  'global': 'version2',
    *  ...
    * }
    *
@@ -499,6 +499,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
       hosts: this.getHostsInfo(response)
     };
     this.set('defaultsInfo', defaultsInfo);
+    this.setRecommendedDefaults(this.get('advancedConfigs'));
   },
 
   /**
@@ -632,15 +633,8 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
    */
   setRecommendedDefaults: function (advancedConfigs) {
     var s = App.StackService.find().findProperty('serviceName', this.get('content.serviceName'));
-    var dfd = $.Deferred();
     var defaultsProvider = s.get('defaultsProviders');
     var configsValidator = s.get('configsValidator');
-    if (!defaultsProvider) {
-      dfd.resolve();
-      return dfd.promise();
-    }
-    this.getInfoForDefaults(defaultsProvider);
-    this.addObserver('defaultsInfo.hosts.length', this, function () {
       var localDB = this.get('defaultsInfo');
       var recommendedDefaults = {};
       if (defaultsProvider) {
@@ -661,9 +655,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
       if (configsValidator) {
         configsValidator.set('recommendedDefaults', recommendedDefaults);
       }
-      dfd.resolve();
-    });
-    return dfd.promise();
   },
   /**
    * set isEditable property of config for admin
@@ -857,7 +848,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     var configs = this.get('stepConfigs').findProperty('serviceName', this.get('content.serviceName')).get('configs');
 
     if (selectedConfigGroup.get('isDefault')) {
-      this.saveGlobalConfigs(configs);
       if (this.get('content.serviceName') === 'YARN' && !App.supports.capacitySchedulerUi) {
         configs = App.config.textareaIntoFileConfigs(configs, 'capacity-scheduler.xml');
       }
@@ -1132,11 +1122,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
       }
     });
     sites.forEach(function (site) {
-      if (site.type === 'global') {
-        site.properties = this.createGlobalSiteObj(site.tag, site.properties).properties;
-      } else {
-        site.properties = this.createSiteObj(site.type, site.tag, site.properties).properties;
-      }
+      site.properties = this.createSiteObj(site.type, site.tag, site.properties).properties;
     }, this);
     return sites;
   },
@@ -1166,158 +1152,134 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     this.onDoPUTClusterConfigurations();
   },
   /**
-   * save new or change exist configs in global configs
+   * set hive hostnames in configs
    * @param configs
    */
-  saveGlobalConfigs: function (configs) {
-    var globalConfigs = this.get('globalConfigs');
-    configs.filterProperty('id', 'puppet var').forEach(function (uiConfigProperty) {
-      uiConfigProperty.set('value', App.config.trimProperty(uiConfigProperty));
-      if (globalConfigs.someProperty('name', uiConfigProperty.name)) {
-        var modelGlobalConfig = globalConfigs.findProperty('name', uiConfigProperty.name);
-        modelGlobalConfig.value = uiConfigProperty.value;
-      } else {
-        globalConfigs.pushObject({
-          name: uiConfigProperty.name,
-          value: uiConfigProperty.value
-        });
-      }
-    }, this);
-
-    this.setHiveHostName(globalConfigs);
-    this.setOozieHostName(globalConfigs);
-    this.set('globalConfigs', globalConfigs);
-  },
-
-  /**
-   * set hive hostnames in global configs
-   * @param globals
-   */
-  setHiveHostName: function (globals) {
-    if (globals.someProperty('name', 'hive_database')) {
-      var hiveDb = globals.findProperty('name', 'hive_database');
+  setHiveHostName: function (configs) {
+    if (configs.someProperty('name', 'hive_database')) {
+      var hiveDb = configs.findProperty('name', 'hive_database');
       if (hiveDb.value === 'New MySQL Database') {
-        var ambariHost = globals.findProperty('name', 'hive_ambari_host');
+        var ambariHost = configs.findProperty('name', 'hive_ambari_host');
         if (ambariHost) {
           ambariHost.name = 'hive_hostname';
         }
-        globals = globals.without(globals.findProperty('name', 'hive_existing_mysql_host'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_mysql_database'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_oracle_host'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_oracle_database'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_postgresql_host'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_postgresql_database'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_mysql_host'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_mysql_database'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_oracle_host'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_oracle_database'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_postgresql_host'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_postgresql_database'));
       } else if (hiveDb.value === 'Existing MySQL Database') {
-        var existingMySqlHost = globals.findProperty('name', 'hive_existing_mysql_host');
+        var existingMySqlHost = configs.findProperty('name', 'hive_existing_mysql_host');
         if (existingMySqlHost) {
           existingMySqlHost.name = 'hive_hostname';
         }
-        globals = globals.without(globals.findProperty('name', 'hive_ambari_host'));
-        globals = globals.without(globals.findProperty('name', 'hive_ambari_database'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_oracle_host'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_oracle_database'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_postgresql_host'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_postgresql_database'));
+        configs = configs.without(configs.findProperty('name', 'hive_ambari_host'));
+        configs = configs.without(configs.findProperty('name', 'hive_ambari_database'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_oracle_host'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_oracle_database'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_postgresql_host'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_postgresql_database'));
       } else if (hiveDb.value === Em.I18n.t('services.service.config.hive.oozie.postgresql')) {
-        var existingPostgreSqlHost = globals.findProperty('name', 'hive_existing_postgresql_host');
+        var existingPostgreSqlHost = configs.findProperty('name', 'hive_existing_postgresql_host');
         if (existingPostgreSqlHost) {
           existingPostgreSqlHost.name = 'hive_hostname';
         }
-        globals = globals.without(globals.findProperty('name', 'hive_ambari_host'));
-        globals = globals.without(globals.findProperty('name', 'hive_ambari_database'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_mysql_host'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_mysql_database'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_oracle_host'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_oracle_database'));
+        configs = configs.without(configs.findProperty('name', 'hive_ambari_host'));
+        configs = configs.without(configs.findProperty('name', 'hive_ambari_database'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_mysql_host'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_mysql_database'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_oracle_host'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_oracle_database'));
       }
       else { //existing oracle database
-        var existingOracleHost = globals.findProperty('name', 'hive_existing_oracle_host');
+        var existingOracleHost = configs.findProperty('name', 'hive_existing_oracle_host');
         if (existingOracleHost) {
           existingOracleHost.name = 'hive_hostname';
         }
-        globals = globals.without(globals.findProperty('name', 'hive_ambari_host'));
-        globals = globals.without(globals.findProperty('name', 'hive_ambari_database'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_mysql_host'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_mysql_database'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_postgresql_host'));
-        globals = globals.without(globals.findProperty('name', 'hive_existing_postgresql_database'));
+        configs = configs.without(configs.findProperty('name', 'hive_ambari_host'));
+        configs = configs.without(configs.findProperty('name', 'hive_ambari_database'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_mysql_host'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_mysql_database'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_postgresql_host'));
+        configs = configs.without(configs.findProperty('name', 'hive_existing_postgresql_database'));
       }
 
     }
   },
 
   /**
-   * set oozie hostnames in global configs
-   * @param globals
+   * set oozie hostnames in configs
+   * @param configs
    */
-  setOozieHostName: function (globals) {
+  setOozieHostName: function (configs) {
     var dbHostPropertyName = null;
-    if (globals.someProperty('name', 'oozie_database')) {
-      var oozieDb = globals.findProperty('name', 'oozie_database');
+    if (configs.someProperty('name', 'oozie_database')) {
+      var oozieDb = configs.findProperty('name', 'oozie_database');
       if (oozieDb.value === 'New Derby Database') {
-        globals = globals.without(globals.findProperty('name', 'oozie_ambari_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_ambari_database'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_mysql_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_mysql_database'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_oracle_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_oracle_database'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_postgresql_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_postgresql_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_ambari_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_ambari_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_mysql_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_mysql_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_oracle_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_oracle_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_postgresql_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_postgresql_database'));
       } else if (oozieDb.value === 'New MySQL Database') {
-        var ambariHost = globals.findProperty('name', 'oozie_ambari_host');
+        var ambariHost = configs.findProperty('name', 'oozie_ambari_host');
         if (ambariHost) {
           ambariHost.name = 'oozie_hostname';
         }
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_mysql_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_mysql_database'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_oracle_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_oracle_database'));
-        globals = globals.without(globals.findProperty('name', 'oozie_derby_database'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_postgresql_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_postgresql_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_mysql_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_mysql_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_oracle_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_oracle_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_derby_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_postgresql_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_postgresql_database'));
 
       } else if (oozieDb.value === 'Existing MySQL Database') {
-        var existingMySqlHost = globals.findProperty('name', 'oozie_existing_mysql_host');
+        var existingMySqlHost = configs.findProperty('name', 'oozie_existing_mysql_host');
         if (existingMySqlHost) {
           dbHostPropertyName = 'oozie_existing_mysql_host';
         }
-        globals = globals.without(globals.findProperty('name', 'oozie_ambari_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_ambari_database'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_oracle_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_oracle_database'));
-        globals = globals.without(globals.findProperty('name', 'oozie_derby_database'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_postgresql_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_postgresql_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_ambari_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_ambari_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_oracle_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_oracle_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_derby_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_postgresql_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_postgresql_database'));
       } else if (oozieDb.value === Em.I18n.t('services.service.config.hive.oozie.postgresql')) {
-        var existingPostgreSqlHost = globals.findProperty('name', 'oozie_existing_postgresql_host');
+        var existingPostgreSqlHost = configs.findProperty('name', 'oozie_existing_postgresql_host');
         if (existingPostgreSqlHost) {
           dbHostPropertyName = 'oozie_existing_postgresql_host';
         }
-        globals = globals.without(globals.findProperty('name', 'oozie_ambari_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_ambari_database'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_mysql_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_mysql_database'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_oracle_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_oracle_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_ambari_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_ambari_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_mysql_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_mysql_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_oracle_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_oracle_database'));
       }
       else { //existing oracle database
-        var existingOracleHost = globals.findProperty('name', 'oozie_existing_oracle_host');
+        var existingOracleHost = configs.findProperty('name', 'oozie_existing_oracle_host');
         if (existingOracleHost) {
           dbHostPropertyName = 'oozie_existing_oracle_host';
         }
-        globals = globals.without(globals.findProperty('name', 'oozie_ambari_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_ambari_database'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_mysql_host'));
-        globals = globals.without(globals.findProperty('name', 'oozie_existing_mysql_database'));
-        globals = globals.without(globals.findProperty('name', 'oozie_derby_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_ambari_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_ambari_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_mysql_host'));
+        configs = configs.without(configs.findProperty('name', 'oozie_existing_mysql_database'));
+        configs = configs.without(configs.findProperty('name', 'oozie_derby_database'));
       }
 
     }
 
     if (dbHostPropertyName) {
-      var oozieHostNameProperty = App.ServiceConfigProperty.create(App.config.get('preDefinedGlobalProperties').findProperty('name', 'oozie_hostname'));
-      oozieHostNameProperty.set('value', globals.findProperty('name', dbHostPropertyName).get('value'));
-      globals.pushObject(oozieHostNameProperty);
+      var oozieHostNameProperty = App.ServiceConfigProperty.create(App.config.get('preDefinedSiteProperties').findProperty('name', 'oozie_hostname'));
+      oozieHostNameProperty.set('value', configs.findProperty('name', dbHostPropertyName).get('value'));
+      configs.pushObject(oozieHostNameProperty);
     }
   },
 
@@ -1327,11 +1289,12 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
    */
   saveSiteConfigs: function (configs) {
     //storedConfigs contains custom configs as well
-    var serviceConfigProperties = configs.filterProperty('id', 'site property');
-    this.formatConfigValues(serviceConfigProperties);
+    this.setHiveHostName(configs);
+    this.setOozieHostName(configs);
+    this.formatConfigValues(configs);
     var mappedConfigs = App.config.excludeUnsupportedConfigs(this.get('configMapping').all(), App.Service.find().mapProperty('serviceName'));
     var allUiConfigs = this.loadUiSideConfigs(mappedConfigs);
-    this.set('uiConfigs', serviceConfigProperties.concat(allUiConfigs));
+    this.set('uiConfigs', configs.concat(allUiConfigs));
   },
 
   formatConfigValues: function (serviceConfigProperties) {
@@ -1381,7 +1344,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
   },
 
   /**
-   * return global config value
+   * return config value
    * @param templateName
    * @param expression
    * @return {Object}
@@ -1400,7 +1363,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     if (express != null) {
       express.forEach(function (_express) {
         var index = parseInt(_express.match(/\[([\d]*)(?=\])/)[1]);
-        var globalObj = this.get('globalConfigs').findProperty('name', templateName[index]);
+        var globalObj = this.get('allConfigs').findProperty('name', templateName[index]);
         if (globalObj) {
           var globOverride = globalObj.overrides;
           if (globOverride != null) {
@@ -1475,9 +1438,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     console.log("TRACE: Inside " + siteName);
     var configObject;
     switch (siteName) {
-      case 'global':
-        configObject = this.createGlobalSiteObj(tagName, this.get('globalConfigs'));
-        break;
       case 'core-site':
         if (this.get('content.serviceName') === 'HDFS' || this.get('content.serviceName') === 'GLUSTERFS') {
           configObject = this.createCoreSiteObj(tagName);
@@ -1674,37 +1634,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
   },
 
   /**
-   * create global site object
-   * @param {String} tagName
-   * @param {Array} globalConfigs array of config objects
-   * @return {{"type": String, "tag": String, "properties": Object}}
-   * @method createGlobalSiteObj
-   */
-  createGlobalSiteObj: function (tagName, globalConfigs) {
-    var heapsizeException = ['hadoop_heapsize', 'yarn_heapsize', 'nodemanager_heapsize', 'resourcemanager_heapsize', 'apptimelineserver_heapsize', 'jobhistory_heapsize'];
-    var globalSiteProperties = {};
-    globalConfigs.forEach(function (_globalSiteObj) {
-      // do not pass any globalConfigs whose name ends with _host or _hosts
-      if (_globalSiteObj.isRequiredByAgent !== false) {
-        // append "m" to JVM memory options except for hadoop_heapsize
-        if (/_heapsize|_newsize|_maxnewsize$/.test(_globalSiteObj.name) && !heapsizeException.contains(_globalSiteObj.name)) {
-          _globalSiteObj.value += "m";
-        }
-        globalSiteProperties[_globalSiteObj.name] = App.config.escapeXMLCharacters(_globalSiteObj.value);
-        //this.recordHostOverride(_globalSiteObj, 'global', tagName, this);
-        //console.log("TRACE: name of the global property is: " + _globalSiteObj.name);
-        //console.log("TRACE: value of the global property is: " + _globalSiteObj.value);
-      }
-    }, this);
-    var result = {"type": "global", "tag": tagName, "properties": globalSiteProperties};
-    var attributes = this.getConfigAttributes(globalConfigs);
-    if (attributes) {
-      result['properties_attributes'] = attributes;
-    }
-    return result;
-  },
-
-  /**
    * create core site object
    * @param tagName
    * @return {{"type": String, "tag": String, "properties": Object}}
@@ -1733,8 +1662,15 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
    * @return {Object}
    */
   createSiteObj: function (siteName, tagName, siteObj) {
+    var heapsizeException = ['hadoop_heapsize', 'yarn_heapsize', 'nodemanager_heapsize', 'resourcemanager_heapsize', 'apptimelineserver_heapsize', 'jobhistory_heapsize'];
     var siteProperties = {};
     siteObj.forEach(function (_siteObj) {
+      if (_siteObj.isRequiredByAgent !== false) {
+        if (/_heapsize|_newsize|_maxnewsize$/.test(_siteObj.name) && !heapsizeException.contains(_siteObj.name)) {
+          Em.set(_siteObj, "value",  _siteObj.value + "m");
+        }
+        siteProperties[_siteObj.name] = App.config.escapeXMLCharacters(_siteObj.value);
+      }
       switch (siteName) {
         case 'falcon-startup.properties':
         case 'falcon-runtime.properties':
@@ -1793,13 +1729,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
 
   hostComponentsmapping: [
     {
-      hostProperty: 'namenode_host',
-      componentName: 'NAMENODE',
-      serviceName: 'HDFS',
-      serviceUseThis: [],
-      m: true
-    },
-    {
       hostProperty: 'snamenode_host',
       componentName: 'SECONDARY_NAMENODE',
       serviceName: 'HDFS',
@@ -1902,12 +1831,12 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
   ],
 
   /**
-   * Adds host name of master component to global config;
+   * Adds host name of master component to config;
    * @method addHostNamesToGlobalConfig
    */
-  addHostNamesToGlobalConfig: function () {
+  addHostNamesToConfig: function () {
     var serviceName = this.get('content.serviceName');
-    var globalConfigs = this.get('globalConfigs');
+    var configs = this.get('allConfigs');
     //namenode_host is required to derive "fs.default.name" a property of core-site
     try {
       this.setHostForService('HDFS', 'NAMENODE', 'namenode_host', true);
@@ -1923,15 +1852,15 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     }, this);
 
     if (serviceName === 'HIVE') {
-      var hiveDb = globalConfigs.findProperty('name', 'hive_database').value;
+      var hiveDb = configs.findProperty('name', 'hive_database').value;
       if (['Existing MySQL Database', 'Existing Oracle Database', 'Existing PostgreSQL Database'].contains(hiveDb)) {
-        globalConfigs.findProperty('name', 'hive_hostname').isVisible = true;
+        configs.findProperty('name', 'hive_hostname').isVisible = true;
       }
     }
     if (serviceName === 'OOZIE') {
-      var oozieDb = globalConfigs.findProperty('name', 'oozie_database').value;
+      var oozieDb = configs.findProperty('name', 'oozie_database').value;
       if (['Existing MySQL Database', 'Existing Oracle Database', 'Existing PostgreSQL Database'].contains(oozieDb)) {
-        globalConfigs.findProperty('name', 'oozie_hostname').isVisible = true;
+        configs.findProperty('name', 'oozie_hostname').isVisible = true;
       }
     }
   },
@@ -1944,12 +1873,12 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
    * @method setHostForService
    */
   setHostForService: function (serviceName, componentName, hostProperty, multiple) {
-    var globalConfigs = this.get('globalConfigs');
+    var configs = this.get('allConfigs');
     var serviceConfigs = this.get('serviceConfigs').findProperty('serviceName', serviceName).get('configs');
     var hostConfig = serviceConfigs.findProperty('name', hostProperty);
     if (hostConfig) {
       hostConfig.defaultValue = this.getMasterComponentHostValue(componentName, multiple);
-      globalConfigs.push(hostConfig);
+      configs.push(hostConfig);
     }
   },
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/controllers/main/service/reassign_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/reassign_controller.js b/ambari-web/app/controllers/main/service/reassign_controller.js
index 0852345..db39b6a 100644
--- a/ambari-web/app/controllers/main/service/reassign_controller.js
+++ b/ambari-web/app/controllers/main/service/reassign_controller.js
@@ -102,8 +102,8 @@ App.ReassignMasterController = App.WizardController.extend({
 
   getSecurityStatusSuccessCallback: function (data) {
     var configs = data.Clusters.desired_configs;
-    if ('global' in configs) {
-      this.getServiceConfigsFromServer(configs['global'].tag);
+    if ('hadoop-env' in configs) {
+      this.getServiceConfigsFromServer(configs['hadoop-env'].tag);
     }
     else {
       console.error('Cannot get security status from server');
@@ -113,7 +113,7 @@ App.ReassignMasterController = App.WizardController.extend({
   getServiceConfigsFromServer: function (tag) {
     var tags = [
       {
-        siteName: "global",
+        siteName: "hadoop-env",
         tagName: tag
       }
     ];

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/controllers/wizard/step7_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step7_controller.js b/ambari-web/app/controllers/wizard/step7_controller.js
index 3aa1190..1c4debc 100644
--- a/ambari-web/app/controllers/wizard/step7_controller.js
+++ b/ambari-web/app/controllers/wizard/step7_controller.js
@@ -647,7 +647,6 @@ App.WizardStep7Controller = Em.Controller.extend({
       return;
     }
     this.clearStep();
-    App.config.setPreDefinedGlobalProperties();
     App.config.setPreDefinedServiceConfigs();
 
     //STEP 1: Load advanced configs

http://git-wip-us.apache.org/repos/asf/ambari/blob/6244c49b/ambari-web/app/controllers/wizard/step8_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step8_controller.js b/ambari-web/app/controllers/wizard/step8_controller.js
index cf16a6e..8545c01 100644
--- a/ambari-web/app/controllers/wizard/step8_controller.js
+++ b/ambari-web/app/controllers/wizard/step8_controller.js
@@ -68,11 +68,6 @@ App.WizardStep8Controller = Em.Controller.extend({
   configs: [],
 
   /**
-   * @type {Object[]}
-   */
-  globals: [],
-
-  /**
    * All configs
    * @type {Array}
    */
@@ -131,28 +126,6 @@ App.WizardStep8Controller = Em.Controller.extend({
   }.property('App.router.mainAdminSecurityController.securityEnabled'),
 
   /**
-   * During page save time, we set the host overrides to the server.
-   * The new host -> site:tag map is stored below. This will be
-   * useful during save, to update the host's host components. Also,
-   * it will be useful in deletion of overrides.
-   *
-   * Example:
-   * {
-   *  'hostname1': {
-   *    'global': {
-   *      'tagName': 'tag3187261938_hostname1',
-   *      'map': {
-   *        'hadoop_heapsize': '2048m'
-   *      }
-   *    }
-   *  }
-   * }
-   *
-   * @see loadedHostToOverrideSiteToTagMap
-   */
-  savedHostToOverrideSiteToTagMap: {},
-
-  /**
    * Selected config group
    * @type {Object}
    */
@@ -207,7 +180,6 @@ App.WizardStep8Controller = Em.Controller.extend({
   clearStep: function () {
     this.get('services').clear();
     this.get('configs').clear();
-    this.get('globals').clear();
     this.get('clusterInfo').clear();
     this.get('serviceConfigTags').clear();
     this.set('servicesInstalled', false);
@@ -228,7 +200,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     this.clearStep();
     if (this.get('content.serviceConfigProperties')) {
       this.formatProperties();
-      this.loadGlobals();
       this.loadConfigs();
     }
     this.loadClusterInfo();
@@ -248,39 +219,20 @@ App.WizardStep8Controller = Em.Controller.extend({
   },
 
   /**
-   * Load global configs and remove some of them:
-   * <ul>
-   *   <li>Unused DB properties for Hive</li>
-   *   <li>Unused DB properties for Oozie</li>
-   * <ul>
-   * @method loadGlobals
-   */
-  loadGlobals: function () {
-    var globals = this.get('content.serviceConfigProperties').filterProperty('id', 'puppet var');
-    if (globals.someProperty('name', 'hive_database')) {
-      globals = this.removeHiveConfigs(globals);
-    }
-    if (globals.someProperty('name', 'oozie_database')) {
-      globals = this.removeOozieConfigs(globals);
-    }
-    this.set('globals', globals);
-  },
-
-  /**
    * Remove unused Hive configs
-   * @param {Ember.Enumerable} globals
+   * @param {Ember.Enumerable} configs
    * @returns {Ember.Enumerable}
    * @method removeHiveConfigs
    */
-  removeHiveConfigs: function (globals) {
-    var hiveDb = globals.findProperty('name', 'hive_database');
+  removeHiveConfigs: function (configs) {
+    var hiveDb = configs.findProperty('name', 'hive_database');
     var hiveDbType = {name: 'hive_database_type', value: 'mysql'};
 
     var hive_properties = Em.A([]);
 
     if (hiveDb.value === 'New MySQL Database') {
-      if (globals.someProperty('name', 'hive_ambari_host')) {
-        globals.findProperty('name', 'hive_hostname').value = globals.findProperty('name', 'hive_ambari_host').value;
+      if (configs.someProperty('name', 'hive_ambari_host')) {
+        configs.findProperty('name', 'hive_hostname').value = configs.findProperty('name', 'hive_ambari_host').value;
         hiveDbType.value = 'mysql';
       }
       hive_properties = Em.A(['hive_existing_mysql_host', 'hive_existing_mysql_database', 'hive_existing_oracle_host',
@@ -288,20 +240,20 @@ App.WizardStep8Controller = Em.Controller.extend({
     }
     else {
       if (hiveDb.value === 'Existing MySQL Database') {
-        globals.findProperty('name', 'hive_hostname').value = globals.findProperty('name', 'hive_existing_mysql_host').value;
+        configs.findProperty('name', 'hive_hostname').value = configs.findProperty('name', 'hive_existing_mysql_host').value;
         hiveDbType.value = 'mysql';
         hive_properties = Em.A(['hive_ambari_host', 'hive_ambari_database', 'hive_existing_oracle_host',
           'hive_existing_oracle_database', 'hive_existing_postgresql_host', 'hive_existing_postgresql_database']);
       }
       else {
         if (hiveDb.value === Em.I18n.t('services.service.config.hive.oozie.postgresql')) {
-          globals.findProperty('name', 'hive_hostname').value = globals.findProperty('name', 'hive_existing_postgresql_host').value;
+          configs.findProperty('name', 'hive_hostname').value = configs.findProperty('name', 'hive_existing_postgresql_host').value;
           hiveDbType.value = 'postgres';
           hive_properties = Em.A(['hive_ambari_host', 'hive_ambari_database', 'hive_existing_oracle_host',
             'hive_existing_oracle_database', 'hive_existing_mysql_host', 'hive_existing_mysql_database']);
         }
         else { //existing oracle database
-          globals.findProperty('name', 'hive_hostname').value = globals.findProperty('name', 'hive_existing_oracle_host').value;
+          configs.findProperty('name', 'hive_hostname').value = configs.findProperty('name', 'hive_existing_oracle_host').value;
           hiveDbType.value = 'oracle';
           hive_properties = Em.A(['hive_ambari_host', 'hive_ambari_database', 'hive_existing_mysql_host',
             'hive_existing_mysql_database', 'hive_existing_postgresql_host', 'hive_existing_postgresql_database']);
@@ -310,27 +262,27 @@ App.WizardStep8Controller = Em.Controller.extend({
     }
 
     hive_properties.forEach(function (property) {
-      globals = globals.without(globals.findProperty('name', property));
+      configs = configs.without(configs.findProperty('name', property));
     });
 
-    globals.pushObject(hiveDbType);
-    return globals;
+    configs.pushObject(hiveDbType);
+    return configs;
   },
 
   /**
    * Remove unused Oozie configs
-   * @param {Ember.Enumerable} globals
+   * @param {Ember.Enumerable} configs
    * @returns {Ember.Enumerable}
    * @method removeOozieConfigs
    */
-  removeOozieConfigs: function (globals) {
-    var oozieDb = globals.findProperty('name', 'oozie_database');
+  removeOozieConfigs: function (configs) {
+    var oozieDb = configs.findProperty('name', 'oozie_database');
     var oozieDbType = {name: 'oozie_database_type'};
 
     var oozie_properties = Em.A(['oozie_ambari_host', 'oozie_ambari_database']);
 
     if (oozieDb.value === 'New Derby Database') {
-      globals.findProperty('name', 'oozie_hostname').value = globals.findProperty('name', 'oozie_ambari_host').value;
+      configs.findProperty('name', 'oozie_hostname').value = configs.findProperty('name', 'oozie_ambari_host').value;
       oozieDbType.value = 'derby';
       oozie_properties = Em.A(['oozie_ambari_host', 'oozie_ambari_database', 'oozie_existing_mysql_host',
         'oozie_existing_mysql_database', 'oozie_existing_oracle_host', 'oozie_existing_oracle_database',
@@ -338,20 +290,20 @@ App.WizardStep8Controller = Em.Controller.extend({
     }
     else {
       if (oozieDb.value === 'Existing MySQL Database') {
-        globals.findProperty('name', 'oozie_hostname').value = globals.findProperty('name', 'oozie_existing_mysql_host').value;
+        configs.findProperty('name', 'oozie_hostname').value = configs.findProperty('name', 'oozie_existing_mysql_host').value;
         oozieDbType.value = 'mysql';
         oozie_properties = Em.A(['oozie_ambari_host', 'oozie_ambari_database', 'oozie_existing_oracle_host',
           'oozie_existing_oracle_database', 'oozie_derby_database', 'oozie_existing_postgresql_host', 'oozie_existing_postgresql_database']);
       }
       else {
         if (oozieDb.value === Em.I18n.t('services.service.config.hive.oozie.postgresql')) {
-          globals.findProperty('name', 'oozie_hostname').value = globals.findProperty('name', 'oozie_existing_postgresql_host').value;
+          configs.findProperty('name', 'oozie_hostname').value = configs.findProperty('name', 'oozie_existing_postgresql_host').value;
           oozieDbType.value = 'postgresql';
           oozie_properties = Em.A(['oozie_ambari_host', 'oozie_ambari_database', 'oozie_existing_oracle_host',
             'oozie_existing_oracle_database', 'oozie_existing_mysql_host', 'oozie_existing_mysql_database']);
         }
         else { // existing oracle database
-          globals.findProperty('name', 'oozie_hostname').value = globals.findProperty('name', 'oozie_existing_oracle_host').value;
+          configs.findProperty('name', 'oozie_hostname').value = configs.findProperty('name', 'oozie_existing_oracle_host').value;
           oozieDbType.value = 'oracle';
           oozie_properties = Em.A(['oozie_ambari_host', 'oozie_ambari_database', 'oozie_existing_mysql_host',
             'oozie_existing_mysql_database', 'oozie_derby_database', 'oozie_existing_postgresql_host', 'oozie_existing_postgresql_database']);
@@ -359,10 +311,10 @@ App.WizardStep8Controller = Em.Controller.extend({
       }
     }
     oozie_properties.forEach(function (property) {
-      globals = globals.without(globals.findProperty('name', property));
+      configs = configs.without(configs.findProperty('name', property));
     });
-    globals.pushObject(oozieDbType);
-    return globals;
+    configs.pushObject(oozieDbType);
+    return configs;
   },
 
   /**
@@ -371,13 +323,19 @@ App.WizardStep8Controller = Em.Controller.extend({
    */
   loadConfigs: function () {
     //storedConfigs contains custom configs as well
-    var serviceConfigProperties = this.get('content.serviceConfigProperties').filterProperty('id', 'site property');
-    serviceConfigProperties.forEach(function (_config) {
+    var configs = this.get('content.serviceConfigProperties');
+    if (configs.someProperty('name', 'hive_database')) {
+      configs = this.removeHiveConfigs(configs);
+    }
+    if (configs.someProperty('name', 'oozie_database')) {
+      configs = this.removeOozieConfigs(configs);
+    }
+    configs.forEach(function (_config) {
       _config.value = (typeof _config.value === "boolean") ? _config.value.toString() : _config.value;
     });
     var mappedConfigs = App.config.excludeUnsupportedConfigs(this.get('configMapping'), this.get('selectedServices').mapProperty('serviceName'));
     var uiConfigs = this.loadUiSideConfigs(mappedConfigs);
-    this.set('configs', serviceConfigProperties.concat(uiConfigs));
+    this.set('configs', configs.concat(uiConfigs));
   },
 
   /**
@@ -402,7 +360,7 @@ App.WizardStep8Controller = Em.Controller.extend({
     }, this);
     var dependentConfig = $.extend(true, [], configMapping.filterProperty('foreignKey'));
     dependentConfig.forEach(function (_config) {
-      App.config.setConfigValue(uiConfig, this.get('content.serviceConfigProperties'), _config, this.get('globals'));
+      App.config.setConfigValue(uiConfig, this.get('content.serviceConfigProperties'), _config);
       uiConfig.pushObject({
         "id": "site property",
         "name": _config._name || _config.name,
@@ -482,9 +440,9 @@ App.WizardStep8Controller = Em.Controller.extend({
     express.forEach(function (_express) {
       //console.log("The value of template is: " + _express);
       var index = parseInt(_express.match(/\[([\d]*)(?=\])/)[1]);
-      if (this.get('globals').someProperty('name', templateName[index])) {
+      if (this.get('configs').someProperty('name', templateName[index])) {
         //console.log("The name of the variable is: " + this.get('content.serviceConfigProperties').findProperty('name', templateName[index]).name);
-        var globalObj = this.get('globals').findProperty('name', templateName[index]);
+        var globalObj = this.get('configs').findProperty('name', templateName[index]);
         var globValue = globalObj.value;
         // Hack for templeton.zookeeper.hosts
         var preReplaceValue = null;
@@ -876,7 +834,7 @@ App.WizardStep8Controller = Em.Controller.extend({
   updateConfigurations: function (configsToUpdate) {
     var configurationController = App.router.get('mainServiceInfoConfigsController');
     var configs = configsToUpdate.filter(function(config) {
-      return !!config.filename && !/^(global|core)/.test(config.filename);
+      return !!config.filename && !/^(core)/.test(config.filename) && config.filename.indexOf('env')==-1;
     });
     var serviceNames = configs.mapProperty('serviceName').uniq();
     var configsMap = [];
@@ -1419,54 +1377,81 @@ App.WizardStep8Controller = Em.Controller.extend({
       this.get('serviceConfigTags').pushObject(this.createSiteObj('hdfs-site', false, tag));
       this.get('serviceConfigTags').pushObject(this.createLog4jObj('hdfs', tag));
     }
-    var globalSiteObj = this.createGlobalSiteObj(tag);
     if (this.get('content.controllerName') == 'addServiceController') {
       tag = 'version' + (new Date).getTime();
-      globalSiteObj.tag = tag;
       coreSiteObject.tag = tag;
       this.get('serviceConfigTags').pushObject(coreSiteObject);
+      //for Add Service save config of new and installed services either
+      selectedServices = selectedServices.concat(this.get('installedServices'));
     }
-    this.get('serviceConfigTags').pushObject(globalSiteObj);
 
     var objMap = {
+      HDFS: {site: [
+        {filename: 'hdfs-site', isXmlFile: true},
+        {filename: 'hadoop-env', isXmlFile: true}
+      ], log4j: ['hdfs']},
+      GANGLIA: {site: [
+        {filename: 'ganglia-env', isXmlFile: true}
+      ], log4j: []},
+      NAGIOS: {site: [
+        {filename: 'nagios-env', isXmlFile: true}
+      ], log4j: []},
+      STORM: {site: [
+        {filename: 'storm-env', isXmlFile: true}
+      ], log4j: []},
       MAPREDUCE: {site: [
-        {filename: 'mapred-site', isXmlFile: true}
+        {filename: 'mapred-site', isXmlFile: true},
+        {filename: 'mapred-env', isXmlFile: true}
       ], log4j: ['mapreduce']},
       MAPREDUCE2: {site: [
-        {filename: 'mapred-site', isXmlFile: true}
+        {filename: 'mapred-site', isXmlFile: true},
+        {filename: 'mapred-env', isXmlFile: true}
       ], log4j: ['mapreduce2']},
       YARN: {site: [
         {filename: 'yarn-site', isXmlFile: true},
-        {filename: 'capacity-scheduler', isXmlFile: true}
+        {filename: 'capacity-scheduler', isXmlFile: true},
+        {filename: 'yarn-env', isXmlFile: true}
       ], log4j: ['yarn']},
       HBASE: {site: [
-        {filename: 'hbase-site', isXmlFile: true}
+        {filename: 'hbase-site', isXmlFile: true},
+        {filename: 'hbase-env', isXmlFile: true}
       ], log4j: ['hbase']},
       OOZIE: {site: [
-        {filename: 'oozie-site', isXmlFile: true}
+        {filename: 'oozie-site', isXmlFile: true},
+        {filename: 'oozie-env', isXmlFile: true}
       ], log4j: ['oozie']},
       HIVE: {site: [
-        {filename: 'hive-site', isXmlFile: true}
+        {filename: 'hive-site', isXmlFile: true},
+        {filename: 'hive-env', isXmlFile: true}
       ], log4j: ['hive', 'hive-exec']},
       WEBHCAT: {site: [
-        {filename: 'webhcat-site', isXmlFile: true}
+        {filename: 'webhcat-site', isXmlFile: true},
+        {filename: 'webhcat-env', isXmlFile: true}
       ], log4j: []},
       HUE: {site: [
-        {filename: 'hue-site', isXmlFile: true}
+        {filename: 'hue-site', isXmlFile: true},
+        {filename: 'hue-env', isXmlFile: true}
       ], log4j: []},
       PIG: {site: [
-        {filename: 'pig-properties', isXmlFile: false}
+        {filename: 'pig-properties', isXmlFile: false},
+        {filename: 'pig-env', isXmlFile: true}
       ], log4j: ['pig']},
       FALCON: {site: [
         {filename: 'falcon-startup.properties', isXmlFile: false},
-        {filename: 'falcon-runtime.properties', isXmlFile: false}
+        {filename: 'falcon-runtime.properties', isXmlFile: false},
+        {filename: 'falcon-env', isXmlFile: true}
       ], log4j: []},
       TEZ: {site: [
-        {filename: 'tez-site', isXmlFile: true}
+        {filename: 'tez-site', isXmlFile: true},
+        {filename: 'tez-env', isXmlFile: true}
       ], log4j: []},
-      ZOOKEEPER: {site: [], log4j: ['zookeeper']},
+      SQOOP: {site: [
+        {filename: 'sqoop-env', isXmlFile: true}
+      ], log4j: []},
+      ZOOKEEPER: {site: [{filename: 'zookeeper-env', isXmlFile: true}], log4j: ['zookeeper']},
       FLUME: {site: [
-        {filename: 'flume-conf', isXmlFile: false}
+        {filename: 'flume-conf', isXmlFile: false},
+        {filename: 'flume-env', isXmlFile: true}
       ], log4j: []}
     };
 
@@ -1620,40 +1605,6 @@ App.WizardStep8Controller = Em.Controller.extend({
   },
 
   /**
-   * Create Global Site object
-   * @returns {{type: string, tag: string, properties: {}}}
-   * @method createGlobalSiteObj
-   */
-  createGlobalSiteObj: function (tag) {
-    var globalSiteProperties = {};
-    var globalSiteObj = this.get('globals');
-    var isGLUSTERFSSelected = this.get('selectedServices').someProperty('serviceName', 'GLUSTERFS');
-
-    // screen out the GLUSTERFS-specific global config entries when they are not required
-    if (!isGLUSTERFSSelected) {
-      globalSiteObj = globalSiteObj.filter(function (_config) {
-        return !_config.name.contains("fs_glusterfs");
-      });
-    }
-
-    globalSiteObj.forEach(function (globalConfig) {
-      var heapsizeExceptions = ['hadoop_heapsize', 'yarn_heapsize', 'nodemanager_heapsize', 'resourcemanager_heapsize', 'apptimelineserver_heapsize', 'jobhistory_heapsize'];
-      // do not pass any globals whose name ends with _host or _hosts
-      if (globalConfig.isRequiredByAgent !== false) {
-        // append "m" to JVM memory options except for heapsizeExtensions
-        if (/_heapsize|_newsize|_maxnewsize$/.test(globalConfig.name) && !heapsizeExceptions.contains(globalConfig.name)) {
-          globalSiteProperties[globalConfig.name] = globalConfig.value + "m";
-        } else {
-          globalSiteProperties[globalConfig.name] = App.config.escapeXMLCharacters(globalConfig.value);
-        }
-      }
-    }, this);
-    // we don't expose gmond_user to the user; it needs to be the same as gmetad_user
-    globalSiteProperties['gmond_user'] = globalSiteProperties['gmetad_user'];
-    return {"type": "global", "tag": tag, "properties": globalSiteProperties};
-  },
-
-  /**
    * Create Core Site object
    * @returns {{type: string, tag: string, properties: {}}}
    * @method createCoreSiteObj
@@ -1666,11 +1617,11 @@ App.WizardStep8Controller = Em.Controller.extend({
       coreSiteProperties = {},
     // some configs needs to be skipped if services are not selected
       isOozieSelected = installedAndSelectedServices.someProperty('serviceName', 'OOZIE'),
-      oozieUser = this.get('globals').someProperty('name', 'oozie_user') ? this.get('globals').findProperty('name', 'oozie_user').value : null,
+      oozieUser = this.get('configs').someProperty('name', 'oozie_user') ? this.get('configs').findProperty('name', 'oozie_user').value : null,
       isHiveSelected = installedAndSelectedServices.someProperty('serviceName', 'HIVE'),
-      hiveUser = this.get('globals').someProperty('name', 'hive_user') ? this.get('globals').findProperty('name', 'hive_user').value : null,
+      hiveUser = this.get('configs').someProperty('name', 'hive_user') ? this.get('configs').findProperty('name', 'hive_user').value : null,
       isHcatSelected = installedAndSelectedServices.someProperty('serviceName', 'WEBHCAT'),
-      hcatUser = this.get('globals').someProperty('name', 'hcat_user') ? this.get('globals').findProperty('name', 'hcat_user').value : null,
+      hcatUser = this.get('configs').someProperty('name', 'hcat_user') ? this.get('configs').findProperty('name', 'hcat_user').value : null,
       isGLUSTERFSSelected = installedAndSelectedServices.someProperty('serviceName', 'GLUSTERFS');
 
     // screen out the GLUSTERFS-specific core-site.xml entries when they are not needed
@@ -1690,13 +1641,13 @@ App.WizardStep8Controller = Em.Controller.extend({
       }
       if (isGLUSTERFSSelected && _coreSiteObj.name == "fs.default.name") {
         coreSiteProperties[_coreSiteObj.name] =
-          this.get('globals').someProperty('name', 'fs_glusterfs_default_name') ?
-            App.config.escapeXMLCharacters(this.get('globals').findProperty('name', 'fs_glusterfs_default_name').value) : null;
+          this.get('configs').someProperty('name', 'fs_glusterfs_default_name') ?
+            App.config.escapeXMLCharacters(this.get('configs').findProperty('name', 'fs_glusterfs_default_name').value) : null;
       }
       if (isGLUSTERFSSelected && _coreSiteObj.name == "fs.defaultFS") {
         coreSiteProperties[_coreSiteObj.name] =
-          this.get('globals').someProperty('name', 'glusterfs_defaultFS_name') ?
-            App.config.escapeXMLCharacters(this.get('globals').findProperty('name', 'glusterfs_defaultFS_name').value) : null;
+          this.get('configs').someProperty('name', 'glusterfs_defaultFS_name') ?
+            App.config.escapeXMLCharacters(this.get('configs').findProperty('name', 'glusterfs_defaultFS_name').value) : null;
       }
     }, this);
     return {"type": "core-site", "tag": "version1", "properties": coreSiteProperties};
@@ -1718,7 +1669,16 @@ App.WizardStep8Controller = Em.Controller.extend({
       }, this);
     } else {
       this.get('configs').filterProperty('filename', site + '.xml').forEach(function (_configProperty) {
-        properties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
+        var heapsizeExceptions = ['hadoop_heapsize', 'yarn_heapsize', 'nodemanager_heapsize', 'resourcemanager_heapsize', 'apptimelineserver_heapsize', 'jobhistory_heapsize'];
+        // do not pass any globals whose name ends with _host or _hosts
+        if (_configProperty.isRequiredByAgent !== false) {
+          // append "m" to JVM memory options except for heapsizeExtensions
+          if (/_heapsize|_newsize|_maxnewsize$/.test(_configProperty.name) && !heapsizeExceptions.contains(_configProperty.name)) {
+            properties[_configProperty.name] = _configProperty.value + "m";
+          } else {
+            properties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
+           }
+        }
       }, this);
     }
     return {"type": site, "tag": tag, "properties": properties };