You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ab...@apache.org on 2015/09/22 13:53:22 UTC

[1/2] ambari git commit: AMBARI-13182 Show hostname for a component as the first element of a category on service config page. (ababiichuk)

Repository: ambari
Updated Branches:
  refs/heads/branch-2.1 6f859fada -> e31174837


http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/templates/wizard/component_hosts.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/wizard/component_hosts.hbs b/ambari-web/app/templates/wizard/component_hosts.hbs
new file mode 100644
index 0000000..802b970
--- /dev/null
+++ b/ambari-web/app/templates/wizard/component_hosts.hbs
@@ -0,0 +1,27 @@
+{{!
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+}}
+
+{{#if view.hasNoHosts}}
+  {{t installer.noHostsAssigned}}
+{{else}}
+  {{#if view.hasMultipleHosts}}
+    <a href="#" {{action showHosts target="view"}}>{{value.firstObject}} {{t and}} {{view.otherLength}}</a>
+  {{else}}
+    {{view.value.[0]}}
+  {{/if}}
+{{/if}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/templates/wizard/component_hosts_popup.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/wizard/component_hosts_popup.hbs b/ambari-web/app/templates/wizard/component_hosts_popup.hbs
new file mode 100644
index 0000000..cd5b466
--- /dev/null
+++ b/ambari-web/app/templates/wizard/component_hosts_popup.hbs
@@ -0,0 +1,23 @@
+{{!
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+}}
+
+<ul>
+  {{#each host in view.serviceConfig.value}}
+    <li>{{host}}</li>
+  {{/each}}
+</ul>

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/templates/wizard/master_hosts.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/wizard/master_hosts.hbs b/ambari-web/app/templates/wizard/master_hosts.hbs
deleted file mode 100644
index a879842..0000000
--- a/ambari-web/app/templates/wizard/master_hosts.hbs
+++ /dev/null
@@ -1,27 +0,0 @@
-{{!
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-}}
-
-{{#if view.hasNoHosts}}
-  {{t installer.noHostsAssigned}}
-{{/if}}
-{{#if view.hasOneHost}}
-  {{view.formatValue}}
-{{/if}}
-{{#if view.hasMultipleHosts}}
-  <a href="#" {{action showHosts target="view"}}>{{value.firstObject}} {{t and}} {{view.otherLength}}</a>
-{{/if}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/templates/wizard/master_hosts_popup.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/wizard/master_hosts_popup.hbs b/ambari-web/app/templates/wizard/master_hosts_popup.hbs
deleted file mode 100644
index cd5b466..0000000
--- a/ambari-web/app/templates/wizard/master_hosts_popup.hbs
+++ /dev/null
@@ -1,23 +0,0 @@
-{{!
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-}}
-
-<ul>
-  {{#each host in view.serviceConfig.value}}
-    <li>{{host}}</li>
-  {{/each}}
-</ul>

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/templates/wizard/slave_hosts.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/wizard/slave_hosts.hbs b/ambari-web/app/templates/wizard/slave_hosts.hbs
deleted file mode 100644
index f767583..0000000
--- a/ambari-web/app/templates/wizard/slave_hosts.hbs
+++ /dev/null
@@ -1,27 +0,0 @@
-{{!
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-}}
-
-{{#if view.hasNoHosts}}
-  {{t installer.noHostsAssigned}}
-{{else}}
-  {{#if view.hasMultipleHosts}}
-    <a href="#" {{action showHosts target="view"}}>{{value.firstObject}} {{t and}} {{view.otherLength}}</a>
-  {{else}}
-    {{view.value.[0]}}
-  {{/if}}
-{{/if}}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/utils/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js
index 68988bb..b582a40 100644
--- a/ambari-web/app/utils/config.js
+++ b/ambari-web/app/utils/config.js
@@ -205,7 +205,6 @@ App.config = Em.Object.create({
     });
   },
 
-
   /**
    * generates config objects
    * @param configCategories
@@ -295,7 +294,7 @@ App.config = Em.Object.create({
       unit: null,
       hasInitialValue: false,
       isOverridable: true,
-      index: null,
+      index: Infinity,
       dependentConfigPattern: null,
       options: null,
       radioName: null,
@@ -304,20 +303,44 @@ App.config = Em.Object.create({
   },
 
   /**
+   * This method creates host name properties
+   * @param serviceName
+   * @param componentName
+   * @param value
+   * @param stackComponent
+   * @returns Object
+   */
+  createHostNameProperty: function(serviceName, componentName, value, stackComponent) {
+    var hostOrHosts = stackComponent.get('isMultipleAllowed') ? 'hosts' : 'host';
+    return {
+      "name": componentName.toLowerCase() + '_' + hostOrHosts,
+      "displayName":  stackComponent.get('displayName') + ' ' + (value.length > 1 ? 'hosts' : 'host'),
+      "value": value,
+      "recommendedValue": value,
+      "description": "The " + hostOrHosts + " that has been assigned to run " + stackComponent.get('displayName'),
+      "displayType": "component" + hostOrHosts.capitalize(),
+      "isOverridable": false,
+      "isRequiredByAgent": false,
+      "serviceName": serviceName,
+      "filename": serviceName.toLowerCase() + "-site.xml",
+      "category": componentName,
+      "index": 0
+    }
+  },
+
+  /**
    * This method merge properties form <code>stackConfigProperty<code> which are taken from stack
    * with <code>UIConfigProperty<code> which are hardcoded on UI
    * @param coreObject
    * @param stackProperty
    * @param preDefined
    * @param [propertiesToSkip]
-   * @param [preDefinedOnly]
    */
-  mergeStaticProperties: function(coreObject, stackProperty, preDefined, propertiesToSkip, preDefinedOnly) {
+  mergeStaticProperties: function(coreObject, stackProperty, preDefined, propertiesToSkip) {
     propertiesToSkip = propertiesToSkip || ['name', 'filename', 'value', 'savedValue', 'isFinal', 'savedIsFinal'];
-    preDefinedOnly = preDefinedOnly || ['id'];
     for (var k in coreObject) {
       if (!propertiesToSkip.contains(k)) {
-        coreObject[k] = this.getPropertyIfExists(k, coreObject[k], !preDefinedOnly.contains(k) ? stackProperty : null, preDefined);
+        coreObject[k] = this.getPropertyIfExists(k, coreObject[k], stackProperty, preDefined);
       }
     }
     return coreObject;
@@ -434,7 +457,7 @@ App.config = Em.Object.create({
           return value.split(',').sort()[0];//TODO check if this code is used
         }
         break;
-      case 'masterHosts':
+      case 'componentHosts':
         if (typeof(value) == 'string') {
           return value.replace(/\[|]|'|&apos;/g, "").split(',');
         }
@@ -498,8 +521,7 @@ App.config = Em.Object.create({
     var mergedConfigs = [];
 
     var uiPersistentProperties = [
-      this.configId('oozie_hostname', 'oozie-env.xml'),
-      this.configId('oozie_ambari_database', 'oozie-env.xml')
+      this.configId('oozie_hostname', 'oozie-env.xml')
     ];
     var configTypes = App.StackService.find().filter(function(service) {
       return selectedServiceNames.contains(service.get('serviceName'));
@@ -538,7 +560,6 @@ App.config = Em.Object.create({
         if (configData.recommendedValue) {
           configData.value = configData.recommendedValue;
         }
-
         if (advanced.get('id')) {
           configData = this.mergeStaticProperties(configData, advanced, null, ['name', 'filename']);
           configData.value = this.formatPropertyValue(advanced, advanced.get('value'));
@@ -598,36 +619,43 @@ App.config = Em.Object.create({
         if (!storedConfigs && !serviceConfigProperty.get('hasInitialValue')) {
           configPropertyHelper.initialValue(serviceConfigProperty, localDB, configs);
         }
-        this.tweakDynamicDefaults(localDB, serviceConfigProperty, _config);
         serviceConfigProperty.validate();
         configsByService.pushObject(serviceConfigProperty);
       }, this);
       var serviceConfig = this.createServiceConfig(service.get('serviceName'));
       serviceConfig.set('showConfig', service.get('showConfig'));
       serviceConfig.set('configs', configsByService);
+      this.addHostNamesToConfigs(serviceConfig, localDB.masterComponentHosts, localDB.slaveComponentHosts);
       renderedServiceConfigs.push(serviceConfig);
     }, this);
     return renderedServiceConfigs;
   },
 
   /**
-   Takes care of the "dynamic defaults" for the GLUSTERFS configs.  Sets
-   some of the config defaults to previously user-entered data.
-   **/
-  tweakDynamicDefaults: function (localDB, serviceConfigProperty, config) {
-    var firstHost;
-    for (var host in localDB.hosts) {
-      firstHost = host;
-      break;
-    }
-    try {
-      if (typeof(config.recommendedValue) == "string" && config.recommendedValue.indexOf("{firstHost}") >= 0) {
-        serviceConfigProperty.set('value', serviceConfigProperty.value.replace(new RegExp("{firstHost}"), firstHost));
-        serviceConfigProperty.set('recommendedValue', serviceConfigProperty.recommendedValue.replace(new RegExp("{firstHost}"), firstHost));
+   * Add host name properties to appropriate categories (for installer only)
+   * @param serviceConfig
+   * @param masterComponents
+   * @param slaveComponents
+   */
+  addHostNamesToConfigs: function(serviceConfig, masterComponents, slaveComponents) {
+    serviceConfig.get('configCategories').forEach(function(c) {
+      if (c.showHost) {
+        var value = [];
+        var componentName = c.name;
+        var masters = masterComponents.filterProperty('component', componentName);
+        if (masters.length) {
+          value = masters.mapProperty('hostName');
+        } else {
+          var slaves = slaveComponents.findProperty('componentName', componentName);
+          if (slaves) {
+            value = slaves.hosts.mapProperty('hostName');
+          }
+        }
+        var stackComponent = App.StackServiceComponent.find(componentName);
+        var hProperty = this.createHostNameProperty(serviceConfig.get('serviceName'), componentName, value, stackComponent);
+        serviceConfig.get('configs').push(App.ServiceConfigProperty.create(hProperty));
       }
-    } catch (err) {
-      // Nothing to worry about here, most likely trying indexOf on a non-string
-    }
+    }, this);
   },
 
   /**
@@ -703,24 +731,12 @@ App.config = Em.Object.create({
   advancedConfigIdentityData: function (config) {
     var propertyData = {};
     var proxyUserGroupServices = ['HIVE', 'OOZIE', 'FALCON'];
-    var nameToDisplayNameMap = {
-      'smokeuser': 'Smoke Test User',
-      'user_group': 'Hadoop Group',
-      'mapred_user': 'MapReduce User',
-      'zk_user': 'ZooKeeper User',
-      'metadata_user': 'Atlas User',
-      'ignore_groupsusers_create': 'Skip group modifications during install',
-      'override_uid': 'Have Ambari manage UIDs'
-    };
     var checkboxProperties = ['ignore_groupsusers_create', 'override_uid'];
     if (Em.isArray(config.property_type)) {
       if (config.property_type.contains('USER') || config.property_type.contains('ADDITIONAL_USER_PROPERTY') || config.property_type.contains('GROUP')) {
         propertyData.category = 'Users and Groups';
         propertyData.isVisible = !App.get('isHadoopWindowsStack');
         propertyData.serviceName = 'MISC';
-        propertyData.isOverridable = false;
-        propertyData.isReconfigurable = false;
-        propertyData.displayName = nameToDisplayNameMap[config.property_name] || App.format.normalizeName(config.property_name);
         propertyData.displayType = checkboxProperties.contains(config.property_name) ? 'checkbox' : 'user';
         if (config.property_type.contains('ADDITIONAL_USER_PROPERTY')) {
           propertyData.index = 999;//it means these configs should be shown last (if somehow we will have more that 1000 configs in tab - it wouldn't work)

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/utils/configs/config_property_helper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/configs/config_property_helper.js b/ambari-web/app/utils/configs/config_property_helper.js
index 9b528dd..61fb9cc 100644
--- a/ambari-web/app/utils/configs/config_property_helper.js
+++ b/ambari-web/app/utils/configs/config_property_helper.js
@@ -29,14 +29,10 @@ module.exports = {
     };
 
     var masterComponentHostsInDB = localDB.masterComponentHosts;
-    var slaveComponentHostsInDB = localDB.slaveComponentHosts;
     var isOnlyFirstOneNeeded = true;
     var hostWithPort = "([\\w|\\.]*)(?=:)";
     var hostWithPrefix = ":\/\/" + hostWithPort;
     switch (configProperty.get('name')) {
-      case 'namenode_host':
-        configProperty.set('value', masterComponentHostsInDB.filterProperty('component', 'NAMENODE').mapProperty('hostName'));
-        break;
       case 'dfs.namenode.rpc-address':
       case 'dfs.http.address':
       case 'dfs.namenode.http-address':
@@ -52,13 +48,6 @@ module.exports = {
         var nnHost = masterComponentHostsInDB.filterProperty('component', 'NAMENODE').mapProperty('hostName');
         this.setRecommendedValue(configProperty, hostWithPrefix,'://' + nnHost);
         break;
-      case 'snamenode_host':
-        // Secondary NameNode does not exist when NameNode HA is enabled
-        var snn = masterComponentHostsInDB.findProperty('component', 'SECONDARY_NAMENODE');
-        if (snn) {
-          configProperty.set('value', snn.hostName);
-        }
-        break;
       case 'dfs.secondary.http.address':
       case 'dfs.namenode.secondary.http-address':
         var snnHost = masterComponentHostsInDB.findProperty('component', 'SECONDARY_NAMENODE');
@@ -66,18 +55,6 @@ module.exports = {
           this.setRecommendedValue(configProperty, hostWithPort,snnHost.hostName);
         }
         break;
-      case 'datanode_hosts':
-        configProperty.set('value', slaveComponentHostsInDB.findProperty('componentName', 'DATANODE').hosts.mapProperty('hostName'));
-        break;
-      case 'nfsgateway_hosts':
-        var gwyHost = slaveComponentHostsInDB.findProperty('componentName', 'NFS_GATEWAY');
-        if(gwyHost) {
-          configProperty.set('value', gwyHost.hosts.mapProperty('hostName'));
-        }
-        break;
-      case 'hs_host':
-        configProperty.set('value', masterComponentHostsInDB.filterProperty('component', 'HISTORYSERVER').mapProperty('hostName'));
-        break;
       case 'yarn.log.server.url':
         var hsHost = masterComponentHostsInDB.filterProperty('component', 'HISTORYSERVER').mapProperty('hostName');
         this.setRecommendedValue(configProperty, hostWithPrefix,'://' + hsHost);
@@ -87,16 +64,6 @@ module.exports = {
         var hsHost = masterComponentHostsInDB.filterProperty('component', 'HISTORYSERVER').mapProperty('hostName');
         this.setRecommendedValue(configProperty, hostWithPort,hsHost);
         break;
-      case 'rm_host':
-        configProperty.set('value', masterComponentHostsInDB.findProperty('component', 'RESOURCEMANAGER').hostName);
-        break;
-      case 'ats_host':
-        var atsHost =  masterComponentHostsInDB.findProperty('component', 'APP_TIMELINE_SERVER');
-        if (atsHost)
-          configProperty.set('value', atsHost.hostName);
-        else
-          configProperty.set('value', 'false');
-        break;
       case 'yarn.resourcemanager.hostname':
         var rmHost = masterComponentHostsInDB.findProperty('component', 'RESOURCEMANAGER').hostName;
         configProperty.set('recommendedValue',rmHost);
@@ -119,12 +86,6 @@ module.exports = {
           this.setRecommendedValue(configProperty, hostWithPort,atsHost.hostName);
         }
         break;
-      case 'nm_hosts':
-        configProperty.set('value', slaveComponentHostsInDB.findProperty('componentName', 'NODEMANAGER').hosts.mapProperty('hostName'));
-        break;
-      case 'jobtracker_host':
-        configProperty.set('value', masterComponentHostsInDB.findProperty('component', 'JOBTRACKER').hostName);
-        break;
       case 'mapred.job.tracker':
       case 'mapred.job.tracker.http.address':
         var jtHost = masterComponentHostsInDB.findProperty('component', 'JOBTRACKER').hostName;
@@ -134,21 +95,8 @@ module.exports = {
         var jtHost = masterComponentHostsInDB.findProperty('component', 'HISTORYSERVER').hostName;
         this.setRecommendedValue(configProperty, hostWithPort,jtHost);
         break;
-      case 'tasktracker_hosts':
-        configProperty.set('value', slaveComponentHostsInDB.findProperty('componentName', 'TASKTRACKER').hosts.mapProperty('hostName'));
-        break;
-      case 'hbasemaster_host':
-        configProperty.set('value', masterComponentHostsInDB.filterProperty('component', 'HBASE_MASTER').mapProperty('hostName'));
-        break;
-      case 'regionserver_hosts':
-        configProperty.set('value', slaveComponentHostsInDB.findProperty('componentName', 'HBASE_REGIONSERVER').hosts.mapProperty('hostName'));
-        break;
-      case 'hivemetastore_host':
-        configProperty.set('value', masterComponentHostsInDB.filterProperty('component', 'HIVE_METASTORE').mapProperty('hostName'));
-        break;
       case 'hive_hostname':
         configProperty.set('recommendedValue', masterComponentHostsInDB.findProperty('component', 'HIVE_SERVER').hostName);
-      case 'hive_ambari_host':
         configProperty.set('value', masterComponentHostsInDB.findProperty('component', 'HIVE_SERVER').hostName);
         break;
       case 'hive_master_hosts':
@@ -170,46 +118,22 @@ module.exports = {
         break;
       case 'oozie_hostname':
         configProperty.set('recommendedValue', masterComponentHostsInDB.filterProperty('component', 'OOZIE_SERVER').mapProperty('hostName')[0]);
-      case 'oozieserver_host':
         configProperty.set('value', masterComponentHostsInDB.filterProperty('component', 'OOZIE_SERVER').mapProperty('hostName'));
         break;
       case 'oozie.base.url':
         var oozieHost = masterComponentHostsInDB.findProperty('component', 'OOZIE_SERVER').hostName;
         this.setRecommendedValue(configProperty, hostWithPrefix,'://' + oozieHost);
         break;
-      case 'webhcatserver_host':
-        configProperty.set('value', masterComponentHostsInDB.findProperty('component', 'WEBHCAT_SERVER').hostName);
-        break;
-      case 'oozie_ambari_host':
-        configProperty.set('value', masterComponentHostsInDB.findProperty('component', 'OOZIE_SERVER').hostName);
-        break;
       case 'hadoop_host':
         configProperty.set('value', masterComponentHostsInDB.filterProperty('component', 'NAMENODE').mapProperty('hostName'));
         break;
-      case 'hive_existing_mysql_host':
-      case 'hive_existing_postgresql_host':
-      case 'hive_existing_oracle_host':
-      case 'hive_existing_mssql_server_host':
-      case 'hive_existing_mssql_server_2_host':
-        var hiveServerHost = masterComponentHostsInDB.findProperty('component', 'HIVE_SERVER').hostName;
-        configProperty.set('value', hiveServerHost).set('recommendedValue', hiveServerHost);
-        break;
       case 'hive.metastore.uris':
         var hiveMSUris = this.getHiveMetastoreUris(masterComponentHostsInDB, dependencies['hive.metastore.uris']);
         if (hiveMSUris) {
           this.setRecommendedValue(configProperty, "(.*)", hiveMSUris);
         }
         break;
-      case 'oozie_existing_mysql_host':
-      case 'oozie_existing_postgresql_host':
-      case 'oozie_existing_oracle_host':
-      case 'oozie_existing_mssql_server_host':
-      case 'oozie_existing_mssql_server_2_host':
-        var oozieServerHost = masterComponentHostsInDB.findProperty('component', 'OOZIE_SERVER').hostName;
-        configProperty.set('value', oozieServerHost).set('recommendedValue', oozieServerHost);
-        break;
       case 'storm.zookeeper.servers':
-      case 'zookeeperserver_hosts':
         configProperty.set('value', masterComponentHostsInDB.filterProperty('component', 'ZOOKEEPER_SERVER').mapProperty('hostName'));
         break;
       case 'nimbus.host':
@@ -218,33 +142,6 @@ module.exports = {
       case 'nimbus.seeds':
         configProperty.set('value', masterComponentHostsInDB.filterProperty('component', 'NIMBUS').mapProperty('hostName'));
         break;
-      case 'falconserver_host':
-        configProperty.set('value', masterComponentHostsInDB.findProperty('component', 'FALCON_SERVER').hostName);
-        break;
-      case 'drpcserver_host':
-        var drpcHost = masterComponentHostsInDB.findProperty('component', 'DRPC_SERVER');
-        if (drpcHost) {
-          configProperty.set('value', drpcHost.hostName);
-        }
-        break;
-      case 'stormuiserver_host':
-        configProperty.set('value', masterComponentHostsInDB.findProperty('component', 'STORM_UI_SERVER').hostName);
-        break;
-      case 'storm_rest_api_host':
-        var stormRresApiHost = masterComponentHostsInDB.findProperty('component', 'STORM_REST_API');
-        if(stormRresApiHost) {
-          configProperty.set('value', stormRresApiHost.hostName);
-        }
-        break;
-      case 'supervisor_hosts':
-        configProperty.set('value', slaveComponentHostsInDB.findProperty('componentName', 'SUPERVISOR').hosts.mapProperty('hostName'));
-        break;
-      case 'knox_gateway_host':
-        configProperty.set('value', masterComponentHostsInDB.filterProperty('component', 'KNOX_GATEWAY').mapProperty('hostName'));
-        break;
-      case 'kafka_broker_hosts':
-        configProperty.set('value', masterComponentHostsInDB.filterProperty('component', 'KAFKA_BROKER').mapProperty('hostName'));
-        break;
       case 'kafka.ganglia.metrics.host':
         var gangliaHost =  masterComponentHostsInDB.findProperty('component', 'GANGLIA_SERVER');
         if (gangliaHost) {
@@ -328,22 +225,8 @@ module.exports = {
       case 'db_host':
         var masterComponent =  masterComponentHostsInDB.findProperty('component', 'RANGER_ADMIN');
         if (masterComponent) {
-          configProperty.set('recommendedValue', masterComponent.hostName);
-        }
-      case 'rangerserver_host':
-        var masterComponent =  masterComponentHostsInDB.findProperty('component', 'RANGER_ADMIN');
-        if (masterComponent) {
           configProperty.set('value', masterComponent.hostName);
-        }
-        break;
-      case 'ranger_mysql_host':
-      case 'ranger_oracle_host':
-      case 'ranger_postgres_host':
-      case 'ranger_mssql_host':
-        var masterComponent = masterComponentHostsInDB.findProperty('component', 'RANGER_ADMIN'),
-          rangerServerHost = masterComponent ? masterComponentHostsInDB.findProperty('component', 'RANGER_ADMIN').hostName : '';
-        if (rangerServerHost) {
-          configProperty.set('value', rangerServerHost).set('recommendedValue', rangerServerHost);
+          configProperty.set('recommendedValue', masterComponent.hostName);
         }
         break;
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/utils/configs/database.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/configs/database.js b/ambari-web/app/utils/configs/database.js
index 4ad1bd1..82ad7bb 100644
--- a/ambari-web/app/utils/configs/database.js
+++ b/ambari-web/app/utils/configs/database.js
@@ -34,13 +34,13 @@ module.exports = {
       dbType: 'hive_database',
       databaseName: 'ambari.hive.db.schema.name',
       connectionUrl: 'javax.jdo.option.ConnectionURL',
-      fallbackHostName: 'hive_ambari_host'
+      fallbackHostName: 'hive_hostname'
     },
     OOZIE: {
       dbType: 'oozie_database',
       connectionUrl: 'oozie.service.JPAService.jdbc.url',
       databaseName: 'oozie.db.schema.name',
-      fallbackHostName: 'oozieserver_host'
+      fallbackHostName: 'oozie_hostname'
     },
     RANGER: {
       dbType: 'DB_FLAVOR',

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/views/common/controls_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/controls_view.js b/ambari-web/app/views/common/controls_view.js
index 30e0b94..73b928e 100644
--- a/ambari-web/app/views/common/controls_view.js
+++ b/ambari-web/app/views/common/controls_view.js
@@ -857,36 +857,6 @@ App.ServiceConfigMultipleHostsDisplay = Ember.Mixin.create(App.ServiceConfigHost
 
 
 /**
- * Multiple master host component.
- * Show hostnames without ability to edit it
- * @type {*}
- */
-App.ServiceConfigMasterHostsView = Ember.View.extend(App.ServiceConfigMultipleHostsDisplay, App.ServiceConfigCalculateId, {
-
-  viewName: "serviceConfigMasterHostsView",
-  valueBinding: 'serviceConfig.value',
-
-  classNames: ['master-hosts', 'span6'],
-  templateName: require('templates/wizard/master_hosts'),
-
-  /**
-   * Onclick handler for link
-   */
-  showHosts: function () {
-    var serviceConfig = this.get('serviceConfig');
-    App.ModalPopup.show({
-      header: Em.I18n.t('installer.controls.serviceConfigMasterHosts.header').format(serviceConfig.category),
-      bodyClass: Ember.View.extend({
-        serviceConfig: serviceConfig,
-        templateName: require('templates/wizard/master_hosts_popup')
-      }),
-      secondary: null
-    });
-  }
-
-});
-
-/**
  * Show tabs list for slave hosts
  * @type {*}
  */
@@ -939,15 +909,15 @@ App.AddSlaveComponentGroupButton = Ember.View.extend(App.ServiceConfigCalculateI
  * Multiple Slave Hosts component
  * @type {*}
  */
-App.ServiceConfigSlaveHostsView = Ember.View.extend(App.ServiceConfigMultipleHostsDisplay, App.ServiceConfigCalculateId, {
+App.ServiceConfigComponentHostsView = Ember.View.extend(App.ServiceConfigMultipleHostsDisplay, App.ServiceConfigCalculateId, {
 
   viewName: 'serviceConfigSlaveHostsView',
 
-  classNames: ['slave-hosts', 'span6'],
+  classNames: ['component-hosts', 'span6'],
 
   valueBinding: 'serviceConfig.value',
 
-  templateName: require('templates/wizard/slave_hosts'),
+  templateName: require('templates/wizard/component_hosts'),
 
   /**
    * Onclick handler for link
@@ -958,7 +928,7 @@ App.ServiceConfigSlaveHostsView = Ember.View.extend(App.ServiceConfigMultipleHos
       header: Em.I18n.t('installer.controls.serviceConfigMasterHosts.header').format(serviceConfig.category),
       bodyClass: Ember.View.extend({
         serviceConfig: serviceConfig,
-        templateName: require('templates/wizard/master_hosts_popup')
+        templateName: require('templates/wizard/component_hosts_popup')
       }),
       secondary: null
     });
@@ -972,16 +942,13 @@ App.ServiceConfigSlaveHostsView = Ember.View.extend(App.ServiceConfigMultipleHos
  */
 App.SlaveGroupPropertiesView = Ember.View.extend(App.ServiceConfigCalculateId, {
 
-  viewName: 'serviceConfigSlaveHostsView',
+  viewName: 'serviceConfigComponentHostsView',
 
   group: function () {
     return this.get('controller.activeGroup');
   }.property('controller.activeGroup'),
 
   groupConfigs: function () {
-    console.log("************************************************************************");
-    console.log("The value of group is: " + this.get('group'));
-    console.log("************************************************************************");
     return this.get('group.properties');
   }.property('group.properties.@each').cacheable(),
 
@@ -1125,11 +1092,11 @@ App.CheckDBConnectionView = Ember.View.extend({
   /** @property {String} masterHostName - host name location of Master Component related to Service **/
   masterHostName: function() {
     var serviceMasterMap = {
-      'OOZIE': 'oozieserver_host',
+      'OOZIE': 'oozie_server_hosts',
       'HDFS': 'hadoop_host',
-      'HIVE': 'hivemetastore_host',
+      'HIVE': 'hive_metastore_hosts',
       'KERBEROS': 'kdc_host',
-      'RANGER': 'rangerserver_host'
+      'RANGER': 'ranger_server_hosts'
     };
     return this.get('parentView.categoryConfigsAll').findProperty('name', serviceMasterMap[this.get('parentView.service.serviceName')]).get('value');
   }.property('parentView.service.serviceName', 'parentView.categoryConfigsAll.@each.value'),

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/test/controllers/main/service/info/config_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/service/info/config_test.js b/ambari-web/test/controllers/main/service/info/config_test.js
index 825a00f..a62c75f 100644
--- a/ambari-web/test/controllers/main/service/info/config_test.js
+++ b/ambari-web/test/controllers/main/service/info/config_test.js
@@ -369,50 +369,6 @@ describe("App.MainServiceInfoConfigsController", function () {
     });
   });
 
-  describe("#getMasterComponentHostValue", function () {
-    var tests = [
-      {
-        content: {
-          hostComponents: [
-            Em.Object.create({
-              componentName: "componentName1",
-              hostName: "hostName"
-            })
-          ]
-        },
-        result: "hostName",
-        multiple: false,
-        m: "returns hostname"
-      },
-      {
-        content: {
-          hostComponents: [
-            Em.Object.create({
-              componentName: "componentName2",
-              hostName: "hostName1"
-            }),
-            Em.Object.create({
-              componentName: "componentName2",
-              hostName: "hostName2"
-            })
-          ]
-        },
-        result: ["hostName1","hostName2"],
-        multiple: true,
-        m: "returns hostnames"
-      }
-    ];
-    tests.forEach(function(t){
-      it(t.m, function () {
-        sinon.stub(App.HostComponent, 'find', function(){
-          return t.content.hostComponents;
-        });
-        expect(mainServiceInfoConfigsController.getMasterComponentHostValue(t.content.hostComponents[0].componentName, t.multiple)).to.eql(t.result);
-        App.HostComponent.find.restore();
-      });
-    });
-  });
-
   describe("#putChangedConfigurations", function () {
       var sc = [
       Em.Object.create({
@@ -489,59 +445,6 @@ describe("App.MainServiceInfoConfigsController", function () {
     });
   });
 
-  describe("#isConfigChanged", function () {
-
-    var tests = [
-      {
-        loadedConfig: {
-          apptimelineserver_heapsize: "1024",
-          hbase_log_dir: "/var/log/hbase",
-          lzo_enabled: "true"
-        },
-        savingConfig: {
-          apptimelineserver_heapsize: "1024",
-          hbase_log_dir: "/var/log/hbase",
-          lzo_enabled: "true"
-        },
-        m: "configs doesn't changed",
-        res: false
-      },
-      {
-        loadedConfig: {
-          apptimelineserver_heapsize: "1024",
-          hbase_log_dir: "/var/log/hbase",
-          lzo_enabled: "true"
-        },
-        savingConfig: {
-          apptimelineserver_heapsize: "1024",
-          hbase_log_dir: "/var/log/hbase",
-          lzo_enabled: "false"
-        },
-        m: "configs changed",
-        res: true
-      },
-      {
-        loadedConfig: {
-          apptimelineserver_heapsize: "1024",
-          hbase_log_dir: "/var/log/hbase"
-        },
-        savingConfig: {
-          apptimelineserver_heapsize: "1024",
-          hbase_log_dir: "/var/log/hbase",
-          lzo_enabled: "false"
-        },
-        m: "add new config",
-        res: true
-      }
-    ];
-
-    tests.forEach(function(t){
-      it(t.m, function () {
-        expect(mainServiceInfoConfigsController.isConfigChanged(t.loadedConfig, t.savingConfig)).to.equal(t.res);
-      });
-    });
-  });
-
   describe("#isDirChanged", function() {
 
     describe("when service name is HDFS", function() {

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/test/controllers/wizard/step7_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/wizard/step7_test.js b/ambari-web/test/controllers/wizard/step7_test.js
index 4488de7..40e6124 100644
--- a/ambari-web/test/controllers/wizard/step7_test.js
+++ b/ambari-web/test/controllers/wizard/step7_test.js
@@ -1710,7 +1710,7 @@ describe('App.InstallerStep7Controller', function () {
             serviceName: 'HIVE',
             configs: [
               {
-                name: 'hive_ambari_host',
+                name: 'hive_hostname',
                 value: 'h0'
               }
             ]

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/test/mock_data_setup/configs_mock_data.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/mock_data_setup/configs_mock_data.js b/ambari-web/test/mock_data_setup/configs_mock_data.js
index 741b04d..8c46b2f 100644
--- a/ambari-web/test/mock_data_setup/configs_mock_data.js
+++ b/ambari-web/test/mock_data_setup/configs_mock_data.js
@@ -232,7 +232,7 @@ module.exports = {
         "isOverridable":false,
         "showLabel":true,
         "serviceName":"STORM",
-        "displayType":"masterHosts",
+        "displayType":"componentHosts",
         "isVisible":true,
         "description":"desc",
         "isSecureConfig":false,

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/test/models/configs/objects/service_config_property_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/models/configs/objects/service_config_property_test.js b/ambari-web/test/models/configs/objects/service_config_property_test.js
index fd161dd..28d9595 100644
--- a/ambari-web/test/models/configs/objects/service_config_property_test.js
+++ b/ambari-web/test/models/configs/objects/service_config_property_test.js
@@ -114,7 +114,7 @@ var serviceConfigProperty,
       overrides: configsData[0].overrides
     },
     {
-      displayType: 'masterHost'
+      displayType: 'componentHost'
     }
   ],
   overridableTrueData = [
@@ -212,7 +212,7 @@ var serviceConfigProperty,
     value: 'value',
     savedValue: 'default'
   },
-  types = ['masterHost', 'slaveHosts', 'masterHosts', 'slaveHost', 'radio button'],
+  types = ['componentHost', 'componentHosts', 'radio button'],
   classCases = [
     {
       initial: {
@@ -272,21 +272,21 @@ var serviceConfigProperty,
     },
     {
       initial: {
-        displayType: 'masterHost'
+        displayType: 'componentHost'
       },
       viewClass: App.ServiceConfigMasterHostView
     },
     {
       initial: {
-        displayType: 'masterHosts'
+        displayType: 'componentHosts'
       },
-      viewClass: App.ServiceConfigMasterHostsView
+      viewClass: App.ServiceConfigComponentHostsView
     },
     {
       initial: {
-        displayType: 'slaveHosts'
+        displayType: 'componentHosts'
       },
-      viewClass: App.ServiceConfigSlaveHostsView
+      viewClass: App.ServiceConfigComponentHostsView
     },
     {
       initial: {

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/test/utils/config_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/utils/config_test.js b/ambari-web/test/utils/config_test.js
index 75f8555..0d25b45 100644
--- a/ambari-web/test/utils/config_test.js
+++ b/ambari-web/test/utils/config_test.js
@@ -260,7 +260,7 @@ describe('App.config', function () {
       },
       {
         config: {
-          displayType: 'masterHosts',
+          displayType: 'componentHosts',
           value: ['host1.com', 'host2.com']
         },
         e: ['host1.com', 'host2.com']
@@ -412,9 +412,6 @@ describe('App.config', function () {
           category: 'Users and Groups',
           isVisible: true,
           serviceName: 'MISC',
-          isOverridable: false,
-          isReconfigurable: false,
-          displayName: 'HDFS User',
           displayType: 'user',
           index: 30
         },
@@ -430,9 +427,6 @@ describe('App.config', function () {
           category: 'Users and Groups',
           isVisible: true,
           serviceName: 'MISC',
-          isOverridable: false,
-          isReconfigurable: false,
-          displayName: 'Knox Group',
           displayType: 'user',
           index: 0
         },
@@ -455,7 +449,6 @@ describe('App.config', function () {
           service_name: 'MISC'
         },
         output: {
-          displayName: 'Smoke Test User',
           serviceName: 'MISC',
           belongsToService: ['MISC'],
           index: 30
@@ -464,41 +457,10 @@ describe('App.config', function () {
       },
       {
         input: {
-          property_type: ['GROUP'],
-          property_name: 'user_group'
-        },
-        output: {
-          displayName: 'Hadoop Group'
-        },
-        title: 'user_group'
-      },
-      {
-        input: {
-          property_type: ['USER'],
-          property_name: 'mapred_user'
-        },
-        output: {
-          displayName: 'MapReduce User'
-        },
-        title: 'mapred_user'
-      },
-      {
-        input: {
-          property_type: ['USER'],
-          property_name: 'zk_user'
-        },
-        output: {
-          displayName: 'ZooKeeper User'
-        },
-        title: 'zk_user'
-      },
-      {
-        input: {
           property_type: ['USER'],
           property_name: 'ignore_groupsusers_create'
         },
         output: {
-          displayName: 'Skip group modifications during install',
           displayType: 'checkbox'
         },
         title: 'ignore_groupsusers_create'
@@ -922,8 +884,8 @@ describe('App.config', function () {
   });
 
   describe('#formatValue', function() {
-    it('formatValue for masterHosts', function () {
-      var serviceConfigProperty = Em.Object.create({'displayType': 'masterHosts', value: "['h1','h2']"});
+    it('formatValue for componentHosts', function () {
+      var serviceConfigProperty = Em.Object.create({'displayType': 'componentHosts', value: "['h1','h2']"});
       expect(App.config.formatPropertyValue(serviceConfigProperty)).to.eql(['h1','h2']);
     });
 
@@ -1075,7 +1037,7 @@ describe('App.config', function () {
       unit: null,
       hasInitialValue: false,
       isOverridable: true,
-      index: null,
+      index: Infinity,
       dependentConfigPattern: null,
       options: null,
       radioName: null,
@@ -1136,4 +1098,45 @@ describe('App.config', function () {
     });
   });
 
+  describe('#createHostNameProperty', function() {
+    it('create host property', function() {
+      expect(App.config.createHostNameProperty('service1', 'component1', ['host1'], Em.Object.create({
+        isMultipleAllowed: false,
+        displayName: 'display name'
+      }))).to.eql({
+          "name": 'component1_host',
+          "displayName": 'display name host',
+          "value": ['host1'],
+          "recommendedValue": ['host1'],
+          "description": "The host that has been assigned to run display name",
+          "displayType": "componentHost",
+          "isOverridable": false,
+          "isRequiredByAgent": false,
+          "serviceName": 'service1',
+          "filename": "service1-site.xml",
+          "category": 'component1',
+          "index": 0
+        })
+    });
+
+    it('create hosts property', function() {
+      expect(App.config.createHostNameProperty('service1', 'component1', ['host1'], Em.Object.create({
+        isMultipleAllowed: true,
+        displayName: 'display name'
+      }))).to.eql({
+          "name": 'component1_hosts',
+          "displayName": 'display name host',
+          "value": ['host1'],
+          "recommendedValue": ['host1'],
+          "description": "The hosts that has been assigned to run display name",
+          "displayType": "componentHosts",
+          "isOverridable": false,
+          "isRequiredByAgent": false,
+          "serviceName": 'service1',
+          "filename": "service1-site.xml",
+          "category": 'component1',
+          "index": 0
+        })
+    });
+  })
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/test/utils/configs/config_property_helper_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/utils/configs/config_property_helper_test.js b/ambari-web/test/utils/configs/config_property_helper_test.js
index 960e4c3..70fb4da 100644
--- a/ambari-web/test/utils/configs/config_property_helper_test.js
+++ b/ambari-web/test/utils/configs/config_property_helper_test.js
@@ -304,7 +304,7 @@ describe('configPropertyHelper', function () {
         value: 'h0:2182,h1:2182',
         title: 'should add ZK host and port dynamically'
       },
-      'oozieserver_host': {
+      'oozie_hostname': {
         localDB: {
           masterComponentHosts: [
             {
@@ -391,13 +391,6 @@ describe('configPropertyHelper', function () {
       });
     });
 
-
-    it(cases['hivemetastore_host'].title, function () {
-      serviceConfigProperty.set('name', 'hivemetastore_host');
-      configPropertyHelper.initialValue(serviceConfigProperty, cases['hivemetastore_host'].localDB, []);
-      expect(serviceConfigProperty.get('value')).to.eql(cases['hivemetastore_host'].value);
-    });
-
     it(cases['hive_master_hosts'].title, function () {
       serviceConfigProperty.set('name', 'hive_master_hosts');
       configPropertyHelper.initialValue(serviceConfigProperty, cases['hive_master_hosts'].localDB, []);
@@ -435,18 +428,6 @@ describe('configPropertyHelper', function () {
       expect(serviceConfigProperty.get('recommendedValue')).to.equal(cases['yarn.resourcemanager.zk-address'].value);
     });
 
-    it(cases['oozieserver_host'].title, function () {
-      serviceConfigProperty.set('name', 'oozieserver_host');
-      configPropertyHelper.initialValue(serviceConfigProperty, cases['oozieserver_host'].localDB, []);
-      expect(serviceConfigProperty.get('value')).to.eql(cases['oozieserver_host'].value);
-    });
-
-    it(cases['knox_gateway_host'].title, function () {
-      serviceConfigProperty.set('name', 'knox_gateway_host');
-      configPropertyHelper.initialValue(serviceConfigProperty, cases['knox_gateway_host'].localDB, []);
-      expect(serviceConfigProperty.get('value')).to.eql(cases['knox_gateway_host'].value);
-    });
-
   });
 
   describe('#getHiveMetastoreUris', function () {

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/test/views/common/controls_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/controls_view_test.js b/ambari-web/test/views/common/controls_view_test.js
index b5c5f8b..fdba7b9 100644
--- a/ambari-web/test/views/common/controls_view_test.js
+++ b/ambari-web/test/views/common/controls_view_test.js
@@ -391,7 +391,7 @@ describe('App.CheckDBConnectionView', function () {
       ],
       categoryConfigsAll = [
         Em.Object.create({
-          name: 'oozieserver_host',
+          name: 'oozie_server_hosts',
           value: 'h0'
         }),
         Em.Object.create({
@@ -399,11 +399,11 @@ describe('App.CheckDBConnectionView', function () {
           value: 'h1'
         }),
         Em.Object.create({
-          name: 'hivemetastore_host',
+          name: 'hive_metastore_hosts',
           value: 'h2'
         }),
         Em.Object.create({
-          name: 'rangerserver_host',
+          name: 'ranger_server_hosts',
           value: 'h3'
         })
       ];


[2/2] ambari git commit: AMBARI-13182 Show hostname for a component as the first element of a category on service config page. (ababiichuk)

Posted by ab...@apache.org.
AMBARI-13182 Show hostname for a component as the first element of a category on service config page. (ababiichuk)


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

Branch: refs/heads/branch-2.1
Commit: e31174837ab3fc8ed41ce6ee592fb6a59e1f14ff
Parents: 6f859fa
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Mon Sep 14 11:40:26 2015 +0300
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Tue Sep 22 14:53:10 2015 +0300

----------------------------------------------------------------------
 .../controllers/main/service/info/configs.js    |  70 +--
 ambari-web/app/controllers/wizard.js            |   3 +-
 .../app/controllers/wizard/step7_controller.js  |   2 +-
 ambari-web/app/data/BIGTOP/site_properties.js   | 579 +-----------------
 ambari-web/app/data/HDP2.2/site_properties.js   |  29 +-
 ambari-web/app/data/HDP2.3/site_properties.js   |  16 +-
 ambari-web/app/data/HDP2/site_properties.js     | 585 +------------------
 ambari-web/app/data/host_component_mapping.js   | 142 -----
 .../app/mixins/common/configs/configs_saver.js  | 117 ----
 .../configs/objects/service_config_property.js  |  15 +-
 ambari-web/app/models/stack_service.js          |  48 +-
 .../app/templates/wizard/component_hosts.hbs    |  27 +
 .../templates/wizard/component_hosts_popup.hbs  |  23 +
 .../app/templates/wizard/master_hosts.hbs       |  27 -
 .../app/templates/wizard/master_hosts_popup.hbs |  23 -
 ambari-web/app/templates/wizard/slave_hosts.hbs |  27 -
 ambari-web/app/utils/config.js                  |  94 +--
 .../app/utils/configs/config_property_helper.js | 119 +---
 ambari-web/app/utils/configs/database.js        |   4 +-
 ambari-web/app/views/common/controls_view.js    |  49 +-
 .../main/service/info/config_test.js            |  97 ---
 .../test/controllers/wizard/step7_test.js       |   2 +-
 .../test/mock_data_setup/configs_mock_data.js   |   2 +-
 .../objects/service_config_property_test.js     |  14 +-
 ambari-web/test/utils/config_test.js            |  87 +--
 .../configs/config_property_helper_test.js      |  21 +-
 .../test/views/common/controls_view_test.js     |   6 +-
 27 files changed, 236 insertions(+), 1992 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/controllers/main/service/info/configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/info/configs.js b/ambari-web/app/controllers/main/service/info/configs.js
index a8175b0..937d093 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -389,7 +389,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ConfigsLoader, A
 
     this.set('allConfigs', configs);
     //add configs as names of host components
-    this.addHostNamesToConfig();
     this.addDBProperties(configs);
   },
 
@@ -484,12 +483,11 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ConfigsLoader, A
       var serviceNames = [ serviceName ];
       if(serviceName === 'OOZIE') {
         // For Oozie, also add ELService properties which are marked as FALCON properties.
-        serviceNames.push('FALCON')
+        serviceNames.push('FALCON');
       }
       var configsByService = this.get('allConfigs').filter(function (c) {
         return serviceNames.contains(c.get('serviceName'));
       });
-      //databaseUtils.bootstrapDatabaseProperties(configsByService, serviceName);
       var serviceConfig = App.config.createServiceConfig(serviceName, configGroups, configsByService, configsByService.length);
       if (serviceConfig.get('serviceName') === 'HDFS') {
         if (App.get('isHaEnabled')) {
@@ -499,7 +497,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ConfigsLoader, A
           serviceConfig.configs = c;
         }
       }
-
+      this.addHostNamesToConfigs(serviceConfig);
       this.get('stepConfigs').pushObject(serviceConfig);
     }, this);
 
@@ -577,65 +575,21 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ConfigsLoader, A
   },
 
   /**
-   * Adds host name of master component to config
-   * @private
-   * @method addHostNamesToGlobalConfig
+   *
+   * @param serviceConfig
    */
-  addHostNamesToConfig: function () {
-    var serviceName = this.get('content.serviceName');
-    var hostComponentMapping = require('data/host_component_mapping');
-    //namenode_host is required to derive "fs.default.name" a property of core-site
-    try {
-      this.setHostForService('HDFS', 'NAMENODE', 'namenode_host', true);
-    } catch (err) {
-      console.log("No NameNode Host available.  This is expected if you're using GLUSTERFS rather than HDFS.");
-    }
-
-    var hostProperties = hostComponentMapping.filter(function (h) {
-      return h.serviceUseThis.contains(serviceName) || h.serviceName == serviceName;
-    });
-    hostProperties.forEach(function (h) {
-      this.setHostForService(h.serviceName, h.componentName, h.hostProperty, h.m);
+  addHostNamesToConfigs: function(serviceConfig) {
+    serviceConfig.get('configCategories').forEach(function(c) {
+      if (c.showHost) {
+        var stackComponent = App.StackServiceComponent.find(c.name);
+        var component = stackComponent.get('isMaster') ? App.MasterComponent.find(c.name) : App.SlaveComponent.find(c.name);
+        var hProperty = App.config.createHostNameProperty(serviceConfig.get('serviceName'), c.name, component.get('hostNames') || [], stackComponent);
+        serviceConfig.get('configs').push(App.ServiceConfigProperty.create(hProperty));
+      }
     }, this);
   },
 
   /**
-   * set host name(s) property for component
-   * @param {String} serviceName - service name of component
-   * @param {String} componentName - component name which host we want to know
-   * @param {String} hostProperty - name of host property for current component
-   * @param {Boolean} multiple - true if can be more than one component
-   * @private
-   * @method setHostForService
-   */
-  setHostForService: function (serviceName, componentName, hostProperty, multiple) {
-    var configs = this.get('allConfigs');
-    var serviceConfigs = this.get('serviceConfigs').findProperty('serviceName', serviceName).get('configs');
-    var hostConfig = serviceConfigs.findProperty('name', hostProperty);
-    if (hostConfig) {
-      hostConfig.recommendedValue = this.getMasterComponentHostValue(componentName, multiple);
-      configs.push(App.ServiceConfigProperty.create(hostConfig));
-    }
-  },
-
-  /**
-   * get hostName of component
-   * @param {String} componentName
-   * @param {Boolean} multiple - true if can be more than one component installed on cluster
-   * @return {String|Array|Boolean} hostName|hostNames|false if missing component
-   * @private
-   * @method getMasterComponentHostValue
-   */
-  getMasterComponentHostValue: function (componentName, multiple) {
-    var components = App.HostComponent.find().filterProperty('componentName', componentName);
-  
-    if (components.length > 0) {
-      return multiple ? components.mapProperty('hostName') : components[0].get('hostName');
-    }
-    return false;
-  },
-
-  /**
    * Trigger loadSelectedVersion
    * @method doCancel
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/controllers/wizard.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard.js b/ambari-web/app/controllers/wizard.js
index 958510f..fb6bd44 100644
--- a/ambari-web/app/controllers/wizard.js
+++ b/ambari-web/app/controllers/wizard.js
@@ -859,7 +859,6 @@ App.WizardController = Em.Controller.extend(App.LocalStorage, App.ThemesMappingM
     var fileNamesToUpdate = this.getDBProperty('fileNamesToUpdate') || [];
     var installedServiceNames = stepController.get('installedServiceNames') || [];
     var installedServiceNamesMap = {};
-    var notAllowed = ['masterHost', 'masterHosts', 'slaveHosts', 'slaveHost'];
     installedServiceNames.forEach(function(name) {
       installedServiceNamesMap[name] = true;
     });
@@ -888,7 +887,7 @@ App.WizardController = Em.Controller.extend(App.LocalStorage, App.ThemesMappingM
         // get only modified configs
         var configs = _content.get('configs').filter(function (config) {
           if (config.get('isNotDefaultValue') || (config.get('savedValue') === null)) {
-            return !notAllowed.contains(config.get('displayType')) && !!config.filename && config.isRequiredByAgent!== false;
+            return config.isRequiredByAgent!== false;
           }
           return false;
         });

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/controllers/wizard/step7_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step7_controller.js b/ambari-web/app/controllers/wizard/step7_controller.js
index b40a0fb..0f62b3a 100644
--- a/ambari-web/app/controllers/wizard/step7_controller.js
+++ b/ambari-web/app/controllers/wizard/step7_controller.js
@@ -1160,7 +1160,7 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
    * @method getAmbariDatabaseSuccess
    */
   getAmbariDatabaseSuccess: function (data) {
-    var hiveDBHostname = this.get('stepConfigs').findProperty('serviceName', 'HIVE').configs.findProperty('name', 'hive_ambari_host').value;
+    var hiveDBHostname = this.get('stepConfigs').findProperty('serviceName', 'HIVE').configs.findProperty('name', 'hive_hostname').value;
     var ambariServiceHostComponents = data.hostComponents;
     if (!!ambariServiceHostComponents.length) {
       var ambariDBInfo = JSON.stringify(ambariServiceHostComponents[0].RootServiceHostComponents.properties);

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/data/BIGTOP/site_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/BIGTOP/site_properties.js b/ambari-web/app/data/BIGTOP/site_properties.js
index 93262ca..6799449 100644
--- a/ambari-web/app/data/BIGTOP/site_properties.js
+++ b/ambari-web/app/data/BIGTOP/site_properties.js
@@ -804,7 +804,7 @@ module.exports =
     {
       "name": "storm.zookeeper.servers",
       "displayName": "storm.zookeeper.servers",
-      "displayType": "masterHosts",
+      "displayType": "componentHosts",
       "isOverridable": false,
       "isReconfigurable": false,
       "serviceName": "STORM",
@@ -1554,21 +1554,6 @@ module.exports =
     },
   /**********************************************HDFS***************************************/
     {
-      "name": "namenode_host",
-      "displayName": "NameNode hosts",
-      "value": "",
-      "recommendedValue": "",
-      "description": "The hosts that has been assigned to run NameNode",
-      "displayType": "masterHosts",
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "HDFS",
-      "filename": "hadoop-env.xml",
-      "category": "NAMENODE",
-      "index": 0
-    },
-    {
       "name": "namenode_heapsize",
       "displayName": "NameNode Java heap size",
       "description": "Initial and maximum Java heap size for NameNode (Java options -Xms and -Xmx).  This also applies to the Secondary NameNode.",
@@ -1639,37 +1624,6 @@ module.exports =
       "index": 6
     },
     {
-      "name": "snamenode_host",
-      "displayName": "SNameNode host",
-      "value": "",
-      "recommendedValue": "",
-      "description": "The host that has been assigned to run SecondaryNameNode",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "filename": "hadoop-env.xml",
-      "category": "SECONDARY_NAMENODE",
-      "index": 0
-    },
-    {
-      "name": "datanode_hosts", //not in the schema. For UI purpose
-      "displayName": "DataNode hosts",
-      "value": "",
-      "recommendedValue": "",
-      "description": "The hosts that have been assigned to run DataNode",
-      "displayType": "slaveHosts",
-      "isRequired": false,
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "HDFS",
-      "filename": "hadoop-env.xml",
-      "category": "DATANODE",
-      "index": 0
-    },
-    {
       "name": "dtnode_heapsize",
       "displayName": "DataNode maximum Java heap size",
       "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
@@ -1736,20 +1690,6 @@ module.exports =
 
   /**********************************************MAPREDUCE2***************************************/
     {
-      "name": "hs_host",
-      "displayName": "History Server",
-      "description": "History Server",
-      "recommendedValue": "",
-      "isOverridable": false,
-      "displayType": "masterHost",
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "MAPREDUCE2",
-      "filename": "mapred-env.xml",
-      "category": "HISTORYSERVER",
-      "index": 0
-    },
-    {
       "name": "jobhistory_heapsize",
       "displayName": "History Server heap size",
       "description": "History Server heap size",
@@ -1805,20 +1745,6 @@ module.exports =
       "index": 0
     },
     {
-      "name": "rm_host",
-      "displayName": "ResourceManager",
-      "description": "ResourceManager",
-      "recommendedValue": "",
-      "isOverridable": false,
-      "displayType": "masterHost",
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "YARN",
-      "filename": "yarn-env.xml",
-      "category": "RESOURCEMANAGER",
-      "index": 0
-    },
-    {
       "name": "resourcemanager_heapsize",
       "displayName": "ResourceManager Java heap size",
       "description": "Max heapsize for ResourceManager",
@@ -1833,20 +1759,6 @@ module.exports =
       "index": 1
     },
     {
-      "name": "nm_hosts",
-      "displayName": "NodeManager",
-      "description": "List of NodeManager Hosts.",
-      "recommendedValue": "",
-      "isOverridable": false,
-      "displayType": "slaveHosts",
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "YARN",
-      "filename": "yarn-env.xml",
-      "category": "NODEMANAGER",
-      "index": 0
-    },
-    {
       "name": "nodemanager_heapsize",
       "displayName": "NodeManager Java heap size",
       "description": "Max heapsize for NodeManager",
@@ -1897,20 +1809,6 @@ module.exports =
       "category": "Advanced yarn-env"
     },
     {
-      "name": "ats_host",
-      "displayName": "App Timeline Server",
-      "description": "Application Timeline Server Host",
-      "recommendedValue": "",
-      "isOverridable": false,
-      "displayType": "masterHost",
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "YARN",
-      "filename": "yarn-env.xml",
-      "category": "APP_TIMELINE_SERVER",
-      "index": 0
-    },
-    {
       "name": "apptimelineserver_heapsize",
       "displayName": "AppTimelineServer Java heap size",
       "description": "AppTimelineServer Java heap size",
@@ -1926,21 +1824,6 @@ module.exports =
     },
   /**********************************************HBASE***************************************/
     {
-      "name": "hbasemaster_host",
-      "displayName": "HBase Master hosts",
-      "value": "",
-      "recommendedValue": "",
-      "description": "The host that has been assigned to run HBase Master",
-      "displayType": "masterHosts",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "HBASE",
-      "filename": "hbase-env.xml",
-      "category": "HBASE_MASTER",
-      "index": 0
-    },
-    {
       "name": "hbase_master_heapsize",
       "displayName": "HBase Master Maximum Java heap size",
       "description": "Maximum Java heap size for HBase master (Java option -Xmx)",
@@ -1955,22 +1838,6 @@ module.exports =
       "index": 1
     },
     {
-      "name": "regionserver_hosts",
-      "displayName": "RegionServer hosts",
-      "value": "",
-      "recommendedValue": "",
-      "description": "The hosts that have been assigned to run RegionServer",
-      "displayType": "slaveHosts",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "isRequired": false,
-      "serviceName": "HBASE",
-      "filename": "hbase-env.xml",
-      "category": "HBASE_REGIONSERVER",
-      "index": 0
-    },
-    {
       "name": "hbase_regionserver_heapsize",
       "displayName": "RegionServers maximum Java heap size",
       "description": "Maximum Java heap size for RegionServers (Java option -Xmx)",
@@ -2197,142 +2064,24 @@ module.exports =
       "filename": "hadoop-env.xml",
       "category": "General Hadoop"
     },
-    {
-      "name": "namenode_host",
-      "displayName": "NameNode Host",
-      "description": "NameNode Host.",
-      "recommendedValue": "",
-      "displayType": "string",
-      "isVisible": false,
-      "serviceName": "GLUSTERFS",
-      "filename": "hadoop-env.xml",
-      "category": "General Hadoop"
-    },
-    {
-      "name": "snamenode_host",
-      "displayName": "Secondary NameNode Host",
-      "description": "Secondary NameNode Host.",
-      "recommendedValue": "",
-      "displayType": "string",
-      "isVisible": false,
-      "serviceName": "GLUSTERFS",
-      "filename": "hadoop-env.xml",
-      "category": "General Hadoop"
-    },
   /**********************************************HIVE***************************************/
     {
-      "name": "hivemetastore_host",
-      "displayName": "Hive Metastore hosts",
-      "value": "",
-      "recommendedValue": "",
-      "description": "The hosts that have been assigned to run Hive Metastore",
-      "displayType": "masterHosts",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": true,
-      "serviceName": "HIVE",
-      "filename": "hive-env.xml",
-      "category": "HIVE_METASTORE",
-      "index": 0
-    },
-    {
-      "name": "hive_master_hosts",
-      "value": "",
-      "recommendedValue": "",
-      "isOverridable": false,
-      "isRequiredByAgent": false,
-      "isVisible": false,
-      "serviceName": "HIVE",
-      "filename": "hive-env.xml"
-    },
-    // for existing MySQL
-    {
-      "name": "hive_existing_mysql_database",
-      "displayName": "Database Type",
-      "value": "",
-      "recommendedValue": "MySQL",
-      "description": "Using an existing MySQL database for Hive Metastore",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": false,
-      "isRequiredByAgent": false,
-      "isReconfigurable": false,
-      "serviceName": "HIVE",
-      "filename": "hive-env.xml",
-      "category": "HIVE_METASTORE",
-      "index": 1
-    },
-    // for existing PostgreSQL
-    {
-      "name": "hive_existing_postgresql_database",
-      "displayName": "Database Type",
-      "value": "",
-      "recommendedValue": "PostgreSQL",
-      "description": "Using an existing PostgreSQL database for Hive Metastore",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": false,
-      "isRequiredByAgent": false,
-      "isReconfigurable": false,
-      "serviceName": "HIVE",
-      "filename": "hive-env.xml",
-      "category": "HIVE_METASTORE",
-      "index": 1
-    },
-    // for existing Oracle
-    {
-      "name": "hive_existing_oracle_database",
-      "displayName": "Database Type",
-      "value": "",
-      "recommendedValue": "Oracle",
-      "description": "Using an existing Oracle database for Hive Metastore",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isRequiredByAgent": false,
-      "isOverridable": false,
-      "isReconfigurable": false,
-      "serviceName": "HIVE",
-      "filename": "hive-env.xml",
-      "category": "HIVE_METASTORE",
-      "index": 1
-    },
-    // for new PostgreSQL
-    {
-      "name": "hive_ambari_database",
-      "displayName": "Database Type",
-      "value": "",
-      "recommendedValue": "PostgreSQL",
-      "description": "PostgreSQL will be installed by Ambari",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": false,
-      "isRequiredByAgent": false,
-      "serviceName": "HIVE",
-      "filename": "hive-env.xml",
-      "category": "HIVE_METASTORE",
-      "index": 1
-    },
-    {
       "name": "hive_database",
       "displayName": "Hive Database",
       "value": "",
       "recommendedValue": "New PostgreSQL Database",
       "options": [
         {
-          displayName: 'New PostgreSQL Database',
-          foreignKeys: ['hive_ambari_database', 'hive_ambari_host']
+          displayName: 'New PostgreSQL Database'
         },
         {
-          displayName: 'Existing MySQL Database',
-          foreignKeys: ['hive_existing_mysql_database', 'hive_existing_mysql_host']
+          displayName: 'Existing MySQL Database'
         },
         {
-          displayName: 'Existing PostgreSQL Database',
-          foreignKeys: ['hive_existing_postgresql_database', 'hive_existing_postgresql_host']
+          displayName: 'Existing PostgreSQL Database'
         },
         {
-          displayName: 'Existing Oracle Database',
-          foreignKeys: ['hive_existing_oracle_database', 'hive_existing_oracle_host']
+          displayName: 'Existing Oracle Database'
         }
       ],
       "description": "PostgreSQL will be installed by Ambari",
@@ -2363,64 +2112,6 @@ module.exports =
       "index": 3
     },
     {
-      "name": "hive_existing_mysql_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "recommendedValue": "",
-      "displayType": "host",
-      "isOverridable": false,
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "HIVE",
-      "filename": "hive-env.xml",
-      "category": "HIVE_METASTORE",
-      "index": 3
-    },
-    {
-      "name": "hive_existing_postgresql_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "recommendedValue": "",
-      "displayType": "host",
-      "isOverridable": false,
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "HIVE",
-      "filename": "hive-env.xml",
-      "category": "HIVE_METASTORE",
-      "index": 3
-    },
-    {
-      "name": "hive_existing_oracle_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "recommendedValue": "",
-      "displayType": "host",
-      "isOverridable": false,
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "HIVE",
-      "filename": "hive-env.xml",
-      "category": "HIVE_METASTORE",
-      "index": 3
-    },
-    {
-      "name": "hive_ambari_host",
-      "value": "",
-      "recommendedValue": "",
-      "displayName": "Database Host",
-      "description": "Host on which the database will be created by Ambari",
-      "isReconfigurable": false,
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": false,
-      "isRequiredByAgent": false,
-      "serviceName": "HIVE",
-      "filename": "hive-env.xml",
-      "category": "HIVE_METASTORE",
-      "index": 3
-    },
-    {
       "name": "hive_metastore_port",
       "displayName": "Hive metastore port",
       "description": "",
@@ -2487,20 +2178,6 @@ module.exports =
     },
   /**********************************************HIVE***************************************/
     {
-      "name": "webhcatserver_host",
-      "displayName": "WebHCat Server host",
-      "value": "",
-      "recommendedValue": "",
-      "description": "The host that has been assigned to run WebHCat Server",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "HIVE",
-      "filename": "webhcat-env.xml",
-      "category": "WEBHCAT_SERVER"
-    },
-    {
       "name": "hcat_log_dir",
       "displayName": "WebHCat Log Dir",
       "description": "Directory for WebHCat log files",
@@ -2528,121 +2205,22 @@ module.exports =
     },
   /**********************************************OOZIE***************************************/
     {
-      "name": "oozieserver_host",
-      "displayName": "Oozie Server host",
-      "value": "",
-      "recommendedValue": "",
-      "description": "The hosts that have been assigned to run Oozie Server",
-      "displayType": "masterHosts",
-      "isOverridable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "OOZIE",
-      "filename": "oozie-env.xml",
-      "category": "OOZIE_SERVER",
-      "index": 0
-    },
-    // for existing Oracle
-    {
-      "name": "oozie_existing_oracle_database",
-      "displayName": "Database Type",
-      "value": "",
-      "recommendedValue": "Oracle",
-      "description": "Using an existing Oracle database for Oozie Metastore",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isObserved": true,
-      "isReconfigurable": false,
-      "isOverridable": false,
-      "serviceName": "OOZIE",
-      "filename": "oozie-env.xml",
-      "category": "OOZIE_SERVER",
-      "index": 1
-    },
-    // for existing PostgreSQL
-    {
-      "name": "oozie_existing_postgresql_database",
-      "displayName": "Database Type",
-      "value": "",
-      "recommendedValue": "PostgreSQL",
-      "description": "Using an existing PostgreSQL database for Oozie Metastore",
-      "displayType": "masterHost",
-      "isOverridable": false,
-      "isVisible": false,
-      "isReconfigurable": false,
-      "serviceName": "OOZIE",
-      "filename": "oozie-env.xml",
-      "category": "OOZIE_SERVER",
-      "index": 1
-    },
-    // for new MySQL
-    {
-      "name": "oozie_ambari_database",
-      "displayName": "Database Type",
-      "value": "",
-      "recommendedValue": "MySQL",
-      "description": "MySQL will be installed by Ambari",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isOverridable": false,
-      "serviceName": "OOZIE",
-      "filename": "oozie-env.xml",
-      "category": "OOZIE_SERVER",
-      "index": 1
-    },
-    // for current derby
-    {
-      "name": "oozie_derby_database",
-      "displayName": "Database Type",
-      "value": "",
-      "recommendedValue": "Derby",
-      "description": "Using current Derby database for Oozie Metastore",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isReconfigurable": false,
-      "isOverridable": false,
-      "serviceName": "OOZIE",
-      "filename": "oozie-env.xml",
-      "category": "OOZIE_SERVER",
-      "index": 1
-    },
-    // for existing MySQL oozie
-    {
-      "name": "oozie_existing_mysql_database",
-      "displayName": "Database Type",
-      "value": "",
-      "recommendedValue": "MySQL",
-      "description": "Using an existing MySQL database for Oozie Metastore",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isReconfigurable": false,
-      "isOverridable": false,
-      "serviceName": "OOZIE",
-      "filename": "oozie-env.xml",
-      "category": "OOZIE_SERVER",
-      "index": 1
-    },
-    {
       "name": "oozie_database",
       "displayName": "Oozie Database",
       "value": "",
       "recommendedValue": "New Derby Database",
       "options": [
         {
-          displayName: 'New Derby Database',
-          foreignKeys: ['oozie_derby_database']
+          displayName: 'New Derby Database'
         },
         {
-          displayName: 'Existing MySQL Database',
-          foreignKeys: ['oozie_existing_mysql_database', 'oozie_existing_mysql_host']
+          displayName: 'Existing MySQL Database'
         },
         {
-          displayName: 'Existing PostgreSQL Database',
-          foreignKeys: ['oozie_existing_postgresql_database', 'oozie_existing_postgresql_host']
+          displayName: 'Existing PostgreSQL Database'
         },
         {
-          displayName: 'Existing Oracle Database',
-          foreignKeys: ['oozie_existing_oracle_database', 'oozie_existing_oracle_host']
+          displayName: 'Existing Oracle Database'
         }
       ],
       "description": "Current Derby Database will be installed by Ambari",
@@ -2687,63 +2265,6 @@ module.exports =
       "index": 3
     },
     {
-      "name": "oozie_existing_mysql_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "recommendedValue": "",
-      "isOverridable": false,
-      "displayType": "host",
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "OOZIE",
-      "filename": "oozie-env.xml",
-      "category": "OOZIE_SERVER",
-      "index": 3
-    },
-    {
-      "name": "oozie_existing_postgresql_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "recommendedValue": "",
-      "isOverridable": false,
-      "displayType": "host",
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "OOZIE",
-      "filename": "oozie-env.xml",
-      "category": "OOZIE_SERVER",
-      "index": 3
-    },
-    {
-      "name": "oozie_existing_oracle_host",
-      "displayName": "Database Host",
-      "description": "Specify the host on which the existing database is hosted",
-      "recommendedValue": "",
-      "isOverridable": false,
-      "displayType": "host",
-      "isVisible": false,
-      "isObserved": true,
-      "serviceName": "OOZIE",
-      "filename": "oozie-env.xml",
-      "category": "OOZIE_SERVER",
-      "index": 3
-    },
-    {
-      "name": "oozie_ambari_host",
-      "value": "",
-      "recommendedValue": "",
-      "displayName": "Database Host",
-      "description": "Host on which the database will be created by Ambari",
-      "isReconfigurable": false,
-      "isOverridable": false,
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isRequiredByAgent": false,
-      "serviceName": "OOZIE",
-      "filename": "oozie-env.xml",
-      "category": "OOZIE_SERVER"
-    },
-    {
       "name": "oozie_log_dir",
       "displayName": "Oozie Log Dir",
       "description": "Directory for oozie logs",
@@ -2782,22 +2303,6 @@ module.exports =
     },
   /**********************************************ZOOKEEPER***************************************/
     {
-      "name": "zookeeperserver_hosts",
-      "displayName": "ZooKeeper Server hosts",
-      "value": "",
-      "recommendedValue": "",
-      "description": "The host that has been assigned to run ZooKeeper Server",
-      "displayType": "masterHosts",
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "isOverridable": false,
-      "isRequired": false,
-      "serviceName": "ZOOKEEPER",
-      "filename": "zookeeper-env.xml",
-      "category": "ZOOKEEPER_SERVER",
-      "index": 0
-    },
-    {
       "name": "zk_data_dir",
       "displayName": "ZooKeeper directory",
       "description": "Data directory for ZooKeeper",
@@ -2907,18 +2412,6 @@ module.exports =
     },
   /**********************************************FALCON***************************************/
     {
-      "name": "falconserver_host",
-      "displayName": "Falcon Server",
-      "description": "The host that has been assigned to run Falcon Server",
-      "recommendedValue": "falcon",
-      "displayType": "masterHost",
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "FALCON",
-      "filename": "falcon-env.xml",
-      "category": "FALCON_SERVER"
-    },
-    {
       "name": "falcon_port",
       "displayName": "Falcon server port",
       "description": "Port the Falcon Server listens on",
@@ -3054,60 +2547,6 @@ module.exports =
       "filename": "storm-env.xml",
       "category": "Advanced storm-env"
     },
-    {
-      "name": "stormuiserver_host",
-      "displayName": "Storm UI Server host",
-      "description": "The host that has been assigned to run Storm UI Server",
-      "recommendedValue": "",
-      "displayType": "masterHost",
-      "isReconfigurable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "STORM",
-      "filename": "storm-env.xml",
-      "category": "STORM_UI_SERVER"
-    },
-    {
-      "name": "drpcserver_host",
-      "displayName": "DRPC Server host",
-      "description": "The host that has been assigned to run DRPC Server",
-      "recommendedValue": "",
-      "displayType": "masterHost",
-      "isReconfigurable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "STORM",
-      "filename": "storm-env.xml",
-      "category": "DRPC_SERVER"
-    },
-    {
-      "name": "supervisor_hosts",
-      "displayName": "Supervisor hosts",
-      "description": "The host that has been assigned to run Supervisor",
-      "recommendedValue": "",
-      "displayType": "slaveHosts",
-      "isReconfigurable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "STORM",
-      "filename": "storm-env.xml",
-      "isOverridable": false,
-      "category": "SUPERVISOR"
-    },
-    {
-      "name": "storm_rest_api_host",
-      "displayName": "Storm REST API host",
-      "description": "The host that has been assigned to run Storm REST API Server",
-      "recommendedValue": "",
-      "displayType": "masterHost",
-      "isReconfigurable": false,
-      "isVisible": true,
-      "isRequiredByAgent": false,
-      "serviceName": "STORM",
-      "filename": "storm-env.xml",
-      "isOverridable": false,
-      "category": "STORM_REST_API"
-    },
   /**********************************************MISC***************************************/
     {
       "name": "hbase_conf_dir",

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/data/HDP2.2/site_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2.2/site_properties.js b/ambari-web/app/data/HDP2.2/site_properties.js
index 63060ea..feda591 100644
--- a/ambari-web/app/data/HDP2.2/site_properties.js
+++ b/ambari-web/app/data/HDP2.2/site_properties.js
@@ -27,7 +27,6 @@ var hdp22SepcificProperties = [
 var hdp2properties = require('data/HDP2/site_properties').configProperties;
 var excludedConfigs = [
   'storm.thrift.transport', //In HDP2.2 storm.thrift.transport property is computed on server
-  'storm_rest_api_host',
   'tez.am.container.session.delay-allocation-millis',
   'tez.am.grouping.max-size',
   'tez.am.grouping.min-size',
@@ -142,18 +141,6 @@ hdp22properties.push(
     "serviceName": "HIVE"
   },
   {
-    "name": "policy_user",
-    "filename": "ranger-hive-plugin-properties.xml",
-    "category": "Advanced ranger-hive-plugin-properties",
-    "serviceName": "HIVE"
-  },
-  {
-    "name": "REPOSITORY_CONFIG_USERNAME",
-    "filename": "ranger-hive-plugin-properties.xml",
-    "category": "Advanced ranger-hive-plugin-properties",
-    "serviceName": "HIVE"
-  },
-  {
     "name": "UPDATE_XAPOLICIES_ON_GRANT_REVOKE",
     "displayType": "checkbox",
     "filename": "ranger-hive-plugin-properties.xml",
@@ -185,18 +172,6 @@ hdp22properties.push(
     "index": 1
   },
   {
-    "name": "policy_user",
-    "filename": "ranger-hbase-plugin-properties.xml",
-    "category": "Advanced ranger-hbase-plugin-properties",
-    "serviceName": "HBASE"
-  },
-  {
-    "name": "REPOSITORY_CONFIG_USERNAME",
-    "filename": "ranger-hbase-plugin-properties.xml",
-    "category": "Advanced ranger-hbase-plugin-properties",
-    "serviceName": "HBASE"
-  },
-  {
     "name": "UPDATE_XAPOLICIES_ON_GRANT_REVOKE",
     "displayType": "checkbox",
     "filename": "ranger-hbase-plugin-properties.xml",
@@ -293,13 +268,13 @@ hdp22properties.push(
     "name": "ranger_admin_password",
     "serviceName": "RANGER",
     "filename": "ranger-env.xml",
-    "category": "AdminSettings"
+    "category": "RANGER_ADMIN"
   },
   {
     "name": "SQL_CONNECTOR_JAR",
     "serviceName": "RANGER",
     "filename": "admin-properties.xml",
-    "category": "AdminSettings"
+    "category": "RANGER_ADMIN"
   },
   {
     "name": "DB_FLAVOR",

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/data/HDP2.3/site_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2.3/site_properties.js b/ambari-web/app/data/HDP2.3/site_properties.js
index 10390ac..adf8cae 100644
--- a/ambari-web/app/data/HDP2.3/site_properties.js
+++ b/ambari-web/app/data/HDP2.3/site_properties.js
@@ -101,20 +101,6 @@ hdp23properties.push({
     "index": 2
   },
   {
-    "name": "rangerserver_host",
-    "displayName": "Ranger Server host",
-    "value": "",
-    "recommendedValue": "",
-    "description": "The host that has been assigned to run Ranger Server",
-    "displayType": "masterHost",
-    "isOverridable": false,
-    "isRequiredByAgent": false,
-    "serviceName": "RANGER",
-    "filename": "admin-properties.xml",
-    "category": "DBSettings",
-    "index": 0
-  },
-  {
     "name": "create_db_dbuser",
     "displayType": "checkbox",
     "filename": "ranger-env.xml",
@@ -294,7 +280,7 @@ hdp23properties.push({
   },
   {
     "name": "nimbus.seeds",
-    "displayType": "masterHosts",
+    "displayType": "componentHosts",
     "serviceName": "STORM",
     "filename": "storm-site.xml",
     "category": "NIMBUS"

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/data/HDP2/site_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/site_properties.js b/ambari-web/app/data/HDP2/site_properties.js
index d641c81..3a57e93 100644
--- a/ambari-web/app/data/HDP2/site_properties.js
+++ b/ambari-web/app/data/HDP2/site_properties.js
@@ -102,7 +102,6 @@ var hdp2properties = [
   },
   {
     "name": "nfs.exports.allowed.hosts",
-    "displayType": "string",
     "category": "NFS_GATEWAY",
     "serviceName": "HDFS",
     "filename": "hdfs-site.xml",
@@ -131,20 +130,6 @@ var hdp2properties = [
     "filename": "hdfs-site.xml"
   },
   {
-    "name": "namenode_host",
-    "displayName": "NameNode hosts",
-    "value": "",
-    "recommendedValue": "",
-    "description": "The hosts that has been assigned to run NameNode",
-    "displayType": "masterHosts",
-    "isOverridable": false,
-    "isRequiredByAgent": false,
-    "serviceName": "HDFS",
-    "filename": "hadoop-env.xml",
-    "category": "NAMENODE",
-    "index": 0
-  },
-  {
     "name": "namenode_heapsize",
     "displayType": "int",
     "serviceName": "HDFS",
@@ -185,35 +170,6 @@ var hdp2properties = [
     "index": 4
   },
   {
-    "name": "snamenode_host",
-    "displayName": "SNameNode host",
-    "value": "",
-    "recommendedValue": "",
-    "description": "The host that has been assigned to run SecondaryNameNode",
-    "displayType": "masterHost",
-    "isOverridable": false,
-    "isRequiredByAgent": false,
-    "serviceName": "HDFS",
-    "filename": "hadoop-env.xml",
-    "category": "SECONDARY_NAMENODE",
-    "index": 0
-  },
-  {
-    "name": "datanode_hosts", //not in the schema. For UI purpose
-    "displayName": "DataNode hosts",
-    "value": "",
-    "recommendedValue": "",
-    "description": "The hosts that have been assigned to run DataNode",
-    "displayType": "slaveHosts",
-    "isRequired": false,
-    "isOverridable": false,
-    "isRequiredByAgent": false,
-    "serviceName": "HDFS",
-    "filename": "hadoop-env.xml",
-    "category": "DATANODE",
-    "index": 0
-  },
-  {
     "name": "dtnode_heapsize",
     "displayType": "int",
     "serviceName": "HDFS",
@@ -222,22 +178,6 @@ var hdp2properties = [
     "index": 2
   },
   {
-    "name": "nfsgateway_hosts", //not in the schema. For UI purpose
-    "displayName": "NFSGateway hosts",
-    "value": "",
-    "recommendedValue": "",
-    "description": "The hosts that have been assigned to run NFSGateway",
-    "displayType": "slaveHosts",
-    "isRequired": false,
-    "isOverridable": false,
-    "isVisible": true,
-    "isRequiredByAgent": false,
-    "serviceName": "HDFS",
-    "filename": "hadoop-env.xml",
-    "category": "NFS_GATEWAY",
-    "index": 0
-  },
-  {
     "name": "nfsgateway_heapsize",
     "displayType": "int",
     "serviceName": "HDFS",
@@ -267,13 +207,6 @@ var hdp2properties = [
     "filename": "hadoop-env.xml",
     "category": "Advanced hadoop-env"
   },
-  {
-    "name": "hadoop_root_logger",
-    "displayType": "string",
-    "serviceName": "HDFS",
-    "filename": "hadoop-env.xml",
-    "category": "Advanced hadoop-env"
-  },
 
 /**********************************************YARN***************************************/
   {
@@ -382,19 +315,6 @@ var hdp2properties = [
     "index": 0
   },
   {
-    "name": "rm_host",
-    "displayName": "ResourceManager",
-    "description": "ResourceManager",
-    "recommendedValue": "",
-    "isOverridable": false,
-    "displayType": "masterHost",
-    "isRequiredByAgent": false,
-    "serviceName": "YARN",
-    "filename": "yarn-env.xml",
-    "category": "RESOURCEMANAGER",
-    "index": 0
-  },
-  {
     "name": "resourcemanager_heapsize",
     "displayType": "int",
     "serviceName": "YARN",
@@ -403,25 +323,12 @@ var hdp2properties = [
     "index": 1
   },
   {
-    "name": "nm_hosts",
-    "displayName": "NodeManager",
-    "description": "List of NodeManager Hosts.",
-    "recommendedValue": "",
-    "isOverridable": false,
-    "displayType": "slaveHosts",
-    "isRequiredByAgent": false,
-    "serviceName": "YARN",
-    "filename": "yarn-env.xml",
-    "category": "NODEMANAGER",
-    "index": 0
-  },
-  {
     "name": "nodemanager_heapsize",
     "displayType": "int",
     "serviceName": "YARN",
     "filename": "yarn-env.xml",
     "category": "NODEMANAGER",
-    "index": 0
+    "index": 1
   },
   {
     "name": "yarn_log_dir_prefix",
@@ -445,19 +352,6 @@ var hdp2properties = [
     "category": "Advanced yarn-env"
   },
   {
-    "name": "ats_host",
-    "displayName": "App Timeline Server",
-    "description": "Application Timeline Server Host",
-    "recommendedValue": "",
-    "isOverridable": false,
-    "displayType": "masterHost",
-    "isRequiredByAgent": false,
-    "serviceName": "YARN",
-    "filename": "yarn-env.xml",
-    "category": "APP_TIMELINE_SERVER",
-    "index": 0
-  },
-  {
     "name": "apptimelineserver_heapsize",
     "displayType": "int",
     "serviceName": "YARN",
@@ -502,20 +396,6 @@ var hdp2properties = [
     "filename": "mapred-site.xml"
   },
   {
-    "name": "hs_host",
-    "displayName": "History Server",
-    "description": "History Server",
-    "recommendedValue": "",
-    "isOverridable": false,
-    "displayType": "masterHost",
-    "isRequiredByAgent": false,
-    "isVisible": true,
-    "serviceName": "MAPREDUCE2",
-    "filename": "mapred-env.xml",
-    "category": "HISTORYSERVER",
-    "index": 0
-  },
-  {
     "name": "jobhistory_heapsize",
     "displayType": "int",
     "serviceName": "MAPREDUCE2",
@@ -577,20 +457,6 @@ var hdp2properties = [
     "index": 8
   },
   {
-    "name": "oozieserver_host",
-    "displayName": "Oozie Server host",
-    "value": "",
-    "recommendedValue": "",
-    "description": "The hosts that have been assigned to run Oozie Server",
-    "displayType": "masterHosts",
-    "isOverridable": false,
-    "isRequiredByAgent": false,
-    "serviceName": "OOZIE",
-    "filename": "oozie-env.xml",
-    "category": "OOZIE_SERVER",
-    "index": 0
-  },
-  {
     "name": "oozie_database",
     "options": [
       {
@@ -724,12 +590,6 @@ var hdp2properties = [
     "index": 4
   },
   {
-    "name": "hive.server2.tez.default.queues",
-    "serviceName": "HIVE",
-    "filename": "hive-site.xml",
-    "category": "Advanced hive-site"
-  },
-  {
     "name": "hive.server2.thrift.port",
     "displayType": "int",
     "category": "Advanced hive-site",
@@ -751,46 +611,6 @@ var hdp2properties = [
     "filename": "hive-site.xml"
   },
   {
-    "name": "hivemetastore_host",
-    "displayName": "Hive Metastore hosts",
-    "value": "",
-    "recommendedValue": "",
-    "description": "The hosts that have been assigned to run Hive Metastore",
-    "displayType": "masterHosts",
-    "isOverridable": false,
-    "isRequiredByAgent": false,
-    "serviceName": "HIVE",
-    "filename": "hive-env.xml",
-    "category": "HIVE_METASTORE",
-    "index": 0
-  },
-  {
-    "name": "hive_master_hosts",
-    "value": "",
-    "recommendedValue": "",
-    "isOverridable": false,
-    "isRequiredByAgent": false,
-    "isVisible": false,
-    "serviceName": "HIVE",
-    "filename": "hive-env.xml"
-  },
-  {
-    "name": "hive_ambari_database",
-    "displayName": "Database Type",
-    "value": "",
-    "recommendedValue": "MySQL",
-    "description": "MySQL will be installed by Ambari",
-    "displayType": "masterHost",
-    "isOverridable": false,
-    "isReconfigurable": false,
-    "isRequiredByAgent": false,
-    "isVisible": false,
-    "serviceName": "HIVE",
-    "filename": "hive-env.xml",
-    "category": "HIVE_METASTORE",
-    "index": 1
-  },
-  {
     "name": "hive_database",
     "options": [
       {
@@ -837,22 +657,6 @@ var hdp2properties = [
     "index": 3
   },
   {
-    "name": "hive_ambari_host",
-    "value": "",
-    "recommendedValue": "",
-    "displayName": "Database Host",
-    "description": "Host on which the database will be created by Ambari",
-    "isReconfigurable": false,
-    "displayType": "masterHost",
-    "isOverridable": false,
-    "isVisible": false,
-    "isRequiredByAgent": false,
-    "serviceName": "HIVE",
-    "filename": "hive-env.xml",
-    "category": "HIVE_METASTORE",
-    "index": 3
-  },
-  {
     "name": "hive_log_dir",
     "displayType": "directory",
     "serviceName": "HIVE",
@@ -867,19 +671,6 @@ var hdp2properties = [
     "category": "Advanced hive-env"
   },
   {
-    "name": "webhcatserver_host",
-    "displayName": "WebHCat Server host",
-    "value": "",
-    "recommendedValue": "",
-    "description": "The host that has been assigned to run WebHCat Server",
-    "displayType": "masterHost",
-    "isOverridable": false,
-    "isRequiredByAgent": false,
-    "serviceName": "HIVE",
-    "filename": "webhcat-env.xml",
-    "category": "WEBHCAT_SERVER"
-  },
-  {
     "name": "hcat_log_dir",
     "displayType": "directory",
     "serviceName": "HIVE",
@@ -942,14 +733,12 @@ var hdp2properties = [
   },
   {
     "name": "tez.am.log.level",
-    "displayType": "string",
     "category": "General",
     "serviceName": "TEZ",
     "filename": "tez-site.xml"
   },
   {
     "name": "tez.runtime.intermediate-input.compress.codec",
-    "displayType": "string",
     "category": "General",
     "serviceName": "TEZ",
     "filename": "tez-site.xml"
@@ -963,7 +752,6 @@ var hdp2properties = [
   },
   {
     "name": "tez.runtime.intermediate-output.compress.codec",
-    "displayType": "string",
     "category": "General",
     "serviceName": "TEZ",
     "filename": "tez-site.xml"
@@ -1100,24 +888,6 @@ var hdp2properties = [
     "index": 5
   },
   {
-    "name": "hbase.coprocessor.region.classes",
-    "category": "Advanced hbase-site",
-    "serviceName": "HBASE",
-    "filename": "hbase-site.xml"
-  },
-  {
-    "name": "hbase.coprocessor.master.classes",
-    "category": "Advanced hbase-site",
-    "serviceName": "HBASE",
-    "filename": "hbase-site.xml"
-  },
-  {
-    "name": "hbase.coprocessor.regionserver.classes",
-    "category": "Advanced hbase-site",
-    "serviceName": "HBASE",
-    "filename": "hbase-site.xml"
-  },
-  {
     "name": "hbase.zookeeper.quorum",
     "displayType": "multiLine",
     "serviceName": "HBASE",
@@ -1125,21 +895,6 @@ var hdp2properties = [
     "category": "Advanced hbase-site"
   },
   {
-    "name": "hbasemaster_host",
-    "displayName": "HBase Master hosts",
-    "value": "",
-    "recommendedValue": "",
-    "description": "The host that has been assigned to run HBase Master",
-    "displayType": "masterHosts",
-    "isOverridable": false,
-    "isRequiredByAgent": false,
-    "isVisible": true,
-    "serviceName": "HBASE",
-    "filename": "hbase-env.xml",
-    "category": "HBASE_MASTER",
-    "index": 0
-  },
-  {
     "name": "hbase_master_heapsize",
     "displayType": "int",
     "serviceName": "HBASE",
@@ -1148,20 +903,6 @@ var hdp2properties = [
     "index": 1
   },
   {
-    "name": "regionserver_hosts",
-    "displayName": "RegionServer hosts",
-    "value": "",
-    "recommendedValue": "",
-    "description": "The hosts that have been assigned to run RegionServer",
-    "displayType": "slaveHosts",
-    "isOverridable": false,
-    "isRequiredByAgent": false,
-    "serviceName": "HBASE",
-    "filename": "hbase-env.xml",
-    "category": "HBASE_REGIONSERVER",
-    "index": 0
-  },
-  {
     "name": "hbase_regionserver_heapsize",
     "displayType": "int",
     "serviceName": "HBASE",
@@ -1217,7 +958,7 @@ var hdp2properties = [
   },
   {
     "name": "storm.zookeeper.servers",
-    "displayType": "masterHosts",
+    "displayType": "componentHosts",
     "serviceName": "STORM",
     "filename": "storm-site.xml",
     "category": "General"
@@ -1333,7 +1074,7 @@ var hdp2properties = [
   },
   {
     "name": "nimbus.host",
-    "displayType": "masterHost",
+    "displayType": "componentHost",
     "serviceName": "STORM",
     "filename": "storm-site.xml",
     "category": "NIMBUS"
@@ -1423,7 +1164,6 @@ var hdp2properties = [
   },
   {
     "name": "supervisor.slots.ports",
-    "displayType": "string",
     "serviceName": "STORM",
     "filename": "storm-site.xml",
     "category": "SUPERVISOR"
@@ -1500,7 +1240,6 @@ var hdp2properties = [
   },
   {
     "name": "drpc.childopts",
-    "displayType": "string",
     "category": "DRPC_SERVER",
     "serviceName": "STORM",
     "filename": "storm-site.xml"
@@ -1514,7 +1253,6 @@ var hdp2properties = [
   },
   {
     "name": "ui.childopts",
-    "displayType": "string",
     "category": "STORM_UI_SERVER",
     "serviceName": "STORM",
     "filename": "storm-site.xml"
@@ -1813,63 +1551,15 @@ var hdp2properties = [
 
 /**********************************************webhcat-site***************************************/
   {
-    "name": "templeton.hive.archive",
-    "serviceName": "HIVE",
-    "filename": "webhcat-site.xml",
-    "category": "Advanced webhcat-site"
-  },
-  {
-    "name": "templeton.pig.archive",
-    "serviceName": "HIVE",
-    "filename": "webhcat-site.xml",
-    "category": "Advanced webhcat-site"
-  },
-  {
     "name": "templeton.zookeeper.hosts",
     "displayType": "multiLine",
     "serviceName": "HIVE",
     "filename": "webhcat-site.xml",
     "category": "Advanced webhcat-site"
   },
-/**********************************************pig.properties*****************************************/
-  {
-    "name": "content",
-    "category": "Advanced pig-properties",
-    "serviceName": "PIG",
-    "filename": "pig-properties.xml"
-  },
 
 /**********************************************KNOX*****************************************/
   {
-    "name": "content",
-    "displayType": "content",
-    "serviceName": "KNOX",
-    "filename": "topology.xml",
-    "category": "Advanced topology"
-  },
-
-  {
-    "name": "content",
-    "displayType": "content",
-    "serviceName": "KNOX",
-    "filename": "users-ldif.xml",
-    "category": "Advanced users-ldif"
-  },
-  {
-    "name": "knox_gateway_host",
-    "displayName": "Knox Gateway host",
-    "value": "",
-    "recommendedValue": "",
-    "description": "The hosts that have been assigned to run Knox Gateway",
-    "displayType": "masterHosts",
-    "isOverridable": false,
-    "isRequiredByAgent": false,
-    "serviceName": "KNOX",
-    "filename": "knox-env.xml",
-    "category": "KNOX_GATEWAY",
-    "index": 0
-  },
-  {
     "name": "knox_master_secret",
     "serviceName": "KNOX",
     "filename": "knox-env.xml",
@@ -1885,26 +1575,12 @@ var hdp2properties = [
 
 /********************************************* KAFKA *****************************/
   {
-    "name": "kafka_broker_hosts",
-    "displayName": "Kafka Broker host",
-    "value": "",
-    "recommendedValue": "",
-    "description": "The host that has been assigned to run Kafka Broker",
-    "displayType": "masterHosts",
-    "isOverridable": false,
-    "isRequiredByAgent": false,
-    "serviceName": "KAFKA",
-    "filename": "kafka-broker.xml",
-    "category": "KAFKA_BROKER",
-    "index": 0
-  },
-  {
     "name": "log.dirs",
     "displayType": "directories",
     "serviceName": "KAFKA",
     "filename": "kafka-broker.xml",
     "category": "KAFKA_BROKER",
-    "index": 0
+    "index": 1
   },
   {
     "name": "port",
@@ -1912,7 +1588,7 @@ var hdp2properties = [
     "serviceName": "KAFKA",
     "filename": "kafka-broker.xml",
     "category": "KAFKA_BROKER",
-    "index": 0
+    "index": 2
   },
     {
     "name": "listeners",
@@ -1957,7 +1633,6 @@ var hdp2properties = [
 /********************************************* ACCUMULO *****************************/
   {
     "name": "accumulo_instance_name",
-    "displayType": "string",
     "serviceName": "ACCUMULO",
     "filename": "accumulo-env.xml",
     "category": "General"
@@ -1970,7 +1645,6 @@ var hdp2properties = [
   },
   {
     "name": "trace.user",
-    "displayType": "string",
     "serviceName": "ACCUMULO",
     "filename": "accumulo-site.xml",
     "category": "General"
@@ -2053,7 +1727,6 @@ var hdp2properties = [
   },
   {
     "name": "instance.volumes",
-    "displayType": "string",
     "serviceName": "ACCUMULO",
     "filename": "accumulo-site.xml",
     "category": "Advanced accumulo-site",
@@ -2061,7 +1734,6 @@ var hdp2properties = [
   },
   {
     "name": "instance.zookeeper.host",
-    "displayType": "string",
     "serviceName": "ACCUMULO",
     "filename": "accumulo-site.xml",
     "category": "Advanced accumulo-site",
@@ -2069,7 +1741,6 @@ var hdp2properties = [
   },
   {
     "name": "instance.zookeeper.timeout",
-    "displayType": "string",
     "serviceName": "ACCUMULO",
     "filename": "accumulo-site.xml",
     "category": "Advanced accumulo-site",
@@ -2143,21 +1814,13 @@ var hdp2properties = [
 /*******************************************kerberos***********************************/
   {
     "name": "kdc_type",
-    "displayType": "masterHost",
+    "displayType": "componentHost",
     "serviceName": "KERBEROS",
     "filename": "kerberos-env.xml",
     "category": "KDC",
     "index": 0
   },
   {
-    "name": "kdc_host",
-    "displayType": "supportTextConnection",
-    "serviceName": "KERBEROS",
-    "filename": "kerberos-env.xml",
-    "category": "KDC",
-    "index": 1
-  },
-  {
     "name": "realm",
     "displayType": "host",
     "serviceName": "KERBEROS",
@@ -2381,14 +2044,12 @@ var hdp2properties = [
   //***************************************** GLUSTERFS stack********************************************
   {
     "name": "fs.glusterfs.impl",
-    "displayType": "string",
     "filename": "core-site.xml",
     "serviceName": "GLUSTERFS",
     "category": "General"
   },
   {
     "name": "fs.AbstractFileSystem.glusterfs.impl",
-    "displayType": "string",
     "filename": "core-site.xml",
     "serviceName": "GLUSTERFS",
     "category": "General"
@@ -2470,21 +2131,6 @@ var hdp2properties = [
   },
   {
     "name": "glusterfs_user",
-    "displayType": "string",
-    "serviceName": "GLUSTERFS",
-    "filename": "hadoop-env.xml",
-    "category": "General Hadoop"
-  },
-  {
-    "name": "namenode_host",
-    "displayType": "string",
-    "serviceName": "GLUSTERFS",
-    "filename": "hadoop-env.xml",
-    "category": "General Hadoop"
-  },
-  {
-    "name": "snamenode_host",
-    "displayType": "string",
     "serviceName": "GLUSTERFS",
     "filename": "hadoop-env.xml",
     "category": "General Hadoop"
@@ -2492,22 +2138,6 @@ var hdp2properties = [
 
 /**********************************************ZOOKEEPER***************************************/
   {
-    "name": "zookeeperserver_hosts",
-    "displayName": "ZooKeeper Server hosts",
-    "value": "",
-    "recommendedValue": "",
-    "description": "The host that has been assigned to run ZooKeeper Server",
-    "displayType": "masterHosts",
-    "isVisible": true,
-    "isRequiredByAgent": false,
-    "isOverridable": false,
-    "isRequired": false,
-    "serviceName": "ZOOKEEPER",
-    "filename": "zookeeper-env.xml",
-    "category": "ZOOKEEPER_SERVER",
-    "index": 0
-  },
-  {
     "name": "dataDir",
     "displayType": "directory",
     "serviceName": "ZOOKEEPER",
@@ -2565,17 +2195,6 @@ var hdp2properties = [
   },
 /**********************************************FALCON***************************************/
   {
-    "name": "falconserver_host",
-    "displayName": "Falcon Server",
-    "description": "The host that has been assigned to run Falcon Server",
-    "recommendedValue": "falcon",
-    "displayType": "masterHost",
-    "isRequiredByAgent": false,
-    "serviceName": "FALCON",
-    "filename": "falcon-env.xml",
-    "category": "FALCON_SERVER"
-  },
-  {
     "name": "falcon_port",
     "displayType": "int",
     "serviceName": "FALCON",
@@ -2591,7 +2210,6 @@ var hdp2properties = [
   },
   {
     "name": "falcon_store_uri",
-    "displayType": "string",
     "serviceName": "FALCON",
     "filename": "falcon-env.xml",
     "category": "FALCON_SERVER"
@@ -2611,26 +2229,12 @@ var hdp2properties = [
     "category": "Advanced falcon-env"
   },
   {
-    "name": "falcon.embeddedmq",
-    "displayType": "string",
-    "serviceName": "FALCON",
-    "filename": "falcon-env.xml",
-    "category": "Advanced falcon-env"
-  },
-  {
     "name": "falcon.embeddedmq.data",
     "displayType": "directory",
     "serviceName": "FALCON",
     "filename": "falcon-env.xml",
     "category": "Advanced falcon-env"
   },
-  {
-    "name": "falcon.emeddedmq.port",
-    "displayType": "string",
-    "serviceName": "FALCON",
-    "filename": "falcon-env.xml",
-    "category": "Advanced falcon-env"
-  },
 /**********************************************STORM***************************************/
   {
     "name": "storm_log_dir",
@@ -2646,57 +2250,6 @@ var hdp2properties = [
     "filename": "storm-env.xml",
     "category": "Advanced storm-env"
   },
-  {
-    "name": "stormuiserver_host",
-    "displayName": "Storm UI Server host",
-    "description": "The host that has been assigned to run Storm UI Server",
-    "recommendedValue": "",
-    "displayType": "masterHost",
-    "isReconfigurable": false,
-    "isRequiredByAgent": false,
-    "serviceName": "STORM",
-    "filename": "storm-env.xml",
-    "category": "STORM_UI_SERVER"
-  },
-  {
-    "name": "drpcserver_host",
-    "displayName": "DRPC Server host",
-    "description": "The host that has been assigned to run DRPC Server",
-    "recommendedValue": "",
-    "displayType": "masterHost",
-    "isReconfigurable": false,
-    "isRequiredByAgent": false,
-    "serviceName": "STORM",
-    "filename": "storm-env.xml",
-    "category": "DRPC_SERVER"
-  },
-  {
-    "name": "supervisor_hosts",
-    "displayName": "Supervisor hosts",
-    "description": "The host that has been assigned to run Supervisor",
-    "recommendedValue": "",
-    "isRequired": false,
-    "displayType": "slaveHosts",
-    "isReconfigurable": false,
-    "isRequiredByAgent": false,
-    "serviceName": "STORM",
-    "filename": "storm-env.xml",
-    "isOverridable": false,
-    "category": "SUPERVISOR"
-  },
-  {
-    "name": "storm_rest_api_host",
-    "displayName": "Storm REST API host",
-    "description": "The host that has been assigned to run Storm REST API Server",
-    "recommendedValue": "",
-    "displayType": "masterHost",
-    "isReconfigurable": false,
-    "isRequiredByAgent": false,
-    "serviceName": "STORM",
-    "filename": "storm-env.xml",
-    "isOverridable": false,
-    "category": "STORM_REST_API"
-  },
 /**********************************************MISC***************************************/
   {
     "name": "ignore_groupsusers_create",
@@ -2790,7 +2343,6 @@ var hdp2properties = [
   {
     "name": "ambari.dispatch.credential.username",
     "displayName": "SMTP Username",
-    "displayType": "string",
     "isRequired": false,
     "isReconfigurable": true,
     "isOverridable": false,
@@ -2803,7 +2355,6 @@ var hdp2properties = [
   {
     "name": "ambari.dispatch.credential.password",
     "displayName": "SMTP Password",
-    "displayType": "string",
     "isRequired": false,
     "isReconfigurable": true,
     "isOverridable": false,
@@ -2838,7 +2389,6 @@ var hdp2properties = [
 /************************************************AMBARI_METRICS******************************************/
   {
     "name": "timeline.metrics.service.operation.mode",
-    "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
     "category": "General",
@@ -2846,7 +2396,6 @@ var hdp2properties = [
   },
   {
     "name": "metrics_collector_log_dir",
-    "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-env.xml",
     "category": "General",
@@ -2854,7 +2403,6 @@ var hdp2properties = [
   },
   {
     "name": "metrics_collector_pid_dir",
-    "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-env.xml",
     "category": "General",
@@ -2862,7 +2410,6 @@ var hdp2properties = [
   },
   {
     "name": "metrics_monitor_log_dir",
-    "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-env.xml",
     "category": "General",
@@ -2870,7 +2417,6 @@ var hdp2properties = [
   },
   {
     "name": "metrics_monitor_pid_dir",
-    "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-env.xml",
     "category": "General",
@@ -2894,7 +2440,6 @@ var hdp2properties = [
   },
   {
     "name": "timeline.metrics.cluster.aggregator.hourly.disabled",
-    "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
     "category": "MetricCollector",
@@ -2918,7 +2463,6 @@ var hdp2properties = [
   },
   {
     "name": "timeline.metrics.cluster.aggregator.minute.disabled",
-    "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
     "category": "MetricCollector",
@@ -2950,7 +2494,6 @@ var hdp2properties = [
   },
   {
     "name": "timeline.metrics.host.aggregator.hourly.disabled",
-    "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
     "category": "MetricCollector",
@@ -2974,7 +2517,6 @@ var hdp2properties = [
   },
   {
     "name": "timeline.metrics.host.aggregator.minute.disabled",
-    "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
     "category": "MetricCollector",
@@ -3012,114 +2554,6 @@ var hdp2properties = [
     "category": "MetricCollector",
     "index": 3
   },
-  {
-    "name": "ams.zookeeper.keytab",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "ams.zookeeper.principal",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hadoop.security.authentication",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hbase.coprocessor.master.classes",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hbase.coprocessor.region.classes",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hbase.master.kerberos.principal",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hbase.master.keytab.file",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hbase.myclient.keytab",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hbase.myclient.principal",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hbase.regionserver.kerberos.principal",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hbase.regionserver.keytab.file",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hbase.security.authentication",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hbase.security.authorization",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hbase.zookeeper.property.authProvider.1",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hbase.zookeeper.property.jaasLoginRenew",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hbase.zookeeper.property.kerberos.removeHostFromPrincipal",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "hbase.zookeeper.property.kerberos.removeRealmFromPrincipal",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
-  {
-    "name": "zookeeper.znode.parent",
-    "serviceName": "AMBARI_METRICS",
-    "category": "Advanced ams-hbase-security-site",
-    "filename": "ams-hbase-security-site.xml"
-  },
 /************************************************Kerberos Descriptor******************************************/
   {
     "name": "smokeuser_principal_name",
@@ -3244,12 +2678,10 @@ if (App.get('isHadoopWindowsStack')) {
       "options": [
         {
           displayName: 'Existing MSSQL Server database with SQL authentication',
-          foreignKeys: ['hive_existing_mssql_server_database', 'hive_existing_mssql_server_host'],
           hidden: false
         },
         {
           displayName: 'Existing MSSQL Server database with integrated authentication',
-          foreignKeys: ['hive_existing_mssql_server_2_database', 'hive_existing_mssql_server_2_host'],
           hidden: false
         }
       ],
@@ -3266,12 +2698,10 @@ if (App.get('isHadoopWindowsStack')) {
       "options": [
         {
           displayName: 'Existing MSSQL Server database with SQL authentication',
-          foreignKeys: ['oozie_existing_mssql_server_database', 'oozie_existing_mssql_server_host'],
           hidden: false
         },
         {
           displayName: 'Existing MSSQL Server database with integrated authentication',
-          foreignKeys: ['oozie_existing_mssql_server_2_database', 'oozie_existing_mssql_server_2_host'],
           hidden: false
         }
       ],
@@ -3335,21 +2765,18 @@ var atsProperties = [
   },
   {
     "name": "yarn.timeline-service.webapp.address",
-    "displayType": "string",
     "category": "APP_TIMELINE_SERVER",
     "serviceName": "YARN",
     "filename": "yarn-site.xml"
   },
   {
     "name": "yarn.timeline-service.webapp.https.address",
-    "displayType": "string",
     "category": "APP_TIMELINE_SERVER",
     "serviceName": "YARN",
     "filename": "yarn-site.xml"
   },
   {
     "name": "yarn.timeline-service.address",
-    "displayType": "string",
     "category": "APP_TIMELINE_SERVER",
     "serviceName": "YARN",
     "filename": "yarn-site.xml"

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/data/host_component_mapping.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/host_component_mapping.js b/ambari-web/app/data/host_component_mapping.js
deleted file mode 100644
index be5f891..0000000
--- a/ambari-web/app/data/host_component_mapping.js
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-/**
- * Array of Objects
- * {
-   *  hostProperty - hostName property name for current component
-   *  componentName - master componentName
-   *  serviceName - serviceName of component
-   *  serviceUseThis - services that use hostname property of component(componentName)
-   *  m(multiple) - true if can be more than one components installed on cluster
-   * }
- */
-
-module.exports = [
-  {
-    hostProperty: 'snamenode_host',
-    componentName: 'SECONDARY_NAMENODE',
-    serviceName: 'HDFS',
-    serviceUseThis: []
-  },
-  {
-    hostProperty: 'jobtracker_host',
-    componentName: 'JOBTRACKER',
-    serviceName: 'MAPREDUCE2',
-    serviceUseThis: []
-  },
-  {
-    hostProperty: 'hs_host',
-    componentName: 'HISTORYSERVER',
-    serviceName: 'MAPREDUCE2',
-    serviceUseThis: ['YARN']
-  },
-  {
-    hostProperty: 'ats_host',
-    componentName: 'APP_TIMELINE_SERVER',
-    serviceName: 'YARN',
-    serviceUseThis: []
-  },
-  {
-    hostProperty: 'rm_host',
-    componentName: 'RESOURCEMANAGER',
-    serviceName: 'YARN',
-    serviceUseThis: []
-  },
-  {
-    hostProperty: 'hivemetastore_host',
-    componentName: 'HIVE_METASTORE',
-    serviceName: 'HIVE',
-    serviceUseThis: ['HIVE'],
-    m: true
-  },
-  {
-    hostProperty: 'hive_ambari_host',
-    componentName: 'HIVE_SERVER',
-    serviceName: 'HIVE',
-    serviceUseThis: []
-  },
-  {
-    hostProperty: 'oozieserver_host',
-    componentName: 'OOZIE_SERVER',
-    serviceName: 'OOZIE',
-    serviceUseThis: [],
-    m: true
-  },
-  {
-    hostProperty: 'oozie_ambari_host',
-    componentName: 'OOZIE_SERVER',
-    serviceName: 'OOZIE',
-    serviceUseThis: []
-  },
-  {
-    hostProperty: 'hbasemaster_host',
-    componentName: 'HBASE_MASTER',
-    serviceName: 'HBASE',
-    serviceUseThis: [],
-    m: true
-  },
-  {
-    hostProperty: 'webhcatserver_host',
-    componentName: 'WEBHCAT_SERVER',
-    serviceName: 'HIVE',
-    serviceUseThis: [],
-    m: true
-  },
-  {
-    hostProperty: 'zookeeperserver_hosts',
-    componentName: 'ZOOKEEPER_SERVER',
-    serviceName: 'ZOOKEEPER',
-    serviceUseThis: ['HBASE', 'HIVE'],
-    m: true
-  },
-  {
-    hostProperty: 'stormuiserver_host',
-    componentName: 'STORM_UI_SERVER',
-    serviceName: 'STORM',
-    serviceUseThis: []
-  },
-  {
-    hostProperty: 'drpcserver_host',
-    componentName: 'DRPC_SERVER',
-    serviceName: 'STORM',
-    serviceUseThis: []
-  },
-  {
-    hostProperty: 'storm_rest_api_host',
-    componentName: 'STORM_REST_API',
-    serviceName: 'STORM',
-    serviceUseThis: []
-  },
-  {
-    hostProperty: 'supervisor_hosts',
-    componentName: 'SUPERVISOR',
-    serviceName: 'STORM',
-    serviceUseThis: [],
-    m: true
-  },
-  {
-    hostProperty: 'rangerserver_host',
-    componentName: 'RANGER_ADMIN',
-    serviceName: 'RANGER',
-    serviceUseThis: [],
-    m: true
-  }
-];

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/mixins/common/configs/configs_saver.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/common/configs/configs_saver.js b/ambari-web/app/mixins/common/configs/configs_saver.js
index 0322e44..b0d5c35 100644
--- a/ambari-web/app/mixins/common/configs/configs_saver.js
+++ b/ambari-web/app/mixins/common/configs/configs_saver.js
@@ -855,123 +855,6 @@ App.ConfigsSaverMixin = Em.Mixin.create({
   },
 
   /**
-   * TODO the methods below are not used as the logic was changed
-   * check and delete if this methods is not required
-   */
-
-  /**
-   * filter out unchanged configurationsisPropertiesChanged
-   * @param {Array} configsToSave
-   * @private
-   * @method filterChangedConfiguration
-   */
-  filterChangedConfiguration: function (configsToSave) {
-    var changedConfigs = [];
-
-    configsToSave.forEach(function (configSite) {
-      var oldConfig = App.router.get('configurationController').getConfigsByTags([
-        {siteName: configSite.type, tagName: this.loadedClusterSiteToTagMap[configSite.type]}
-      ]);
-      oldConfig = oldConfig[0] || {};
-      var oldProperties = oldConfig.properties || {};
-      var oldAttributes = oldConfig["properties_attributes"] || {};
-      var newProperties = configSite.properties || {};
-      var newAttributes = configSite["properties_attributes"] || {};
-      if (this.isAttributesChanged(oldAttributes, newAttributes) || this.isConfigChanged(oldProperties, newProperties) || this.get('modifiedFileNames').contains(App.config.getOriginalFileName(configSite.type))) {
-        changedConfigs.push(configSite);
-      }
-    }, this);
-    return changedConfigs;
-  },
-
-  /**
-   * Compares the loaded config values with the saving config values.
-   * @param {Object} loadedConfig -
-   * loadedConfig: {
-   *      configName1: "configValue1",
-   *      configName2: "configValue2"
-   *   }
-   * @param {Object} savingConfig
-   * savingConfig: {
-   *      configName1: "configValue1",
-   *      configName2: "configValue2"
-   *   }
-   * @returns {boolean}
-   * @private
-   * @method isConfigChanged
-   */
-  isConfigChanged: function (loadedConfig, savingConfig) {
-    if (loadedConfig != null && savingConfig != null) {
-      var seenLoadKeys = [];
-      for (var loadKey in loadedConfig) {
-        if (!loadedConfig.hasOwnProperty(loadKey)) continue;
-        seenLoadKeys.push(loadKey);
-        var loadValue = loadedConfig[loadKey];
-        var saveValue = savingConfig[loadKey];
-        if ("boolean" == typeof(saveValue)) {
-          saveValue = saveValue.toString();
-        }
-        if (saveValue == null) {
-          saveValue = "null";
-        }
-        if (loadValue !== saveValue) {
-          return true;
-        }
-      }
-      for (var saveKey in savingConfig) {
-        if (seenLoadKeys.indexOf(saveKey) < 0) {
-          return true;
-        }
-      }
-    }
-    return false;
-  },
-
-  /**
-   * Compares the loaded config properties attributes with the saving config properties attributes.
-   * @param {Object} oldAttributes -
-   * oldAttributes: {
-   *   supports: {
-   *     final: {
-   *       "configValue1" : "true",
-   *       "configValue2" : "true"
-   *     }
-   *   }
-   * }
-   * @param {Object} newAttributes
-   * newAttributes: {
-   *   supports: {
-   *     final: {
-   *       "configValue1" : "true",
-   *       "configValue2" : "true"
-   *     }
-   *   }
-   * }
-   * @returns {boolean}
-   * @private
-   * @method isAttributesChanged
-   */
-  isAttributesChanged: function (oldAttributes, newAttributes) {
-    oldAttributes = oldAttributes.final || {};
-    newAttributes = newAttributes.final || {};
-
-    var key;
-    for (key in oldAttributes) {
-      if (oldAttributes.hasOwnProperty(key)
-        && (!newAttributes.hasOwnProperty(key) || newAttributes[key] !== oldAttributes[key])) {
-        return true;
-      }
-    }
-    for (key in newAttributes) {
-      if (newAttributes.hasOwnProperty(key)
-        && (!oldAttributes.hasOwnProperty(key) || newAttributes[key] !== oldAttributes[key])) {
-        return true;
-      }
-    }
-    return false;
-  },
-
-  /**
    * Save "final" attribute for properties
    * @param {Array} properties - array of properties
    * @returns {Object|null}

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/models/configs/objects/service_config_property.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/configs/objects/service_config_property.js b/ambari-web/app/models/configs/objects/service_config_property.js
index a963629..828383d 100644
--- a/ambari-web/app/models/configs/objects/service_config_property.js
+++ b/ambari-web/app/models/configs/objects/service_config_property.js
@@ -177,7 +177,7 @@ App.ServiceConfigProperty = Em.Object.extend({
     var editable = this.get('isEditable');
     var overrides = this.get('overrides');
     var dt = this.get('displayType');
-    return overrideable && (editable || !overrides || !overrides.length) && ("masterHost" != dt);
+    return overrideable && (editable || !overrides || !overrides.length) && ("componentHost" != dt);
   }.property('isEditable', 'displayType', 'isOverridable', 'overrides.length'),
 
   isOverridden: function() {
@@ -239,7 +239,7 @@ App.ServiceConfigProperty = Em.Object.extend({
    * Don't show "Undo" for hosts on Installer Step7
    */
   cantBeUndone: function() {
-    return ["masterHost", "slaveHosts", "masterHosts", "slaveHost", "radio button"].contains(this.get('displayType'));
+    return ["componentHost", "componentHosts", "radio button"].contains(this.get('displayType'));
   }.property('displayType'),
 
   /**
@@ -312,14 +312,12 @@ App.ServiceConfigProperty = Em.Object.extend({
         break;
       case 'custom':
         return App.ServiceConfigBigTextArea;
-      case 'masterHost':
+      case 'componentHost':
         return App.ServiceConfigMasterHostView;
       case 'label':
         return App.ServiceConfigLabelView;
-      case 'masterHosts':
-        return App.ServiceConfigMasterHostsView;
-      case 'slaveHosts':
-        return App.ServiceConfigSlaveHostsView;
+      case 'componentHosts':
+        return App.ServiceConfigComponentHostsView;
       case 'supportTextConnection':
         return App.checkConnectionView;
       default:
@@ -434,8 +432,7 @@ App.ServiceConfigProperty = Em.Object.extend({
         case 'supportTextConnection':
         case 'host':
           var connectionProperties = ['kdc_host'];
-          var hiveOozieHostNames = ['hive_hostname','hive_existing_mysql_host','hive_existing_oracle_host','hive_ambari_host',
-            'oozie_hostname','oozie_existing_mysql_host','oozie_existing_oracle_host','oozie_ambari_host'];
+          var hiveOozieHostNames = ['hive_hostname','oozie_hostname'];
           if(hiveOozieHostNames.contains(this.get('name'))) {
             if (validator.hasSpaces(value)) {
               this.set('errorMessage', Em.I18n.t('host.spacesValidation'));

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3117483/ambari-web/app/models/stack_service.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/stack_service.js b/ambari-web/app/models/stack_service.js
index 8fbceac..b783bd9 100644
--- a/ambari-web/app/models/stack_service.js
+++ b/ambari-web/app/models/stack_service.js
@@ -232,11 +232,11 @@ App.StackService.configCategories = function () {
   switch (this.get('serviceName')) {
     case 'HDFS':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'NAMENODE', displayName: 'NameNode'}),
-        App.ServiceConfigCategory.create({ name: 'SECONDARY_NAMENODE', displayName: 'Secondary NameNode'}),
-        App.ServiceConfigCategory.create({ name: 'DATANODE', displayName: 'DataNode'}),
+        App.ServiceConfigCategory.create({ name: 'NAMENODE', displayName: 'NameNode', showHost: true}),
+        App.ServiceConfigCategory.create({ name: 'SECONDARY_NAMENODE', displayName: 'Secondary NameNode', showHost: true}),
+        App.ServiceConfigCategory.create({ name: 'DATANODE', displayName: 'DataNode', showHost: true}),
         App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'}),
-        App.ServiceConfigCategory.create({ name: 'NFS_GATEWAY', displayName: 'NFS Gateway'})
+        App.ServiceConfigCategory.create({ name: 'NFS_GATEWAY', displayName: 'NFS Gateway', showHost: true})
       ]);
       break;
     case 'GLUSTERFS':
@@ -246,9 +246,9 @@ App.StackService.configCategories = function () {
       break;
     case 'YARN':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'RESOURCEMANAGER', displayName: 'Resource Manager'}),
-        App.ServiceConfigCategory.create({ name: 'NODEMANAGER', displayName: 'Node Manager'}),
-        App.ServiceConfigCategory.create({ name: 'APP_TIMELINE_SERVER', displayName: 'Application Timeline Server'}),
+        App.ServiceConfigCategory.create({ name: 'RESOURCEMANAGER', displayName: 'Resource Manager', showHost: true}),
+        App.ServiceConfigCategory.create({ name: 'NODEMANAGER', displayName: 'Node Manager', showHost: true}),
+        App.ServiceConfigCategory.create({ name: 'APP_TIMELINE_SERVER', displayName: 'Application Timeline Server', showHost: true}),
         App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'}),
         App.ServiceConfigCategory.create({ name: 'FaultTolerance', displayName: 'Fault Tolerance'}),
         App.ServiceConfigCategory.create({ name: 'Isolation', displayName: 'Isolation'}),
@@ -257,14 +257,14 @@ App.StackService.configCategories = function () {
       break;
     case 'MAPREDUCE2':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'HISTORYSERVER', displayName: 'History Server'}),
+        App.ServiceConfigCategory.create({ name: 'HISTORYSERVER', displayName: 'History Server', showHost: true}),
         App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'})
       ]);
       break;
     case 'HIVE':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'HIVE_METASTORE', displayName: 'Hive Metastore'}),
-        App.ServiceConfigCategory.create({ name: 'WEBHCAT_SERVER', displayName: 'WebHCat Server'}),
+        App.ServiceConfigCategory.create({ name: 'HIVE_METASTORE', displayName: 'Hive Metastore', showHost: true}),
+        App.ServiceConfigCategory.create({ name: 'WEBHCAT_SERVER', displayName: 'WebHCat Server', showHost: true}),
         App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'}),
         App.ServiceConfigCategory.create({ name: 'Performance', displayName: 'Performance'}),
         App.ServiceConfigCategory.create({ name: 'HIVE_SERVER2', displayName: 'Hive Server2'}),
@@ -273,25 +273,25 @@ App.StackService.configCategories = function () {
       break;
     case 'HBASE':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'HBASE_MASTER', displayName: 'HBase Master'}),
-        App.ServiceConfigCategory.create({ name: 'HBASE_REGIONSERVER', displayName: 'RegionServer'}),
+        App.ServiceConfigCategory.create({ name: 'HBASE_MASTER', displayName: 'HBase Master', showHost: true}),
+        App.ServiceConfigCategory.create({ name: 'HBASE_REGIONSERVER', displayName: 'RegionServer', showHost: true}),
         App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'})
       ]);
       break;
     case 'ZOOKEEPER':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'ZOOKEEPER_SERVER', displayName: 'ZooKeeper Server'})
+        App.ServiceConfigCategory.create({ name: 'ZOOKEEPER_SERVER', displayName: 'ZooKeeper Server', showHost: true})
       ]);
       break;
     case 'OOZIE':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'OOZIE_SERVER', displayName: 'Oozie Server'}),
+        App.ServiceConfigCategory.create({ name: 'OOZIE_SERVER', displayName: 'Oozie Server', showHost: true}),
         App.ServiceConfigCategory.create({ name: 'Falcon - Oozie integration', displayName: 'Falcon - Oozie integration'})
       ]);
       break;
     case 'FALCON':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'FALCON_SERVER', displayName: 'Falcon Server'}),
+        App.ServiceConfigCategory.create({ name: 'FALCON_SERVER', displayName: 'Falcon Server', showHost: true}),
         App.ServiceConfigCategory.create({ name: 'Falcon - Oozie integration', displayName: 'Falcon - Oozie integration'}),
         App.ServiceConfigCategory.create({ name: 'FalconStartupSite', displayName: 'Falcon startup.properties'}),
         App.ServiceConfigCategory.create({ name: 'FalconRuntimeSite', displayName: 'Falcon runtime.properties'}),
@@ -300,11 +300,11 @@ App.StackService.configCategories = function () {
       break;
     case 'STORM':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'NIMBUS', displayName: 'Nimbus'}),
-        App.ServiceConfigCategory.create({ name: 'SUPERVISOR', displayName: 'Supervisor'}),
-        App.ServiceConfigCategory.create({ name: 'STORM_UI_SERVER', displayName: 'Storm UI Server'}),
-        App.ServiceConfigCategory.create({ name: 'STORM_REST_API', displayName: 'Storm REST API Server'}),
-        App.ServiceConfigCategory.create({ name: 'DRPC_SERVER', displayName: 'DRPC Server'}),
+        App.ServiceConfigCategory.create({ name: 'NIMBUS', displayName: 'Nimbus', showHost: true}),
+        App.ServiceConfigCategory.create({ name: 'SUPERVISOR', displayName: 'Supervisor', showHost: true}),
+        App.ServiceConfigCategory.create({ name: 'STORM_UI_SERVER', displayName: 'Storm UI Server', showHost: true}),
+        App.ServiceConfigCategory.create({ name: 'STORM_REST_API', displayName: 'Storm REST API Server', showHost: true}),
+        App.ServiceConfigCategory.create({ name: 'DRPC_SERVER', displayName: 'DRPC Server', showHost: true}),
         App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'})
       ]);
       break;
@@ -320,17 +320,17 @@ App.StackService.configCategories = function () {
       break;
     case 'KNOX':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'KNOX_GATEWAY', displayName: 'Knox Gateway'})
+        App.ServiceConfigCategory.create({ name: 'KNOX_GATEWAY', displayName: 'Knox Gateway', showHost: true})
       ]);
       break;
     case 'KAFKA':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'KAFKA_BROKER', displayName: 'Kafka Broker'})
+        App.ServiceConfigCategory.create({ name: 'KAFKA_BROKER', displayName: 'Kafka Broker', showHost: true})
       ]);
       break;
     case 'KERBEROS':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'KDC', displayName: 'KDC'}),
+        App.ServiceConfigCategory.create({ name: 'KDC', displayName: 'KDC', showHost: true}),
         App.ServiceConfigCategory.create({ name: 'Kadmin', displayName: 'Kadmin'}),
         App.ServiceConfigCategory.create({ name: 'General', displayName: 'General'})
       ]);
@@ -343,7 +343,7 @@ App.StackService.configCategories = function () {
       break;
     case 'RANGER':
       serviceConfigCategories.pushObjects([
-        App.ServiceConfigCategory.create({ name: 'AdminSettings', displayName: 'Admin Settings'}),
+        App.ServiceConfigCategory.create({ name: 'RANGER_ADMIN', displayName: 'Admin Settings', showHost: true}),
         App.ServiceConfigCategory.create({ name: 'DBSettings', displayName: 'DB Settings'}),
         App.ServiceConfigCategory.create({ name: 'RangerSettings', displayName: 'Ranger Settings'}),
         App.ServiceConfigCategory.create({ name: 'UnixAuthenticationSettings', displayName: 'Unix Authentication Settings'}),