Browse Source

AMBARI-3755. Config Refactor: Installer wizard should not save global configuration not used by agent. (jaimin)

Jaimin Jetly 11 years ago
parent
commit
5100bb26ba
27 changed files with 987 additions and 1394 deletions
  1. 210 188
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HDFS/configuration/hdfs-site.xml
  2. 10 4
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/configuration/hive-site.xml
  3. 255 250
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/MAPREDUCE/configuration/mapred-site.xml
  4. 24 2
      ambari-server/src/main/resources/stacks/HDP/1.3.3/services/HDFS/configuration/hdfs-site.xml
  5. 6 0
      ambari-server/src/main/resources/stacks/HDP/1.3.3/services/HIVE/configuration/hive-site.xml
  6. 9 2
      ambari-server/src/main/resources/stacks/HDP/1.3.3/services/MAPREDUCE/configuration/mapred-site.xml
  7. 24 2
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HDFS/configuration/hdfs-site.xml
  8. 7 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/configuration/hive-site.xml
  9. 174 152
      ambari-server/src/main/resources/stacks/HDP/2.0.8/services/HDFS/configuration/hdfs-site.xml
  10. 12 5
      ambari-server/src/main/resources/stacks/HDP/2.0.8/services/HIVE/configuration/hive-site.xml
  11. 0 6
      ambari-web/app/controllers/main/admin/security/add/step4.js
  12. 4 4
      ambari-web/app/controllers/main/admin/security/disable.js
  13. 1 1
      ambari-web/app/controllers/main/service/info/configs.js
  14. 2 1
      ambari-web/app/controllers/wizard.js
  15. 4 11
      ambari-web/app/controllers/wizard/step8_controller.js
  16. 0 15
      ambari-web/app/data/HDP2/config_mapping.js
  17. 28 247
      ambari-web/app/data/HDP2/global_properties.js
  18. 4 4
      ambari-web/app/data/HDP2/secure_mapping.js
  19. 14 0
      ambari-web/app/data/HDP2/site_properties.js
  20. 0 23
      ambari-web/app/data/config_mapping.js
  21. 75 398
      ambari-web/app/data/global_properties.js
  22. 4 4
      ambari-web/app/data/secure_mapping.js
  23. 26 0
      ambari-web/app/data/site_properties.js
  24. 1 0
      ambari-web/app/models/service_config.js
  25. 88 74
      ambari-web/app/utils/config.js
  26. 4 0
      ambari-web/app/utils/helper.js
  27. 1 1
      ambari-web/app/views/wizard/controls_view.js

+ 210 - 188
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HDFS/configuration/hdfs-site.xml

@@ -22,7 +22,7 @@
 
 
 <configuration>
 <configuration>
 
 
-<!-- file system properties -->
+  <!-- file system properties -->
 
 
   <property>
   <property>
     <name>dfs.name.dir</name>
     <name>dfs.name.dir</name>
@@ -49,7 +49,7 @@
     <final>true</final>
     <final>true</final>
   </property>
   </property>
 
 
- <property>
+  <property>
     <name>dfs.datanode.socket.write.timeout</name>
     <name>dfs.datanode.socket.write.timeout</name>
     <value>0</value>
     <value>0</value>
     <description>DFS Client write socket timeout</description>
     <description>DFS Client write socket timeout</description>
@@ -66,7 +66,7 @@
     <name>dfs.block.local-path-access.user</name>
     <name>dfs.block.local-path-access.user</name>
     <value>hbase</value>
     <value>hbase</value>
     <description>the user who is allowed to perform short
     <description>the user who is allowed to perform short
-    circuit reads.
+      circuit reads.
     </description>
     </description>
     <final>true</final>
     <final>true</final>
   </property>
   </property>
@@ -75,11 +75,11 @@
     <name>dfs.data.dir</name>
     <name>dfs.data.dir</name>
     <value>/hadoop/hdfs/data</value>
     <value>/hadoop/hdfs/data</value>
     <description>Determines where on the local filesystem an DFS data node
     <description>Determines where on the local filesystem an DFS data node
-  should store its blocks.  If this is a comma-delimited
-  list of directories, then data will be stored in all named
-  directories, typically on different devices.
-  Directories that do not exist are ignored.
-  </description>
+      should store its blocks.  If this is a comma-delimited
+      list of directories, then data will be stored in all named
+      directories, typically on different devices.
+      Directories that do not exist are ignored.
+    </description>
     <final>true</final>
     <final>true</final>
   </property>
   </property>
 
 
@@ -87,32 +87,32 @@
     <name>dfs.hosts.exclude</name>
     <name>dfs.hosts.exclude</name>
     <value>/etc/hadoop/conf/dfs.exclude</value>
     <value>/etc/hadoop/conf/dfs.exclude</value>
     <description>Names a file that contains a list of hosts that are
     <description>Names a file that contains a list of hosts that are
-    not permitted to connect to the namenode.  The full pathname of the
-    file must be specified.  If the value is empty, no hosts are
-    excluded.</description>
+      not permitted to connect to the namenode.  The full pathname of the
+      file must be specified.  If the value is empty, no hosts are
+      excluded.</description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.hosts</name>
     <name>dfs.hosts</name>
     <value>/etc/hadoop/conf/dfs.include</value>
     <value>/etc/hadoop/conf/dfs.include</value>
     <description>Names a file that contains a list of hosts that are
     <description>Names a file that contains a list of hosts that are
-    permitted to connect to the namenode. The full pathname of the file
-    must be specified.  If the value is empty, all hosts are
-    permitted.</description>
+      permitted to connect to the namenode. The full pathname of the file
+      must be specified.  If the value is empty, all hosts are
+      permitted.</description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.replication.max</name>
     <name>dfs.replication.max</name>
     <value>50</value>
     <value>50</value>
     <description>Maximal block replication.
     <description>Maximal block replication.
-  </description>
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.replication</name>
     <name>dfs.replication</name>
     <value>3</value>
     <value>3</value>
     <description>Default block replication.
     <description>Default block replication.
-  </description>
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -125,21 +125,21 @@
     <name>dfs.safemode.threshold.pct</name>
     <name>dfs.safemode.threshold.pct</name>
     <value>1.0f</value>
     <value>1.0f</value>
     <description>
     <description>
-        Specifies the percentage of blocks that should satisfy
-        the minimal replication requirement defined by dfs.replication.min.
-        Values less than or equal to 0 mean not to start in safe mode.
-        Values greater than 1 will make safe mode permanent.
-        </description>
+      Specifies the percentage of blocks that should satisfy
+      the minimal replication requirement defined by dfs.replication.min.
+      Values less than or equal to 0 mean not to start in safe mode.
+      Values greater than 1 will make safe mode permanent.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.balance.bandwidthPerSec</name>
     <name>dfs.balance.bandwidthPerSec</name>
     <value>6250000</value>
     <value>6250000</value>
     <description>
     <description>
-        Specifies the maximum amount of bandwidth that each datanode
-        can utilize for the balancing purpose in term of
-        the number of bytes per second.
-  </description>
+      Specifies the maximum amount of bandwidth that each datanode
+      can utilize for the balancing purpose in term of
+      the number of bytes per second.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -150,14 +150,36 @@
     </description>
     </description>
   </property>
   </property>
 
 
+  <property>
+    <name>ambari.dfs.datanode.port</name>
+    <value>50010</value>
+    <description>
+      The datanode port for data transfer. This property is effective only if referenced from dfs.datanode.address property.
+    </description>
+  </property>
+
   <property>
   <property>
     <name>dfs.datanode.address</name>
     <name>dfs.datanode.address</name>
-    <value></value>
+    <value>0.0.0.0:${ambari.dfs.datanode.port}</value>
+    <description>
+      The datanode server address and port for data transfer.
+    </description>
+  </property>
+
+  <property>
+    <name>ambari.dfs.datanode.http.port</name>
+    <value>50075</value>
+    <description>
+      The datanode http port. This property is effective only if referenced from dfs.datanode.http.address property.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.datanode.http.address</name>
     <name>dfs.datanode.http.address</name>
-    <value></value>
+    <value>0.0.0.0:${ambari.dfs.datanode.http.port}</value>
+    <description>
+      The datanode http server address and port.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -169,133 +191,133 @@
   <property>
   <property>
     <name>dfs.http.address</name>
     <name>dfs.http.address</name>
     <value>localhost:50070</value>
     <value>localhost:50070</value>
-<description>The name of the default file system.  Either the
-literal string "local" or a host:port for NDFS.</description>
-<final>true</final>
-</property>
-
-<property>
-<name>dfs.datanode.du.reserved</name>
-<!-- cluster variant -->
-<value>1073741824</value>
-<description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.
-</description>
-</property>
-
-<property>
-<name>dfs.datanode.ipc.address</name>
-<value>0.0.0.0:8010</value>
-<description>
-The datanode ipc server address and port.
-If the port is 0 then the server will start on a free port.
-</description>
-</property>
-
-<property>
-<name>dfs.blockreport.initialDelay</name>
-<value>120</value>
-<description>Delay for first block report in seconds.</description>
-</property>
-
-<property>
-<name>dfs.datanode.du.pct</name>
-<value>0.85f</value>
-<description>When calculating remaining space, only use this percentage of the real available space
-</description>
-</property>
-
-<property>
-<name>dfs.namenode.handler.count</name>
-<value>40</value>
-<description>The number of server threads for the namenode.</description>
-</property>
-
-<property>
-<name>dfs.datanode.max.xcievers</name>
-<value>4096</value>
-<description>PRIVATE CONFIG VARIABLE</description>
-</property>
-
-<!-- Permissions configuration -->
-
-<property>
-<name>dfs.umaskmode</name>
-<value>077</value>
-<description>
-The octal umask used when creating files and directories.
-</description>
-</property>
-
-<property>
-<name>dfs.web.ugi</name>
-<!-- cluster variant -->
-<value>gopher,gopher</value>
-<description>The user account used by the web interface.
-Syntax: USERNAME,GROUP1,GROUP2, ...
-</description>
-</property>
-
-<property>
-<name>dfs.permissions</name>
-<value>true</value>
-<description>
-If "true", enable permission checking in HDFS.
-If "false", permission checking is turned off,
-but all other behavior is unchanged.
-Switching from one parameter value to the other does not change the mode,
-owner or group of files or directories.
-</description>
-</property>
-
-<property>
-<name>dfs.permissions.supergroup</name>
-<value>hdfs</value>
-<description>The name of the group of super-users.</description>
-</property>
-
-<property>
-<name>dfs.namenode.handler.count</name>
-<value>100</value>
-<description>Added to grow Queue size so that more client connections are allowed</description>
-</property>
-
-<property>
-<name>ipc.server.max.response.size</name>
-<value>5242880</value>
-</property>
-<property>
-<name>dfs.block.access.token.enable</name>
-<value>true</value>
-<description>
-If "true", access tokens are used as capabilities for accessing datanodes.
-If "false", no access tokens are checked on accessing datanodes.
-</description>
-</property>
-
-<property>
-<name>dfs.namenode.kerberos.principal</name>
-<value></value>
-<description>
-Kerberos principal name for the NameNode
-</description>
-</property>
-
-<property>
-<name>dfs.secondary.namenode.kerberos.principal</name>
-<value></value>
+    <description>The name of the default file system.  Either the
+      literal string "local" or a host:port for NDFS.</description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>dfs.datanode.du.reserved</name>
+    <!-- cluster variant -->
+    <value>1073741824</value>
+    <description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.ipc.address</name>
+    <value>0.0.0.0:8010</value>
     <description>
     <description>
-        Kerberos principal name for the secondary NameNode.
+      The datanode ipc server address and port.
+      If the port is 0 then the server will start on a free port.
     </description>
     </description>
   </property>
   </property>
 
 
+  <property>
+    <name>dfs.blockreport.initialDelay</name>
+    <value>120</value>
+    <description>Delay for first block report in seconds.</description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.du.pct</name>
+    <value>0.85f</value>
+    <description>When calculating remaining space, only use this percentage of the real available space
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.namenode.handler.count</name>
+    <value>40</value>
+    <description>The number of server threads for the namenode.</description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.max.xcievers</name>
+    <value>4096</value>
+    <description>PRIVATE CONFIG VARIABLE</description>
+  </property>
+
+  <!-- Permissions configuration -->
+
+  <property>
+    <name>dfs.umaskmode</name>
+    <value>077</value>
+    <description>
+      The octal umask used when creating files and directories.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.web.ugi</name>
+    <!-- cluster variant -->
+    <value>gopher,gopher</value>
+    <description>The user account used by the web interface.
+      Syntax: USERNAME,GROUP1,GROUP2, ...
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.permissions</name>
+    <value>true</value>
+    <description>
+      If "true", enable permission checking in HDFS.
+      If "false", permission checking is turned off,
+      but all other behavior is unchanged.
+      Switching from one parameter value to the other does not change the mode,
+      owner or group of files or directories.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.permissions.supergroup</name>
+    <value>hdfs</value>
+    <description>The name of the group of super-users.</description>
+  </property>
+
+  <property>
+    <name>dfs.namenode.handler.count</name>
+    <value>100</value>
+    <description>Added to grow Queue size so that more client connections are allowed</description>
+  </property>
+
+  <property>
+    <name>ipc.server.max.response.size</name>
+    <value>5242880</value>
+  </property>
+  <property>
+    <name>dfs.block.access.token.enable</name>
+    <value>true</value>
+    <description>
+      If "true", access tokens are used as capabilities for accessing datanodes.
+      If "false", no access tokens are checked on accessing datanodes.
+    </description>
+  </property>
 
 
-<!--
-  This is KRB DOMAIN specific. The FQDN of the namenode has to be mentioned.
--->
+  <property>
+    <name>dfs.namenode.kerberos.principal</name>
+    <value></value>
+    <description>
+      Kerberos principal name for the NameNode
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.secondary.namenode.kerberos.principal</name>
+    <value></value>
+    <description>
+      Kerberos principal name for the secondary NameNode.
+    </description>
+  </property>
+
+
+  <!--
+    This is KRB DOMAIN specific. The FQDN of the namenode has to be mentioned.
+  -->
   <property>
   <property>
     <name>dfs.namenode.kerberos.https.principal</name>
     <name>dfs.namenode.kerberos.https.principal</name>
     <value></value>
     <value></value>
-     <description>The Kerberos principal for the host that the NameNode runs on.</description>
+    <description>The Kerberos principal for the host that the NameNode runs on.</description>
 
 
   </property>
   </property>
 
 
@@ -341,84 +363,84 @@ Kerberos principal name for the NameNode
   <property>
   <property>
     <name>dfs.datanode.kerberos.principal</name>
     <name>dfs.datanode.kerberos.principal</name>
     <value></value>
     <value></value>
- <description>
-        The Kerberos principal that the DataNode runs as. "_HOST" is replaced by the real host name.
+    <description>
+      The Kerberos principal that the DataNode runs as. "_HOST" is replaced by the real host name.
     </description>
     </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.namenode.keytab.file</name>
     <name>dfs.namenode.keytab.file</name>
     <value></value>
     <value></value>
- <description>
-        Combined keytab file containing the namenode service and host principals.
+    <description>
+      Combined keytab file containing the namenode service and host principals.
     </description>
     </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.secondary.namenode.keytab.file</name>
     <name>dfs.secondary.namenode.keytab.file</name>
     <value></value>
     <value></value>
-  <description>
-        Combined keytab file containing the namenode service and host principals.
+    <description>
+      Combined keytab file containing the namenode service and host principals.
     </description>
     </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.datanode.keytab.file</name>
     <name>dfs.datanode.keytab.file</name>
     <value></value>
     <value></value>
- <description>
-        The filename of the keytab file for the DataNode.
+    <description>
+      The filename of the keytab file for the DataNode.
     </description>
     </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.https.port</name>
     <name>dfs.https.port</name>
     <value>50470</value>
     <value>50470</value>
- <description>The https port where namenode binds</description>
+    <description>The https port where namenode binds</description>
 
 
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.https.address</name>
     <name>dfs.https.address</name>
     <value>localhost:50470</value>
     <value>localhost:50470</value>
-  <description>The https address where namenode binds</description>
+    <description>The https address where namenode binds</description>
 
 
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.datanode.data.dir.perm</name>
     <name>dfs.datanode.data.dir.perm</name>
     <value>750</value>
     <value>750</value>
-<description>The permissions that should be there on dfs.data.dir
-directories. The datanode will not come up if the permissions are
-different on existing dfs.data.dir directories. If the directories
-don't exist, they will be created with this permission.</description>
-  </property>
-
-  <property>
-  <name>dfs.access.time.precision</name>
-  <value>0</value>
-  <description>The access time for HDFS file is precise upto this value.
-               The default value is 1 hour. Setting a value of 0 disables
-               access times for HDFS.
-  </description>
-</property>
-
-<property>
- <name>dfs.cluster.administrators</name>
- <value> hdfs</value>
- <description>ACL for who all can view the default servlets in the HDFS</description>
-</property>
-
-<property>
-  <name>ipc.server.read.threadpool.size</name>
-  <value>5</value>
-  <description></description>
-</property>
-
-<property>
-  <name>dfs.datanode.failed.volumes.tolerated</name>
-  <value>0</value>
-  <description>Number of failed disks datanode would tolerate</description>
-</property>
+    <description>The permissions that should be there on dfs.data.dir
+      directories. The datanode will not come up if the permissions are
+      different on existing dfs.data.dir directories. If the directories
+      don't exist, they will be created with this permission.</description>
+  </property>
+
+  <property>
+    <name>dfs.access.time.precision</name>
+    <value>0</value>
+    <description>The access time for HDFS file is precise upto this value.
+      The default value is 1 hour. Setting a value of 0 disables
+      access times for HDFS.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.cluster.administrators</name>
+    <value> hdfs</value>
+    <description>ACL for who all can view the default servlets in the HDFS</description>
+  </property>
+
+  <property>
+    <name>ipc.server.read.threadpool.size</name>
+    <value>5</value>
+    <description></description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.failed.volumes.tolerated</name>
+    <value>0</value>
+    <description>Number of failed disks datanode would tolerate</description>
+  </property>
 
 
   <property>
   <property>
     <name>dfs.namenode.avoid.read.stale.datanode</name>
     <name>dfs.namenode.avoid.read.stale.datanode</name>

+ 10 - 4
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/configuration/hive-site.xml

@@ -18,6 +18,12 @@ limitations under the License.
 -->
 -->
 
 
 <configuration>
 <configuration>
+  <property>
+    <name>ambari.hive.db.schema.name</name>
+    <value>hive</value>
+    <description>Database name used as the Hive Metastore</description>
+  </property>
+
   <property>
   <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc</value>
     <value>jdbc</value>
@@ -52,21 +58,21 @@ limitations under the License.
     <name>hive.metastore.sasl.enabled</name>
     <name>hive.metastore.sasl.enabled</name>
     <value></value>
     <value></value>
     <description>If true, the metastore thrift interface will be secured with SASL.
     <description>If true, the metastore thrift interface will be secured with SASL.
-     Clients must authenticate with Kerberos.</description>
+      Clients must authenticate with Kerberos.</description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>hive.metastore.kerberos.keytab.file</name>
     <name>hive.metastore.kerberos.keytab.file</name>
     <value></value>
     <value></value>
     <description>The path to the Kerberos Keytab file containing the metastore
     <description>The path to the Kerberos Keytab file containing the metastore
-     thrift server's service principal.</description>
+      thrift server's service principal.</description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>hive.metastore.kerberos.principal</name>
     <name>hive.metastore.kerberos.principal</name>
     <value></value>
     <value></value>
     <description>The service principal for the metastore thrift server. The special
     <description>The service principal for the metastore thrift server. The special
-    string _HOST will be replaced automatically with the correct host name.</description>
+      string _HOST will be replaced automatically with the correct host name.</description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -109,7 +115,7 @@ limitations under the License.
     <name>hive.security.authorization.manager</name>
     <name>hive.security.authorization.manager</name>
     <value>org.apache.hcatalog.security.HdfsAuthorizationProvider</value>
     <value>org.apache.hcatalog.security.HdfsAuthorizationProvider</value>
     <description>the hive client authorization manager class name.
     <description>the hive client authorization manager class name.
-    The user defined authorization class should implement interface org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider.  </description>
+      The user defined authorization class should implement interface org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider.  </description>
   </property>
   </property>
 
 
   <property>
   <property>

+ 255 - 250
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/MAPREDUCE/configuration/mapred-site.xml

@@ -22,7 +22,7 @@
 
 
 <configuration xmlns:xi="http://www.w3.org/2001/XInclude">
 <configuration xmlns:xi="http://www.w3.org/2001/XInclude">
 
 
-<!-- i/o properties -->
+  <!-- i/o properties -->
 
 
   <property>
   <property>
     <name>io.sort.mb</name>
     <name>io.sort.mb</name>
@@ -50,25 +50,25 @@
     <description>No description</description>
     <description>No description</description>
   </property>
   </property>
 
 
-<!-- map/reduce properties -->
+  <!-- map/reduce properties -->
 
 
-<property>
-  <name>mapred.tasktracker.tasks.sleeptime-before-sigkill</name>
-  <value>250</value>
-  <description>Normally, this is the amount of time before killing
-  processes, and the recommended-default is 5.000 seconds - a value of
-  5000 here.  In this case, we are using it solely to blast tasks before
-  killing them, and killing them very quickly (1/4 second) to guarantee
-  that we do not leave VMs around for later jobs.
-  </description>
-</property>
+  <property>
+    <name>mapred.tasktracker.tasks.sleeptime-before-sigkill</name>
+    <value>250</value>
+    <description>Normally, this is the amount of time before killing
+      processes, and the recommended-default is 5.000 seconds - a value of
+      5000 here.  In this case, we are using it solely to blast tasks before
+      killing them, and killing them very quickly (1/4 second) to guarantee
+      that we do not leave VMs around for later jobs.
+    </description>
+  </property>
 
 
   <property>
   <property>
     <name>mapred.job.tracker.handler.count</name>
     <name>mapred.job.tracker.handler.count</name>
     <value>50</value>
     <value>50</value>
     <description>
     <description>
-    The number of server threads for the JobTracker. This should be roughly
-    4% of the number of tasktracker nodes.
+      The number of server threads for the JobTracker. This should be roughly
+      4% of the number of tasktracker nodes.
     </description>
     </description>
   </property>
   </property>
 
 
@@ -91,11 +91,10 @@
     <name>mapred.job.tracker.http.address</name>
     <name>mapred.job.tracker.http.address</name>
     <!-- cluster variant -->
     <!-- cluster variant -->
     <value>localhost:50030</value>
     <value>localhost:50030</value>
-    <description>Http address for JobTracker</description>
+    <description>JobTracker host and http port address</description>
     <final>true</final>
     <final>true</final>
   </property>
   </property>
 
 
-
   <property>
   <property>
     <!-- cluster specific -->
     <!-- cluster specific -->
     <name>mapred.local.dir</name>
     <name>mapred.local.dir</name>
@@ -105,8 +104,8 @@
   </property>
   </property>
 
 
   <property>
   <property>
-  <name>mapreduce.cluster.administrators</name>
-  <value> hadoop</value>
+    <name>mapreduce.cluster.administrators</name>
+    <value> hadoop</value>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -136,14 +135,14 @@
     <name>mapred.map.tasks.speculative.execution</name>
     <name>mapred.map.tasks.speculative.execution</name>
     <value>false</value>
     <value>false</value>
     <description>If true, then multiple instances of some map tasks
     <description>If true, then multiple instances of some map tasks
-               may be executed in parallel.</description>
+      may be executed in parallel.</description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>mapred.reduce.tasks.speculative.execution</name>
     <name>mapred.reduce.tasks.speculative.execution</name>
     <value>false</value>
     <value>false</value>
     <description>If true, then multiple instances of some reduce tasks
     <description>If true, then multiple instances of some reduce tasks
-               may be executed in parallel.</description>
+      may be executed in parallel.</description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -155,29 +154,29 @@
     <name>mapred.inmem.merge.threshold</name>
     <name>mapred.inmem.merge.threshold</name>
     <value>1000</value>
     <value>1000</value>
     <description>The threshold, in terms of the number of files
     <description>The threshold, in terms of the number of files
-  for the in-memory merge process. When we accumulate threshold number of files
-  we initiate the in-memory merge and spill to disk. A value of 0 or less than
-  0 indicates we want to DON'T have any threshold and instead depend only on
-  the ramfs's memory consumption to trigger the merge.
-  </description>
+      for the in-memory merge process. When we accumulate threshold number of files
+      we initiate the in-memory merge and spill to disk. A value of 0 or less than
+      0 indicates we want to DON'T have any threshold and instead depend only on
+      the ramfs's memory consumption to trigger the merge.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>mapred.job.shuffle.merge.percent</name>
     <name>mapred.job.shuffle.merge.percent</name>
     <value>0.66</value>
     <value>0.66</value>
     <description>The usage threshold at which an in-memory merge will be
     <description>The usage threshold at which an in-memory merge will be
-  initiated, expressed as a percentage of the total memory allocated to
-  storing in-memory map outputs, as defined by
-  mapred.job.shuffle.input.buffer.percent.
-  </description>
+      initiated, expressed as a percentage of the total memory allocated to
+      storing in-memory map outputs, as defined by
+      mapred.job.shuffle.input.buffer.percent.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>mapred.job.shuffle.input.buffer.percent</name>
     <name>mapred.job.shuffle.input.buffer.percent</name>
     <value>0.7</value>
     <value>0.7</value>
     <description>The percentage of memory to be allocated from the maximum heap
     <description>The percentage of memory to be allocated from the maximum heap
-  size to storing map outputs during the shuffle.
-  </description>
+      size to storing map outputs during the shuffle.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -188,13 +187,13 @@
     </description>
     </description>
   </property>
   </property>
 
 
-<property>
-  <name>mapred.output.compression.type</name>
-  <value>BLOCK</value>
-  <description>If the job outputs are to compressed as SequenceFiles, how should
-               they be compressed? Should be one of NONE, RECORD or BLOCK.
-  </description>
-</property>
+  <property>
+    <name>mapred.output.compression.type</name>
+    <value>BLOCK</value>
+    <description>If the job outputs are to compressed as SequenceFiles, how should
+      they be compressed? Should be one of NONE, RECORD or BLOCK.
+    </description>
+  </property>
 
 
 
 
   <property>
   <property>
@@ -211,7 +210,7 @@
     <name>mapred.jobtracker.restart.recover</name>
     <name>mapred.jobtracker.restart.recover</name>
     <value>false</value>
     <value>false</value>
     <description>"true" to enable (job) recovery upon restart,
     <description>"true" to enable (job) recovery upon restart,
-               "false" to start afresh
+      "false" to start afresh
     </description>
     </description>
   </property>
   </property>
 
 
@@ -219,20 +218,20 @@
     <name>mapred.job.reduce.input.buffer.percent</name>
     <name>mapred.job.reduce.input.buffer.percent</name>
     <value>0.0</value>
     <value>0.0</value>
     <description>The percentage of memory- relative to the maximum heap size- to
     <description>The percentage of memory- relative to the maximum heap size- to
-  retain map outputs during the reduce. When the shuffle is concluded, any
-  remaining map outputs in memory must consume less than this threshold before
-  the reduce can begin.
-  </description>
+      retain map outputs during the reduce. When the shuffle is concluded, any
+      remaining map outputs in memory must consume less than this threshold before
+      the reduce can begin.
+    </description>
   </property>
   </property>
 
 
- <property>
-  <name>mapreduce.reduce.input.limit</name>
-  <value>10737418240</value>
-  <description>The limit on the input size of the reduce. (This value
-  is 10 Gb.)  If the estimated input size of the reduce is greater than
-  this value, job is failed. A value of -1 means that there is no limit
-  set. </description>
-</property>
+  <property>
+    <name>mapreduce.reduce.input.limit</name>
+    <value>10737418240</value>
+    <description>The limit on the input size of the reduce. (This value
+      is 10 Gb.)  If the estimated input size of the reduce is greater than
+      this value, job is failed. A value of -1 means that there is no limit
+      set. </description>
+  </property>
 
 
 
 
   <!-- copied from kryptonite configuration -->
   <!-- copied from kryptonite configuration -->
@@ -246,9 +245,9 @@
     <name>mapred.task.timeout</name>
     <name>mapred.task.timeout</name>
     <value>600000</value>
     <value>600000</value>
     <description>The number of milliseconds before a task will be
     <description>The number of milliseconds before a task will be
-  terminated if it neither reads an input, writes an output, nor
-  updates its status string.
-  </description>
+      terminated if it neither reads an input, writes an output, nor
+      updates its status string.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -260,9 +259,9 @@
   <property>
   <property>
     <name>mapred.task.tracker.task-controller</name>
     <name>mapred.task.tracker.task-controller</name>
     <value>org.apache.hadoop.mapred.DefaultTaskController</value>
     <value>org.apache.hadoop.mapred.DefaultTaskController</value>
-   <description>
-     TaskController which is used to launch and manage task execution.
-  </description>
+    <description>
+      TaskController which is used to launch and manage task execution.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -271,10 +270,16 @@
   </property>
   </property>
 
 
   <property>
   <property>
-    <name>mapred.child.java.opts</name>
-    <value></value>
+    <name>ambari.mapred.child.java.opts.memory</name>
+    <value>768</value>
 
 
-    <description>No description</description>
+    <description>Java options Memory for the TaskTracker child processes</description>
+  </property>
+
+  <property>
+    <name>mapred.child.java.opts</name>
+    <value>-server -Xmx${ambari.mapred.child.java.opts.memory}m -Djava.net.preferIPv4Stack=true</value>
+    <description>Java options for the TaskTracker child processes</description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -289,7 +294,7 @@
     <name>mapred.cluster.reduce.memory.mb</name>
     <name>mapred.cluster.reduce.memory.mb</name>
     <value>2048</value>
     <value>2048</value>
     <description>
     <description>
-    The virtual memory size of a single Reduce slot in the MapReduce framework
+      The virtual memory size of a single Reduce slot in the MapReduce framework
     </description>
     </description>
   </property>
   </property>
 
 
@@ -335,137 +340,137 @@
     </description>
     </description>
   </property>
   </property>
 
 
-<property>
-  <name>mapred.hosts.exclude</name>
-  <value>/etc/hadoop/conf/mapred.exclude</value>
-  <description>
-    Names a file that contains the list of hosts that
-    should be excluded by the jobtracker.  If the value is empty, no
-    hosts are excluded.
-  </description>
-</property>
-
-<property>
-  <name>mapred.max.tracker.blacklists</name>
-  <value>16</value>
-  <description>
-    if node is reported blacklisted by 16 successful jobs within timeout-window, it will be graylisted
-  </description>
-</property>
-
-<property>
-  <name>mapred.healthChecker.script.path</name>
-  <value>file:////mapred/jobstatus</value>
-  <description>
-    Directory path to view job status
-  </description>
-</property>
-
-<property>
-  <name>mapred.healthChecker.interval</name>
-  <value>135000</value>
-</property>
-
-<property>
-  <name>mapred.healthChecker.script.timeout</name>
-  <value>60000</value>
-</property>
-
-<property>
-  <name>mapred.job.tracker.persist.jobstatus.active</name>
-  <value>false</value>
-  <description>Indicates if persistency of job status information is
-  active or not.
-  </description>
-</property>
-
-<property>
-  <name>mapred.job.tracker.persist.jobstatus.hours</name>
-  <value>1</value>
-  <description>The number of hours job status information is persisted in DFS.
-    The job status information will be available after it drops of the memory
-    queue and between jobtracker restarts. With a zero value the job status
-    information is not persisted at all in DFS.
-  </description>
-</property>
-
-<property>
-  <name>mapred.job.tracker.persist.jobstatus.dir</name>
-  <value>/etc/hadoop/conf/health_check</value>
-  <description>The directory where the job status information is persisted
-    in a file system to be available after it drops of the memory queue and
-    between jobtracker restarts.
-  </description>
-</property>
-
-<property>
-  <name>mapred.jobtracker.retirejob.check</name>
-  <value>10000</value>
-</property>
-
-<property>
-  <name>mapred.jobtracker.retirejob.interval</name>
-  <value>21600000</value>
-</property>
-
-<property>
-  <name>mapred.job.tracker.history.completed.location</name>
-  <value>/mapred/history/done</value>
-  <description>No description</description>
-</property>
-
-<property>
-  <name>mapred.task.maxvmem</name>
-  <value></value>
-  <final>true</final>
-   <description>No description</description>
-</property>
-
-<property>
-  <name>mapred.jobtracker.maxtasks.per.job</name>
-  <value>-1</value>
-  <final>true</final>
-  <description>The maximum number of tasks for a single job.
-  A value of -1 indicates that there is no maximum.  </description>
-</property>
-
-<property>
-  <name>mapreduce.fileoutputcommitter.marksuccessfuljobs</name>
-  <value>false</value>
-</property>
-
-<property>
-  <name>mapred.userlog.retain.hours</name>
-  <value>24</value>
-  <description>
-    The maximum time, in hours, for which the user-logs are to be retained after the job completion.
-  </description>
-</property>
-
-<property>
-  <name>mapred.job.reuse.jvm.num.tasks</name>
-  <value>1</value>
-  <description>
-    How many tasks to run per jvm. If set to -1, there is no limit
-  </description>
-  <final>true</final>
-</property>
-
-<property>
-  <name>mapreduce.jobtracker.kerberos.principal</name>
-  <value></value>
-  <description>
+  <property>
+    <name>mapred.hosts.exclude</name>
+    <value>/etc/hadoop/conf/mapred.exclude</value>
+    <description>
+      Names a file that contains the list of hosts that
+      should be excluded by the jobtracker.  If the value is empty, no
+      hosts are excluded.
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.max.tracker.blacklists</name>
+    <value>16</value>
+    <description>
+      if node is reported blacklisted by 16 successful jobs within timeout-window, it will be graylisted
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.healthChecker.script.path</name>
+    <value>file:////mapred/jobstatus</value>
+    <description>
+      Directory path to view job status
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.healthChecker.interval</name>
+    <value>135000</value>
+  </property>
+
+  <property>
+    <name>mapred.healthChecker.script.timeout</name>
+    <value>60000</value>
+  </property>
+
+  <property>
+    <name>mapred.job.tracker.persist.jobstatus.active</name>
+    <value>false</value>
+    <description>Indicates if persistency of job status information is
+      active or not.
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.job.tracker.persist.jobstatus.hours</name>
+    <value>1</value>
+    <description>The number of hours job status information is persisted in DFS.
+      The job status information will be available after it drops of the memory
+      queue and between jobtracker restarts. With a zero value the job status
+      information is not persisted at all in DFS.
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.job.tracker.persist.jobstatus.dir</name>
+    <value>/etc/hadoop/conf/health_check</value>
+    <description>The directory where the job status information is persisted
+      in a file system to be available after it drops of the memory queue and
+      between jobtracker restarts.
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.jobtracker.retirejob.check</name>
+    <value>10000</value>
+  </property>
+
+  <property>
+    <name>mapred.jobtracker.retirejob.interval</name>
+    <value>21600000</value>
+  </property>
+
+  <property>
+    <name>mapred.job.tracker.history.completed.location</name>
+    <value>/mapred/history/done</value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>mapred.task.maxvmem</name>
+    <value></value>
+    <final>true</final>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>mapred.jobtracker.maxtasks.per.job</name>
+    <value>-1</value>
+    <final>true</final>
+    <description>The maximum number of tasks for a single job.
+      A value of -1 indicates that there is no maximum.  </description>
+  </property>
+
+  <property>
+    <name>mapreduce.fileoutputcommitter.marksuccessfuljobs</name>
+    <value>false</value>
+  </property>
+
+  <property>
+    <name>mapred.userlog.retain.hours</name>
+    <value>24</value>
+    <description>
+      The maximum time, in hours, for which the user-logs are to be retained after the job completion.
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.job.reuse.jvm.num.tasks</name>
+    <value>1</value>
+    <description>
+      How many tasks to run per jvm. If set to -1, there is no limit
+    </description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>mapreduce.jobtracker.kerberos.principal</name>
+    <value></value>
+    <description>
       JT user name key.
       JT user name key.
- </description>
-</property>
+    </description>
+  </property>
 
 
-<property>
-  <name>mapreduce.tasktracker.kerberos.principal</name>
-   <value></value>
-  <description>
-       tt user name key. "_HOST" is replaced by the host name of the task tracker.
-   </description>
-</property>
+  <property>
+    <name>mapreduce.tasktracker.kerberos.principal</name>
+    <value></value>
+    <description>
+      tt user name key. "_HOST" is replaced by the host name of the task tracker.
+    </description>
+  </property>
 
 
 
 
   <property>
   <property>
@@ -475,54 +480,54 @@
   </property>
   </property>
 
 
 
 
- <property>
-   <name>mapreduce.jobtracker.keytab.file</name>
-   <value></value>
-   <description>
-       The keytab for the jobtracker principal.
-   </description>
+  <property>
+    <name>mapreduce.jobtracker.keytab.file</name>
+    <value></value>
+    <description>
+      The keytab for the jobtracker principal.
+    </description>
 
 
-</property>
+  </property>
 
 
- <property>
-   <name>mapreduce.tasktracker.keytab.file</name>
-   <value></value>
+  <property>
+    <name>mapreduce.tasktracker.keytab.file</name>
+    <value></value>
     <description>The filename of the keytab for the task tracker</description>
     <description>The filename of the keytab for the task tracker</description>
- </property>
+  </property>
 
 
- <property>
-   <name>mapred.task.tracker.http.address</name>
-   <value></value>
-   <description>Http address for task tracker.</description>
- </property>
+  <property>
+    <name>mapred.task.tracker.http.address</name>
+    <value></value>
+    <description>Http address for task tracker.</description>
+  </property>
 
 
- <property>
-   <name>mapreduce.jobtracker.staging.root.dir</name>
-   <value>/user</value>
- <description>The Path prefix for where the staging directories should be placed. The next level is always the user's
-   name. It is a path in the default file system.</description>
- </property>
+  <property>
+    <name>mapreduce.jobtracker.staging.root.dir</name>
+    <value>/user</value>
+    <description>The Path prefix for where the staging directories should be placed. The next level is always the user's
+      name. It is a path in the default file system.</description>
+  </property>
 
 
- <property>
-      <name>mapreduce.tasktracker.group</name>
-      <value>hadoop</value>
-      <description>The group that the task controller uses for accessing the task controller. The mapred user must be a member and users should *not* be members.</description>
+  <property>
+    <name>mapreduce.tasktracker.group</name>
+    <value>hadoop</value>
+    <description>The group that the task controller uses for accessing the task controller. The mapred user must be a member and users should *not* be members.</description>
 
 
- </property>
+  </property>
 
 
   <property>
   <property>
     <name>mapreduce.jobtracker.split.metainfo.maxsize</name>
     <name>mapreduce.jobtracker.split.metainfo.maxsize</name>
     <value>50000000</value>
     <value>50000000</value>
     <final>true</final>
     <final>true</final>
-     <description>If the size of the split metainfo file is larger than this, the JobTracker will fail the job during
-    initialize.
-   </description>
+    <description>If the size of the split metainfo file is larger than this, the JobTracker will fail the job during
+      initialize.
+    </description>
   </property>
   </property>
   <property>
   <property>
     <name>mapreduce.history.server.embedded</name>
     <name>mapreduce.history.server.embedded</name>
     <value>false</value>
     <value>false</value>
     <description>Should job history server be embedded within Job tracker
     <description>Should job history server be embedded within Job tracker
-process</description>
+      process</description>
     <final>true</final>
     <final>true</final>
   </property>
   </property>
 
 
@@ -537,38 +542,38 @@ process</description>
   <property>
   <property>
     <name>mapreduce.jobhistory.kerberos.principal</name>
     <name>mapreduce.jobhistory.kerberos.principal</name>
     <!-- cluster variant -->
     <!-- cluster variant -->
-  <value></value>
+    <value></value>
     <description>Job history user name key. (must map to same user as JT
     <description>Job history user name key. (must map to same user as JT
-user)</description>
+      user)</description>
   </property>
   </property>
 
 
- <property>
-   <name>mapreduce.jobhistory.keytab.file</name>
+  <property>
+    <name>mapreduce.jobhistory.keytab.file</name>
     <!-- cluster variant -->
     <!-- cluster variant -->
-   <value></value>
-   <description>The keytab for the job history server principal.</description>
- </property>
-
-<property>
-  <name>mapred.jobtracker.blacklist.fault-timeout-window</name>
-  <value>180</value>
-  <description>
-    3-hour sliding window (value is in minutes)
-  </description>
-</property>
-
-<property>
-  <name>mapred.jobtracker.blacklist.fault-bucket-width</name>
-  <value>15</value>
-  <description>
-    15-minute bucket size (value is in minutes)
-  </description>
-</property>
-
-<property>
-  <name>mapred.queue.names</name>
-  <value>default</value>
-  <description> Comma separated list of queues configured for this jobtracker.</description>
-</property>
+    <value></value>
+    <description>The keytab for the job history server principal.</description>
+  </property>
+
+  <property>
+    <name>mapred.jobtracker.blacklist.fault-timeout-window</name>
+    <value>180</value>
+    <description>
+      3-hour sliding window (value is in minutes)
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.jobtracker.blacklist.fault-bucket-width</name>
+    <value>15</value>
+    <description>
+      15-minute bucket size (value is in minutes)
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.queue.names</name>
+    <value>default</value>
+    <description> Comma separated list of queues configured for this jobtracker.</description>
+  </property>
 
 
 </configuration>
 </configuration>

+ 24 - 2
ambari-server/src/main/resources/stacks/HDP/1.3.3/services/HDFS/configuration/hdfs-site.xml

@@ -150,14 +150,36 @@
     </description>
     </description>
   </property>
   </property>
 
 
+  <property>
+    <name>ambari.dfs.datanode.port</name>
+    <value>50010</value>
+    <description>
+      The datanode port for data transfer. This property is effective only if referenced from dfs.datanode.address property.
+    </description>
+  </property>
+
   <property>
   <property>
     <name>dfs.datanode.address</name>
     <name>dfs.datanode.address</name>
-    <value></value>
+    <value>0.0.0.0:${ambari.dfs.datanode.port}</value>
+    <description>
+      The datanode server address and port for data transfer.
+    </description>
+  </property>
+
+  <property>
+    <name>ambari.dfs.datanode.http.port</name>
+    <value>50075</value>
+    <description>
+      The datanode http port. This property is effective only if referenced from dfs.datanode.http.address property.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.datanode.http.address</name>
     <name>dfs.datanode.http.address</name>
-    <value></value>
+    <value>0.0.0.0:${ambari.dfs.datanode.http.port}</value>
+    <description>
+      The datanode http server address and port.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>

+ 6 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.3/services/HIVE/configuration/hive-site.xml

@@ -18,6 +18,12 @@ limitations under the License.
 -->
 -->
 
 
 <configuration>
 <configuration>
+  <property>
+    <name>ambari.hive.db.schema.name</name>
+    <value>hive</value>
+    <description>Database name used as the Hive Metastore</description>
+  </property>
+
   <property>
   <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc</value>
     <value>jdbc</value>

+ 9 - 2
ambari-server/src/main/resources/stacks/HDP/1.3.3/services/MAPREDUCE/configuration/mapred-site.xml

@@ -269,11 +269,18 @@
     <value>INFO,TLA</value>
     <value>INFO,TLA</value>
   </property>
   </property>
 
 
+  <property>
+    <name>ambari.mapred.child.java.opts.memory</name>
+    <value>768</value>
+
+    <description>Java options Memory for the TaskTracker child processes</description>
+  </property>
+
   <property>
   <property>
     <name>mapred.child.java.opts</name>
     <name>mapred.child.java.opts</name>
-    <value></value>
+    <value>-server -Xmx${ambari.mapred.child.java.opts.memory}m -Djava.net.preferIPv4Stack=true</value>
 
 
-    <description>No description</description>
+    <description>Java options for the TaskTracker child processes</description>
   </property>
   </property>
 
 
   <property>
   <property>

+ 24 - 2
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HDFS/configuration/hdfs-site.xml

@@ -180,14 +180,36 @@
     </description>
     </description>
   </property>
   </property>
 
 
+  <property>
+    <name>ambari.dfs.datanode.port</name>
+    <value>50010</value>
+    <description>
+      The datanode port for data transfer. This property is effective only if referenced from dfs.datanode.address property.
+    </description>
+  </property>
+
   <property>
   <property>
     <name>dfs.datanode.address</name>
     <name>dfs.datanode.address</name>
-    <value>0.0.0.0:50010</value>
+    <value>0.0.0.0:${ambari.dfs.datanode.port}</value>
+    <description>
+      The datanode server address and port for data transfer.
+    </description>
+  </property>
+
+  <property>
+    <name>ambari.dfs.datanode.http.port</name>
+    <value>50075</value>
+    <description>
+      The datanode http port. This property is effective only if referenced from dfs.datanode.http.address property.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.datanode.http.address</name>
     <name>dfs.datanode.http.address</name>
-    <value>0.0.0.0:50075</value>
+    <value>0.0.0.0:${ambari.dfs.datanode.http.port}</value>
+    <description>
+      The datanode http server address and port.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>

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

@@ -18,6 +18,13 @@ limitations under the License.
 -->
 -->
 
 
 <configuration>
 <configuration>
+
+  <property>
+    <name>ambari.hive.db.schema.name</name>
+    <value>hive</value>
+    <description>Database name used as the Hive Metastore</description>
+  </property>
+
   <property>
   <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc</value>
     <value>jdbc</value>

+ 174 - 152
ambari-server/src/main/resources/stacks/HDP/2.0.8/services/HDFS/configuration/hdfs-site.xml

@@ -22,7 +22,7 @@
 
 
 <configuration>
 <configuration>
 
 
-<!-- file system properties -->
+  <!-- file system properties -->
 
 
   <property>
   <property>
     <name>dfs.namenode.name.dir</name>
     <name>dfs.namenode.name.dir</name>
@@ -60,11 +60,11 @@
     <name>dfs.datanode.data.dir</name>
     <name>dfs.datanode.data.dir</name>
     <value>/hadoop/hdfs/data</value>
     <value>/hadoop/hdfs/data</value>
     <description>Determines where on the local filesystem an DFS data node
     <description>Determines where on the local filesystem an DFS data node
-  should store its blocks.  If this is a comma-delimited
-  list of directories, then data will be stored in all named
-  directories, typically on different devices.
-  Directories that do not exist are ignored.
-  </description>
+      should store its blocks.  If this is a comma-delimited
+      list of directories, then data will be stored in all named
+      directories, typically on different devices.
+      Directories that do not exist are ignored.
+    </description>
     <final>true</final>
     <final>true</final>
   </property>
   </property>
 
 
@@ -72,21 +72,21 @@
     <name>dfs.hosts.exclude</name>
     <name>dfs.hosts.exclude</name>
     <value>/etc/hadoop/conf/dfs.exclude</value>
     <value>/etc/hadoop/conf/dfs.exclude</value>
     <description>Names a file that contains a list of hosts that are
     <description>Names a file that contains a list of hosts that are
-    not permitted to connect to the namenode.  The full pathname of the
-    file must be specified.  If the value is empty, no hosts are
-    excluded.</description>
+      not permitted to connect to the namenode.  The full pathname of the
+      file must be specified.  If the value is empty, no hosts are
+      excluded.</description>
   </property>
   </property>
 
 
-<!--
-  <property>
-    <name>dfs.hosts</name>
-    <value>/etc/hadoop/conf/dfs.include</value>
-    <description>Names a file that contains a list of hosts that are
-    permitted to connect to the namenode. The full pathname of the file
-    must be specified.  If the value is empty, all hosts are
-    permitted.</description>
-  </property>
--->
+  <!--
+    <property>
+      <name>dfs.hosts</name>
+      <value>/etc/hadoop/conf/dfs.include</value>
+      <description>Names a file that contains a list of hosts that are
+      permitted to connect to the namenode. The full pathname of the file
+      must be specified.  If the value is empty, all hosts are
+      permitted.</description>
+    </property>
+  -->
 
 
   <property>
   <property>
     <name>dfs.namenode.checkpoint.dir</name>
     <name>dfs.namenode.checkpoint.dir</name>
@@ -129,14 +129,14 @@
     <name>dfs.replication.max</name>
     <name>dfs.replication.max</name>
     <value>50</value>
     <value>50</value>
     <description>Maximal block replication.
     <description>Maximal block replication.
-  </description>
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.replication</name>
     <name>dfs.replication</name>
     <value>3</value>
     <value>3</value>
     <description>Default block replication.
     <description>Default block replication.
-  </description>
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -155,21 +155,21 @@
     <name>dfs.namenode.safemode.threshold-pct</name>
     <name>dfs.namenode.safemode.threshold-pct</name>
     <value>1.0f</value>
     <value>1.0f</value>
     <description>
     <description>
-        Specifies the percentage of blocks that should satisfy
-        the minimal replication requirement defined by dfs.namenode.replication.min.
-        Values less than or equal to 0 mean not to start in safe mode.
-        Values greater than 1 will make safe mode permanent.
-        </description>
+      Specifies the percentage of blocks that should satisfy
+      the minimal replication requirement defined by dfs.namenode.replication.min.
+      Values less than or equal to 0 mean not to start in safe mode.
+      Values greater than 1 will make safe mode permanent.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.datanode.balance.bandwidthPerSec</name>
     <name>dfs.datanode.balance.bandwidthPerSec</name>
     <value>6250000</value>
     <value>6250000</value>
     <description>
     <description>
-        Specifies the maximum amount of bandwidth that each datanode
-        can utilize for the balancing purpose in term of
-        the number of bytes per second.
-  </description>
+      Specifies the maximum amount of bandwidth that each datanode
+      can utilize for the balancing purpose in term of
+      the number of bytes per second.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -180,14 +180,36 @@
     </description>
     </description>
   </property>
   </property>
 
 
+  <property>
+    <name>ambari.dfs.datanode.port</name>
+    <value>50010</value>
+    <description>
+      The datanode port for data transfer. This property is effective only if referenced from dfs.datanode.address property.
+    </description>
+  </property>
+
   <property>
   <property>
     <name>dfs.datanode.address</name>
     <name>dfs.datanode.address</name>
-    <value>0.0.0.0:50010</value>
+    <value>0.0.0.0:${ambari.dfs.datanode.port}</value>
+    <description>
+      The datanode server address and port for data transfer.
+    </description>
+  </property>
+
+  <property>
+    <name>ambari.dfs.datanode.http.port</name>
+    <value>50075</value>
+    <description>
+      The datanode http port. This property is effective only if referenced from dfs.datanode.http.address property.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.datanode.http.address</name>
     <name>dfs.datanode.http.address</name>
-    <value>0.0.0.0:50075</value>
+    <value>0.0.0.0:${ambari.dfs.datanode.http.port}</value>
+    <description>
+      The datanode http server address and port.
+    </description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -199,113 +221,113 @@
   <property>
   <property>
     <name>dfs.namenode.http-address</name>
     <name>dfs.namenode.http-address</name>
     <value>localhost:50070</value>
     <value>localhost:50070</value>
-<description>The name of the default file system.  Either the
-literal string "local" or a host:port for NDFS.</description>
-<final>true</final>
-</property>
-
-<property>
-<name>dfs.datanode.du.reserved</name>
-<!-- cluster variant -->
-<value>1073741824</value>
-<description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.
-</description>
-</property>
-
-<property>
-<name>dfs.datanode.ipc.address</name>
-<value>0.0.0.0:8010</value>
-<description>
-The datanode ipc server address and port.
-If the port is 0 then the server will start on a free port.
-</description>
-</property>
-
-<property>
-<name>dfs.blockreport.initialDelay</name>
-<value>120</value>
-<description>Delay for first block report in seconds.</description>
-</property>
-
-<property>
-<name>dfs.namenode.handler.count</name>
-<value>40</value>
-<description>The number of server threads for the namenode.</description>
-</property>
-
-<property>
-<name>dfs.datanode.max.transfer.threads</name>
-<value>1024</value>
-<description>PRIVATE CONFIG VARIABLE</description>
-</property>
-
-<!-- Permissions configuration -->
-
-<property>
-<name>fs.permissions.umask-mode</name>
-<value>022</value>
-<description>
-The octal umask used when creating files and directories.
-</description>
-</property>
-
-<property>
-<name>dfs.permissions.enabled</name>
-<value>true</value>
-<description>
-If "true", enable permission checking in HDFS.
-If "false", permission checking is turned off,
-but all other behavior is unchanged.
-Switching from one parameter value to the other does not change the mode,
-owner or group of files or directories.
-</description>
-</property>
-
-<property>
-<name>dfs.permissions.superusergroup</name>
-<value>hdfs</value>
-<description>The name of the group of super-users.</description>
-</property>
-
-<property>
-<name>dfs.namenode.handler.count</name>
-<value>100</value>
-<description>Added to grow Queue size so that more client connections are allowed</description>
-</property>
-
-<property>
-<name>dfs.block.access.token.enable</name>
-<value>true</value>
-<description>
-If "true", access tokens are used as capabilities for accessing datanodes.
-If "false", no access tokens are checked on accessing datanodes.
-</description>
-</property>
-
-<property>
-<name>dfs.namenode.kerberos.principal</name>
-<value></value>
-<description>
-Kerberos principal name for the NameNode
-</description>
-</property>
-
-<property>
-<name>dfs.secondary.namenode.kerberos.principal</name>
-<value></value>
+    <description>The name of the default file system.  Either the
+      literal string "local" or a host:port for NDFS.</description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>dfs.datanode.du.reserved</name>
+    <!-- cluster variant -->
+    <value>1073741824</value>
+    <description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.ipc.address</name>
+    <value>0.0.0.0:8010</value>
     <description>
     <description>
-        Kerberos principal name for the secondary NameNode.
+      The datanode ipc server address and port.
+      If the port is 0 then the server will start on a free port.
     </description>
     </description>
   </property>
   </property>
 
 
+  <property>
+    <name>dfs.blockreport.initialDelay</name>
+    <value>120</value>
+    <description>Delay for first block report in seconds.</description>
+  </property>
+
+  <property>
+    <name>dfs.namenode.handler.count</name>
+    <value>40</value>
+    <description>The number of server threads for the namenode.</description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.max.transfer.threads</name>
+    <value>1024</value>
+    <description>PRIVATE CONFIG VARIABLE</description>
+  </property>
+
+  <!-- Permissions configuration -->
+
+  <property>
+    <name>fs.permissions.umask-mode</name>
+    <value>022</value>
+    <description>
+      The octal umask used when creating files and directories.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.permissions.enabled</name>
+    <value>true</value>
+    <description>
+      If "true", enable permission checking in HDFS.
+      If "false", permission checking is turned off,
+      but all other behavior is unchanged.
+      Switching from one parameter value to the other does not change the mode,
+      owner or group of files or directories.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.permissions.superusergroup</name>
+    <value>hdfs</value>
+    <description>The name of the group of super-users.</description>
+  </property>
 
 
-<!--
-  This is KRB DOMAIN specific. The FQDN of the namenode has to be mentioned.
--->
+  <property>
+    <name>dfs.namenode.handler.count</name>
+    <value>100</value>
+    <description>Added to grow Queue size so that more client connections are allowed</description>
+  </property>
+
+  <property>
+    <name>dfs.block.access.token.enable</name>
+    <value>true</value>
+    <description>
+      If "true", access tokens are used as capabilities for accessing datanodes.
+      If "false", no access tokens are checked on accessing datanodes.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.namenode.kerberos.principal</name>
+    <value></value>
+    <description>
+      Kerberos principal name for the NameNode
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.secondary.namenode.kerberos.principal</name>
+    <value></value>
+    <description>
+      Kerberos principal name for the secondary NameNode.
+    </description>
+  </property>
+
+
+  <!--
+    This is KRB DOMAIN specific. The FQDN of the namenode has to be mentioned.
+  -->
   <property>
   <property>
     <name>dfs.namenode.kerberos.https.principal</name>
     <name>dfs.namenode.kerberos.https.principal</name>
     <value></value>
     <value></value>
-     <description>The Kerberos principal for the host that the NameNode runs on.</description>
+    <description>The Kerberos principal for the host that the NameNode runs on.</description>
 
 
   </property>
   </property>
 
 
@@ -345,64 +367,64 @@ Kerberos principal name for the NameNode
   <property>
   <property>
     <name>dfs.datanode.kerberos.principal</name>
     <name>dfs.datanode.kerberos.principal</name>
     <value></value>
     <value></value>
- <description>
-        The Kerberos principal that the DataNode runs as. "_HOST" is replaced by the real host name.
+    <description>
+      The Kerberos principal that the DataNode runs as. "_HOST" is replaced by the real host name.
     </description>
     </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.namenode.keytab.file</name>
     <name>dfs.namenode.keytab.file</name>
     <value></value>
     <value></value>
- <description>
-        Combined keytab file containing the namenode service and host principals.
+    <description>
+      Combined keytab file containing the namenode service and host principals.
     </description>
     </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.secondary.namenode.keytab.file</name>
     <name>dfs.secondary.namenode.keytab.file</name>
     <value></value>
     <value></value>
-  <description>
-        Combined keytab file containing the namenode service and host principals.
+    <description>
+      Combined keytab file containing the namenode service and host principals.
     </description>
     </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.datanode.keytab.file</name>
     <name>dfs.datanode.keytab.file</name>
     <value></value>
     <value></value>
- <description>
-        The filename of the keytab file for the DataNode.
+    <description>
+      The filename of the keytab file for the DataNode.
     </description>
     </description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.namenode.https-address</name>
     <name>dfs.namenode.https-address</name>
     <value>localhost:50470</value>
     <value>localhost:50470</value>
-  <description>The https address where namenode binds</description>
+    <description>The https address where namenode binds</description>
 
 
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.datanode.data.dir.perm</name>
     <name>dfs.datanode.data.dir.perm</name>
     <value>750</value>
     <value>750</value>
-<description>The permissions that should be there on dfs.datanode.data.dir
-directories. The datanode will not come up if the permissions are
-different on existing dfs.datanode.data.dir directories. If the directories
-don't exist, they will be created with this permission.</description>
+    <description>The permissions that should be there on dfs.datanode.data.dir
+      directories. The datanode will not come up if the permissions are
+      different on existing dfs.datanode.data.dir directories. If the directories
+      don't exist, they will be created with this permission.</description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>dfs.namenode.accesstime.precision</name>
     <name>dfs.namenode.accesstime.precision</name>
     <value>0</value>
     <value>0</value>
     <description>The access time for HDFS file is precise upto this value.
     <description>The access time for HDFS file is precise upto this value.
-                 The default value is 1 hour. Setting a value of 0 disables
-                 access times for HDFS.
+      The default value is 1 hour. Setting a value of 0 disables
+      access times for HDFS.
     </description>
     </description>
   </property>
   </property>
 
 
   <property>
   <property>
-   <name>dfs.cluster.administrators</name>
-   <value> hdfs</value>
-   <description>ACL for who all can view the default servlets in the HDFS</description>
+    <name>dfs.cluster.administrators</name>
+    <value> hdfs</value>
+    <description>ACL for who all can view the default servlets in the HDFS</description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -435,14 +457,14 @@ don't exist, they will be created with this permission.</description>
     <value>30000</value>
     <value>30000</value>
     <description>Datanode is stale after not getting a heartbeat in this interval in ms</description>
     <description>Datanode is stale after not getting a heartbeat in this interval in ms</description>
   </property>
   </property>
-  
+
   <property>
   <property>
     <name>dfs.journalnode.http-address</name>
     <name>dfs.journalnode.http-address</name>
     <value>0.0.0.0:8480</value>
     <value>0.0.0.0:8480</value>
     <description>The address and port the JournalNode web UI listens on.
     <description>The address and port the JournalNode web UI listens on.
-     If the port is 0 then the server will start on a free port. </description>
+      If the port is 0 then the server will start on a free port. </description>
   </property>
   </property>
-  
+
   <property>
   <property>
     <name>dfs.journalnode.edits.dir</name>
     <name>dfs.journalnode.edits.dir</name>
     <value>/grid/0/hdfs/journal</value>
     <value>/grid/0/hdfs/journal</value>

+ 12 - 5
ambari-server/src/main/resources/stacks/HDP/2.0.8/services/HIVE/configuration/hive-site.xml

@@ -18,6 +18,13 @@ limitations under the License.
 -->
 -->
 
 
 <configuration>
 <configuration>
+
+  <property>
+    <name>ambari.hive.db.schema.name</name>
+    <value>hive</value>
+    <description>Database name used as the Hive Metastore</description>
+  </property>
+
   <property>
   <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc</value>
     <value>jdbc</value>
@@ -52,21 +59,21 @@ limitations under the License.
     <name>hive.metastore.sasl.enabled</name>
     <name>hive.metastore.sasl.enabled</name>
     <value></value>
     <value></value>
     <description>If true, the metastore thrift interface will be secured with SASL.
     <description>If true, the metastore thrift interface will be secured with SASL.
-     Clients must authenticate with Kerberos.</description>
+      Clients must authenticate with Kerberos.</description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>hive.metastore.kerberos.keytab.file</name>
     <name>hive.metastore.kerberos.keytab.file</name>
     <value></value>
     <value></value>
     <description>The path to the Kerberos Keytab file containing the metastore
     <description>The path to the Kerberos Keytab file containing the metastore
-     thrift server's service principal.</description>
+      thrift server's service principal.</description>
   </property>
   </property>
 
 
   <property>
   <property>
     <name>hive.metastore.kerberos.principal</name>
     <name>hive.metastore.kerberos.principal</name>
     <value></value>
     <value></value>
     <description>The service principal for the metastore thrift server. The special
     <description>The service principal for the metastore thrift server. The special
-    string _HOST will be replaced automatically with the correct host name.</description>
+      string _HOST will be replaced automatically with the correct host name.</description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -109,7 +116,7 @@ limitations under the License.
     <name>hive.security.authorization.manager</name>
     <name>hive.security.authorization.manager</name>
     <value>org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider</value>
     <value>org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider</value>
     <description>the hive client authorization manager class name.
     <description>the hive client authorization manager class name.
-    The user defined authorization class should implement interface org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider.  </description>
+      The user defined authorization class should implement interface org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider.  </description>
   </property>
   </property>
 
 
   <property>
   <property>
@@ -253,7 +260,7 @@ limitations under the License.
     <name>hive.optimize.index.filter</name>
     <name>hive.optimize.index.filter</name>
     <value>true</value>
     <value>true</value>
     <description>
     <description>
-    Whether to enable automatic use of indexes
+      Whether to enable automatic use of indexes
     </description>
     </description>
   </property>
   </property>
 
 

+ 0 - 6
ambari-web/app/controllers/main/admin/security/add/step4.js

@@ -284,12 +284,6 @@ App.MainAdminSecurityAddStep4Controller = App.MainAdminSecurityProgressControlle
         case 'security_enabled':
         case 'security_enabled':
           _property.value = 'true';
           _property.value = 'true';
           break;
           break;
-        case 'dfs_datanode_address':
-          _property.value = '1019';
-          break;
-        case 'dfs_datanode_http_address':
-          _property.value = '1022';
-          break;
       }
       }
     }, this);
     }, this);
   },
   },

+ 4 - 4
ambari-web/app/controllers/main/admin/security/disable.js

@@ -104,11 +104,11 @@ App.MainAdminSecurityDisableController = App.MainAdminSecurityProgressController
             var configName = _config.name;
             var configName = _config.name;
             if (configName in _serviceConfigTags.configs) {
             if (configName in _serviceConfigTags.configs) {
               switch (configName) {
               switch (configName) {
-                case 'dfs.datanode.address':
-                  _serviceConfigTags.configs[configName] = '0.0.0.0:50010';
+                case 'ambari.dfs.datanode.port':
+                  _serviceConfigTags.configs[configName] = '50010';
                   break;
                   break;
-                case 'dfs.datanode.http.address':
-                  _serviceConfigTags.configs[configName] = '0.0.0.0:50075';
+                case 'ambari.dfs.datanode.http.port':
+                  _serviceConfigTags.configs[configName] = '50075';
                   break;
                   break;
                 case 'mapred.task.tracker.task-controller':
                 case 'mapred.task.tracker.task-controller':
                   _serviceConfigTags.configs[configName] = 'org.apache.hadoop.mapred.DefaultTaskController';
                   _serviceConfigTags.configs[configName] = 'org.apache.hadoop.mapred.DefaultTaskController';

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

@@ -1513,7 +1513,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     var globalSiteProperties = {};
     var globalSiteProperties = {};
     globalConfigs.forEach(function (_globalSiteObj) {
     globalConfigs.forEach(function (_globalSiteObj) {
       // do not pass any globalConfigs whose name ends with _host or _hosts
       // do not pass any globalConfigs whose name ends with _host or _hosts
-      if (!/_hosts?$/.test(_globalSiteObj.name)) {
+      if (_globalSiteObj.isRequiredByAgent === true) {
         // append "m" to JVM memory options except for hadoop_heapsize
         // append "m" to JVM memory options except for hadoop_heapsize
         if (/_heapsize|_newsize|_maxnewsize$/.test(_globalSiteObj.name) && !heapsizeException.contains(_globalSiteObj.name)) {
         if (/_heapsize|_newsize|_maxnewsize$/.test(_globalSiteObj.name) && !heapsizeException.contains(_globalSiteObj.name)) {
           _globalSiteObj.value += "m";
           _globalSiteObj.value += "m";

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

@@ -721,7 +721,8 @@ App.WizardController = Em.Controller.extend({
           serviceName: _configProperties.get('serviceName'),
           serviceName: _configProperties.get('serviceName'),
           domain: _configProperties.get('domain'),
           domain: _configProperties.get('domain'),
           filename: _configProperties.get('filename'),
           filename: _configProperties.get('filename'),
-          displayType: _configProperties.get('displayType')
+          displayType: _configProperties.get('displayType'),
+          isRequiredByAgent: _configProperties.get('isRequiredByAgent')
         };
         };
         serviceConfigProperties.push(configProperty);
         serviceConfigProperties.push(configProperty);
       }, this);
       }, this);

+ 4 - 11
ambari-web/app/controllers/wizard/step8_controller.js

@@ -1446,18 +1446,16 @@ App.WizardStep8Controller = Em.Controller.extend({
     globalSiteObj.forEach(function (_globalSiteObj) {
     globalSiteObj.forEach(function (_globalSiteObj) {
       var heapsizeException =  ['hadoop_heapsize','yarn_heapsize','nodemanager_heapsize','resourcemanager_heapsize'];
       var heapsizeException =  ['hadoop_heapsize','yarn_heapsize','nodemanager_heapsize','resourcemanager_heapsize'];
       // do not pass any globals whose name ends with _host or _hosts
       // do not pass any globals whose name ends with _host or _hosts
-      if (!/_hosts?$/.test(_globalSiteObj.name)) {
+      if (_globalSiteObj.isRequiredByAgent === true) {
         // append "m" to JVM memory options except for hadoop_heapsize
         // append "m" to JVM memory options except for hadoop_heapsize
         if (/_heapsize|_newsize|_maxnewsize$/.test(_globalSiteObj.name) && !heapsizeException.contains(_globalSiteObj.name)) {
         if (/_heapsize|_newsize|_maxnewsize$/.test(_globalSiteObj.name) && !heapsizeException.contains(_globalSiteObj.name)) {
           globalSiteProperties[_globalSiteObj.name] = _globalSiteObj.value + "m";
           globalSiteProperties[_globalSiteObj.name] = _globalSiteObj.value + "m";
         } else {
         } else {
           globalSiteProperties[_globalSiteObj.name] = App.config.escapeXMLCharacters(_globalSiteObj.value);
           globalSiteProperties[_globalSiteObj.name] = App.config.escapeXMLCharacters(_globalSiteObj.value);
         }
         }
-        console.log("STEP8: name of the global property is: " + _globalSiteObj.name);
-        console.log("STEP8: value of the global property is: " + _globalSiteObj.value);
-      }
-      if (_globalSiteObj.name == 'java64_home') {
-        globalSiteProperties['java64_home'] = this.get('content.installOptions.javaHome');
+        if (_globalSiteObj.name == 'java64_home') {
+          globalSiteProperties['java64_home'] = this.get('content.installOptions.javaHome');
+        }
       }
       }
       this._recordHostOverrideFromObj(_globalSiteObj, 'global', 'version1', this);
       this._recordHostOverrideFromObj(_globalSiteObj, 'global', 'version1', this);
     }, this);
     }, this);
@@ -1614,16 +1612,11 @@ App.WizardStep8Controller = Em.Controller.extend({
     var globals = this.get('content.serviceConfigProperties').filterProperty('id', 'puppet var');
     var globals = this.get('content.serviceConfigProperties').filterProperty('id', 'puppet var');
     if (globals.someProperty('name', 'hive_database')) {
     if (globals.someProperty('name', 'hive_database')) {
       var hiveDb = globals.findProperty('name', 'hive_database');
       var hiveDb = globals.findProperty('name', 'hive_database');
-      var hiveHost = globals.findProperty('name', 'hive_hostname').value;
-      var hiveDbName = globals.findProperty('name', 'hive_database_name').value;
       if (hiveDb.value === 'New MySQL Database') {
       if (hiveDb.value === 'New MySQL Database') {
-        // hiveProperties["javax.jdo.option.ConnectionURL"] = "jdbc:mysql://"+ hiveHost + "/" + hiveDbName + "?createDatabaseIfNotExist=true";
         hiveProperties["javax.jdo.option.ConnectionDriverName"] = "com.mysql.jdbc.Driver";
         hiveProperties["javax.jdo.option.ConnectionDriverName"] = "com.mysql.jdbc.Driver";
       } else if (hiveDb.value === 'Existing MySQL Database'){
       } else if (hiveDb.value === 'Existing MySQL Database'){
-        // hiveProperties["javax.jdo.option.ConnectionURL"] = "jdbc:mysql://"+ hiveHost + "/" + hiveDbName + "?createDatabaseIfNotExist=true";
         hiveProperties["javax.jdo.option.ConnectionDriverName"] = "com.mysql.jdbc.Driver";
         hiveProperties["javax.jdo.option.ConnectionDriverName"] = "com.mysql.jdbc.Driver";
       } else { //existing oracle database
       } else { //existing oracle database
-        // hiveProperties["javax.jdo.option.ConnectionURL"] = "jdbc:oracle:thin:@//"+ hiveHost + ":1521/" + hiveDbName;
         hiveProperties["javax.jdo.option.ConnectionDriverName"] = "oracle.jdbc.driver.OracleDriver";
         hiveProperties["javax.jdo.option.ConnectionDriverName"] = "oracle.jdbc.driver.OracleDriver";
       }
       }
     }
     }

+ 0 - 15
ambari-web/app/data/HDP2/config_mapping.js

@@ -67,21 +67,6 @@ var configs = [
     "filename": "core-site.xml",
     "filename": "core-site.xml",
     "isOverridable": true
     "isOverridable": true
   },
   },
-/**********************************************hdfs-site***************************************/
-  {
-    "name": "dfs.datanode.address",
-    "templateName": ["dfs_datanode_address"],
-    "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
-    "filename": "hdfs-site.xml"
-  },
-  {
-    "name": "dfs.datanode.http.address",
-    "templateName": ["dfs_datanode_http_address"],
-    "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
-    "filename": "hdfs-site.xml"
-  },
 
 
 /**********************************************hbase-site***************************************/
 /**********************************************hbase-site***************************************/
   {
   {

+ 28 - 247
ambari-web/app/data/HDP2/global_properties.js

@@ -47,6 +47,10 @@
  *     If this is unspecified, true is assumed.
  *     If this is unspecified, true is assumed.
  *     E.g., true, false
  *     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:
  *   displayType:
  *     How the config property is to be rendered for user input.
  *     How the config property is to be rendered for user input.
  *     If this is left unspecified, "string" is assumed
  *     If this is left unspecified, "string" is assumed
@@ -86,7 +90,7 @@ module.exports =
       "displayType": "masterHosts",
       "displayType": "masterHosts",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
+      "isRequiredByAgent": false,
       "serviceName": "HDFS",
       "serviceName": "HDFS",
       "category": "NameNode",
       "category": "NameNode",
       "index": 0
       "index": 0
@@ -101,7 +105,6 @@ module.exports =
       "unit": "MB",
       "unit": "MB",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HDFS",
       "serviceName": "HDFS",
       "category": "NameNode",
       "category": "NameNode",
       "index": 2
       "index": 2
@@ -116,7 +119,6 @@ module.exports =
       "unit": "MB",
       "unit": "MB",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HDFS",
       "serviceName": "HDFS",
       "category": "NameNode",
       "category": "NameNode",
       "index": 3
       "index": 3
@@ -130,8 +132,8 @@ module.exports =
       "description": "The host that has been assigned to run SecondaryNameNode",
       "description": "The host that has been assigned to run SecondaryNameNode",
       "displayType": "masterHost",
       "displayType": "masterHost",
       "isOverridable": false,
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HDFS",
       "serviceName": "HDFS",
       "category": "SNameNode",
       "category": "SNameNode",
       "index": 0
       "index": 0
@@ -147,6 +149,7 @@ module.exports =
       "isRequired": false,
       "isRequired": false,
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
+      "isRequiredByAgent": false,
       "domain": "datanode-global",
       "domain": "datanode-global",
       "serviceName": "HDFS",
       "serviceName": "HDFS",
       "category": "DataNode",
       "category": "DataNode",
@@ -175,7 +178,6 @@ module.exports =
       "displayType": "int",
       "displayType": "int",
       "unit": "MB",
       "unit": "MB",
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HDFS",
       "serviceName": "HDFS",
       "index": 1
       "index": 1
     },
     },
@@ -189,7 +191,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HDFS",
       "serviceName": "HDFS",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -203,7 +204,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HDFS",
       "serviceName": "HDFS",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -217,7 +217,6 @@ module.exports =
       "unit": "MB",
       "unit": "MB",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HDFS",
       "serviceName": "HDFS",
       "category": "NameNode"
       "category": "NameNode"
     },
     },
@@ -231,24 +230,9 @@ module.exports =
       "displayType": "checkbox",
       "displayType": "checkbox",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
       "serviceName": "HDFS",
       "serviceName": "HDFS",
       "category": "Advanced"
       "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,
-      "domain": "global",
-      "serviceName": "HDFS",
-      "category": "NameNode"
-    },
     {
     {
       "id": "puppet var",
       "id": "puppet var",
       "name": "hcat_conf_dir",
       "name": "hcat_conf_dir",
@@ -259,7 +243,6 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "directory",
       "displayType": "directory",
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
       "serviceName": "HDFS",
       "serviceName": "HDFS",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -272,7 +255,6 @@ module.exports =
       "displayType": "checkbox",
       "displayType": "checkbox",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
       "serviceName": "HDFS"
       "serviceName": "HDFS"
     },
     },
 
 
@@ -285,8 +267,8 @@ module.exports =
       "defaultValue": "",
       "defaultValue": "",
       "isOverridable": false,
       "isOverridable": false,
       "displayType": "masterHost",
       "displayType": "masterHost",
+      "isRequiredByAgent": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "MAPREDUCE2",
       "serviceName": "MAPREDUCE2",
       "category": "HistoryServer",
       "category": "HistoryServer",
       "index": 0
       "index": 0
@@ -300,7 +282,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isVisible": true,
       "isVisible": true,
       "isReconfigurable": false,
       "isReconfigurable": false,
-      "domain": "global",
       "serviceName": "MAPREDUCE2",
       "serviceName": "MAPREDUCE2",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -313,7 +294,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isVisible": true,
       "isVisible": true,
       "isReconfigurable": false,
       "isReconfigurable": false,
-      "domain": "global",
       "serviceName": "MAPREDUCE2",
       "serviceName": "MAPREDUCE2",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -329,7 +309,6 @@ module.exports =
       "displayType": "int",
       "displayType": "int",
       "unit": "MB",
       "unit": "MB",
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "YARN",
       "serviceName": "YARN",
       "category": "General",
       "category": "General",
       "index": 0
       "index": 0
@@ -342,8 +321,8 @@ module.exports =
       "defaultValue": "",
       "defaultValue": "",
       "isOverridable": false,
       "isOverridable": false,
       "displayType": "masterHost",
       "displayType": "masterHost",
+      "isRequiredByAgent": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "YARN",
       "serviceName": "YARN",
       "category": "ResourceManager",
       "category": "ResourceManager",
       "index": 0
       "index": 0
@@ -358,7 +337,6 @@ module.exports =
       "displayType": "int",
       "displayType": "int",
       "unit": "MB",
       "unit": "MB",
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "YARN",
       "serviceName": "YARN",
       "category": "ResourceManager",
       "category": "ResourceManager",
       "index": 1
       "index": 1
@@ -371,8 +349,8 @@ module.exports =
       "defaultValue": "",
       "defaultValue": "",
       "isOverridable": false,
       "isOverridable": false,
       "displayType": "slaveHosts",
       "displayType": "slaveHosts",
+      "isRequiredByAgent": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "YARN",
       "serviceName": "YARN",
       "category": "NodeManager",
       "category": "NodeManager",
       "index": 0
       "index": 0
@@ -387,7 +365,6 @@ module.exports =
       "displayType": "int",
       "displayType": "int",
       "unit": "MB",
       "unit": "MB",
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "YARN",
       "serviceName": "YARN",
       "category": "NodeManager",
       "category": "NodeManager",
       "index": 0
       "index": 0
@@ -401,7 +378,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isReconfigurable": false,
       "isReconfigurable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "YARN",
       "serviceName": "YARN",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -414,7 +390,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isVisible": true,
       "isVisible": true,
       "isReconfigurable": false,
       "isReconfigurable": false,
-      "domain": "global",
       "serviceName": "YARN",
       "serviceName": "YARN",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -428,8 +403,8 @@ module.exports =
       "description": "The host that has been assigned to run HBase Master",
       "description": "The host that has been assigned to run HBase Master",
       "displayType": "masterHosts",
       "displayType": "masterHosts",
       "isOverridable": false,
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HBASE",
       "serviceName": "HBASE",
       "category": "HBase Master",
       "category": "HBase Master",
       "index": 0
       "index": 0
@@ -443,8 +418,8 @@ module.exports =
       "displayType": "int",
       "displayType": "int",
       "unit": "MB",
       "unit": "MB",
       "isOverridable": false,
       "isOverridable": false,
+      
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HBASE",
       "serviceName": "HBASE",
       "category": "HBase Master",
       "category": "HBase Master",
       "index": 1
       "index": 1
@@ -458,6 +433,7 @@ module.exports =
       "description": "The hosts that have been assigned to run RegionServer",
       "description": "The hosts that have been assigned to run RegionServer",
       "displayType": "slaveHosts",
       "displayType": "slaveHosts",
       "isOverridable": false,
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "isVisible": true,
       "isRequired": false,
       "isRequired": false,
       "domain": "regionserver-global",
       "domain": "regionserver-global",
@@ -489,7 +465,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HBASE",
       "serviceName": "HBASE",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -503,7 +478,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HBASE",
       "serviceName": "HBASE",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -516,7 +490,6 @@ module.exports =
       "isRequired": true,
       "isRequired": true,
       "displayType": "advanced",
       "displayType": "advanced",
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
       "serviceName": "HBASE",
       "serviceName": "HBASE",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -530,6 +503,7 @@ module.exports =
       "description": "The host that has been assigned to run Hive Metastore",
       "description": "The host that has been assigned to run Hive Metastore",
       "displayType": "masterHost",
       "displayType": "masterHost",
       "isOverridable": false,
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "isVisible": true,
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Hive Metastore",
       "category": "Hive Metastore",
@@ -547,7 +521,6 @@ module.exports =
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": false,
       "isVisible": false,
       "isReconfigurable": false,
       "isReconfigurable": false,
-      "domain": "global",
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Hive Metastore",
       "category": "Hive Metastore",
       "index": 1
       "index": 1
@@ -564,7 +537,6 @@ module.exports =
       "isVisible": false,
       "isVisible": false,
       "isOverridable": false,
       "isOverridable": false,
       "isReconfigurable": false,
       "isReconfigurable": false,
-      "domain": "global",
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Hive Metastore",
       "category": "Hive Metastore",
       "index": 1
       "index": 1
@@ -580,7 +552,6 @@ module.exports =
       "displayType": "masterHost",
       "displayType": "masterHost",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Hive Metastore",
       "category": "Hive Metastore",
       "index": 1
       "index": 1
@@ -612,7 +583,6 @@ module.exports =
       "radioName": "hive-database",
       "radioName": "hive-database",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Hive Metastore",
       "category": "Hive Metastore",
       "index": 2
       "index": 2
@@ -628,7 +598,6 @@ module.exports =
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": false,
       "isVisible": false,
       "isObserved": true,
       "isObserved": true,
-      "domain": "global",
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Hive Metastore",
       "category": "Hive Metastore",
       "index": 3
       "index": 3
@@ -642,9 +611,9 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "host",
       "displayType": "host",
       "isOverridable": false,
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": false,
       "isVisible": false,
       "isObserved": true,
       "isObserved": true,
-      "domain": "global",
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Hive Metastore",
       "category": "Hive Metastore",
       "index": 3
       "index": 3
@@ -658,9 +627,9 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "host",
       "displayType": "host",
       "isOverridable": false,
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": false,
       "isVisible": false,
       "isObserved": true,
       "isObserved": true,
-      "domain": "global",
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Hive Metastore",
       "category": "Hive Metastore",
       "index": 3
       "index": 3
@@ -674,29 +643,13 @@ module.exports =
       "description": "Host on which the database will be created by Ambari",
       "description": "Host on which the database will be created by Ambari",
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "masterHost",
       "displayType": "masterHost",
+      "isRequiredByAgent": false,
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Hive Metastore",
       "category": "Hive Metastore",
       "index": 3
       "index": 3
     },
     },
-    {
-      "id": "puppet var",
-      "name": "hive_database_name",
-      "displayName": "Database Name",
-      "description": "Database name used as the Hive Metastore",
-      "defaultValue": "hive",
-      "isReconfigurable": true,
-      "displayType": "host",
-      "isOverridable": false,
-      "isVisible": true,
-      "isObserved": true,
-      "domain": "global",
-      "serviceName": "HIVE",
-      "category": "Hive Metastore",
-      "index": 4
-    },
     {
     {
       "id": "puppet var",
       "id": "puppet var",
       "name": "hive_metastore_port",
       "name": "hive_metastore_port",
@@ -707,7 +660,6 @@ module.exports =
       "displayType": "int",
       "displayType": "int",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -720,20 +672,7 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "directory",
       "displayType": "directory",
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_conf_dir",
-      "displayName": "Hive conf directory",
-      "description": "",
-      "defaultValue": "/etc/hive/conf",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
+      "isRequiredByAgent": false, // Make this to true when we expose the property on ui by making "isVisible": true
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -746,7 +685,7 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "directory",
       "displayType": "directory",
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
+      "isRequiredByAgent": false, // Make this to true when we expose the property on ui by making "isVisible": true
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -760,7 +699,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -774,20 +712,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "mysql_connector_url",
-      "displayName": "MySQL connector url",
-      "description": "",
-      "defaultValue": "${download_url}/mysql-connector-java-5.1.18.zip",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -800,7 +724,6 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "directory",
       "displayType": "directory",
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -815,7 +738,7 @@ module.exports =
       "displayType": "masterHost",
       "displayType": "masterHost",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
+      "isRequiredByAgent": false,
       "serviceName": "WEBHCAT",
       "serviceName": "WEBHCAT",
       "category": "WebHCat Server"
       "category": "WebHCat Server"
     },
     },
@@ -829,7 +752,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "WEBHCAT",
       "serviceName": "WEBHCAT",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -843,7 +765,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "WEBHCAT",
       "serviceName": "WEBHCAT",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -858,7 +779,7 @@ module.exports =
       "displayType": "masterHost",
       "displayType": "masterHost",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
+      "isRequiredByAgent": false,
       "serviceName": "OOZIE",
       "serviceName": "OOZIE",
       "category": "Oozie Server",
       "category": "Oozie Server",
       "index": 0
       "index": 0
@@ -876,7 +797,6 @@ module.exports =
       "isObserved": true,
       "isObserved": true,
       "isReconfigurable": false,
       "isReconfigurable": false,
       "isOverridable": false,
       "isOverridable": false,
-      //"domain": "global",
       "serviceName": "OOZIE",
       "serviceName": "OOZIE",
       "category": "Oozie Server",
       "category": "Oozie Server",
       "index": 1
       "index": 1
@@ -892,7 +812,6 @@ module.exports =
       "displayType": "masterHost",
       "displayType": "masterHost",
       "isVisible": false,
       "isVisible": false,
       "isOverridable": false,
       "isOverridable": false,
-      // "domain": "global",
       "serviceName": "OOZIE",
       "serviceName": "OOZIE",
       "category": "Oozie Server",
       "category": "Oozie Server",
       "index": 1
       "index": 1
@@ -909,7 +828,6 @@ module.exports =
       "isVisible": false,
       "isVisible": false,
       "isReconfigurable": false,
       "isReconfigurable": false,
       "isOverridable": false,
       "isOverridable": false,
-      // "domain": "global",
       "serviceName": "OOZIE",
       "serviceName": "OOZIE",
       "category": "Oozie Server",
       "category": "Oozie Server",
       "index": 1
       "index": 1
@@ -926,7 +844,6 @@ module.exports =
       "isVisible": false,
       "isVisible": false,
       "isReconfigurable": false,
       "isReconfigurable": false,
       "isOverridable": false,
       "isOverridable": false,
-      //"domain": "global",
       "serviceName": "OOZIE",
       "serviceName": "OOZIE",
       "category": "Oozie Server",
       "category": "Oozie Server",
       "index": 1
       "index": 1
@@ -964,7 +881,6 @@ module.exports =
       "isOverridable": false,
       "isOverridable": false,
       "radioName": "oozie-database",
       "radioName": "oozie-database",
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "OOZIE",
       "serviceName": "OOZIE",
       "category": "Oozie Server",
       "category": "Oozie Server",
       "index": 2
       "index": 2
@@ -981,7 +897,6 @@ module.exports =
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
       "isRequired": false,
       "isRequired": false,
-      "domain": "global",
       "serviceName": "OOZIE",
       "serviceName": "OOZIE",
       "category": "Oozie Server",
       "category": "Oozie Server",
       "index": 7
       "index": 7
@@ -996,7 +911,6 @@ module.exports =
       "isOverridable": false,
       "isOverridable": false,
       "displayType": "host",
       "displayType": "host",
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
       "serviceName": "OOZIE",
       "serviceName": "OOZIE",
       "category": "Oozie Server",
       "category": "Oozie Server",
       "index": 3
       "index": 3
@@ -1012,7 +926,6 @@ module.exports =
       "displayType": "host",
       "displayType": "host",
       "isVisible": false,
       "isVisible": false,
       "isObserved": true,
       "isObserved": true,
-      //"domain": "global",
       "serviceName": "OOZIE",
       "serviceName": "OOZIE",
       "category": "Oozie Server"
       "category": "Oozie Server"
     },
     },
@@ -1027,7 +940,6 @@ module.exports =
       "displayType": "host",
       "displayType": "host",
       "isVisible": false,
       "isVisible": false,
       "isObserved": true,
       "isObserved": true,
-      //"domain": "global",
       "serviceName": "OOZIE",
       "serviceName": "OOZIE",
       "category": "Oozie Server"
       "category": "Oozie Server"
     },
     },
@@ -1042,7 +954,7 @@ module.exports =
       "isOverridable": false,
       "isOverridable": false,
       "displayType": "masterHost",
       "displayType": "masterHost",
       "isVisible": false,
       "isVisible": false,
-      //"domain": "global",
+      "isRequiredByAgent": false,
       "serviceName": "OOZIE",
       "serviceName": "OOZIE",
       "category": "Oozie Server"
       "category": "Oozie Server"
     },
     },
@@ -1056,7 +968,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "OOZIE",
       "serviceName": "OOZIE",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -1070,7 +981,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "OOZIE",
       "serviceName": "OOZIE",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -1084,7 +994,6 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "user",
       "displayType": "user",
       "isOverridable": false,
       "isOverridable": false,
-      "domain": "global",
       "isVisible": true,
       "isVisible": true,
       "serviceName": "NAGIOS",
       "serviceName": "NAGIOS",
       "index": 0
       "index": 0
@@ -1099,7 +1008,6 @@ module.exports =
       "displayType": "password",
       "displayType": "password",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "NAGIOS",
       "serviceName": "NAGIOS",
       "index": 1
       "index": 1
     },
     },
@@ -1112,7 +1020,6 @@ module.exports =
       "displayType": "email",
       "displayType": "email",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "NAGIOS",
       "serviceName": "NAGIOS",
       "index": 2
       "index": 2
     },
     },
@@ -1126,6 +1033,7 @@ module.exports =
       "description": "The host that has been assigned to run ZooKeeper Server",
       "description": "The host that has been assigned to run ZooKeeper Server",
       "displayType": "masterHosts",
       "displayType": "masterHosts",
       "isVisible": true,
       "isVisible": true,
+      "isRequiredByAgent": false,
       "isOverridable": false,
       "isOverridable": false,
       "isRequired": false,
       "isRequired": false,
       "serviceName": "ZOOKEEPER",
       "serviceName": "ZOOKEEPER",
@@ -1142,7 +1050,6 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "directory",
       "displayType": "directory",
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "ZOOKEEPER",
       "serviceName": "ZOOKEEPER",
       "category": "ZooKeeper Server",
       "category": "ZooKeeper Server",
       "index": 1
       "index": 1
@@ -1157,7 +1064,6 @@ module.exports =
       "unit": "ms",
       "unit": "ms",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "ZOOKEEPER",
       "serviceName": "ZOOKEEPER",
       "category": "ZooKeeper Server",
       "category": "ZooKeeper Server",
       "index": 2
       "index": 2
@@ -1171,7 +1077,6 @@ module.exports =
       "displayType": "int",
       "displayType": "int",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "ZOOKEEPER",
       "serviceName": "ZOOKEEPER",
       "category": "ZooKeeper Server",
       "category": "ZooKeeper Server",
       "index": 3
       "index": 3
@@ -1185,7 +1090,6 @@ module.exports =
       "displayType": "int",
       "displayType": "int",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "ZOOKEEPER",
       "serviceName": "ZOOKEEPER",
       "category": "ZooKeeper Server",
       "category": "ZooKeeper Server",
       "index": 4
       "index": 4
@@ -1199,7 +1103,6 @@ module.exports =
       "displayType": "int",
       "displayType": "int",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "ZOOKEEPER",
       "serviceName": "ZOOKEEPER",
       "category": "ZooKeeper Server",
       "category": "ZooKeeper Server",
       "index": 5
       "index": 5
@@ -1214,7 +1117,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "ZOOKEEPER",
       "serviceName": "ZOOKEEPER",
       "category": "Advanced",
       "category": "Advanced",
       "index": 0
       "index": 0
@@ -1229,24 +1131,10 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "ZOOKEEPER",
       "serviceName": "ZOOKEEPER",
       "category": "Advanced",
       "category": "Advanced",
       "index": 1
       "index": 1
     },
     },
-    {
-      "id": "puppet var",
-      "name": "zk_pid_file",
-      "displayName": "ZooKeeper PID File",
-      "description": "",
-      "defaultValue": "/var/run/zookeeper/zookeeper_server.pid",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "ZOOKEEPER",
-      "category": "Advanced"
-    },
   /**********************************************HUE***************************************/
   /**********************************************HUE***************************************/
     {
     {
       "id": "puppet var",
       "id": "puppet var",
@@ -1257,8 +1145,8 @@ module.exports =
       "description": "The host that has been assigned to run Hue Server",
       "description": "The host that has been assigned to run Hue Server",
       "displayType": "masterHost",
       "displayType": "masterHost",
       "isOverridable": false,
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HUE",
       "serviceName": "HUE",
       "category": "Hue Server"
       "category": "Hue Server"
     },
     },
@@ -1271,8 +1159,8 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "directory",
       "displayType": "directory",
       "isOverridable": false,
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HUE",
       "serviceName": "HUE",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -1285,8 +1173,8 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "directory",
       "displayType": "directory",
       "isOverridable": false,
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "HUE",
       "serviceName": "HUE",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -1300,7 +1188,7 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "directory",
       "displayType": "directory",
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
+      "isRequiredByAgent": false,
       "serviceName": "GANGLIA",
       "serviceName": "GANGLIA",
       "category": "Advanced"
       "category": "Advanced"
     },
     },
@@ -1314,7 +1202,7 @@ module.exports =
       "isRequired": false,
       "isRequired": false,
       "displayType": "directory",
       "displayType": "directory",
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
+      "isRequiredByAgent": false,
       "serviceName": "MISC",
       "serviceName": "MISC",
       "category": "General",
       "category": "General",
       "belongsToService":[]
       "belongsToService":[]
@@ -1330,69 +1218,10 @@ module.exports =
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
       "filename": "core-site.xml",
       "filename": "core-site.xml",
-      "domain": "global",
       "serviceName": "MISC",
       "serviceName": "MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
       "belongsToService":["HIVE","WEBHCAT","OOZIE"]
       "belongsToService":["HIVE","WEBHCAT","OOZIE"]
     },
     },
-    {
-      "id": "puppet var",
-      "name": "dfs_datanode_address",
-      "displayName": "dfs_datanode_address",
-      "description": "",
-      "defaultValue": "50010",
-      "isReconfigurable": true,
-      "displayType": "int",
-      "isVisible": true,
-      "filename": "hdfs-site.xml",
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "Advanced",
-      "belongsToService":[]
-    },
-    {
-      "id": "puppet var",
-      "name": "dfs_datanode_http_address",
-      "displayName": "dfs_datanode_http_address",
-      "description": "",
-      "defaultValue": "50075",
-      "isReconfigurable": true,
-      "displayType": "int",
-      "isVisible": true,
-      "filename": "hdfs-site.xml",
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "Advanced",
-      "belongsToService":[]
-    },
-    {
-      "id": "puppet var",
-      "name": "gpl_artifacts_download_url",
-      "displayName": "gpl artifact download url",
-      "description": "",
-      "defaultValue": "",
-      "isReconfigurable": false,
-      "displayType": "advanced",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "General",
-      "belongsToService":[]
-    },
-    {
-      "id": "puppet var",
-      "name": "apache_artifacts_download_url",
-      "displayName": "apache artifact download url",
-      "description": "",
-      "defaultValue": "",
-      "isReconfigurable": false,
-      "displayType": "advanced",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "General",
-      "belongsToService":[]
-    },
     {
     {
       "id": "puppet var",
       "id": "puppet var",
       "name": "ganglia_runtime_dir",
       "name": "ganglia_runtime_dir",
@@ -1402,7 +1231,6 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "directory",
       "displayType": "directory",
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
       "serviceName": "MISC",
       "serviceName": "MISC",
       "category": "General",
       "category": "General",
       "belongsToService":[]
       "belongsToService":[]
@@ -1417,38 +1245,7 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "directory",
       "displayType": "directory",
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "belongsToService":[]
-    },
-    {
-      "id": "puppet var",
-      "name": "run_dir",
-      "displayName": "Hadoop run directory",
-      "description": "",
-      "defaultValue": "/var/run/hadoop",
-      "isRequired": false,
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "Advanced",
-      "belongsToService":[]
-    },
-    {
-      "id": "puppet var",
-      "name": "hadoop_conf_dir",
-      "displayName": "Hadoop conf directory",
-      "description": "",
-      "defaultValue": "/etc/hadoop/conf",
-      "isRequired": false,
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
       "serviceName": "MISC",
       "serviceName": "MISC",
-      "category": "Advanced",
       "belongsToService":[]
       "belongsToService":[]
     },
     },
     {
     {
@@ -1462,7 +1259,6 @@ module.exports =
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
       "serviceName": "MISC",
       "serviceName": "MISC",
-      "domain": "global",
       "category": "Users and Groups",
       "category": "Users and Groups",
       "belongsToService":["HDFS"]
       "belongsToService":["HDFS"]
     },
     },
@@ -1476,7 +1272,6 @@ module.exports =
       "displayType": "user",
       "displayType": "user",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "MISC",
       "serviceName": "MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
       "belongsToService":["MAPREDUCE2"]
       "belongsToService":["MAPREDUCE2"]
@@ -1491,7 +1286,6 @@ module.exports =
       "displayType": "user",
       "displayType": "user",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "MISC",
       "serviceName": "MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
       "belongsToService":["YARN"]
       "belongsToService":["YARN"]
@@ -1506,7 +1300,6 @@ module.exports =
       "displayType": "user",
       "displayType": "user",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "MISC",
       "serviceName": "MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
       "belongsToService":["HBASE"]
       "belongsToService":["HBASE"]
@@ -1521,7 +1314,6 @@ module.exports =
       "displayType": "user",
       "displayType": "user",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "MISC",
       "serviceName": "MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
       "belongsToService":["HIVE"]
       "belongsToService":["HIVE"]
@@ -1536,7 +1328,6 @@ module.exports =
       "displayType": "user",
       "displayType": "user",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "MISC",
       "serviceName": "MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
       "belongsToService":["HCATALOG"]
       "belongsToService":["HCATALOG"]
@@ -1551,7 +1342,6 @@ module.exports =
       "displayType": "user",
       "displayType": "user",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "MISC",
       "serviceName": "MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
       "belongsToService":["WEBHCAT"]
       "belongsToService":["WEBHCAT"]
@@ -1566,7 +1356,6 @@ module.exports =
       "displayType": "user",
       "displayType": "user",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "MISC",
       "serviceName": "MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
       "belongsToService":["OOZIE"]
       "belongsToService":["OOZIE"]
@@ -1581,7 +1370,6 @@ module.exports =
       "displayType": "user",
       "displayType": "user",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "MISC",
       "serviceName": "MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
       "belongsToService":["ZOOKEEPER"]
       "belongsToService":["ZOOKEEPER"]
@@ -1596,7 +1384,6 @@ module.exports =
       "displayType": "user",
       "displayType": "user",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "MISC",
       "serviceName": "MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
       "belongsToService":["GANGLIA"]
       "belongsToService":["GANGLIA"]
@@ -1611,7 +1398,6 @@ module.exports =
       "displayType": "advanced",
       "displayType": "advanced",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": false,
       "isVisible": false,
-      "domain": "global",
       "serviceName":"MISC",
       "serviceName":"MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
       "belongsToService":[]
       "belongsToService":[]
@@ -1625,7 +1411,6 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "user",
       "displayType": "user",
       "isOverridable": false,
       "isOverridable": false,
-      "domain": "global",
       "isVisible": true,
       "isVisible": true,
       "serviceName":"MISC",
       "serviceName":"MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
@@ -1640,7 +1425,6 @@ module.exports =
       "isReconfigurable": false,
       "isReconfigurable": false,
       "displayType": "user",
       "displayType": "user",
       "isOverridable": false,
       "isOverridable": false,
-      "domain": "global",
       "isVisible": true,
       "isVisible": true,
       "serviceName":"MISC",
       "serviceName":"MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
@@ -1656,7 +1440,6 @@ module.exports =
       "displayType": "user",
       "displayType": "user",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": App.supports.customizeSmokeTestUser,
       "isVisible": App.supports.customizeSmokeTestUser,
-      "domain": "global",
       "serviceName": "MISC",
       "serviceName": "MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
       "belongsToService":["HDFS"]
       "belongsToService":["HDFS"]
@@ -1671,7 +1454,6 @@ module.exports =
       "displayType": "user",
       "displayType": "user",
       "isOverridable": false,
       "isOverridable": false,
       "isVisible": true,
       "isVisible": true,
-      "domain": "global",
       "serviceName": "MISC",
       "serviceName": "MISC",
       "category": "Users and Groups",
       "category": "Users and Groups",
       "belongsToService":["HDFS"]
       "belongsToService":["HDFS"]
@@ -1685,7 +1467,6 @@ module.exports =
       "displayType": "directory",
       "displayType": "directory",
       "isReconfigurable": true,
       "isReconfigurable": true,
       "isOverridable": false,
       "isOverridable": false,
-      "domain": "global",
       "isVisible": true,
       "isVisible": true,
       "serviceName": "GANGLIA",
       "serviceName": "GANGLIA",
       "category": "General",
       "category": "General",

+ 4 - 4
ambari-web/app/data/HDP2/secure_mapping.js

@@ -146,18 +146,18 @@ module.exports = [
     "serviceName": "HDFS"
     "serviceName": "HDFS"
   },
   },
   {
   {
-    "name": "dfs.datanode.address",
+    "name": "ambari.dfs.datanode.port",
     "templateName": ["dfs_datanode_address"],
     "templateName": ["dfs_datanode_address"],
     "foreignKey": null,
     "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
+    "value": "<templateName[0]>",
     "filename": "hdfs-site.xml",
     "filename": "hdfs-site.xml",
     "serviceName": "HDFS"
     "serviceName": "HDFS"
   },
   },
   {
   {
-    "name": "dfs.datanode.http.address",
+    "name": "ambari.dfs.datanode.http.port",
     "templateName": ["dfs_datanode_http_address"],
     "templateName": ["dfs_datanode_http_address"],
     "foreignKey": null,
     "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
+    "value": "<templateName[0]>",
     "filename": "hdfs-site.xml",
     "filename": "hdfs-site.xml",
     "serviceName": "HDFS"
     "serviceName": "HDFS"
   },
   },

+ 14 - 0
ambari-web/app/data/HDP2/site_properties.js

@@ -485,6 +485,20 @@ module.exports =
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "index": 7
       "index": 7
     },
     },
+    {
+      "id": "site property",
+      "name": "ambari.hive.db.schema.name",
+      "displayName": "Database Name",
+      "description": "Database name used as the Hive Metastore",
+      "defaultValue": "",
+      "isReconfigurable": true,
+      "displayType": "host",
+      "isOverridable": false,
+      "isObserved": true,
+      "serviceName": "HIVE",
+      "category": "Hive Metastore",
+      "index": 4
+    },
 
 
   /**********************************************hbase-site***************************************/
   /**********************************************hbase-site***************************************/
     {
     {

+ 0 - 23
ambari-web/app/data/config_mapping.js

@@ -66,29 +66,6 @@ var configs = [
     "filename": "core-site.xml",
     "filename": "core-site.xml",
     "isOverridable" : true
     "isOverridable" : true
   },
   },
-  {
-    "name": "dfs.datanode.address",
-    "templateName": ["dfs_datanode_address"],
-    "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
-    "filename": "hdfs-site.xml"
-  },
-  {
-    "name": "dfs.datanode.http.address",
-    "templateName": ["dfs_datanode_http_address"],
-    "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
-    "filename": "hdfs-site.xml"
-  },
-
-  /******************************************MAPREDUCE***************************************/
-  {
-    "name": "mapred.child.java.opts",
-    "templateName": ["mapred_child_java_opts_sz"],
-    "foreignKey": null,
-    "value": "-server -Xmx<templateName[0]>m -Djava.net.preferIPv4Stack=true",
-    "filename": "mapred-site.xml"
-  },
 
 
 /**********************************************hbase-site***************************************/
 /**********************************************hbase-site***************************************/
   {
   {

File diff suppressed because it is too large
+ 75 - 398
ambari-web/app/data/global_properties.js


+ 4 - 4
ambari-web/app/data/secure_mapping.js

@@ -123,18 +123,18 @@ module.exports = [
     "serviceName": "HDFS"
     "serviceName": "HDFS"
   },
   },
   {
   {
-    "name": "dfs.datanode.address",
+    "name": "ambari.dfs.datanode.port",
     "templateName": ["dfs_datanode_address"],
     "templateName": ["dfs_datanode_address"],
     "foreignKey": null,
     "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
+    "value": "<templateName[0]>",
     "filename": "hdfs-site.xml",
     "filename": "hdfs-site.xml",
     "serviceName": "HDFS"
     "serviceName": "HDFS"
   },
   },
   {
   {
-    "name": "dfs.datanode.http.address",
+    "name": "ambari.dfs.datanode.http.port",
     "templateName": ["dfs_datanode_http_address"],
     "templateName": ["dfs_datanode_http_address"],
     "foreignKey": null,
     "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
+    "value": "<templateName[0]>",
     "filename": "hdfs-site.xml",
     "filename": "hdfs-site.xml",
     "serviceName": "HDFS"
     "serviceName": "HDFS"
   },
   },

+ 26 - 0
ambari-web/app/data/site_properties.js

@@ -344,6 +344,18 @@ module.exports =
       "category": "Advanced",
       "category": "Advanced",
       "serviceName": "MAPREDUCE"
       "serviceName": "MAPREDUCE"
     },
     },
+    {
+      "id": "site property",
+      "name": "ambari.mapred.child.java.opts.memory",
+      "displayName": "Java options for MapReduce tasks",
+      "description": "Java options for the TaskTracker child processes.",
+      "defaultValue": "",
+      "displayType": "int",
+      "unit": "MB",
+      "category": "TaskTracker",
+      "serviceName": "MAPREDUCE",
+      "index": 4
+    },
 
 
   /**********************************************oozie-site***************************************/
   /**********************************************oozie-site***************************************/
     {
     {
@@ -460,6 +472,20 @@ module.exports =
       "serviceName": "HIVE",
       "serviceName": "HIVE",
       "index": 7
       "index": 7
     },
     },
+    {
+      "id": "site property",
+      "name": "ambari.hive.db.schema.name",
+      "displayName": "Database Name",
+      "description": "Database name used as the Hive Metastore",
+      "defaultValue": "",
+      "isReconfigurable": true,
+      "displayType": "host",
+      "isOverridable": false,
+      "isObserved": true,
+      "serviceName": "HIVE",
+      "category": "Hive Metastore",
+      "index": 4
+    },
 
 
   /**********************************************hbase-site***************************************/
   /**********************************************hbase-site***************************************/
     {
     {

+ 1 - 0
ambari-web/app/models/service_config.js

@@ -146,6 +146,7 @@ App.ServiceConfigProperty = Ember.Object.extend({
   isReconfigurable: true, // by default a config property is reconfigurable
   isReconfigurable: true, // by default a config property is reconfigurable
   isEditable: true, // by default a config property is editable
   isEditable: true, // by default a config property is editable
   isVisible: true,
   isVisible: true,
+  isRequiredByAgent: true, // Setting it to true implies property will be stored in global configuration
   isSecureConfig: false,
   isSecureConfig: false,
   errorMessage: '',
   errorMessage: '',
   warnMessage: '',
   warnMessage: '',

+ 88 - 74
ambari-web/app/utils/config.js

@@ -64,28 +64,28 @@ App.config = Em.Object.create({
       return self.xmlEscapeMap[s];
       return self.xmlEscapeMap[s];
     });
     });
   },
   },
-  preDefinedServiceConfigs: function(){
+  preDefinedServiceConfigs: function () {
     var configs = this.get('preDefinedGlobalProperties');
     var configs = this.get('preDefinedGlobalProperties');
     var services = [];
     var services = [];
-    $.extend(true, [], require('data/service_configs')).forEach(function(service){
+    $.extend(true, [], require('data/service_configs')).forEach(function (service) {
       service.configs = configs.filterProperty('serviceName', service.serviceName);
       service.configs = configs.filterProperty('serviceName', service.serviceName);
       services.push(service);
       services.push(service);
     });
     });
     return services;
     return services;
   }.property('preDefinedGlobalProperties'),
   }.property('preDefinedGlobalProperties'),
-  configMapping: function() {
-      if (App.get('isHadoop2Stack')) {
-        return $.extend(true, [],require('data/HDP2/config_mapping'));
-      }
-    return $.extend(true, [],require('data/config_mapping'));
+  configMapping: function () {
+    if (App.get('isHadoop2Stack')) {
+      return $.extend(true, [], require('data/HDP2/config_mapping'));
+    }
+    return $.extend(true, [], require('data/config_mapping'));
   }.property('App.isHadoop2Stack'),
   }.property('App.isHadoop2Stack'),
-  preDefinedGlobalProperties: function() {
+  preDefinedGlobalProperties: function () {
     if (App.get('isHadoop2Stack')) {
     if (App.get('isHadoop2Stack')) {
       return $.extend(true, [], require('data/HDP2/global_properties').configProperties);
       return $.extend(true, [], require('data/HDP2/global_properties').configProperties);
     }
     }
     return $.extend(true, [], require('data/global_properties').configProperties);
     return $.extend(true, [], require('data/global_properties').configProperties);
   }.property('App.isHadoop2Stack'),
   }.property('App.isHadoop2Stack'),
-  preDefinedSiteProperties: function() {
+  preDefinedSiteProperties: function () {
     if (App.get('isHadoop2Stack')) {
     if (App.get('isHadoop2Stack')) {
       return $.extend(true, [], require('data/HDP2/site_properties').configProperties);
       return $.extend(true, [], require('data/HDP2/site_properties').configProperties);
     }
     }
@@ -100,9 +100,9 @@ App.config = Em.Object.create({
   //categories which contain custom configs
   //categories which contain custom configs
   categoriesWithCustom: ['CapacityScheduler'],
   categoriesWithCustom: ['CapacityScheduler'],
   //configs with these filenames go to appropriate category not in Advanced
   //configs with these filenames go to appropriate category not in Advanced
-  customFileNames: function() {
+  customFileNames: function () {
     if (App.supports.capacitySchedulerUi) {
     if (App.supports.capacitySchedulerUi) {
-      if(App.get('isHadoop2Stack')){
+      if (App.get('isHadoop2Stack')) {
         return ['capacity-scheduler.xml'];
         return ['capacity-scheduler.xml'];
       }
       }
       return ['capacity-scheduler.xml', 'mapred-queue-acls.xml'];
       return ['capacity-scheduler.xml', 'mapred-queue-acls.xml'];
@@ -146,12 +146,12 @@ App.config = Em.Object.create({
 
 
   /**
   /**
    * Array of global "service/desired_tag/actual_tag" strings which
    * Array of global "service/desired_tag/actual_tag" strings which
-   * indicate different configurations. We cache these so that 
+   * indicate different configurations. We cache these so that
    * we dont have to recalculate if two tags are difference.
    * we dont have to recalculate if two tags are difference.
    */
    */
-  differentGlobalTagsCache:[],
-  
-  identifyCategory: function(config){
+  differentGlobalTagsCache: [],
+
+  identifyCategory: function (config) {
     var category = null;
     var category = null;
     var serviceConfigMetaData = this.get('preDefinedServiceConfigs').findProperty('serviceName', config.serviceName);
     var serviceConfigMetaData = this.get('preDefinedServiceConfigs').findProperty('serviceName', config.serviceName);
     if (serviceConfigMetaData) {
     if (serviceConfigMetaData) {
@@ -169,7 +169,7 @@ App.config = Em.Object.create({
    * checkbox and digital which values with 'm' at the end
    * checkbox and digital which values with 'm' at the end
    * @param config
    * @param config
    */
    */
-  handleSpecialProperties: function(config){
+  handleSpecialProperties: function (config) {
     if (config.displayType === 'int' && /\d+m$/.test(config.value)) {
     if (config.displayType === 'int' && /\d+m$/.test(config.value)) {
       config.value = config.value.slice(0, config.value.length - 1);
       config.value = config.value.slice(0, config.value.length - 1);
       config.defaultValue = config.value;
       config.defaultValue = config.value;
@@ -185,12 +185,12 @@ App.config = Em.Object.create({
    * @param isAdvanced
    * @param isAdvanced
    * @param advancedConfigs
    * @param advancedConfigs
    */
    */
-  calculateConfigProperties: function(config, isAdvanced, advancedConfigs){
+  calculateConfigProperties: function (config, isAdvanced, advancedConfigs) {
     if (!isAdvanced || this.get('customFileNames').contains(config.filename)) {
     if (!isAdvanced || this.get('customFileNames').contains(config.filename)) {
       var categoryMetaData = this.identifyCategory(config);
       var categoryMetaData = this.identifyCategory(config);
       if (categoryMetaData != null) {
       if (categoryMetaData != null) {
         config.category = categoryMetaData.get('name');
         config.category = categoryMetaData.get('name');
-        if(!isAdvanced) config.isUserProperty = true;
+        if (!isAdvanced) config.isUserProperty = true;
       }
       }
     } else {
     } else {
       config.category = config.category ? config.category : 'Advanced';
       config.category = config.category ? config.category : 'Advanced';
@@ -202,7 +202,7 @@ App.config = Em.Object.create({
   capacitySchedulerFilter: function () {
   capacitySchedulerFilter: function () {
     var yarnRegex = /^yarn\.scheduler\.capacity\.root\.(?!unfunded)([a-z]([\_\-a-z0-9]{0,50}))\.(acl_administer_jobs|acl_submit_jobs|state|user-limit-factor|maximum-capacity|capacity)$/i;
     var yarnRegex = /^yarn\.scheduler\.capacity\.root\.(?!unfunded)([a-z]([\_\-a-z0-9]{0,50}))\.(acl_administer_jobs|acl_submit_jobs|state|user-limit-factor|maximum-capacity|capacity)$/i;
     var self = this;
     var self = this;
-    if(App.get('isHadoop2Stack')){
+    if (App.get('isHadoop2Stack')) {
       return function (_config) {
       return function (_config) {
         return (yarnRegex.test(_config.name));
         return (yarnRegex.test(_config.name));
       }
       }
@@ -230,7 +230,6 @@ App.config = Em.Object.create({
     var globalConfigs = [];
     var globalConfigs = [];
     var preDefinedConfigs = this.get('preDefinedGlobalProperties').concat(this.get('preDefinedSiteProperties'));
     var preDefinedConfigs = this.get('preDefinedGlobalProperties').concat(this.get('preDefinedSiteProperties'));
     var mappingConfigs = [];
     var mappingConfigs = [];
-
     tags.forEach(function (_tag) {
     tags.forEach(function (_tag) {
       var isAdvanced = null;
       var isAdvanced = null;
       var properties = configGroups.filter(function (serviceConfigProperties) {
       var properties = configGroups.filter(function (serviceConfigProperties) {
@@ -252,20 +251,12 @@ App.config = Em.Object.create({
         });
         });
 
 
         if (configsPropertyDef) {
         if (configsPropertyDef) {
-          serviceConfigObj.displayType = configsPropertyDef.displayType;
-          serviceConfigObj.isRequired = (configsPropertyDef.isRequired !== undefined) ? configsPropertyDef.isRequired : true;
-          serviceConfigObj.isReconfigurable = (configsPropertyDef.isReconfigurable !== undefined) ? configsPropertyDef.isReconfigurable : true;
-          serviceConfigObj.isVisible = (configsPropertyDef.isVisible !== undefined) ? configsPropertyDef.isVisible : true;
-          serviceConfigObj.unit = (configsPropertyDef.unit !== undefined) ? configsPropertyDef.unit : undefined;
-          serviceConfigObj.description = (configsPropertyDef.description !== undefined) ? configsPropertyDef.description : undefined;
-          serviceConfigObj.isOverridable = configsPropertyDef.isOverridable === undefined ? true : configsPropertyDef.isOverridable;
-          serviceConfigObj.serviceName = configsPropertyDef ? configsPropertyDef.serviceName : null;
-          serviceConfigObj.index = configsPropertyDef.index;
-          serviceConfigObj.isSecureConfig = configsPropertyDef.isSecureConfig === undefined ? false : configsPropertyDef.isSecureConfig;
-          serviceConfigObj.belongsToService = configsPropertyDef.belongsToService;
-          serviceConfigObj.category = configsPropertyDef.category;
+          this.setServiceConfigUiAttributes(serviceConfigObj, configsPropertyDef);
         }
         }
         if (_tag.siteName === 'global') {
         if (_tag.siteName === 'global') {
+          if (configsPropertyDef.isRequiredByAgent === false) {
+            continue;
+          }
           if (configsPropertyDef) {
           if (configsPropertyDef) {
             this.handleSpecialProperties(serviceConfigObj);
             this.handleSpecialProperties(serviceConfigObj);
           } else {
           } else {
@@ -295,34 +286,55 @@ App.config = Em.Object.create({
       mappingConfigs: mappingConfigs
       mappingConfigs: mappingConfigs
     }
     }
   },
   },
+
+  /**
+   * @param serviceConfigObj : Object
+   * @param configsPropertyDef : Object
+   */
+  setServiceConfigUiAttributes: function (serviceConfigObj, configsPropertyDef) {
+    serviceConfigObj.displayType = configsPropertyDef.displayType;
+    serviceConfigObj.isRequired = (configsPropertyDef.isRequired !== undefined) ? configsPropertyDef.isRequired : true;
+    serviceConfigObj.isRequiredByAgent = (configsPropertyDef.isRequiredByAgent !== undefined) ? configsPropertyDef.isRequiredByAgent : true;
+    serviceConfigObj.isReconfigurable = (configsPropertyDef.isReconfigurable !== undefined) ? configsPropertyDef.isReconfigurable : true;
+    serviceConfigObj.isVisible = (configsPropertyDef.isVisible !== undefined) ? configsPropertyDef.isVisible : true;
+    serviceConfigObj.unit = (configsPropertyDef.unit !== undefined) ? configsPropertyDef.unit : undefined;
+    serviceConfigObj.description = (configsPropertyDef.description !== undefined) ? configsPropertyDef.description : undefined;
+    serviceConfigObj.isOverridable = configsPropertyDef.isOverridable === undefined ? true : configsPropertyDef.isOverridable;
+    serviceConfigObj.serviceName = configsPropertyDef ? configsPropertyDef.serviceName : null;
+    serviceConfigObj.index = configsPropertyDef.index;
+    serviceConfigObj.isSecureConfig = configsPropertyDef.isSecureConfig === undefined ? false : configsPropertyDef.isSecureConfig;
+    serviceConfigObj.belongsToService = configsPropertyDef.belongsToService;
+    serviceConfigObj.category = configsPropertyDef.category;
+  },
+
   /**
   /**
    * synchronize order of config properties with order, that on UI side
    * synchronize order of config properties with order, that on UI side
    * @param configSet
    * @param configSet
    * @return {Object}
    * @return {Object}
    */
    */
-  syncOrderWithPredefined: function(configSet){
+  syncOrderWithPredefined: function (configSet) {
     var globalConfigs = configSet.globalConfigs,
     var globalConfigs = configSet.globalConfigs,
-        siteConfigs = configSet.configs,
-        globalStart = [],
-        siteStart = [];
+      siteConfigs = configSet.configs,
+      globalStart = [],
+      siteStart = [];
 
 
-    this.get('preDefinedGlobalProperties').mapProperty('name').forEach(function(name){
+    this.get('preDefinedGlobalProperties').mapProperty('name').forEach(function (name) {
       var _global = globalConfigs.findProperty('name', name);
       var _global = globalConfigs.findProperty('name', name);
-      if(_global){
+      if (_global) {
         globalStart.push(_global);
         globalStart.push(_global);
         globalConfigs = globalConfigs.without(_global);
         globalConfigs = globalConfigs.without(_global);
       }
       }
     }, this);
     }, this);
 
 
-    this.get('preDefinedSiteProperties').mapProperty('name').forEach(function(name){
+    this.get('preDefinedSiteProperties').mapProperty('name').forEach(function (name) {
       var _site = siteConfigs.findProperty('name', name);
       var _site = siteConfigs.findProperty('name', name);
-      if(_site){
+      if (_site) {
         siteStart.push(_site);
         siteStart.push(_site);
         siteConfigs = siteConfigs.without(_site);
         siteConfigs = siteConfigs.without(_site);
       }
       }
     }, this);
     }, this);
 
 
-    var alphabeticalSort = function(a, b){
+    var alphabeticalSort = function (a, b) {
       if (a.name < b.name) return -1;
       if (a.name < b.name) return -1;
       if (a.name > b.name) return 1;
       if (a.name > b.name) return 1;
       return 0;
       return 0;
@@ -413,7 +425,7 @@ App.config = Em.Object.create({
       if (_config) {
       if (_config) {
         if (this.get('configMapping').computed().someProperty('name', _config.name)) {
         if (this.get('configMapping').computed().someProperty('name', _config.name)) {
         } else if (!(configsToVerifying.someProperty('name', _config.name))) {
         } else if (!(configsToVerifying.someProperty('name', _config.name))) {
-          if(this.get('customFileNames').contains(_config.filename)){
+          if (this.get('customFileNames').contains(_config.filename)) {
             categoryMetaData = this.identifyCategory(_config);
             categoryMetaData = this.identifyCategory(_config);
             if (categoryMetaData != null) {
             if (categoryMetaData != null) {
               configCategory = categoryMetaData.get('name');
               configCategory = categoryMetaData.get('name');
@@ -445,7 +457,7 @@ App.config = Em.Object.create({
     var stored = configs.filter(function (_config) {
     var stored = configs.filter(function (_config) {
       return this.get('categoriesWithCustom').contains(_config.category);
       return this.get('categoriesWithCustom').contains(_config.category);
     }, this);
     }, this);
-    if(App.supports.capacitySchedulerUi){
+    if (App.supports.capacitySchedulerUi) {
       var queueProperties = stored.filter(this.get('capacitySchedulerFilter'));
       var queueProperties = stored.filter(this.get('capacitySchedulerFilter'));
       if (queueProperties.length) {
       if (queueProperties.length) {
         queueProperties.setEach('isQueue', true);
         queueProperties.setEach('isQueue', true);
@@ -454,8 +466,10 @@ App.config = Em.Object.create({
   },
   },
 
 
   miscConfigVisibleProperty: function (configs, serviceToShow) {
   miscConfigVisibleProperty: function (configs, serviceToShow) {
-    configs.forEach(function(item) {
-      item.set("isVisible", item.belongsToService.some(function(cur){return serviceToShow.contains(cur)}));
+    configs.forEach(function (item) {
+      item.set("isVisible", item.belongsToService.some(function (cur) {
+        return serviceToShow.contains(cur)
+      }));
     });
     });
     return configs;
     return configs;
   },
   },
@@ -505,10 +519,10 @@ App.config = Em.Object.create({
       // Use calculated default values for some configs
       // Use calculated default values for some configs
       var recommendedDefaults = {};
       var recommendedDefaults = {};
       if (!storedConfigs && service.defaultsProviders) {
       if (!storedConfigs && service.defaultsProviders) {
-        service.defaultsProviders.forEach(function(defaultsProvider) {
+        service.defaultsProviders.forEach(function (defaultsProvider) {
           var defaults = defaultsProvider.getDefaults(localDB);
           var defaults = defaultsProvider.getDefaults(localDB);
-          for(var name in defaults) {
-        	recommendedDefaults[name] = defaults[name];
+          for (var name in defaults) {
+            recommendedDefaults[name] = defaults[name];
             var config = configsByService.findProperty('name', name);
             var config = configsByService.findProperty('name', name);
             if (config) {
             if (config) {
               config.set('value', defaults[name]);
               config.set('value', defaults[name]);
@@ -518,10 +532,10 @@ App.config = Em.Object.create({
         });
         });
       }
       }
       if (service.configsValidator) {
       if (service.configsValidator) {
-    	service.configsValidator.set('recommendedDefaults', recommendedDefaults);
-    	var validators = service.configsValidator.get('configValidators');
-    	for (var validatorName in validators) {
-        var c = configsByService.findProperty('name', validatorName);
+        service.configsValidator.set('recommendedDefaults', recommendedDefaults);
+        var validators = service.configsValidator.get('configValidators');
+        for (var validatorName in validators) {
+          var c = configsByService.findProperty('name', validatorName);
           if (c) {
           if (c) {
             c.set('serviceValidator', service.configsValidator);
             c.set('serviceValidator', service.configsValidator);
           }
           }
@@ -534,13 +548,13 @@ App.config = Em.Object.create({
     return renderedServiceConfigs;
     return renderedServiceConfigs;
   },
   },
   /**
   /**
-  Takes care of the "dynamic defaults" for the HCFS configs.  Sets
-  some of the config defaults to previously user-entered data.
-  **/
+   Takes care of the "dynamic defaults" for the HCFS configs.  Sets
+   some of the config defaults to previously user-entered data.
+   **/
   tweakDynamicDefaults: function (localDB, serviceConfigProperty, config) {
   tweakDynamicDefaults: function (localDB, serviceConfigProperty, config) {
     console.log("Step7: Tweaking Dynamic defaults");
     console.log("Step7: Tweaking Dynamic defaults");
     var firstHost = null;
     var firstHost = null;
-    for(var host in localDB.hosts) {
+    for (var host in localDB.hosts) {
       firstHost = host;
       firstHost = host;
       break;
       break;
     }
     }
@@ -595,7 +609,7 @@ App.config = Em.Object.create({
     serviceConfig.configCategories.filterProperty('isCustomView', true).forEach(function (category) {
     serviceConfig.configCategories.filterProperty('isCustomView', true).forEach(function (category) {
       switch (category.name) {
       switch (category.name) {
         case 'CapacityScheduler':
         case 'CapacityScheduler':
-          if(App.supports.capacitySchedulerUi){
+          if (App.supports.capacitySchedulerUi) {
             category.set('customView', App.ServiceConfigCapacityScheduler);
             category.set('customView', App.ServiceConfigCapacityScheduler);
           } else {
           } else {
             category.set('isCustomView', false);
             category.set('isCustomView', false);
@@ -702,14 +716,14 @@ App.config = Em.Object.create({
     }
     }
     return globalPropertyToServicesMap;
     return globalPropertyToServicesMap;
   },
   },
-  
+
   loadGlobalPropertyToServicesMapSuccess: function (data) {
   loadGlobalPropertyToServicesMapSuccess: function (data) {
     globalPropertyToServicesMap = {};
     globalPropertyToServicesMap = {};
-    if(data.items!=null){
-      data.items.forEach(function(service){
-        service.configurations.forEach(function(config){
-          if("global.xml" === config.StackConfigurations.type){
-            if(!(config.StackConfigurations.property_name in globalPropertyToServicesMap)){
+    if (data.items != null) {
+      data.items.forEach(function (service) {
+        service.configurations.forEach(function (config) {
+          if ("global.xml" === config.StackConfigurations.type) {
+            if (!(config.StackConfigurations.property_name in globalPropertyToServicesMap)) {
               globalPropertyToServicesMap[config.StackConfigurations.property_name] = [];
               globalPropertyToServicesMap[config.StackConfigurations.property_name] = [];
             }
             }
             globalPropertyToServicesMap[config.StackConfigurations.property_name].push(service.StackServices.service_name);
             globalPropertyToServicesMap[config.StackConfigurations.property_name].push(service.StackServices.service_name);
@@ -718,7 +732,7 @@ App.config = Em.Object.create({
       });
       });
     }
     }
   },
   },
-  
+
   /**
   /**
    * Hosts can override service configurations per property. This method GETs
    * Hosts can override service configurations per property. This method GETs
    * the overriden configurations and sets only the changed properties into
    * the overriden configurations and sets only the changed properties into
@@ -877,19 +891,19 @@ App.config = Em.Object.create({
    * @param filename
    * @param filename
    * @return {*}
    * @return {*}
    */
    */
-  fileConfigsIntoTextarea: function(configs, filename){
+  fileConfigsIntoTextarea: function (configs, filename) {
     var fileConfigs = configs.filterProperty('filename', filename);
     var fileConfigs = configs.filterProperty('filename', filename);
     var value = '';
     var value = '';
     var defaultValue = '';
     var defaultValue = '';
     var complexConfig = this.get('complexConfigs').findProperty('filename', filename);
     var complexConfig = this.get('complexConfigs').findProperty('filename', filename);
-    if(complexConfig){
-      fileConfigs.forEach(function(_config){
+    if (complexConfig) {
+      fileConfigs.forEach(function (_config) {
         value += _config.name + '=' + _config.value + '\n';
         value += _config.name + '=' + _config.value + '\n';
         defaultValue += _config.name + '=' + _config.defaultValue + '\n';
         defaultValue += _config.name + '=' + _config.defaultValue + '\n';
       }, this);
       }, this);
       complexConfig.value = value;
       complexConfig.value = value;
       complexConfig.defaultValue = defaultValue;
       complexConfig.defaultValue = defaultValue;
-      configs = configs.filter(function(_config){
+      configs = configs.filter(function (_config) {
         return _config.filename !== filename;
         return _config.filename !== filename;
       });
       });
       configs.push(complexConfig);
       configs.push(complexConfig);
@@ -904,7 +918,7 @@ App.config = Em.Object.create({
    * @param filename
    * @param filename
    * @return {*}
    * @return {*}
    */
    */
-  textareaIntoFileConfigs: function(configs, filename){
+  textareaIntoFileConfigs: function (configs, filename) {
     var complexConfigName = this.get('complexConfigs').findProperty('filename', filename).name;
     var complexConfigName = this.get('complexConfigs').findProperty('filename', filename).name;
     var configsTextarea = configs.findProperty('name', complexConfigName);
     var configsTextarea = configs.findProperty('name', complexConfigName);
     if (configsTextarea) {
     if (configsTextarea) {
@@ -940,12 +954,12 @@ App.config = Em.Object.create({
    * @param property
    * @param property
    * @returns {*}
    * @returns {*}
    */
    */
-  trimProperty: function(property, isEmberObject){
+  trimProperty: function (property, isEmberObject) {
     var displayType = (isEmberObject) ? property.get('displayType') : property.displayType;
     var displayType = (isEmberObject) ? property.get('displayType') : property.displayType;
     var value = (isEmberObject) ? property.get('value') : property.value;
     var value = (isEmberObject) ? property.get('value') : property.value;
     var name = (isEmberObject) ? property.get('name') : property.name;
     var name = (isEmberObject) ? property.get('name') : property.name;
     var rez;
     var rez;
-    switch (displayType){
+    switch (displayType) {
       case 'directories':
       case 'directories':
       case 'directory':
       case 'directory':
         rez = value.trim().split(/\s+/g).join(',');
         rez = value.trim().split(/\s+/g).join(',');
@@ -956,7 +970,7 @@ App.config = Em.Object.create({
       case 'password':
       case 'password':
         break;
         break;
       case 'advanced':
       case 'advanced':
-        if(name == 'javax.jdo.option.ConnectionURL' || name == 'oozie.service.JPAService.jdbc.url') {
+        if (name == 'javax.jdo.option.ConnectionURL' || name == 'oozie.service.JPAService.jdbc.url') {
           rez = value.trim();
           rez = value.trim();
         }
         }
       default:
       default:
@@ -965,7 +979,7 @@ App.config = Em.Object.create({
     return ((rez == '') || (rez == undefined)) ? value : rez;
     return ((rez == '') || (rez == undefined)) ? value : rez;
   },
   },
 
 
-  OnNnHAHideSnn: function(ServiceConfig) {
+  OnNnHAHideSnn: function (ServiceConfig) {
     var configCategories = ServiceConfig.get('configCategories');
     var configCategories = ServiceConfig.get('configCategories');
     var snCategory = configCategories.findProperty('name', 'SNameNode');
     var snCategory = configCategories.findProperty('name', 'SNameNode');
     var activeNn = App.HDFSService.find('HDFS').get('activeNameNode.hostName');
     var activeNn = App.HDFSService.find('HDFS').get('activeNameNode.hostName');
@@ -1289,7 +1303,7 @@ App.config = Em.Object.create({
 
 
   /**
   /**
    * Gets all the configuration-groups for a host.
    * Gets all the configuration-groups for a host.
-   * 
+   *
    * @param hostName
    * @param hostName
    *          (string) host name used to register
    *          (string) host name used to register
    * @return Array of App.ConfigGroups
    * @return Array of App.ConfigGroups

+ 4 - 0
ambari-web/app/utils/helper.js

@@ -130,6 +130,10 @@ String.prototype.highlight = function (words, highlightTemplate) {
   return self;
   return self;
 };
 };
 
 
+Array.prototype.move = function(from, to) {
+  this.splice(to, 0, this.splice(from, 1)[0]);
+};
+
 Number.prototype.toDaysHoursMinutes = function () {
 Number.prototype.toDaysHoursMinutes = function () {
   var formatted = {},
   var formatted = {},
     dateDiff = this,
     dateDiff = this,

+ 1 - 1
ambari-web/app/views/wizard/controls_view.js

@@ -243,7 +243,7 @@ App.ServiceConfigRadioButtons = Ember.View.extend({
   databaseName: function () {
   databaseName: function () {
     switch (this.get('serviceConfig.serviceName')) {
     switch (this.get('serviceConfig.serviceName')) {
       case 'HIVE':
       case 'HIVE':
-        return this.get('categoryConfigsAll').findProperty('name', 'hive_database_name').get('value');
+        return this.get('categoryConfigsAll').findProperty('name', 'ambari.hive.db.schema.name').get('value');
       case 'OOZIE':
       case 'OOZIE':
         return this.get('categoryConfigsAll').findProperty('name', 'oozie.db.schema.name').get('value');
         return this.get('categoryConfigsAll').findProperty('name', 'oozie.db.schema.name').get('value');
       default:
       default:

Some files were not shown because too many files changed in this diff