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/05/18 18:34:30 UTC

[1/6] ambari git commit: AMBARI-11216 Refactor service-config 'defaultValue' property into 'savedValue' and 'recommendedValue'. (ababiichuk)

Repository: ambari
Updated Branches:
  refs/heads/trunk 49ecd6b2e -> 07616603c


http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/test/views/common/configs/service_configs_by_category_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/configs/service_configs_by_category_view_test.js b/ambari-web/test/views/common/configs/service_configs_by_category_view_test.js
index 7c14dac..d743179 100644
--- a/ambari-web/test/views/common/configs/service_configs_by_category_view_test.js
+++ b/ambari-web/test/views/common/configs/service_configs_by_category_view_test.js
@@ -191,7 +191,7 @@ describe('App.ServiceConfigsByCategoryView', function () {
           filter: 'd',
           serviceConfigs: [
             Em.Object.create({
-              defaultValue: 'dv',
+              savedValue: 'dv',
               category: 'c',
               isVisible: true
             })
@@ -444,7 +444,7 @@ describe('App.ServiceConfigsByCategoryView', function () {
           category: 'c0',
           id: 'site property',
           serviceName: 's0',
-          defaultValue: null,
+          savedValue: null,
           supportsFinal: true,
           filename: 'f0',
           isUserProperty: true,
@@ -473,7 +473,7 @@ describe('App.ServiceConfigsByCategoryView', function () {
           category: 'c1',
           id: 'site property',
           serviceName: 's1',
-          defaultValue: null,
+          savedValue: null,
           supportsFinal: false,
           filename: '',
           isUserProperty: true,
@@ -513,7 +513,7 @@ describe('App.ServiceConfigsByCategoryView', function () {
         view.createProperty(item.propertyObj);
         expect(view.get('serviceConfigs').filterProperty('name', item.propertyObj.name)).to.have.length(1);
         expect(view.get('serviceConfigs').findProperty('name', item.propertyObj.name).getProperties([
-          'name', 'displayName', 'value', 'displayType', 'isSecureConfig', 'category', 'id', 'serviceName', 'defaultValue',
+          'name', 'displayName', 'value', 'displayType', 'isSecureConfig', 'category', 'id', 'serviceName', 'savedValue',
           'supportsFinal', 'filename', 'isUserProperty', 'isNotSaved', 'isRequired', 'group', 'isOverridable'
         ])).to.eql(item.result);
       });

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/test/views/common/configs/widgets/list_config_widget_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/configs/widgets/list_config_widget_view_test.js b/ambari-web/test/views/common/configs/widgets/list_config_widget_view_test.js
index 3e301d6..63e8f25 100644
--- a/ambari-web/test/views/common/configs/widgets/list_config_widget_view_test.js
+++ b/ambari-web/test/views/common/configs/widgets/list_config_widget_view_test.js
@@ -29,7 +29,7 @@ describe('App.ListConfigWidgetView', function () {
         _validateOverrides: App.ServiceConfigProperty.prototype._validateOverrides,
         validate: App.ServiceConfigProperty.prototype.validate,
         name: 'a.b.c',
-        defaultValue: '2,1',
+        savedValue: '2,1',
         value: '2,1',
         filename: 'f1',
         isFinal: false,
@@ -152,7 +152,7 @@ describe('App.ListConfigWidgetView', function () {
       view.restoreDependentConfigs.restore();
       view.get('controller.removeCurrentFromDependentList').restore();
     });
-    it('should restore default value', function () {
+    it('should restore saved value', function () {
       view.toggleOption({context: view.get('options')[0]});
       view.toggleOption({context: view.get('options')[1]});
       view.toggleOption({context: view.get('options')[2]});

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/test/views/common/configs/widgets/slider_config_widget_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/configs/widgets/slider_config_widget_view_test.js b/ambari-web/test/views/common/configs/widgets/slider_config_widget_view_test.js
index fba4493..ce42aba 100644
--- a/ambari-web/test/views/common/configs/widgets/slider_config_widget_view_test.js
+++ b/ambari-web/test/views/common/configs/widgets/slider_config_widget_view_test.js
@@ -35,7 +35,7 @@ describe('App.SliderConfigWidgetView', function () {
         name: 'a.b.c',
         description: 'A B C',
         value: '486',
-        defaultValue: '486',
+        savedValue: '486',
         stackConfigProperty: Em.Object.create({
           valueAttributes: Em.Object.create({
             type: 'int',
@@ -65,7 +65,7 @@ describe('App.SliderConfigWidgetView', function () {
         name: 'a.b.c2',
         description: 'A B C 2',
         value: '72.2',
-        defaultValue: '72.2',
+        savedValue: '72.2',
         stackConfigProperty: Em.Object.create({
           valueAttributes: Em.Object.create({
             type: 'float',
@@ -94,7 +94,7 @@ describe('App.SliderConfigWidgetView', function () {
         name: 'a.b.c3',
         description: 'A B C 3',
         value: '0.22',
-        defaultValue: '0.22',
+        savedValue: '0.22',
         stackConfigProperty: Em.Object.create({
           valueAttributes: Em.Object.create({
             type: 'float',

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/test/views/common/configs/widgets/toggle_config_widget_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/configs/widgets/toggle_config_widget_view_test.js b/ambari-web/test/views/common/configs/widgets/toggle_config_widget_view_test.js
index 76e0330..9204620 100644
--- a/ambari-web/test/views/common/configs/widgets/toggle_config_widget_view_test.js
+++ b/ambari-web/test/views/common/configs/widgets/toggle_config_widget_view_test.js
@@ -28,7 +28,7 @@ describe('App.ToggleConfigWidgetView', function () {
       config: Em.Object.create({
         name: 'a.b.c',
         value: 'active',
-        defaultValue: 'active',
+        savedValue: 'active',
         stackConfigProperty: Em.Object.create({
           valueAttributes: {
             "type": "value-list",

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 463edb9..f673871 100644
--- a/ambari-web/test/views/common/controls_view_test.js
+++ b/ambari-web/test/views/common/controls_view_test.js
@@ -613,14 +613,14 @@ describe('App.ServiceConfigRadioButtons', function () {
           databaseName: item.databaseName,
           hostName: item.hostName,
           databaseNameProperty: Em.Object.create({
-            defaultValue: item.databaseNameDefault
+            recommendedValue: item.databaseNameDefault
           }),
           hostNameProperty: Em.Object.create({
-            defaultValue: item.hostNameDefault
+            recommendedValue: item.hostNameDefault
           })
         });
         expect(view.get('connectionUrl.value')).to.equal(item.connectionUrlValue);
-        expect(view.get('connectionUrl.defaultValue')).to.equal(item.connectionUrlDefaultValue);
+        expect(view.get('connectionUrl.recommendedValue')).to.equal(item.connectionUrlDefaultValue);
         expect(view.get('dbClass.value')).to.equal(item.dbClassValue);
         serviceAuthPropsMap[item.serviceName].forEach(function (propName) {
           expect(view.get('categoryConfigsAll').findProperty('name', propName).get('isVisible')).to.equal(item.isAuthVisibleAndRequired);
@@ -789,7 +789,7 @@ describe('App.BaseUrlTextField', function () {
     it('should be recalculated after value is changed', function () {
       view.setProperties({
         value: 'val',
-        defaultValue: 'val'
+        recommendedValue: 'val'
       });
       expect(view.get('valueWasChanged')).to.be.false;
       view.set('value', 'newVal');
@@ -803,7 +803,7 @@ describe('App.BaseUrlTextField', function () {
     it('should unset value', function () {
       view.setProperties({
         value: 'valNew',
-        defaultValue: 'val'
+        savedValue: 'val'
       });
       view.restoreValue();
       expect(view.get('value')).to.equal('val');


[6/6] ambari git commit: AMBARI-11216 Refactor service-config 'defaultValue' property into 'savedValue' and 'recommendedValue'. (ababiichuk)

Posted by ab...@apache.org.
AMBARI-11216 Refactor service-config 'defaultValue' property into 'savedValue' and 'recommendedValue'. (ababiichuk)


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

Branch: refs/heads/trunk
Commit: 07616603c4388c0a9c1dc769659de92edb64b2cb
Parents: 49ecd6b
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Mon May 18 17:46:41 2015 +0300
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Mon May 18 19:10:40 2015 +0300

----------------------------------------------------------------------
 .../nameNode/step3_controller.js                |   2 +-
 .../resourceManager/step3_controller.js         |  14 +-
 .../app/controllers/main/admin/kerberos.js      |   2 +-
 .../main/admin/kerberos/step4_controller.js     |  10 +-
 .../controllers/main/service/info/configs.js    |  14 +-
 ambari-web/app/controllers/wizard.js            |  13 +-
 .../app/controllers/wizard/step7_controller.js  |  33 +-
 .../app/controllers/wizard/step8_controller.js  | 119 -------
 ambari-web/app/data/BIGTOP/site_properties.js   | 264 +++++++-------
 ambari-web/app/data/HDP2.2/site_properties.js   |  66 ++--
 ambari-web/app/data/HDP2.3/site_properties.js   |  60 ++--
 ambari-web/app/data/HDP2/custom_configs.js      | 127 -------
 ambari-web/app/data/HDP2/ha_properties.js       |  34 +-
 ambari-web/app/data/HDP2/rm_ha_properties.js    |  26 +-
 ambari-web/app/data/HDP2/secure_properties.js   | 176 +++++-----
 ambari-web/app/data/HDP2/site_properties.js     | 348 ++++++++++---------
 ambari-web/app/data/PHD/site_properties.js      | 250 ++++++-------
 .../mappers/configs/config_versions_mapper.js   |   4 +-
 .../configs/stack_config_properties_mapper.js   |   6 +-
 ambari-web/app/messages.js                      |   1 +
 .../app/mixins/common/configs/configs_saver.js  | 118 +------
 .../mixins/common/configs/enhanced_configs.js   |  82 ++++-
 .../app/models/configs/config_property.js       |  23 +-
 .../models/configs/objects/service_config.js    |   3 +-
 .../configs/objects/service_config_property.js  |  84 ++++-
 .../app/models/configs/stack_config_property.js |   8 +-
 .../modal_popups/dependent_configs_list.hbs     |   8 +-
 ambari-web/app/utils/config.js                  |  92 +++--
 .../app/utils/configs/config_property_helper.js |  66 ++--
 ambari-web/app/views.js                         |   1 -
 .../configs/service_configs_by_category_view.js |  19 +-
 .../widgets/checkbox_config_widget_view.js      |   7 -
 .../configs/widgets/combo_config_widget_view.js |   3 +-
 .../configs/widgets/config_widget_view.js       |  33 +-
 .../widgets/directory_config_widget_view.js     |   1 +
 .../configs/widgets/list_config_widget_view.js  |   2 +-
 .../configs/widgets/plain_config_text_field.js  |   2 +-
 .../widgets/slider_config_widget_view.js        |  24 +-
 .../widgets/time_interval_spinner_view.js       |  10 +-
 .../widgets/toggle_config_widget_view.js        |   1 +
 ambari-web/app/views/common/controls_view.js    |  16 +-
 .../views/common/modal_popups/prompt_popup.js   |  54 ---
 .../resourceManager/step3_controller_test.js    |  14 +-
 .../admin/kerberos/step4_controller_test.js     |   4 +-
 .../main/service/info/config_test.js            | 132 -------
 .../test/controllers/wizard/step7_test.js       |  64 ++--
 .../test/controllers/wizard/step8_test.js       | 134 +------
 ambari-web/test/controllers/wizard_test.js      |   2 +-
 .../test/data/HDP2/site_properties_test.js      |   6 +-
 .../configs/config_versions_mapper_test.js      |   4 +-
 .../stack_config_properties_mapper_test.js      |   4 +-
 .../test/mock_data_setup/configs_mock_data.js   |  16 +-
 .../test/models/configs/config_property_test.js |   2 +-
 .../objects/service_config_property_test.js     |   8 +-
 ambari-web/test/utils/config_test.js            |  40 +--
 .../configs/config_property_helper_test.js      |  46 +--
 .../service_configs_by_category_view_test.js    |   8 +-
 .../widgets/list_config_widget_view_test.js     |   4 +-
 .../widgets/slider_config_widget_view_test.js   |   6 +-
 .../widgets/toggle_config_widget_view_test.js   |   2 +-
 .../test/views/common/controls_view_test.js     |  10 +-
 61 files changed, 1079 insertions(+), 1653 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/controllers/main/admin/highAvailability/nameNode/step3_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/highAvailability/nameNode/step3_controller.js b/ambari-web/app/controllers/main/admin/highAvailability/nameNode/step3_controller.js
index 83b3ee7..193b89f 100644
--- a/ambari-web/app/controllers/main/admin/highAvailability/nameNode/step3_controller.js
+++ b/ambari-web/app/controllers/main/admin/highAvailability/nameNode/step3_controller.js
@@ -164,7 +164,7 @@ App.HighAvailabilityWizardStep3Controller = Em.Controller.extend({
 
   setConfigInitialValue: function(config,value) {
     config.value = value;
-    config.defaultValue = value;
+    config.recommendedValue = value;
   },
 
   renderServiceConfigs: function (_serviceConfig) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/controllers/main/admin/highAvailability/resourceManager/step3_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/highAvailability/resourceManager/step3_controller.js b/ambari-web/app/controllers/main/admin/highAvailability/resourceManager/step3_controller.js
index 7a2e250..6296f02 100644
--- a/ambari-web/app/controllers/main/admin/highAvailability/resourceManager/step3_controller.js
+++ b/ambari-web/app/controllers/main/admin/highAvailability/resourceManager/step3_controller.js
@@ -123,25 +123,25 @@ App.RMHighAvailabilityWizardStep3Controller = Em.Controller.extend({
         return item.get('hostName') + ':' + zkPort;
       }).join(',');
 
-    configProperties.findProperty('name', 'yarn.resourcemanager.hostname.rm1').set('value', currentRMHost).set('defaultValue', currentRMHost);
-    configProperties.findProperty('name', 'yarn.resourcemanager.hostname.rm2').set('value', additionalRMHost).set('defaultValue', additionalRMHost);
-    configProperties.findProperty('name', 'yarn.resourcemanager.zk-address').set('value', zooKeeperHostsWithPort).set('defaultValue', zooKeeperHostsWithPort);
+    configProperties.findProperty('name', 'yarn.resourcemanager.hostname.rm1').set('value', currentRMHost).set('recommendedValue', currentRMHost);
+    configProperties.findProperty('name', 'yarn.resourcemanager.hostname.rm2').set('value', additionalRMHost).set('recommendedValue', additionalRMHost);
+    configProperties.findProperty('name', 'yarn.resourcemanager.zk-address').set('value', zooKeeperHostsWithPort).set('recommendedValue', zooKeeperHostsWithPort);
 
     configProperties.findProperty('name', 'yarn.resourcemanager.webapp.address.rm1')
       .set('value', currentRMHost + webAddressPort)
-      .set('defaultValue', currentRMHost + webAddressPort);
+      .set('recommendedValue', currentRMHost + webAddressPort);
 
     configProperties.findProperty('name', 'yarn.resourcemanager.webapp.address.rm2')
       .set('value', additionalRMHost + webAddressPort)
-      .set('defaultValue', additionalRMHost + webAddressPort);
+      .set('recommendedValue', additionalRMHost + webAddressPort);
 
     configProperties.findProperty('name', 'yarn.resourcemanager.webapp.https.address.rm1')
       .set('value', currentRMHost + httpsWebAddressPort)
-      .set('defaultValue', currentRMHost + httpsWebAddressPort);
+      .set('recommendedValue', currentRMHost + httpsWebAddressPort);
 
     configProperties.findProperty('name', 'yarn.resourcemanager.webapp.https.address.rm2')
       .set('value', additionalRMHost + httpsWebAddressPort)
-      .set('defaultValue', additionalRMHost + httpsWebAddressPort);
+      .set('recommendedValue', additionalRMHost + httpsWebAddressPort);
   },
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/controllers/main/admin/kerberos.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/kerberos.js b/ambari-web/app/controllers/main/admin/kerberos.js
index 702d585..47ca736 100644
--- a/ambari-web/app/controllers/main/admin/kerberos.js
+++ b/ambari-web/app/controllers/main/admin/kerberos.js
@@ -326,7 +326,7 @@ App.MainAdminKerberosController = App.KerberosWizardStep4Controller.extend({
       if (property.get('observesValueFrom')) {
         var observedValue = allConfigs.findProperty('name', property.get('observesValueFrom')).get('value');
         property.set('value', observedValue);
-        property.set('defaultValue', observedValue);
+        property.set('recommendedValue', observedValue);
       }
       if (property.get('serviceName') == 'Cluster') {
         property.set('category', 'Global');

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/controllers/main/admin/kerberos/step4_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/kerberos/step4_controller.js b/ambari-web/app/controllers/main/admin/kerberos/step4_controller.js
index 47a4107..a48baaf 100644
--- a/ambari-web/app/controllers/main/admin/kerberos/step4_controller.js
+++ b/ambari-web/app/controllers/main/admin/kerberos/step4_controller.js
@@ -143,7 +143,7 @@ App.KerberosWizardStep4Controller = App.WizardStep7Controller.extend(App.AddSecu
       this.get('adminPropertyNames').forEach(function(item) {
         var property = storedServiceConfigs.filterProperty('filename', 'krb5-conf.xml').findProperty('name', item.name);
         if (!!property) {
-          var _prop = App.ServiceConfigProperty.create($.extend({}, property, { name: item.name, value: '', defaultValue: '', serviceName: 'Cluster', displayName: item.displayName}));
+          var _prop = App.ServiceConfigProperty.create($.extend({}, property, { name: item.name, value: '', recommendedValue: '', serviceName: 'Cluster', displayName: item.displayName}));
           _prop.validate();
           adminProps.push(_prop);
         }
@@ -156,7 +156,7 @@ App.KerberosWizardStep4Controller = App.WizardStep7Controller.extend(App.AddSecu
     if (this.get('wizardController.name') != 'addServiceController') {
       var realmValue = storedServiceConfigs.findProperty('name', 'realm').value;
       configProperties.findProperty('name', 'realm').set('value', realmValue);
-      configProperties.findProperty('name', 'realm').set('defaultValue', realmValue);
+      configProperties.findProperty('name', 'realm').set('recommendedValue', realmValue);
     }
 
     configProperties.setEach('isSecureConfig', false);
@@ -167,7 +167,7 @@ App.KerberosWizardStep4Controller = App.WizardStep7Controller.extend(App.AddSecu
       if (property.get('observesValueFrom')) {
         var observedValue = allConfigs.findProperty('name', property.get('observesValueFrom')).get('value');
         property.set('value', observedValue);
-        property.set('defaultValue', observedValue);
+        property.set('recommendedValue', observedValue);
       }
       if (property.get('serviceName') == 'Cluster') {
         property.set('category', 'Global');
@@ -211,7 +211,7 @@ App.KerberosWizardStep4Controller = App.WizardStep7Controller.extend(App.AddSecu
         }
         var configValue =  config.value.replace(/thrift.+[0-9]{2,},/i, hiveMSHostNames.join('\\,') + ",");
         config.set('value', configValue);
-        config.set('defaultValue', configValue);
+        config.set('recommendedValue', configValue);
       }
     }
   },
@@ -228,7 +228,7 @@ App.KerberosWizardStep4Controller = App.WizardStep7Controller.extend(App.AddSecu
       if (config.get('observesValueFrom') == configProperty.get('name')) {
         Em.run.once(self, function() {
           config.set('value', configProperty.get('value'));
-          config.set('defaultValue', configProperty.get('value'));
+          config.set('recommendedValue', configProperty.get('value'));
         });
       }
     });

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 abd7048..8ca6840 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -442,13 +442,13 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
           name: advanced.get('name'),
           displayName: advanced.get('displayName'),
           value: advanced.get('value'),
-          defaultValue: advanced.get('defaultValue'),
+          savedValue: null,
           filename: advanced.get('fileName'),
           isUserProperty: false,
           isNotSaved: true,
           recommendedValue: advanced.get('value'),
           isFinal: advanced.get('isFinal'),
-          defaultIsFinal: advanced.get('defaultIsFinal'),
+          recommendedIsFinal: advanced.get('recommendedIsFinal'),
           serviceName: advanced.get('serviceName'),
           supportsFinal: advanced.get('supportsFinal'),
           category: 'Advanced ' + App.config.getConfigTagFromFileName(advanced.get('fileName')),
@@ -1029,8 +1029,11 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
   createNewSCP: function (override, _serviceConfigProperty, serviceConfigProperty, defaultGroupSelected) {
     var newSCP = App.ServiceConfigProperty.create(_serviceConfigProperty, {
       value: Em.get(override, 'value'),
-      defaultValue: Em.get(override, 'value'),
+      savedValue: Em.get(override, 'value'),
+      recommendedValue: serviceConfigProperty.get('recommendedValue'),
       isFinal: Em.get(override, 'isFinal'),
+      savedIsFinal: Em.get(override, 'isFinal'),
+      recommendedIsFinal: serviceConfigProperty.get('recommendedIsFinal'),
       group: Em.get(override, 'group'),
       supportsFinal: serviceConfigProperty.get('supportsFinal'),
       isOriginalSCP: false,
@@ -1210,7 +1213,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
     var serviceConfigs = this.get('serviceConfigs').findProperty('serviceName', serviceName).get('configs');
     var hostConfig = serviceConfigs.findProperty('name', hostProperty);
     if (hostConfig) {
-      hostConfig.defaultValue = this.getMasterComponentHostValue(componentName, multiple);
+      hostConfig.recommendedValue = this.getMasterComponentHostValue(componentName, multiple);
       configs.push(hostConfig);
     }
   },
@@ -1347,7 +1350,8 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
       // create new override with new value
       var newSCP = App.ServiceConfigProperty.create(serviceConfigProperty, {
         value: value || '',
-        defaultValue: serviceConfigProperty.get('defaultValue'),
+        recommendedValue: serviceConfigProperty.get('recommendedValue'),
+        recommendedIsFinal: serviceConfigProperty.get('recommendedIsFinal'),
         isOriginalSCP: false,
         parentSCP: serviceConfigProperty,
         isEditable: true,

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/controllers/wizard.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard.js b/ambari-web/app/controllers/wizard.js
index 22d3bbc..8a3c15c 100644
--- a/ambari-web/app/controllers/wizard.js
+++ b/ambari-web/app/controllers/wizard.js
@@ -892,13 +892,14 @@ App.WizardController = Em.Controller.extend(App.LocalStorage, App.ThemesMappingM
           name: _configProperties.get('name'),
           displayName: _configProperties.get('displayName'),
           value: _configProperties.get('value'),
-          defaultValue: _configProperties.get('defaultValue'),
+          savedValue: _configProperties.get('savedValue'),
+          recommendedValue: _configProperties.get('recommendedValue'),
           description: _configProperties.get('description'),
           serviceName: _configProperties.get('serviceName'),
           domain: _configProperties.get('domain'),
           isVisible: _configProperties.get('isVisible'),
           isFinal: _configProperties.get('isFinal'),
-          defaultIsFinal: _configProperties.get('isFinal'),
+          recommendedIsFinal: _configProperties.get('isFinal'),
           supportsFinal: _configProperties.get('supportsFinal'),
           filename: _configProperties.get('filename'),
           displayType: _configProperties.get('displayType'),
@@ -915,7 +916,7 @@ App.WizardController = Em.Controller.extend(App.LocalStorage, App.ThemesMappingM
       if (stepController.get('installedServiceNames') && stepController.get('installedServiceNames').contains(_content.get('serviceName'))) {
         // get only modified configs
         var configs = _content.get('configs').filter(function (config) {
-          if (config.get('isNotDefaultValue') || (config.get('defaultValue') === null)) {
+          if (config.get('isNotDefaultValue') || (config.get('savedValue') === null)) {
             var notAllowed = ['masterHost', 'masterHosts', 'slaveHosts', 'slaveHost'];
             return !notAllowed.contains(config.get('displayType')) && !!config.filename;
           }
@@ -925,12 +926,6 @@ App.WizardController = Em.Controller.extend(App.LocalStorage, App.ThemesMappingM
         if (configs.length) {
           fileNamesToUpdate = fileNamesToUpdate.concat(configs.mapProperty('filename').uniq());
         }
-        // watch for properties that are not modified but have to be updated
-        if (_content.get('configs').someProperty('forceUpdate')) {
-          // check for already added modified properties
-          var forceUpdatedFileNames = _content.get('configs').filterProperty('forceUpdate', true).mapProperty('filename').uniq();
-          fileNamesToUpdate = fileNamesToUpdate.concat(forceUpdatedFileNames).uniq();
-        }
       }
     }, this);
     this.setDBProperty('serviceConfigProperties', serviceConfigProperties);

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 bc716b5..1325069 100644
--- a/ambari-web/app/controllers/wizard/step7_controller.js
+++ b/ambari-web/app/controllers/wizard/step7_controller.js
@@ -559,9 +559,8 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
         if (!Em.isNone(config.value)) {
           var replaceStr = config.value.match(/.jar=host[^,]+/)[0];
           var replaceWith = replaceStr.slice(0, replaceStr.lastIndexOf('=') - replaceStr.length + 1) + gangliaServerHost;
-          config.value = config.defaultValue = config.value.replace(replaceStr, replaceWith);
+          config.value = config.recommendedValue = config.value.replace(replaceStr, replaceWith);
         }
-        config.forceUpdate = true;
       }, this);
     }
   },
@@ -578,9 +577,8 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
     if (cfgToChange) {
       var res = this.get('allSelectedServiceNames').contains('SLIDER');
       if (Em.get(cfgToChange, 'value') !== res) {
-        Em.set(cfgToChange, 'defaultValue', res);
+        Em.set(cfgToChange, 'recommendedValue', res);
         Em.set(cfgToChange, 'value', res);
-        Em.set(cfgToChange, 'forceUpdate', true);
       }
     }
   },
@@ -625,7 +623,7 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
 
   applyServicesConfigs: function (configs, storedConfigs) {
     if (this.get('allSelectedServiceNames').contains('YARN')) {
-      configs = App.config.fileConfigsIntoTextarea(configs, 'capacity-scheduler.xml');
+      configs = App.config.fileConfigsIntoTextarea(configs, 'capacity-scheduler.xml', []);
     }
     var dependedServices = ["STORM", "YARN"];
     dependedServices.forEach(function (serviceName) {
@@ -635,14 +633,13 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
     }, this);
     //STEP 6: Distribute configs by service and wrap each one in App.ServiceConfigProperty (configs -> serviceConfigs)
     var self = this;
+    if (self.get('securityEnabled') && self.get('wizardController.name') == 'addServiceController') {
+      self.addKerberosDescriptorConfigs(configs, self.get('wizardController.kerberosDescriptorConfigs') || []);
+    }
+    self.setStepConfigs(configs, storedConfigs);
     this.loadServerSideConfigsRecommendations().always(function () {
       self.set('isRecommendedLoaded', true);
       // format descriptor configs
-      if (self.get('securityEnabled') && self.get('wizardController.name') == 'addServiceController') {
-        self.addKerberosDescriptorConfigs(configs, self.get('wizardController.kerberosDescriptorConfigs') || []);
-      }
-      self.setStepConfigs(configs, storedConfigs);
-
       var serviceConfigProperties = (self.get('content.serviceConfigProperties') || []).mapProperty('name');
       var recommendedToDelete = self.get('_dependentConfigValues').filterProperty('toDelete');
       recommendedToDelete.forEach(function (c) {
@@ -653,7 +650,6 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
       });
 
       self.updateDependentConfigs();
-      self.clearDependentConfigs();
       self.checkHostOverrideInstaller();
       self.activateSpecialConfigs();
       self.selectProperService();
@@ -740,7 +736,7 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
       masterComponentHosts: this.get('wizardController.content.masterComponentHosts'),
       slaveComponentHosts: this.get('wizardController.content.slaveComponentHosts')
     };
-    var serviceConfigs = App.config.renderConfigs(configs, storedConfigs, this.get('allSelectedServiceNames'), this.get('installedServiceNames'), localDB, this.get('recommendationsConfigs'));
+    var serviceConfigs = App.config.renderConfigs(configs, storedConfigs, this.get('allSelectedServiceNames'), this.get('installedServiceNames'), localDB);
     if (this.get('wizardController.name') === 'addServiceController') {
       serviceConfigs.setEach('showConfig', true);
       serviceConfigs.setEach('selected', false);
@@ -769,7 +765,7 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
 
           hRootDir.setProperties({
             'value':  valueToChange,
-            'defaultValue' : valueToChange
+            'recommendedValue' : valueToChange
           });
         }
       }
@@ -858,23 +854,22 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
    */
   setInstalledServiceConfigs: function (serviceConfigTags, configs, configsByTags, installedServiceNames) {
     var configsMap = {};
-    var configTypeMap = {};
     var configMixin = App.get('config');
+    var nonServiceTab = require('data/service_configs');
     var self = this;
 
     configsByTags.forEach(function (configSite) {
       configsMap[configSite.type] = configSite.properties || {};
     });
     configs.forEach(function (_config) {
-      var nonServiceTab = require('data/service_configs');
       var type = _config.filename ? App.config.getConfigTagFromFileName(_config.filename) : null;
       var mappedConfigValue = type && configsMap[type] ? configsMap[type][_config.name] : null;
       if (!Em.isNone(mappedConfigValue) && ((installedServiceNames && installedServiceNames.contains(_config.serviceName) || nonServiceTab.someProperty('serviceName', _config.serviceName)))) {
         // prevent overriding already edited properties
-        if (_config.defaultValue != mappedConfigValue) {
+        if (_config.savedValue != mappedConfigValue) {
           _config.value = mappedConfigValue;
         }
-        _config.defaultValue = mappedConfigValue;
+        _config.savedValue = mappedConfigValue;
         _config.hasInitialValue = true;
         App.config.handleSpecialProperties(_config);
         delete configsMap[type][_config.name];
@@ -890,7 +885,7 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
           name: propertyName,
           serviceName: configMixin.getServiceNameByConfigType(filename),
           value: configsMap[filename][propertyName],
-          defaultValue: configsMap[filename][propertyName],
+          savedValue: configsMap[filename][propertyName],
           filename: configMixin.get('filenameExceptions').contains(filename) ? filename : filename + '.xml',
           category: 'Advanced',
           hasInitialValue: true,
@@ -932,7 +927,7 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
       var propertyName = propertyPrefix + '_existing_' + dbPrefix + '_host';
       var existingDBConfig = configs.findProperty('name', propertyName);
       if (!existingDBConfig.value)
-        existingDBConfig.value = existingDBConfig.defaultValue = configs.findProperty('name', dbHostName).value;
+        existingDBConfig.value = existingDBConfig.savedValue = configs.findProperty('name', dbHostName).value;
     }, this);
   },
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/controllers/wizard/step8_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step8_controller.js b/ambari-web/app/controllers/wizard/step8_controller.js
index 2569723..d1989c2 100644
--- a/ambari-web/app/controllers/wizard/step8_controller.js
+++ b/ambari-web/app/controllers/wizard/step8_controller.js
@@ -380,18 +380,6 @@ App.WizardStep8Controller = Em.Controller.extend(App.AddSecurityConfigs, App.wiz
    */
   loadUiSideConfigs: function (configMapping) {
     var uiConfig = [];
-    var configs = configMapping.filterProperty('foreignKey', null);
-    this.addDynamicProperties(configs);
-    configs.forEach(function (_config) {
-      var valueWithOverrides = this.getGlobConfigValueWithOverrides(_config.templateName, _config.value, _config.name);
-      uiConfig.pushObject({
-        "id": "site property",
-        "name": _config.name,
-        "value": valueWithOverrides.value,
-        "filename": _config.filename,
-        "overrides": valueWithOverrides.overrides
-      });
-    }, this);
     var dependentConfig = $.extend(true, [], configMapping.filterProperty('foreignKey'));
     dependentConfig.forEach(function (_config) {
       App.config.setConfigValue(uiConfig, this.get('content.serviceConfigProperties'), _config);
@@ -407,24 +395,6 @@ App.WizardStep8Controller = Em.Controller.extend(App.AddSecurityConfigs, App.wiz
   },
 
   /**
-   * Add dynamic properties to configs
-   * @param {Array} configs
-   * @method addDynamicProperties
-   */
-  addDynamicProperties: function (configs) {
-    var templetonHiveProperty = this.get('content.serviceConfigProperties').someProperty('name', 'templeton.hive.properties');
-    if (!templetonHiveProperty) {
-      configs.pushObject({
-        "name": "templeton.hive.properties",
-        "templateName": ["hive.metastore.uris"],
-        "foreignKey": null,
-        "value": "hive.metastore.local=false,hive.metastore.uris=<templateName[0]>,hive.metastore.sasl.enabled=yes,hive.metastore.execute.setugi=true,hive.metastore.warehouse.dir=/apps/hive/warehouse",
-        "filename": "webhcat-site.xml"
-      });
-    }
-  },
-
-  /**
    * Format <code>content.hosts</code> from Object to Array
    * @returns {Array}
    * @method getRegisteredHosts
@@ -444,95 +414,6 @@ App.WizardStep8Controller = Em.Controller.extend(App.AddSecurityConfigs, App.wiz
   },
 
   /**
-   * Set all site property that are derived from other puppet-variable
-   * @param {String} templateName
-   * @param {String} expression
-   * @param {String} name
-   * @return {Object}
-   * example: <code>{
-   *   value: '...',
-   *   overrides: [
-   *    {
-   *      value: 'v1',
-   *      hosts: ['h1', 'h2']
-   *    },
-   *    {
-   *      value: 'v2',
-   *      hosts: ['h2', 'h3']
-   *    },
-   *    ....
-   *   ]
-   * }</code>
-   * @method getGlobConfigValueWithOverrides
-   */
-  getGlobConfigValueWithOverrides: function (templateName, expression, name) {
-    var express = expression.match(/<(.*?)>/g);
-    var value = expression;
-    if (express == null) {
-      return { value: expression, overrides: []};      // if site property do not map any global property then return the value
-    }
-    var overrideHostToValue = {};
-    express.forEach(function (_express) {
-      //console.log("The value of template is: " + _express);
-      var index = parseInt(_express.match(/\[([\d]*)(?=\])/)[1]);
-      if (this.get('configs').someProperty('name', templateName[index])) {
-        //console.log("The name of the variable is: " + this.get('content.serviceConfigProperties').findProperty('name', templateName[index]).name);
-        var globalObj = this.get('configs').findProperty('name', templateName[index]);
-        var globValue = globalObj.value;
-        // Hack for templeton.zookeeper.hosts
-        var preReplaceValue = null;
-        if (value !== null) {   // if the property depends on more than one template name like <templateName[0]>/<templateName[1]> then don't proceed to the next if the prior is null or not found in the global configs
-          preReplaceValue = value;
-          value = App.config.replaceConfigValues(name, _express, value, globValue);
-        }
-        if (globalObj.overrides != null) {
-          globalObj.overrides.forEach(function (override) {
-            var ov = override.value;
-            var hostsArray = override.hosts;
-            hostsArray.forEach(function (host) {
-              if (!(host in overrideHostToValue)) {
-                overrideHostToValue[host] = App.config.replaceConfigValues(name, _express, preReplaceValue, ov);
-              } else {
-                overrideHostToValue[host] = App.config.replaceConfigValues(name, _express, overrideHostToValue[host], ov);
-              }
-            }, this);
-          }, this);
-        }
-      } else {
-        /*
-         console.log("ERROR: The variable name is: " + templateName[index]);
-         console.log("ERROR: mapped config from configMapping file has no corresponding variable in " +
-         "content.serviceConfigProperties. Two possible reasons for the error could be: 1) The service is not selected. " +
-         "and/OR 2) The service_config metadata file has no corresponding global var for the site property variable");
-         */
-        value = null;
-      }
-    }, this);
-
-    var valueWithOverrides = {
-      value: value,
-      overrides: []
-    };
-    var overrideValueToHostMap = {};
-    if (!jQuery.isEmptyObject(overrideHostToValue)) {
-      for (var host in overrideHostToValue) {
-        var hostVal = overrideHostToValue[host];
-        if (!(hostVal in overrideValueToHostMap)) {
-          overrideValueToHostMap[hostVal] = [];
-        }
-        overrideValueToHostMap[hostVal].push(host);
-      }
-    }
-    for (var val in overrideValueToHostMap) {
-      valueWithOverrides.overrides.push({
-        value: val,
-        hosts: overrideValueToHostMap[val]
-      });
-    }
-    return valueWithOverrides;
-  },
-
-  /**
    * Load all info about cluster to <code>clusterInfo</code> variable
    * @method loadClusterInfo
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 a8109b5..831f576 100644
--- a/ambari-web/app/data/BIGTOP/site_properties.js
+++ b/ambari-web/app/data/BIGTOP/site_properties.js
@@ -84,7 +84,7 @@ module.exports =
       "name": "dfs.datanode.data.dir.mount.file",
       "displayName": "File that stores mount point for each data dir",
       "description": "File path that contains the last known mount point for each data dir. This file is used to avoid creating a DFS data dir on the root drive (and filling it up) if a path was previously mounted on a drive.",
-      "defaultValue": "/etc/hadoop/conf/dfs_data_dir_mount.hist",
+      "recommendedValue": "/etc/hadoop/conf/dfs_data_dir_mount.hist",
       "displayType": "directory",
       "isVisible": true,
       "category": "DATANODE",
@@ -570,7 +570,7 @@ module.exports =
       "name": "hive.server2.thrift.port",
       "displayName": "Hive Server Port",
       "description": "TCP port number to listen on, default 10000.",
-      "defaultValue": "10000",
+      "recommendedValue": "10000",
       "displayType": "int",
       "isReconfigurable": true,
       "isOverridable": false,
@@ -583,7 +583,7 @@ module.exports =
       "id": "site property",
       "name": "hive.server2.support.dynamic.service.discovery",
       "displayName": "hive.server2.support.dynamic.service.discovery",
-      "defaultValue": true,
+      "recommendedValue": true,
       "displayType": "checkbox",
       "category": "Advanced hive-site",
       "serviceName": "HIVE"
@@ -592,7 +592,7 @@ module.exports =
       "id": "site property",
       "name": "hive.zookeeper.quorum",
       "displayName": "hive.zookeeper.quorum",
-      "defaultValue": "localhost:2181",
+      "recommendedValue": "localhost:2181",
       "displayType": "multiLine",
       "isVisible": true,
       "serviceName": "HIVE",
@@ -1684,7 +1684,7 @@ module.exports =
       "name": "content",
       "displayName": "content",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "pig properties",
       "displayType": "content",
       "isRequired": false,
@@ -1710,7 +1710,7 @@ module.exports =
       "name": "flume_conf_dir",
       "displayName": "Flume Conf Dir",
       "description": "Location to save configuration files",
-      "defaultValue": "/etc/flume/conf",
+      "recommendedValue": "/etc/flume/conf",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -1725,7 +1725,7 @@ module.exports =
       "name": "flume_log_dir",
       "displayName": "Flume Log Dir",
       "description": "Location to save log files",
-      "defaultValue": "/var/log/flume",
+      "recommendedValue": "/var/log/flume",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -1741,7 +1741,7 @@ module.exports =
       "name": "namenode_host",
       "displayName": "NameNode hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that has been assigned to run NameNode",
       "displayType": "masterHosts",
       "isOverridable": false,
@@ -1757,7 +1757,7 @@ module.exports =
       "name": "namenode_heapsize",
       "displayName": "NameNode Java heap size",
       "description": "Initial and maximum Java heap size for NameNode (Java options -Xms and -Xmx).  This also applies to the Secondary NameNode.",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
@@ -1772,7 +1772,7 @@ module.exports =
       "name": "namenode_opt_newsize",
       "displayName": "NameNode new generation size",
       "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize).  This also applies to the Secondary NameNode.",
-      "defaultValue": "200",
+      "recommendedValue": "200",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
@@ -1787,7 +1787,7 @@ module.exports =
       "name": "namenode_opt_maxnewsize",
       "displayName": "NameNode maximum new generation size",
       "description": "Maximum size of Java new generation for NameNode (Java option -XX:MaxnewSize).",
-      "defaultValue": "200",
+      "recommendedValue": "200",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
@@ -1802,7 +1802,7 @@ module.exports =
       "name": "namenode_opt_permsize",
       "displayName": "NameNode permanent generation size",
       "description": "Default size of Java new generation for NameNode (Java option -XX:PermSize).  This also applies to the Secondary NameNode.",
-      "defaultValue": "128",
+      "recommendedValue": "128",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
@@ -1817,7 +1817,7 @@ module.exports =
       "name": "namenode_opt_maxpermsize",
       "displayName": "NameNode maximum permanent generation size",
       "description": "Maximum size of Java permanent generation for NameNode (Java option -XX:MaxPermSize).",
-      "defaultValue": "256",
+      "recommendedValue": "256",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
@@ -1832,7 +1832,7 @@ module.exports =
       "name": "snamenode_host",
       "displayName": "SNameNode host",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The host that has been assigned to run SecondaryNameNode",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -1848,7 +1848,7 @@ module.exports =
       "name": "datanode_hosts", //not in the schema. For UI purpose
       "displayName": "DataNode hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that have been assigned to run DataNode",
       "displayType": "slaveHosts",
       "isRequired": false,
@@ -1865,7 +1865,7 @@ module.exports =
       "name": "dtnode_heapsize",
       "displayName": "DataNode maximum Java heap size",
       "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "displayType": "int",
       "unit": "MB",
       "isVisible": true,
@@ -1879,7 +1879,7 @@ module.exports =
       "name": "hadoop_heapsize",
       "displayName": "Hadoop maximum Java heap size",
       "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "displayType": "int",
       "unit": "MB",
       "isVisible": true,
@@ -1893,7 +1893,7 @@ module.exports =
       "name": "hdfs_log_dir_prefix",
       "displayName": "Hadoop Log Dir Prefix",
       "description": "The parent directory for Hadoop log files.  The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.",
-      "defaultValue": "/var/log/hadoop",
+      "recommendedValue": "/var/log/hadoop",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -1907,7 +1907,7 @@ module.exports =
       "name": "hadoop_pid_dir_prefix",
       "displayName": "Hadoop PID Dir Prefix",
       "description": "The parent directory in which the PID files for Hadoop processes will be created.  The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.",
-      "defaultValue": "/var/run/hadoop",
+      "recommendedValue": "/var/run/hadoop",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -1921,7 +1921,7 @@ module.exports =
       "name": "hadoop_root_logger",
       "displayName": "Hadoop Root Logger",
       "description": "Hadoop logging options",
-      "defaultValue": "INFO,RFA",
+      "recommendedValue": "INFO,RFA",
       "displayType": "string",
       "isOverridable": false,
       "isVisible": true,
@@ -1936,7 +1936,7 @@ module.exports =
       "name": "hs_host",
       "displayName": "History Server",
       "description": "History Server",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "displayType": "masterHost",
       "isRequiredByAgent": false,
@@ -1951,7 +1951,7 @@ module.exports =
       "name": "jobhistory_heapsize",
       "displayName": "History Server heap size",
       "description": "History Server heap size",
-      "defaultValue": "900",
+      "recommendedValue": "900",
       "unit": "MB",
       "isOverridable": true,
       "displayType": "int",
@@ -1966,7 +1966,7 @@ module.exports =
       "name": "mapred_log_dir_prefix",
       "displayName": "Mapreduce Log Dir Prefix",
       "description": "",
-      "defaultValue": "/var/log/hadoop-mapreduce",
+      "recommendedValue": "/var/log/hadoop-mapreduce",
       "displayType": "directory",
       "isOverridable": false,
       "isVisible": true,
@@ -1980,7 +1980,7 @@ module.exports =
       "name": "mapred_pid_dir_prefix",
       "displayName": "Mapreduce PID Dir Prefix",
       "description": "",
-      "defaultValue": "/var/run/hadoop-mapreduce",
+      "recommendedValue": "/var/run/hadoop-mapreduce",
       "displayType": "directory",
       "isOverridable": false,
       "isVisible": true,
@@ -1995,7 +1995,7 @@ module.exports =
       "name": "yarn_heapsize",
       "displayName": "YARN Java heap size",
       "description": "Max heapsize for all YARN components",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "isOverridable": true,
       "displayType": "int",
       "unit": "MB",
@@ -2010,7 +2010,7 @@ module.exports =
       "name": "rm_host",
       "displayName": "ResourceManager",
       "description": "ResourceManager",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "displayType": "masterHost",
       "isRequiredByAgent": false,
@@ -2025,7 +2025,7 @@ module.exports =
       "name": "resourcemanager_heapsize",
       "displayName": "ResourceManager Java heap size",
       "description": "Max heapsize for ResourceManager",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "isOverridable": false,
       "displayType": "int",
       "unit": "MB",
@@ -2040,7 +2040,7 @@ module.exports =
       "name": "nm_hosts",
       "displayName": "NodeManager",
       "description": "List of NodeManager Hosts.",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "displayType": "slaveHosts",
       "isRequiredByAgent": false,
@@ -2055,7 +2055,7 @@ module.exports =
       "name": "nodemanager_heapsize",
       "displayName": "NodeManager Java heap size",
       "description": "Max heapsize for NodeManager",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "isOverridable": true,
       "displayType": "int",
       "unit": "MB",
@@ -2070,7 +2070,7 @@ module.exports =
       "name": "yarn_log_dir_prefix",
       "displayName": "YARN Log Dir Prefix",
       "description": "",
-      "defaultValue": "/var/log/hadoop-yarn",
+      "recommendedValue": "/var/log/hadoop-yarn",
       "displayType": "directory",
       "isOverridable": false,
       "isReconfigurable": false,
@@ -2084,7 +2084,7 @@ module.exports =
       "name": "yarn_pid_dir_prefix",
       "displayName": "YARN PID Dir Prefix",
       "description": "",
-      "defaultValue": "/var/run/hadoop-yarn",
+      "recommendedValue": "/var/run/hadoop-yarn",
       "displayType": "directory",
       "isOverridable": false,
       "isVisible": true,
@@ -2109,7 +2109,7 @@ module.exports =
       "name": "ats_host",
       "displayName": "App Timeline Server",
       "description": "Application Timeline Server Host",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "displayType": "masterHost",
       "isRequiredByAgent": false,
@@ -2124,7 +2124,7 @@ module.exports =
       "name": "apptimelineserver_heapsize",
       "displayName": "AppTimelineServer Java heap size",
       "description": "AppTimelineServer Java heap size",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "isOverridable": false,
       "displayType": "int",
       "unit": "MB",
@@ -2140,7 +2140,7 @@ module.exports =
       "name": "hbasemaster_host",
       "displayName": "HBase Master hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The host that has been assigned to run HBase Master",
       "displayType": "masterHosts",
       "isOverridable": false,
@@ -2156,7 +2156,7 @@ module.exports =
       "name": "hbase_master_heapsize",
       "displayName": "HBase Master Maximum Java heap size",
       "description": "Maximum Java heap size for HBase master (Java option -Xmx)",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": true,
@@ -2171,7 +2171,7 @@ module.exports =
       "name": "regionserver_hosts",
       "displayName": "RegionServer hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that have been assigned to run RegionServer",
       "displayType": "slaveHosts",
       "isOverridable": false,
@@ -2188,7 +2188,7 @@ module.exports =
       "name": "hbase_regionserver_heapsize",
       "displayName": "RegionServers maximum Java heap size",
       "description": "Maximum Java heap size for RegionServers (Java option -Xmx)",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "displayType": "int",
       "unit": "MB",
       "isVisible": true,
@@ -2225,7 +2225,7 @@ module.exports =
       "name": "hbase_log_dir",
       "displayName": "HBase Log Dir",
       "description": "Directory for HBase logs",
-      "defaultValue": "/var/log/hbase",
+      "recommendedValue": "/var/log/hbase",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2239,7 +2239,7 @@ module.exports =
       "name": "hbase_pid_dir",
       "displayName": "HBase PID Dir",
       "description": "Directory in which the pid files for HBase processes will be created",
-      "defaultValue": "/var/run/hbase",
+      "recommendedValue": "/var/run/hbase",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2273,7 +2273,7 @@ module.exports =
       "name": "fs_glusterfs_default_name",
       "displayName": "GlusterFS default fs name 1.x Hadoop",
       "description": "GlusterFS default filesystem name (glusterfs://{MasterFQDN}:9000)",
-      "defaultValue": "glusterfs:///localhost:8020",
+      "recommendedValue": "glusterfs:///localhost:8020",
       "displayType": "string",
       "isVisible": true,
       "serviceName": "GLUSTERFS",
@@ -2285,7 +2285,7 @@ module.exports =
       "name": "glusterfs_defaultFS_name",
       "displayName": "GlusterFS default fs name 2.x Hadoop",
       "description": "GlusterFS default filesystem name (glusterfs:///)",
-      "defaultValue": "glusterfs:///localhost:8020",
+      "recommendedValue": "glusterfs:///localhost:8020",
       "displayType": "string",
       "isVisible": true,
       "serviceName": "GLUSTERFS",
@@ -2297,7 +2297,7 @@ module.exports =
       "name": "hadoop_heapsize",
       "displayName": "Hadoop maximum Java heap size",
       "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "displayType": "int",
       "unit": "MB",
       "isVisible": true,
@@ -2311,7 +2311,7 @@ module.exports =
       "name": "hdfs_log_dir_prefix",
       "displayName": "Hadoop Log Dir Prefix",
       "description": "The parent directory for Hadoop log files.  The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.",
-      "defaultValue": "/var/log/hadoop",
+      "recommendedValue": "/var/log/hadoop",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2325,7 +2325,7 @@ module.exports =
       "name": "hadoop_pid_dir_prefix",
       "displayName": "Hadoop PID Dir Prefix",
       "description": "The parent directory in which the PID files for Hadoop processes will be created.  The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.",
-      "defaultValue": "/var/run/hadoop",
+      "recommendedValue": "/var/run/hadoop",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2339,7 +2339,7 @@ module.exports =
       "name": "namenode_heapsize",
       "displayName": "Name Node Heap Size",
       "description": "Name Node Heap Size, default jvm memory setting",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "isReconfigurable": false,
       "displayType": "int",
       "isOverridable": false,
@@ -2353,7 +2353,7 @@ module.exports =
       "name": "namenode_opt_newsize",
       "displayName": "NameNode new generation size",
       "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize).  This also applies to the Secondary NameNode.",
-      "defaultValue": "200",
+      "recommendedValue": "200",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
@@ -2367,7 +2367,7 @@ module.exports =
       "name": "namenode_opt_maxnewsize",
       "displayName": "NameNode maximum new generation size",
       "description": "Maximum size of Java new generation for NameNode (Java option -XX:MaxnewSize).",
-      "defaultValue": "200",
+      "recommendedValue": "200",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
@@ -2381,7 +2381,7 @@ module.exports =
       "name": "namenode_opt_permsize",
       "displayName": "NameNode permanent generation size",
       "description": "Default size of Java permanent generation for NameNode (Java option -XX:PermSize).  This also applies to the Secondary NameNode.",
-      "defaultValue": "128",
+      "recommendedValue": "128",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
@@ -2395,7 +2395,7 @@ module.exports =
       "name": "namenode_opt_maxpermsize",
       "displayName": "NameNode maximum permanent generation size",
       "description": "Maximum size of Java permanent generation for NameNode (Java option -XX:MaxPermSize).",
-      "defaultValue": "256",
+      "recommendedValue": "256",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
@@ -2409,7 +2409,7 @@ module.exports =
       "name": "dtnode_heapsize",
       "displayName": "DataNode maximum Java heap size",
       "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "displayType": "int",
       "unit": "MB",
       "isVisible": false,
@@ -2422,7 +2422,7 @@ module.exports =
       "name": "glusterfs_user",
       "displayName": "glusterfs user",
       "description": "glusterfs user",
-      "defaultValue": "root",
+      "recommendedValue": "root",
       "displayType": "string",
       "isVisible": false,
       "serviceName": "GLUSTERFS",
@@ -2434,7 +2434,7 @@ module.exports =
       "name": "namenode_host",
       "displayName": "NameNode Host",
       "description": "NameNode Host.",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "string",
       "isVisible": false,
       "serviceName": "GLUSTERFS",
@@ -2446,7 +2446,7 @@ module.exports =
       "name": "snamenode_host",
       "displayName": "Secondary NameNode Host",
       "description": "Secondary NameNode Host.",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "string",
       "isVisible": false,
       "serviceName": "GLUSTERFS",
@@ -2459,7 +2459,7 @@ module.exports =
       "name": "hivemetastore_host",
       "displayName": "Hive Metastore hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that have been assigned to run Hive Metastore",
       "displayType": "masterHosts",
       "isOverridable": false,
@@ -2473,7 +2473,7 @@ module.exports =
     {
       "name": "hive_master_hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "isRequiredByAgent": false,
       "isVisible": false,
@@ -2486,7 +2486,7 @@ module.exports =
       "name": "hive_existing_mysql_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "MySQL",
+      "recommendedValue": "MySQL",
       "description": "Using an existing MySQL database for Hive Metastore",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -2504,7 +2504,7 @@ module.exports =
       "name": "hive_existing_postgresql_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "PostgreSQL",
+      "recommendedValue": "PostgreSQL",
       "description": "Using an existing PostgreSQL database for Hive Metastore",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -2522,7 +2522,7 @@ module.exports =
       "name": "hive_existing_oracle_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "Oracle",
+      "recommendedValue": "Oracle",
       "description": "Using an existing Oracle database for Hive Metastore",
       "displayType": "masterHost",
       "isVisible": false,
@@ -2540,7 +2540,7 @@ module.exports =
       "name": "hive_ambari_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "PostgreSQL",
+      "recommendedValue": "PostgreSQL",
       "description": "PostgreSQL will be installed by Ambari",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -2556,7 +2556,7 @@ module.exports =
       "name": "hive_database",
       "displayName": "Hive Database",
       "value": "",
-      "defaultValue": "New PostgreSQL Database",
+      "recommendedValue": "New PostgreSQL Database",
       "options": [
         {
           displayName: 'New PostgreSQL Database',
@@ -2591,7 +2591,8 @@ module.exports =
       "name": "hive_hostname",
       "displayName": "Database Host",
       "description": "Specify the host on which the database is hosted",
-      "defaultValue": "",
+      "savedValue": "",
+      "recommendedValue": "",
       "isReconfigurable": true,
       "displayType": "host",
       "isOverridable": false,
@@ -2607,7 +2608,7 @@ module.exports =
       "name": "hive_existing_mysql_host",
       "displayName": "Database Host",
       "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "host",
       "isOverridable": false,
       "isVisible": false,
@@ -2622,7 +2623,7 @@ module.exports =
       "name": "hive_existing_postgresql_host",
       "displayName": "Database Host",
       "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "host",
       "isOverridable": false,
       "isVisible": false,
@@ -2637,7 +2638,7 @@ module.exports =
       "name": "hive_existing_oracle_host",
       "displayName": "Database Host",
       "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "host",
       "isOverridable": false,
       "isVisible": false,
@@ -2651,7 +2652,7 @@ module.exports =
       "id": "puppet var",
       "name": "hive_ambari_host",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayName": "Database Host",
       "description": "Host on which the database will be created by Ambari",
       "isReconfigurable": false,
@@ -2669,7 +2670,7 @@ module.exports =
       "name": "hive_metastore_port",
       "displayName": "Hive metastore port",
       "description": "",
-      "defaultValue": "9083",
+      "recommendedValue": "9083",
       "isReconfigurable": false,
       "displayType": "int",
       "isOverridable": false,
@@ -2683,7 +2684,7 @@ module.exports =
       "name": "hive_lib",
       "displayName": "Hive library",
       "description": "",
-      "defaultValue": "/usr/lib/hive/lib/",
+      "recommendedValue": "/usr/lib/hive/lib/",
       "isReconfigurable": false,
       "displayType": "directory",
       "isVisible": false,
@@ -2697,7 +2698,7 @@ module.exports =
       "name": "hive_dbroot",
       "displayName": "Hive db directory",
       "description": "",
-      "defaultValue": "/usr/lib/hive/lib",
+      "recommendedValue": "/usr/lib/hive/lib",
       "isReconfigurable": false,
       "displayType": "directory",
       "isVisible": false,
@@ -2711,7 +2712,7 @@ module.exports =
       "name": "hive_log_dir",
       "displayName": "Hive Log Dir",
       "description": "Directory for Hive log files",
-      "defaultValue": "/var/log/hive",
+      "recommendedValue": "/var/log/hive",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2725,7 +2726,7 @@ module.exports =
       "name": "hive_pid_dir",
       "displayName": "Hive PID Dir",
       "description": "Directory in which the PID files for Hive processes will be created",
-      "defaultValue": "/var/run/hive",
+      "recommendedValue": "/var/run/hive",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2740,7 +2741,7 @@ module.exports =
       "name": "webhcatserver_host",
       "displayName": "WebHCat Server host",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The host that has been assigned to run WebHCat Server",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -2755,7 +2756,7 @@ module.exports =
       "name": "hcat_log_dir",
       "displayName": "WebHCat Log Dir",
       "description": "Directory for WebHCat log files",
-      "defaultValue": "/var/log/webhcat",
+      "recommendedValue": "/var/log/webhcat",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2769,7 +2770,7 @@ module.exports =
       "name": "hcat_pid_dir",
       "displayName": "WebHCat PID Dir",
       "description": "Directory in which the PID files for WebHCat processes will be created",
-      "defaultValue": "/var/run/webhcat",
+      "recommendedValue": "/var/run/webhcat",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2784,7 +2785,7 @@ module.exports =
       "name": "oozieserver_host",
       "displayName": "Oozie Server host",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that have been assigned to run Oozie Server",
       "displayType": "masterHosts",
       "isOverridable": false,
@@ -2801,7 +2802,7 @@ module.exports =
       "name": "oozie_existing_oracle_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "Oracle",
+      "recommendedValue": "Oracle",
       "description": "Using an existing Oracle database for Oozie Metastore",
       "displayType": "masterHost",
       "isVisible": false,
@@ -2819,7 +2820,7 @@ module.exports =
       "name": "oozie_existing_postgresql_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "PostgreSQL",
+      "recommendedValue": "PostgreSQL",
       "description": "Using an existing PostgreSQL database for Oozie Metastore",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -2836,7 +2837,7 @@ module.exports =
       "name": "oozie_ambari_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "MySQL",
+      "recommendedValue": "MySQL",
       "description": "MySQL will be installed by Ambari",
       "displayType": "masterHost",
       "isVisible": false,
@@ -2852,7 +2853,7 @@ module.exports =
       "name": "oozie_derby_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "Derby",
+      "recommendedValue": "Derby",
       "description": "Using current Derby database for Oozie Metastore",
       "displayType": "masterHost",
       "isVisible": false,
@@ -2869,7 +2870,7 @@ module.exports =
       "name": "oozie_existing_mysql_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "MySQL",
+      "recommendedValue": "MySQL",
       "description": "Using an existing MySQL database for Oozie Metastore",
       "displayType": "masterHost",
       "isVisible": false,
@@ -2885,7 +2886,7 @@ module.exports =
       "name": "oozie_database",
       "displayName": "Oozie Database",
       "value": "",
-      "defaultValue": "New Derby Database",
+      "recommendedValue": "New Derby Database",
       "options": [
         {
           displayName: 'New Derby Database',
@@ -2920,7 +2921,7 @@ module.exports =
       "name": "oozie_data_dir",
       "displayName": "Oozie Data Dir",
       "description": "Data directory in which the Oozie DB exists",
-      "defaultValue": "",
+      "recommendedValue": "",
       "defaultDirectory": "/hadoop/oozie/data",
       "isReconfigurable": true,
       "displayType": "directory",
@@ -2935,7 +2936,8 @@ module.exports =
     {
       "id": "puppet var",
       "name": "oozie_hostname",
-      "defaultValue": "",
+      "savedValue": "",
+      "recommendedValue": "",
       "displayName": "Database Host",
       "description": "The host where the Oozie database is located",
       "isReconfigurable": true,
@@ -2952,7 +2954,7 @@ module.exports =
       "name": "oozie_existing_mysql_host",
       "displayName": "Database Host",
       "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "displayType": "host",
       "isVisible": false,
@@ -2967,7 +2969,7 @@ module.exports =
       "name": "oozie_existing_postgresql_host",
       "displayName": "Database Host",
       "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "displayType": "host",
       "isVisible": false,
@@ -2982,7 +2984,7 @@ module.exports =
       "name": "oozie_existing_oracle_host",
       "displayName": "Database Host",
       "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "displayType": "host",
       "isVisible": false,
@@ -2996,7 +2998,7 @@ module.exports =
       "id": "puppet var",
       "name": "oozie_ambari_host",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayName": "Database Host",
       "description": "Host on which the database will be created by Ambari",
       "isReconfigurable": false,
@@ -3013,7 +3015,7 @@ module.exports =
       "name": "oozie_log_dir",
       "displayName": "Oozie Log Dir",
       "description": "Directory for oozie logs",
-      "defaultValue": "/var/log/oozie",
+      "recommendedValue": "/var/log/oozie",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -3027,7 +3029,7 @@ module.exports =
       "name": "oozie_pid_dir",
       "displayName": "Oozie PID Dir",
       "description": "Directory in which the pid files for oozie processes will be created",
-      "defaultValue": "/var/run/oozie",
+      "recommendedValue": "/var/run/oozie",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -3054,7 +3056,7 @@ module.exports =
       "name": "zookeeperserver_hosts",
       "displayName": "ZooKeeper Server hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The host that has been assigned to run ZooKeeper Server",
       "displayType": "masterHosts",
       "isVisible": true,
@@ -3071,7 +3073,7 @@ module.exports =
       "name": "zk_data_dir",
       "displayName": "ZooKeeper directory",
       "description": "Data directory for ZooKeeper",
-      "defaultValue": "",
+      "recommendedValue": "",
       "defaultDirectory": "/hadoop/zookeeper",
       "isReconfigurable": true,
       "displayType": "directory",
@@ -3086,7 +3088,7 @@ module.exports =
       "name": "tickTime",
       "displayName": "Length of single Tick",
       "description": "The length of a single tick in milliseconds, which is the basic time unit used by ZooKeeper",
-      "defaultValue": "2000",
+      "recommendedValue": "2000",
       "displayType": "int",
       "unit": "ms",
       "isOverridable": false,
@@ -3101,7 +3103,7 @@ module.exports =
       "name": "initLimit",
       "displayName": "Ticks to allow for sync at Init",
       "description": "Amount of time, in ticks to allow followers to connect and sync to a leader",
-      "defaultValue": "10",
+      "recommendedValue": "10",
       "displayType": "int",
       "isOverridable": false,
       "isVisible": true,
@@ -3115,7 +3117,7 @@ module.exports =
       "name": "syncLimit",
       "displayName": "Ticks to allow for sync at Runtime",
       "description": "Amount of time, in ticks to allow followers to connect",
-      "defaultValue": "5",
+      "recommendedValue": "5",
       "displayType": "int",
       "isOverridable": false,
       "isVisible": true,
@@ -3129,7 +3131,7 @@ module.exports =
       "name": "clientPort",
       "displayName": "Port for running ZK Server",
       "description": "Port for running ZooKeeper server",
-      "defaultValue": "2181",
+      "recommendedValue": "2181",
       "displayType": "int",
       "isOverridable": false,
       "isVisible": true,
@@ -3143,7 +3145,7 @@ module.exports =
       "name": "zk_log_dir",
       "displayName": "ZooKeeper Log Dir",
       "description": "Directory for ZooKeeper log files",
-      "defaultValue": "/var/log/zookeeper",
+      "recommendedValue": "/var/log/zookeeper",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -3158,7 +3160,7 @@ module.exports =
       "name": "zk_pid_dir",
       "displayName": "ZooKeeper PID Dir",
       "description": "Directory in which the pid files for zookeeper processes will be created",
-      "defaultValue": "/var/run/zookeeper",
+      "recommendedValue": "/var/run/zookeeper",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -3174,7 +3176,7 @@ module.exports =
       "name": "ganglia_conf_dir",
       "displayName": "Ganglia conf directory",
       "description": "",
-      "defaultValue": "/etc/ganglia/hdp",
+      "recommendedValue": "/etc/ganglia/hdp",
       "isReconfigurable": false,
       "displayType": "directory",
       "isVisible": false,
@@ -3189,7 +3191,7 @@ module.exports =
       "name": "falconserver_host",
       "displayName": "Falcon Server",
       "description": "The host that has been assigned to run Falcon Server",
-      "defaultValue": "falcon",
+      "recommendedValue": "falcon",
       "displayType": "masterHost",
       "isVisible": true,
       "isRequiredByAgent": false,
@@ -3202,7 +3204,7 @@ module.exports =
       "name": "falcon_port",
       "displayName": "Falcon server port",
       "description": "Port the Falcon Server listens on",
-      "defaultValue": "15000",
+      "recommendedValue": "15000",
       "isReconfigurable": true,
       "displayType": "int",
       "isVisible": true,
@@ -3216,7 +3218,7 @@ module.exports =
       "name": "falcon_local_dir",
       "displayName": "Falcon data directory",
       "description": "Directory where Falcon data, such as activemq data, is stored",
-      "defaultValue": "/hadoop/falcon",
+      "recommendedValue": "/hadoop/falcon",
       "isReconfigurable": true,
       "displayType": "directory",
       "isVisible": true,
@@ -3230,7 +3232,7 @@ module.exports =
       "name": "falcon_store_uri",
       "displayName": "Falcon store URI",
       "description": "Directory where entity definitions are stored",
-      "defaultValue": "file:///hadoop/falcon/store",
+      "recommendedValue": "file:///hadoop/falcon/store",
       "isReconfigurable": true,
       "displayType": "string",
       "isVisible": true,
@@ -3244,7 +3246,7 @@ module.exports =
       "name": "falcon_log_dir",
       "displayName": "Falcon Log Dir",
       "description": "Directory for Falcon logs",
-      "defaultValue": "/var/log/falcon",
+      "recommendedValue": "/var/log/falcon",
       "displayType": "directory",
       "isOverridable": false,
       "isVisible": true,
@@ -3259,7 +3261,7 @@ module.exports =
       "name": "falcon_pid_dir",
       "displayName": "Falcon PID Dir",
       "description": "Directory in which the pid files for Falcon processes will be created",
-      "defaultValue": "/var/run/falcon",
+      "recommendedValue": "/var/run/falcon",
       "displayType": "directory",
       "isOverridable": false,
       "isVisible": true,
@@ -3274,7 +3276,7 @@ module.exports =
       "name": "falcon.embeddedmq",
       "displayName": "falcon.embeddedmq",
       "description": "Whether embeddedmq is enabled or not.",
-      "defaultValue": "true",
+      "recommendedValue": "true",
       "displayType": "string",
       "isOverridable": false,
       "isVisible": true,
@@ -3289,7 +3291,7 @@ module.exports =
       "name": "falcon.embeddedmq.data",
       "displayName": "falcon.embeddedmq.data",
       "description": "Directory in which embeddedmq data is stored.",
-      "defaultValue": "/hadoop/falcon/embeddedmq/data",
+      "recommendedValue": "/hadoop/falcon/embeddedmq/data",
       "displayType": "directory",
       "isOverridable": false,
       "isVisible": true,
@@ -3304,7 +3306,7 @@ module.exports =
       "name": "falcon.emeddedmq.port",
       "displayName": "falcon.emeddedmq.port",
       "description": "Port that embeddedmq will listen on.",
-      "defaultValue": "61616",
+      "recommendedValue": "61616",
       "displayType": "string",
       "isOverridable": false,
       "isVisible": true,
@@ -3320,7 +3322,7 @@ module.exports =
       "name": "storm_log_dir",
       "displayName": "storm_log_dir",
       "description": "Storm log directory",
-      "defaultValue": "/var/log/storm",
+      "recommendedValue": "/var/log/storm",
       "displayType": "directory",
       "isReconfigurable": true,
       "isVisible": true,
@@ -3334,7 +3336,7 @@ module.exports =
       "name": "storm_pid_dir",
       "displayName": "storm_pid_dir",
       "description": "Storm PID directory",
-      "defaultValue": "/var/run/storm",
+      "recommendedValue": "/var/run/storm",
       "displayType": "directory",
       "isReconfigurable": true,
       "isVisible": true,
@@ -3348,7 +3350,7 @@ module.exports =
       "name": "stormuiserver_host",
       "displayName": "Storm UI Server host",
       "description": "The host that has been assigned to run Storm UI Server",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "masterHost",
       "isReconfigurable": false,
       "isVisible": true,
@@ -3362,7 +3364,7 @@ module.exports =
       "name": "drpcserver_host",
       "displayName": "DRPC Server host",
       "description": "The host that has been assigned to run DRPC Server",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "masterHost",
       "isReconfigurable": false,
       "isVisible": true,
@@ -3376,7 +3378,7 @@ module.exports =
       "name": "supervisor_hosts",
       "displayName": "Supervisor hosts",
       "description": "The host that has been assigned to run Supervisor",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "slaveHosts",
       "isReconfigurable": false,
       "isVisible": true,
@@ -3391,7 +3393,7 @@ module.exports =
       "name": "storm_rest_api_host",
       "displayName": "Storm REST API host",
       "description": "The host that has been assigned to run Storm REST API Server",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "masterHost",
       "isReconfigurable": false,
       "isVisible": true,
@@ -3407,7 +3409,7 @@ module.exports =
       "name": "hbase_conf_dir",
       "displayName": "HBase conf dir",
       "description": "",
-      "defaultValue": "/etc/hbase",
+      "recommendedValue": "/etc/hbase",
       "isRequired": false,
       "displayType": "directory",
       "isVisible": false,
@@ -3422,7 +3424,7 @@ module.exports =
       "name": "proxyuser_group",
       "displayName": "Proxy group for Hive, WebHCat, Oozie and Falcon",
       "description": "",
-      "defaultValue": "users",
+      "recommendedValue": "users",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3438,7 +3440,7 @@ module.exports =
       "name": "ganglia_runtime_dir",
       "displayName": "Ganglia runtime directory",
       "description": "",
-      "defaultValue": "/var/run/ganglia/hdp",
+      "recommendedValue": "/var/run/ganglia/hdp",
       "isReconfigurable": false,
       "displayType": "directory",
       "isVisible": false,
@@ -3452,7 +3454,7 @@ module.exports =
       "name": "hdfs_user",
       "displayName": "HDFS User",
       "description": "User to run HDFS as",
-      "defaultValue": "hdfs",
+      "recommendedValue": "hdfs",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3468,7 +3470,7 @@ module.exports =
       "name": "mapred_user",
       "displayName": "MapReduce User",
       "description": "User to run MapReduce as",
-      "defaultValue": "mapred",
+      "recommendedValue": "mapred",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3484,7 +3486,7 @@ module.exports =
       "name": "yarn_user",
       "displayName": "YARN User",
       "description": "User to run YARN as",
-      "defaultValue": "yarn",
+      "recommendedValue": "yarn",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3500,7 +3502,7 @@ module.exports =
       "name": "hbase_user",
       "displayName": "HBase User",
       "description": "User to run HBase as",
-      "defaultValue": "hbase",
+      "recommendedValue": "hbase",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3516,7 +3518,7 @@ module.exports =
       "name": "hive_user",
       "displayName": "Hive User",
       "description": "User to run Hive as",
-      "defaultValue": "hive",
+      "recommendedValue": "hive",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3532,7 +3534,7 @@ module.exports =
       "name": "hcat_user",
       "displayName": "HCat User",
       "description": "User to run HCatalog as",
-      "defaultValue": "hcat",
+      "recommendedValue": "hcat",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3548,7 +3550,7 @@ module.exports =
       "name": "webhcat_user",
       "displayName": "WebHCat User",
       "description": "User to run WebHCat as",
-      "defaultValue": "hcat",
+      "recommendedValue": "hcat",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3564,7 +3566,7 @@ module.exports =
       "name": "oozie_user",
       "displayName": "Oozie User",
       "description": "User to run Oozie as",
-      "defaultValue": "oozie",
+      "recommendedValue": "oozie",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3580,7 +3582,7 @@ module.exports =
       "name": "falcon_user",
       "displayName": "Falcon User",
       "description": "User to run Falcon as",
-      "defaultValue": "falcon",
+      "recommendedValue": "falcon",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3596,7 +3598,7 @@ module.exports =
       "name": "storm_user",
       "displayName": "Storm User",
       "description": "User to run Storm as",
-      "defaultValue": "storm",
+      "recommendedValue": "storm",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3612,7 +3614,7 @@ module.exports =
       "name": "zk_user",
       "displayName": "ZooKeeper User",
       "description": "User to run ZooKeeper as",
-      "defaultValue": "zookeeper",
+      "recommendedValue": "zookeeper",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3628,7 +3630,7 @@ module.exports =
       "name": "flume_user",
       "displayName": "Flume User",
       "description": "User to run Flume as",
-      "defaultValue": "flume",
+      "recommendedValue": "flume",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3644,7 +3646,7 @@ module.exports =
       "name": "gmetad_user",
       "displayName": "Ganglia User",
       "description": "The user used to run Ganglia",
-      "defaultValue": "nobody",
+      "recommendedValue": "nobody",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3660,7 +3662,7 @@ module.exports =
       "name": "gmond_user",
       "displayName": "Gmond User",
       "description": "The user used to run gmond for Ganglia",
-      "defaultValue": "nobody",
+      "recommendedValue": "nobody",
       "isReconfigurable": false,
       "displayType": "advanced",
       "isOverridable": false,
@@ -3675,7 +3677,7 @@ module.exports =
       "name": "tez_user",
       "displayName": "Tez User",
       "description": "User to run Tez as",
-      "defaultValue": "tez",
+      "recommendedValue": "tez",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3705,7 +3707,7 @@ module.exports =
       "name": "rrdcached_base_dir",
       "displayName": "Ganglia rrdcached base directory",
       "description": "Default directory for saving the rrd files on ganglia server",
-      "defaultValue": "/var/lib/ganglia/rrds",
+      "recommendedValue": "/var/lib/ganglia/rrds",
       "displayType": "directory",
       "isReconfigurable": true,
       "isOverridable": false,


[5/6] ambari git commit: AMBARI-11216 Refactor service-config 'defaultValue' property into 'savedValue' and 'recommendedValue'. (ababiichuk)

Posted by ab...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 41861a7..537fa84 100644
--- a/ambari-web/app/data/HDP2.2/site_properties.js
+++ b/ambari-web/app/data/HDP2.2/site_properties.js
@@ -49,7 +49,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "hive.zookeeper.quorum",
     "displayName": "hive.zookeeper.quorum",
-    "defaultValue": "localhost:2181",
+    "recommendedValue": "localhost:2181",
     "displayType": "multiLine",
     "isRequired": false,
     "isVisible": true,
@@ -61,7 +61,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "hadoop.registry.rm.enabled",
     "displayName": "hadoop.registry.rm.enabled",
-    "defaultValue": "false",
+    "recommendedValue": "false",
     "displayType": "checkbox",
     "isVisible": true,
     "serviceName": "YARN",
@@ -72,7 +72,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "hadoop.registry.zk.quorum",
     "displayName": "hadoop.registry.zk.quorum",
-    "defaultValue": "localhost:2181",
+    "recommendedValue": "localhost:2181",
     "isVisible": true,
     "serviceName": "YARN",
     "filename": "yarn-site.xml",
@@ -158,7 +158,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "policy_user",
     "value": "ambari-qa",
-    "defaultValue": "ambari-qa",
+    "recommendedValue": "ambari-qa",
     "displayName": "policy User for HDFS",
     "filename": "ranger-hdfs-plugin-properties.xml",
     "category": "Advanced ranger-hdfs-plugin-properties",
@@ -207,7 +207,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "policy_user",
     "value": "ambari-qa",
-    "defaultValue": "ambari-qa",
+    "recommendedValue": "ambari-qa",
     "displayName": "policy User for HIVE",
     "filename": "ranger-hive-plugin-properties.xml",
     "category": "Advanced ranger-hive-plugin-properties",
@@ -224,7 +224,7 @@ hdp22properties.push(
   {
     "id": "site property",
     "name": "UPDATE_XAPOLICIES_ON_GRANT_REVOKE",
-    "defaultValue": true,
+    "recommendedValue": true,
     "displayType": "checkbox",
     "displayName": "Should Hive GRANT/REVOKE update XA policies?",
     "filename": "ranger-hive-plugin-properties.xml",
@@ -266,7 +266,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "policy_user",
     "value": "ambari-qa",
-    "defaultValue": "ambari-qa",
+    "recommendedValue": "ambari-qa",
     "displayName": "policy User for HBASE",
     "filename": "ranger-hbase-plugin-properties.xml",
     "category": "Advanced ranger-hbase-plugin-properties",
@@ -283,7 +283,7 @@ hdp22properties.push(
   {
     "id": "site property",
     "name": "UPDATE_XAPOLICIES_ON_GRANT_REVOKE",
-    "defaultValue": true,
+    "recommendedValue": true,
     "displayName": "Should HBase GRANT/REVOKE update XA policies?",
     "displayType": "checkbox",
     "filename": "ranger-hbase-plugin-properties.xml",
@@ -325,7 +325,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "policy_user",
     "value": "ambari-qa",
-    "defaultValue": "ambari-qa",
+    "recommendedValue": "ambari-qa",
     "displayName": "policy User for STORM",
     "filename": "ranger-storm-plugin-properties.xml",
     "category": "Advanced ranger-storm-plugin-properties",
@@ -374,7 +374,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "policy_user",
     "value": "ambari-qa",
-    "defaultValue": "ambari-qa",
+    "recommendedValue": "ambari-qa",
     "displayName": "policy User for KNOX",
     "filename": "ranger-knox-plugin-properties.xml",
     "category": "Advanced ranger-knox-plugin-properties",
@@ -393,7 +393,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "spark.driver.extraJavaOptions",
     "displayName": "spark.driver.extraJavaOptions",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isRequired": false,
     "category": "Advanced spark-defaults",
     "serviceName": "SPARK",
@@ -403,7 +403,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "spark.yarn.am.extraJavaOptions",
     "displayName": "spark.yarn.am.extraJavaOptions",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isRequired": false,
     "category": "Advanced spark-defaults",
     "serviceName": "SPARK",
@@ -414,7 +414,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "ranger_admin_password",
     "displayName": "Ranger Admin user's password for Ambari",
-    "defaultValue": "ambari",
+    "recommendedValue": "ambari",
     "isReconfigurable": true,
     "displayType": "password",
     "isOverridable": false,
@@ -427,7 +427,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "SQL_CONNECTOR_JAR",
     "displayName": "Location of Sql Connector Jar",
-    "defaultValue": "/usr/share/java/mysql-connector-java.jar",
+    "recommendedValue": "/usr/share/java/mysql-connector-java.jar",
     "isReconfigurable": true,
     "displayType": "",
     "isOverridable": false,
@@ -441,7 +441,7 @@ hdp22properties.push(
     "name": "DB_FLAVOR",
     "displayName": "DB FLAVOR",
     "value": "MYSQL",
-    "defaultValue": "MYSQL",
+    "recommendedValue": "MYSQL",
     "isReconfigurable": true,
     "options": [
       {
@@ -463,7 +463,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "SQL_COMMAND_INVOKER",
     "displayName": "SQL Command Invoker",
-    "defaultValue": "mysql",
+    "recommendedValue": "mysql",
     "isReconfigurable": true,
     "displayType": "",
     "isOverridable": false,
@@ -476,7 +476,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "db_host",
     "displayName": "Ranger DB host",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "displayType": "",
     "isOverridable": false,
@@ -489,7 +489,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "db_root_user",
     "displayName": "Ranger DB root user",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "displayType": "",
     "isOverridable": false,
@@ -502,7 +502,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "db_root_password",
     "displayName": "Ranger DB root password",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "displayType": "password",
     "isOverridable": false,
@@ -515,7 +515,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "db_name",
     "displayName": "Ranger DB name",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "displayType": "",
     "isOverridable": false,
@@ -529,7 +529,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "db_user",
     "displayName": "Ranger DB username",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "displayType": "",
     "isOverridable": false,
@@ -542,7 +542,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "db_password",
     "displayName": "Ranger DB password",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "displayType": "password",
     "isOverridable": false,
@@ -555,7 +555,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "audit_db_name",
     "displayName": "Ranger Audit DB name",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "displayType": "",
     "isOverridable": false,
@@ -568,7 +568,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "audit_db_user",
     "displayName": "Ranger Audit DB username",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "displayType": "",
     "isOverridable": false,
@@ -581,7 +581,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "audit_db_password",
     "displayName": "Ranger Audit DB password",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "displayType": "password",
     "isOverridable": false,
@@ -594,7 +594,7 @@ hdp22properties.push(
     "id": "puppet var",
     "name": "policymgr_external_url",
     "displayName": "External URL",
-    "defaultValue": "http://localhost:6080",
+    "recommendedValue": "http://localhost:6080",
     "isReconfigurable": true,
     "displayType": "",
     "isOverridable": false,
@@ -607,7 +607,7 @@ hdp22properties.push(
     "id": "puppet var",
     "name": "policymgr_http_enabled",
     "displayName": "HTTP enabled",
-    "defaultValue": true,
+    "recommendedValue": true,
     "isReconfigurable": true,
     "displayType": "checkbox",
     "isOverridable": false,
@@ -620,7 +620,7 @@ hdp22properties.push(
     "id": "puppet var",
     "name": "ranger_user",
     "displayName": "Used to create user and assign permission",
-    "defaultValue": "ranger",
+    "recommendedValue": "ranger",
     "isReconfigurable": true,
     "displayType": "",
     "isOverridable": false,
@@ -633,7 +633,7 @@ hdp22properties.push(
     "id": "puppet var",
     "name": "ranger_group",
     "displayName": "Used to create group and assign permission",
-    "defaultValue": "ranger",
+    "recommendedValue": "ranger",
     "isReconfigurable": true,
     "displayType": "",
     "isOverridable": false,
@@ -646,7 +646,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "authentication_method",
     "displayName": "Authentication method",
-    "defaultValue": "NONE",
+    "recommendedValue": "NONE",
     "options": [
       {
         displayName: 'LDAP',
@@ -677,7 +677,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "remoteLoginEnabled",
     "displayName": "Allow remote Login",
-    "defaultValue": true,
+    "recommendedValue": true,
     "isReconfigurable": true,
     "displayType": "checkbox",
     "isOverridable": false,
@@ -690,7 +690,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "authServiceHostName",
     "displayName": "authServiceHostName",
-    "defaultValue": 'localhost',
+    "recommendedValue": 'localhost',
     "isReconfigurable": true,
     "isOverridable": false,
     "isVisible": true,
@@ -702,7 +702,7 @@ hdp22properties.push(
     "id": "site property",
     "name": "authServicePort",
     "displayName": "authServicePort",
-    "defaultValue": '5151',
+    "recommendedValue": '5151',
     "isReconfigurable": true,
     "displayType": "int",
     "isOverridable": false,

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 e46d600..b41cd78 100644
--- a/ambari-web/app/data/HDP2.3/site_properties.js
+++ b/ambari-web/app/data/HDP2.3/site_properties.js
@@ -54,7 +54,7 @@ hdp23properties.push({
     "name": "DB_FLAVOR",
     "displayName": "DB FLAVOR",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "options": [
       {
@@ -89,7 +89,7 @@ hdp23properties.push({
     "id": "puppet var",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "MySQL",
+    "recommendedValue": "MySQL",
     "description": "Using a MySQL database for Ranger",
     "displayType": "masterHost",
     "isOverridable": false,
@@ -105,7 +105,7 @@ hdp23properties.push({
     "id": "puppet var",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "ORACLE",
+    "recommendedValue": "ORACLE",
     "description": "Using an Oracle database for Ranger",
     "displayType": "masterHost",
     "isOverridable": false,
@@ -121,7 +121,7 @@ hdp23properties.push({
     "id": "puppet var",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "Postgres",
+    "recommendedValue": "Postgres",
     "description": "Using a Postgres database for Ranger",
     "displayType": "masterHost",
     "isOverridable": false,
@@ -137,7 +137,7 @@ hdp23properties.push({
     "id": "puppet var",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "MSSQL",
+    "recommendedValue": "MSSQL",
     "description": "Using a MS SQL database for Ranger",
     "displayType": "masterHost",
     "isOverridable": false,
@@ -153,7 +153,7 @@ hdp23properties.push({
     "id": "puppet var",
     "displayName": "Ranger Server host",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "The host that has been assigned to run Ranger Server",
     "displayType": "masterHost",
     "isOverridable": false,
@@ -169,7 +169,7 @@ hdp23properties.push({
     "id": "site property",
     "name": "xasecure.audit.hdfs.config.encoding",
     "displayName": "xasecure.audit.hdfs.config.encoding",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isRequired": false,
     "filename": "ranger-hdfs-audit.xml",
     "category": "Advanced ranger-hdfs-audit",
@@ -206,7 +206,7 @@ hdp23properties.push({
     "id": "site property",
     "name": "xasecure.audit.hdfs.config.encoding",
     "displayName": "xasecure.audit.hdfs.config.encoding",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isRequired": false,
     "filename": "ranger-hive-audit.xml",
     "category": "Advanced ranger-hive-audit",
@@ -216,7 +216,7 @@ hdp23properties.push({
     "id": "site property",
     "name": "xasecure.audit.hdfs.config.encoding",
     "displayName": "xasecure.audit.hdfs.config.encoding",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isRequired": false,
     "filename": "ranger-knox-audit.xml",
     "category": "Advanced ranger-knox-audit",
@@ -226,7 +226,7 @@ hdp23properties.push({
     "id": "site property",
     "name": "xasecure.audit.hdfs.config.encoding",
     "displayName": "xasecure.audit.hdfs.config.encoding",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isRequired": false,
     "filename": "ranger-storm-audit.xml",
     "category": "Advanced ranger-storm-audit",
@@ -236,7 +236,7 @@ hdp23properties.push({
     "id": "site property",
     "name": "xasecure.audit.hdfs.config.encoding",
     "displayName": "xasecure.audit.hdfs.config.encoding",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isRequired": false,
     "filename": "ranger-yarn-audit.xml",
     "category": "Advanced ranger-yarn-audit",
@@ -284,7 +284,7 @@ hdp23properties.push({
     "id": "site property",
     "name": "xasecure.audit.hdfs.config.encoding",
     "displayName": "xasecure.audit.hdfs.config.encoding",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isRequired": false,
     "filename": "ranger-hbase-audit.xml",
     "category": "Advanced ranger-hbase-audit",
@@ -403,7 +403,7 @@ hdp23properties.push({
     "id": "puppet var",
     "displayName": "MYSQL database Host",
     "description": "Specify the host on which the existing database is hosted",
-    "defaultValue": "",
+    "recommendedValue": "",
     "value": "",
     "displayType": "host",
     "isOverridable": false,
@@ -419,7 +419,7 @@ hdp23properties.push({
     "id": "puppet var",
     "displayName": "Oracle database Host",
     "description": "Specify the host on which the existing database is hosted",
-    "defaultValue": "",
+    "recommendedValue": "",
     "value": "",
     "displayType": "host",
     "isOverridable": false,
@@ -435,7 +435,7 @@ hdp23properties.push({
     "id": "puppet var",
     "displayName": "Database Host",
     "description": "Specify the host on which the existing database is hosted",
-    "defaultValue": "",
+    "recommendedValue": "",
     "value": "",
     "displayType": "host",
     "isOverridable": false,
@@ -451,7 +451,7 @@ hdp23properties.push({
     "id": "puppet var",
     "displayName": "Database Host",
     "description": "Specify the host on which the existing database is hosted",
-    "defaultValue": "",
+    "recommendedValue": "",
     "value": "",
     "displayType": "host",
     "isOverridable": false,
@@ -466,7 +466,7 @@ hdp23properties.push({
     "name": "SQL_COMMAND_INVOKER",
     "id": "site property",
     "displayName": "SQL Command Invoker",
-    "defaultValue": "mysql",
+    "recommendedValue": "mysql",
     "isObserved": true,
     "isReconfigurable": true,
     "displayType": "",
@@ -481,7 +481,7 @@ hdp23properties.push({
     "name": "ranger_jdbc_connection_url",
     "id": "site property",
     "displayName": "JDBC connect string for a Ranger database",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "displayType": "",
     "isOverridable": false,
@@ -496,7 +496,7 @@ hdp23properties.push({
     "name": "ranger_jdbc_driver",
     "id": "site property",
     "displayName": "Driver class name for a JDBC Ranger database",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "isObserved": true,
     "displayType": "",
@@ -511,7 +511,7 @@ hdp23properties.push({
     "name": "db_root_user",
     "id": "site property",
     "displayName": "Ranger DB root user",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "isObserved": true,
     "displayType": "",
@@ -526,7 +526,7 @@ hdp23properties.push({
     "name": "db_root_password",
     "id": "site property",
     "displayName": "Ranger DB root password",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "isObserved": true,
     "displayType": "password",
@@ -541,7 +541,7 @@ hdp23properties.push({
     "name": "db_name",
     "id": "site property",
     "displayName": "Ranger DB name",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "isObserved": true,
     "displayType": "",
@@ -565,7 +565,7 @@ hdp23properties.push({
     "id": "puppet var",
     "name": "ranger.external.url",
     "displayName": "External URL",
-    "defaultValue": "http://localhost:6080",
+    "recommendedValue": "http://localhost:6080",
     "isReconfigurable": true,
     "displayType": "",
     "isOverridable": false,
@@ -578,7 +578,7 @@ hdp23properties.push({
     "id": "puppet var",
     "name": "ranger.service.http.enabled",
     "displayName": "HTTP enabled",
-    "defaultValue": true,
+    "recommendedValue": true,
     "isReconfigurable": true,
     "displayType": "checkbox",
     "isOverridable": false,
@@ -591,7 +591,7 @@ hdp23properties.push({
     "id": "site property",
     "name": "ranger.authentication.method",
     "displayName": "Authentication method",
-    "defaultValue": "NONE",
+    "recommendedValue": "NONE",
     "options": [
       {
         displayName: 'LDAP',
@@ -622,7 +622,7 @@ hdp23properties.push({
     "id": "site property",
     "name": "ranger.unixauth.remote.login.enabled",
     "displayName": "Allow remote Login",
-    "defaultValue": true,
+    "recommendedValue": true,
     "isReconfigurable": true,
     "displayType": "checkbox",
     "isOverridable": false,
@@ -635,7 +635,7 @@ hdp23properties.push({
     "id": "site property",
     "name": "ranger.unixauth.service.hostname",
     "displayName": "ranger.unixauth.service.hostname",
-    "defaultValue": 'localhost',
+    "recommendedValue": 'localhost',
     "isReconfigurable": true,
     "isOverridable": false,
     "isVisible": true,
@@ -647,7 +647,7 @@ hdp23properties.push({
     "id": "site property",
     "name": "ranger.unixauth.service.port",
     "displayName": "ranger.unixauth.service.port",
-    "defaultValue": '5151',
+    "recommendedValue": '5151',
     "isReconfigurable": true,
     "displayType": "int",
     "isOverridable": false,
@@ -716,7 +716,7 @@ hdp23properties.push({
   {
     "id": "site property",
     "name": "xasecure.hbase.update.xapolicies.on.grant.revoke",
-    "defaultValue": true,
+    "recommendedValue": true,
     "displayName": "Should HBase GRANT/REVOKE update XA policies?",
     "displayType": "checkbox",
     "filename": "ranger-hbase-security.xml",
@@ -727,7 +727,7 @@ hdp23properties.push({
   {
     "id": "site property",
     "name": "xasecure.hive.update.xapolicies.on.grant.revoke",
-    "defaultValue": true,
+    "recommendedValue": true,
     "displayName": "Should Hive GRANT/REVOKE update XA policies?",
     "displayType": "checkbox",
     "filename": "ranger-hive-security.xml",

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/data/HDP2/custom_configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/custom_configs.js b/ambari-web/app/data/HDP2/custom_configs.js
deleted file mode 100644
index ba1376b..0000000
--- a/ambari-web/app/data/HDP2/custom_configs.js
+++ /dev/null
@@ -1,127 +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.
- */
-
-
-module.exports =
-  [
-    {
-      "id": "site property",
-      "name": "yarn.scheduler.capacity.root.<queue-name>.capacity",
-      "displayName": "Capacity",
-      "value": '',
-      "defaultValue": '',
-      "description": "Percentage of the number of slots in the cluster that are made to be available for jobs in this queue. The sum of capacities for all queues should be less than or equal 100.",
-      "isVisible": true,
-      "isRequired": true,
-      "serviceName": "",
-      "category": "CapacityScheduler",
-      "unit": "%",
-      "isQueue": true,
-      "filename": 'capacity-scheduler.xml',
-      "inTable": true,
-      "index": 1
-    },
-    {
-      "id": "site property",
-      "name": "yarn.scheduler.capacity.root.<queue-name>.maximum-capacity",
-      "displayName": "Max Capacity",
-      "value": '',
-      "defaultValue": '100',
-      "displayType": "int",
-      "description": "Defines a limit beyond which a queue cannot use the capacity of the cluster." +
-        "This provides a means to limit how much excess capacity a queue can use. By default, there is no limit." +
-        "The Max Capacity of a queue can only be greater than or equal to its minimum capacity. " +
-        "This property could be to curtail certain jobs which are long running in nature from occupying more than a certain " +
-        "percentage of the cluster, which in the absence of pre-emption, could lead to capacity guarantees of other queues being affected. " +
-        "One important thing to note is that maximum-capacity is a percentage , so based on the cluster's capacity it would change. " +
-        "So if large no of nodes or racks get added to the cluster, Max Capacity in absolute terms would increase accordingly. ",
-      "isVisible": true,
-      "isRequired": true,
-      "serviceName": "YARN",
-      "category": "CapacityScheduler",
-      "unit": "%",
-      "valueRange": [0, 100],
-      "isQueue": true,
-      "filename": 'capacity-scheduler.xml',
-      "inTable": true,
-      "index": 2
-    },
-    {
-      "id": "site property",
-      "name": "yarn.scheduler.capacity.root.<queue-name>.user-limit-factor",
-      "displayName": "User Limit Factor",
-      "value": '',
-      "defaultValue": '1',
-      "displayType": "int",
-      "description": "The multiple of the queue capacity which can be configured to allow a single user to acquire more slots. " +
-        "By default this is set to 1 which ensure that a single user can never take more than the queue's configured capacity " +
-        "irrespective of how idle the cluster is.",
-      "isVisible": true,
-      "isRequired": true,
-      "serviceName": "YARN",
-      "category": "CapacityScheduler",
-      "isQueue": true,
-      "filename": 'capacity-scheduler.xml',
-      "inTable": true,
-      "index": 7
-    },
-    {
-      "id": "site property",
-      "name": "yarn.scheduler.capacity.root.<queue-name>.state",
-      "displayName": "State",
-      "value": '',
-      "defaultValue": 'RUNNING',
-      "description": "state",
-      "isVisible": true,
-      "isRequired": true,
-      "serviceName": "YARN",
-      "category": "CapacityScheduler",
-      "isQueue": true,
-      "filename": 'capacity-scheduler.xml',
-      "inTable": true,
-      "index": 8
-    },
-    {
-      "id": "site property",
-      "name": "yarn.scheduler.capacity.root.<queue-name>.acl_submit_jobs",
-      "displayName": "",
-      "value": '',
-      "defaultValue": '*',
-      "description": "",
-      "isVisible": false,
-      "isRequired": true,
-      "serviceName": "YARN",
-      "category": "CapacityScheduler",
-      "isQueue": true,
-      "filename": 'capacity-scheduler.xml'
-    },
-    {
-      "id": "site property",
-      "name": "yarn.scheduler.capacity.root.<queue-name>.acl_administer_jobs",
-      "displayName": "",
-      "value": '',
-      "defaultValue": '*',
-      "description": "",
-      "isVisible": false,
-      "isRequired": true,
-      "serviceName": "YARN",
-      "category": "CapacityScheduler",
-      "isQueue": true,
-      "filename": 'capacity-scheduler.xml'
-    }
-  ];

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/data/HDP2/ha_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/ha_properties.js b/ambari-web/app/data/HDP2/ha_properties.js
index 6599f77..63daf49 100644
--- a/ambari-web/app/data/HDP2/ha_properties.js
+++ b/ambari-web/app/data/HDP2/ha_properties.js
@@ -34,7 +34,7 @@ module.exports =
         "displayName": "dfs.journalnode.edits.dir",
         "description": "The Directory where the JournalNode will store its local state.",
         "isReconfigurable": true,
-        "defaultValue": "/hadoop/hdfs/journal",
+        "recommendedValue": "/hadoop/hdfs/journal",
         "value": "/hadoop/hdfs/journal",
         "defaultDirectory": "/hadoop/hdfs/journal",
         "displayType": "directory",
@@ -47,7 +47,7 @@ module.exports =
         "name": "fs.defaultFS",
         "displayName": "fs.defaultFS",
         "description": "The default path prefix used by the Hadoop FS client when none is given.",
-        "defaultValue": "hdfs://haCluster",
+        "recommendedValue": "hdfs://haCluster",
         "isReconfigurable": false,
         "value": "hdfs://haCluster",
         "category": "HDFS",
@@ -60,7 +60,7 @@ module.exports =
         "displayName": "ha.zookeeper.quorum",
         "isReconfigurable": false,
         "description": "This lists the host-port pairs running the ZooKeeper service.",
-        "defaultValue": "zk1.example.com:2181,zk2.example.com:2181,zk3.example.com:2181",
+        "recommendedValue": "zk1.example.com:2181,zk2.example.com:2181,zk3.example.com:2181",
         "value": "zk1.example.com:2181,zk2.example.com:2181,zk3.example.com:2181",
         "category": "HDFS",
         "filename": "core-site",
@@ -72,7 +72,7 @@ module.exports =
         "displayName": "dfs.nameservices",
         "description": "Comma-separated list of nameservices.",
         "isReconfigurable": false,
-        "defaultValue": "haCluster",
+        "recommendedValue": "haCluster",
         "value": "haCluster",
         "category": "HDFS",
         "filename": "hdfs-site",
@@ -84,7 +84,7 @@ module.exports =
         "displayName": "dfs.ha.namenodes.${dfs.nameservices}",
         "description": "The prefix for a given nameservice, contains a comma-separated list of namenodes for a given nameservice.",
         "isReconfigurable": false,
-        "defaultValue": "nn1,nn2",
+        "recommendedValue": "nn1,nn2",
         "value": "nn1,nn2",
         "category": "HDFS",
         "filename": "hdfs-site",
@@ -96,7 +96,7 @@ module.exports =
         "displayName": "dfs.namenode.rpc-address.${dfs.nameservices}.nn1",
         "description": "RPC address that handles all clients requests for nn1.",
         "isReconfigurable": false,
-        "defaultValue": "0.0.0.0:8020",
+        "recommendedValue": "0.0.0.0:8020",
         "value": "0.0.0.0:8020",
         "category": "HDFS",
         "filename": "hdfs-site",
@@ -108,7 +108,7 @@ module.exports =
         "displayName": "dfs.namenode.rpc-address.${dfs.nameservices}.nn2",
         "description": "RPC address that handles all clients requests for nn2.",
         "isReconfigurable": false,
-        "defaultValue": "0.0.0.0:8020",
+        "recommendedValue": "0.0.0.0:8020",
         "value": "0.0.0.0:8020",
         "category": "HDFS",
         "filename": "hdfs-site",
@@ -120,7 +120,7 @@ module.exports =
         "displayName": "dfs.namenode.http-address.${dfs.nameservices}.nn1",
         "description": "The fully-qualified HTTP address for nn1 NameNode.",
         "isReconfigurable": false,
-        "defaultValue": "0.0.0.0:50070",
+        "recommendedValue": "0.0.0.0:50070",
         "value": "0.0.0.0:50070",
         "category": "HDFS",
         "filename": "hdfs-site",
@@ -132,7 +132,7 @@ module.exports =
         "displayName": "dfs.namenode.http-address.${dfs.nameservices}.nn2",
         "description": "The fully-qualified HTTP address for nn2 NameNode.",
         "isReconfigurable": false,
-        "defaultValue": "0.0.0.0:50070",
+        "recommendedValue": "0.0.0.0:50070",
         "value": "0.0.0.0:50070",
         "category": "HDFS",
         "filename": "hdfs-site",
@@ -144,7 +144,7 @@ module.exports =
         "displayName": "dfs.namenode.https-address.${dfs.nameservices}.nn1",
         "description": "The fully-qualified HTTP address for nn1 NameNode.",
         "isReconfigurable": false,
-        "defaultValue": "0.0.0.0:50470",
+        "recommendedValue": "0.0.0.0:50470",
         "value": "0.0.0.0:50470",
         "category": "HDFS",
         "filename": "hdfs-site",
@@ -156,7 +156,7 @@ module.exports =
         "displayName": "dfs.namenode.https-address.${dfs.nameservices}.nn2",
         "description": "The fully-qualified HTTP address for nn2 NameNode.",
         "isReconfigurable": false,
-        "defaultValue": "0.0.0.0:50470",
+        "recommendedValue": "0.0.0.0:50470",
         "value": "0.0.0.0:50470",
         "category": "HDFS",
         "filename": "hdfs-site",
@@ -167,7 +167,7 @@ module.exports =
         "name": "dfs.client.failover.proxy.provider.${dfs.nameservices}",
         "displayName": "dfs.client.failover.proxy.provider.${dfs.nameservices}",
         "description": "The Java class that HDFS clients use to contact the Active NameNode.",
-        "defaultValue": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
+        "recommendedValue": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
         "isReconfigurable": false,
         "value": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
         "category": "HDFS",
@@ -180,7 +180,7 @@ module.exports =
         "displayName": "dfs.namenode.shared.edits.dir",
         "description": " The URI which identifies the group of JNs where the NameNodes will write/read edits.",
         "isReconfigurable": false,
-        "defaultValue": "qjournal://node1.example.com:8485;node2.example.com:8485;node3.example.com:8485/mycluster",
+        "recommendedValue": "qjournal://node1.example.com:8485;node2.example.com:8485;node3.example.com:8485/mycluster",
         "value": "qjournal://node1.example.com:8485;node2.example.com:8485;node3.example.com:8485/mycluster",
         "category": "HDFS",
         "filename": "hdfs-site",
@@ -192,7 +192,7 @@ module.exports =
         "displayName": "dfs.ha.fencing.methods",
         "description": "A list of scripts or Java classes which will be used to fence the Active NameNode during a failover.",
         "isReconfigurable": false,
-        "defaultValue": "shell(/bin/true)",
+        "recommendedValue": "shell(/bin/true)",
         "value": "shell(/bin/true)",
         "category": "HDFS",
         "filename": "hdfs-site",
@@ -204,7 +204,7 @@ module.exports =
         "displayName": "dfs.ha.automatic-failover.enabled",
         "description": "Enable Automatic failover.",
         "isReconfigurable": false,
-        "defaultValue": true,
+        "recommendedValue": true,
         "value": true,
         "displayType": "checkbox",
         "category": "HDFS",
@@ -217,7 +217,7 @@ module.exports =
         "displayName": "dfs.namenode.safemode.threshold-pct",
         "description": "Specifies the percentage of blocks that should satisfy\n        the minimal replication requirement defined by dfs.namenode.replication.min.\n        Values less than or equal to 0 mean not to start in safe mode.\n        Values greater than 1 will make safe mode permanent.\n ",
         "isReconfigurable": false,
-        "defaultValue": "0.99f",
+        "recommendedValue": "0.99f",
         "value": "0.99f",
         "category": "HDFS",
         "filename": "hdfs-site",
@@ -229,7 +229,7 @@ module.exports =
         "displayName": "hbase.rootdir",
         "description": "The directory shared by region servers and into which HBase persists.",
         "isReconfigurable": false,
-        "defaultValue": "/hadoop/hdfs/journal",
+        "recommendedValue": "/hadoop/hdfs/journal",
         "value": "/hadoop/hdfs/journal",
         "category": "HBASE",
         "filename": "hbase-site",

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/data/HDP2/rm_ha_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/rm_ha_properties.js b/ambari-web/app/data/HDP2/rm_ha_properties.js
index ef77b1e..3ec106a 100644
--- a/ambari-web/app/data/HDP2/rm_ha_properties.js
+++ b/ambari-web/app/data/HDP2/rm_ha_properties.js
@@ -32,7 +32,7 @@ module.exports =
         "name": "yarn.resourcemanager.ha.enabled",
         "displayName": "yarn.resourcemanager.ha.enabled",
         "isReconfigurable": false,
-        "defaultValue": true,
+        "recommendedValue": true,
         "value": true,
         "displayType": "checkbox",
         "category": "YARN",
@@ -44,7 +44,7 @@ module.exports =
         "name": "yarn.resourcemanager.ha.rm-ids",
         "displayName": "yarn.resourcemanager.ha.rm-ids",
         "isReconfigurable": false,
-        "defaultValue": "rm1,rm2",
+        "recommendedValue": "rm1,rm2",
         "value": "rm1,rm2",
         "category": "YARN",
         "filename": "yarn-site",
@@ -55,7 +55,7 @@ module.exports =
         "name": "yarn.resourcemanager.hostname.rm1",
         "displayName": "yarn.resourcemanager.hostname.rm1",
         "isReconfigurable": false,
-        "defaultValue": "",
+        "recommendedValue": "",
         "value": "",
         "category": "YARN",
         "filename": "yarn-site",
@@ -67,7 +67,7 @@ module.exports =
         "name": "yarn.resourcemanager.webapp.address.rm1",
         "displayName": "yarn.resourcemanager.webapp.address.rm1",
         "isReconfigurable": false,
-        "defaultValue": "",
+        "recommendedValue": "",
         "value": "",
         "category": "YARN",
         "filename": "yarn-site",
@@ -78,7 +78,7 @@ module.exports =
         "name": "yarn.resourcemanager.webapp.address.rm2",
         "displayName": "yarn.resourcemanager.webapp.address.rm2",
         "isReconfigurable": false,
-        "defaultValue": "",
+        "recommendedValue": "",
         "value": "",
         "category": "YARN",
         "filename": "yarn-site",
@@ -89,7 +89,7 @@ module.exports =
         "name": "yarn.resourcemanager.webapp.https.address.rm1",
         "displayName": "yarn.resourcemanager.webapp.https.address.rm1",
         "isReconfigurable": false,
-        "defaultValue": "",
+        "recommendedValue": "",
         "value": "",
         "category": "YARN",
         "filename": "yarn-site",
@@ -100,7 +100,7 @@ module.exports =
         "name": "yarn.resourcemanager.webapp.https.address.rm2",
         "displayName": "yarn.resourcemanager.webapp.https.address.rm2",
         "isReconfigurable": false,
-        "defaultValue": "",
+        "recommendedValue": "",
         "value": "",
         "category": "YARN",
         "filename": "yarn-site",
@@ -112,7 +112,7 @@ module.exports =
         "name": "yarn.resourcemanager.hostname.rm2",
         "displayName": "yarn.resourcemanager.hostname.rm2",
         "isReconfigurable": false,
-        "defaultValue": "",
+        "recommendedValue": "",
         "value": "",
         "category": "YARN",
         "filename": "yarn-site",
@@ -123,7 +123,7 @@ module.exports =
         "name": "yarn.resourcemanager.recovery.enabled",
         "displayName": "yarn.resourcemanager.recovery.enabled",
         "isReconfigurable": false,
-        "defaultValue": true,
+        "recommendedValue": true,
         "value": true,
         "displayType": "checkbox",
         "category": "YARN",
@@ -135,7 +135,7 @@ module.exports =
         "name": "yarn.resourcemanager.store.class",
         "displayName": "yarn.resourcemanager.store.class",
         "isReconfigurable": false,
-        "defaultValue": "org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore",
+        "recommendedValue": "org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore",
         "value": "org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore",
         "category": "YARN",
         "filename": "yarn-site",
@@ -146,7 +146,7 @@ module.exports =
         "name": "yarn.resourcemanager.zk-address",
         "displayName": "yarn.resourcemanager.zk-address",
         "isReconfigurable": false,
-        "defaultValue": "",
+        "recommendedValue": "",
         "value": "",
         "category": "YARN",
         "filename": "yarn-site",
@@ -157,7 +157,7 @@ module.exports =
         "name": "yarn.resourcemanager.cluster-id",
         "displayName": "yarn.resourcemanager.cluster-id",
         "isReconfigurable": false,
-        "defaultValue": "yarn-cluster",
+        "recommendedValue": "yarn-cluster",
         "value": "yarn-cluster",
         "category": "YARN",
         "filename": "yarn-site",
@@ -168,7 +168,7 @@ module.exports =
         "name": "yarn.resourcemanager.ha.automatic-failover.zk-base-path",
         "displayName": "yarn.resourcemanager.ha.automatic-failover.zk-base-path",
         "isReconfigurable": false,
-        "defaultValue": "/yarn-leader-election",
+        "recommendedValue": "/yarn-leader-election",
         "value": "/yarn-leader-election",
         "category": "YARN",
         "filename": "yarn-site",

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/data/HDP2/secure_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/secure_properties.js b/ambari-web/app/data/HDP2/secure_properties.js
index 2bdb4ba..bb4560d 100644
--- a/ambari-web/app/data/HDP2/secure_properties.js
+++ b/ambari-web/app/data/HDP2/secure_properties.js
@@ -34,7 +34,7 @@ var props = {
       "name": "security_enabled",
       "displayName": "Enable security",
       "value": "",
-      "defaultValue": 'true',
+      "recommendedValue": 'true',
       "description": "Enable kerberos security for the cluster",
       "isVisible": false,
       "isOverridable": false,
@@ -47,7 +47,7 @@ var props = {
       "name": "kerberos_install_type",
       "displayName": "Type of security",
       "value": "",
-      "defaultValue": "MANUALLY_SET_KERBEROS",
+      "recommendedValue": "MANUALLY_SET_KERBEROS",
       "description": "Type of kerberos security for the cluster",
       "isVisible": false,
       "isOverridable": false,
@@ -59,7 +59,7 @@ var props = {
       "name": "kerberos_domain",
       "displayName": "Realm name",
       "value": "",
-      "defaultValue": "EXAMPLE.COM",
+      "recommendedValue": "EXAMPLE.COM",
       "description": "Realm name to be used for all principal names",
       "displayType": "advanced",
       "isVisible": true,
@@ -73,7 +73,7 @@ var props = {
       "name": "kinit_path_local",
       "displayName": "Kerberos tool path",
       "value": "",
-      "defaultValue": "/usr/bin",
+      "recommendedValue": "/usr/bin",
       "description": "Directoy path to installed kerberos tools like kinit, kdestroy etc. This can have multiple comma delimited paths",
       "displayType": "directory",
       "isVisible": true,
@@ -87,7 +87,7 @@ var props = {
       "name": "smokeuser_principal_name",
       "displayName": "Smoke test user principal",
       "value": "",
-      "defaultValue": "ambari-qa",
+      "recommendedValue": "ambari-qa",
       "description": "This is the principal name for Smoke test user",
       "displayType": "principal",
       "isVisible": true,
@@ -101,7 +101,7 @@ var props = {
       "name": "smokeuser_keytab",
       "displayName": "Path to smoke test user keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/smokeuser.headless.keytab",
+      "recommendedValue": "/etc/security/keytabs/smokeuser.headless.keytab",
       "description": "Path to keytab file for smoke test user",
       "displayType": "directory",
       "isVisible": true,
@@ -115,7 +115,7 @@ var props = {
       "name": "hdfs_principal_name",
       "displayName": "HDFS user principal",
       "value": "",
-      "defaultValue": "hdfs",
+      "recommendedValue": "hdfs",
       "description": "This is the principal name for HDFS user",
       "displayType": "principal",
       "isVisible": false,
@@ -130,7 +130,7 @@ var props = {
       "name": "hdfs_user_keytab",
       "displayName": "Path to HDFS user keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/hdfs.headless.keytab",
+      "recommendedValue": "/etc/security/keytabs/hdfs.headless.keytab",
       "description": "Path to keytab file for HDFS user",
       "displayType": "directory",
       "isVisible": false,
@@ -144,7 +144,7 @@ var props = {
       "name": "hbase_principal_name",
       "displayName": "HBase user principal",
       "value": "",
-      "defaultValue": "hbase",
+      "recommendedValue": "hbase",
       "description": "This is the principal name for HBase user",
       "displayType": "principal",
       "isVisible": false,
@@ -159,7 +159,7 @@ var props = {
       "name": "hbase_user_keytab",
       "displayName": "Path to HBase user keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/hbase.headless.keytab",
+      "recommendedValue": "/etc/security/keytabs/hbase.headless.keytab",
       "description": "Path to keytab file for Hbase user",
       "displayType": "directory",
       "isVisible": false,
@@ -175,7 +175,7 @@ var props = {
       "name": "namenode_host",
       "displayName": "NameNode hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that has been assigned to run NameNode",
       "displayType": "masterHosts",
       "isOverridable": false,
@@ -188,7 +188,7 @@ var props = {
       "name": "namenode_principal_name",
       "displayName": "Principal name",
       "value": "",
-      "defaultValue": "nn/_HOST",
+      "recommendedValue": "nn/_HOST",
       "description": "Principal name for NameNode. _HOST will get automatically replaced with actual hostname at an instance of NameNode",
       "displayType": "principal",
       "isVisible": true,
@@ -202,7 +202,7 @@ var props = {
       "name": "namenode_keytab",
       "displayName": "Path to Keytab File",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/nn.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/nn.service.keytab",
       "description": "Path to NameNode keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -216,7 +216,7 @@ var props = {
       "name": "snamenode_host",
       "displayName": "SNameNode host",
       "value": "",
-      "defaultValue": "localhost",
+      "recommendedValue": "localhost",
       "description": "The host that has been assigned to run SecondaryNameNode",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -229,7 +229,7 @@ var props = {
       "name": "snamenode_principal_name",
       "displayName": "Principal name",
       "value": "",
-      "defaultValue": "nn/_HOST",
+      "recommendedValue": "nn/_HOST",
       "description": "Principal name for SNameNode. _HOST will get automatically replaced with actual hostname at an instance of SNameNode",
       "displayType": "principal",
       "isVisible": true,
@@ -243,7 +243,7 @@ var props = {
       "name": "snamenode_keytab",
       "displayName": "Path to Keytab File",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/nn.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/nn.service.keytab",
       "description": "Path to SNameNode keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -257,7 +257,7 @@ var props = {
       "name": "journalnode_hosts",
       "displayName": "JournalNode hosts",
       "value": "",
-      "defaultValue": "localhost",
+      "recommendedValue": "localhost",
       "description": "The hosts that have been assigned to run JournalNodes",
       "displayType": "masterHosts",
       "isOverridable": false,
@@ -270,7 +270,7 @@ var props = {
       "name": "journalnode_principal_name",
       "displayName": "Principal name",
       "value": "",
-      "defaultValue": "jn/_HOST",
+      "recommendedValue": "jn/_HOST",
       "description": "Principal name for JournalNode. _HOST will get automatically replaced with actual hostname at every instance of JournalNode",
       "displayType": "principal",
       "isVisible": true,
@@ -284,7 +284,7 @@ var props = {
       "name": "journalnode_keytab",
       "displayName": "Path to keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/jn.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/jn.service.keytab",
       "description": "Path to JournalNode keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -298,7 +298,7 @@ var props = {
       "name": "datanode_hosts", //not in the schema. For UI purpose
       "displayName": "DataNode hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that have been assigned to run DataNode",
       "displayType": "slaveHosts",
       "isOverridable": false,
@@ -311,7 +311,7 @@ var props = {
       "name": "dfs_datanode_address",
       "displayName": "Datanode address",
       "value": "",
-      "defaultValue": "1019",
+      "recommendedValue": "1019",
       "description": "Address for DataNode",
       "displayType": "principal",
       "isVisible": false,
@@ -324,7 +324,7 @@ var props = {
       "name": "dfs_datanode_http_address",
       "displayName": "Datanode HTTP address",
       "value": "",
-      "defaultValue": "1022",
+      "recommendedValue": "1022",
       "description": "Address for DataNode",
       "displayType": "principal",
       "isVisible": false,
@@ -337,7 +337,7 @@ var props = {
       "name": "datanode_principal_name",
       "displayName": "Principal name",
       "value": "",
-      "defaultValue": "dn/_HOST",
+      "recommendedValue": "dn/_HOST",
       "description": "Principal name for DataNode. _HOST will get automatically replaced with actual hostname at every instance of DataNode",
       "displayType": "principal",
       "isVisible": true,
@@ -351,7 +351,7 @@ var props = {
       "name": "datanode_keytab",
       "displayName": "Path to keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/dn.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/dn.service.keytab",
       "description": "Path to DataNode keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -365,7 +365,7 @@ var props = {
       "name": "hadoop_http_principal_name",
       "displayName": "DFS web principal name",
       "value": "",
-      "defaultValue": "HTTP/_HOST",
+      "recommendedValue": "HTTP/_HOST",
       "description": "Principal name for SPNEGO access for HDFS components. _HOST will get automatically replaced with actual hostname at instance of HDFS component",
       "displayType": "principal",
       "isVisible": true,
@@ -378,7 +378,7 @@ var props = {
       "name": "hadoop_http_keytab",
       "displayName": "Path to SPNEGO keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/spnego.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/spnego.service.keytab",
       "description": "Path to SPNEGO keytab file for NameNode and SNameNode",
       "displayType": "directory",
       "isVisible": true,
@@ -393,7 +393,7 @@ var props = {
       "name": "jobhistoryserver_host",
       "displayName": "History Server host",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The host that has been assigned to run History Server",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -406,7 +406,7 @@ var props = {
       "name": "jobhistory_principal_name",
       "displayName": "Principal name",
       "value": "",
-      "defaultValue": "jhs/_HOST",
+      "recommendedValue": "jhs/_HOST",
       "description": "Principal name for History Server. _HOST will get automatically replaced with actual hostname at an instance of History Server",
       "displayType": "principal",
       "isVisible": true,
@@ -420,7 +420,7 @@ var props = {
       "name": "jobhistory_keytab",
       "displayName": "Path to keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/jhs.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/jhs.service.keytab",
       "description": "Path to History Server keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -434,7 +434,7 @@ var props = {
       "name": "jobhistory_http_principal_name",
       "displayName": "Web principal name",
       "value": "",
-      "defaultValue": "HTTP/_HOST",
+      "recommendedValue": "HTTP/_HOST",
       "description": "Principal name for SPNEGO access to Job History Server. _HOST will get automatically replaced with actual hostname at an instance of Job History Server",
       "displayType": "principal",
       "isVisible": true,
@@ -447,7 +447,7 @@ var props = {
       "name": "jobhistory_http_keytab",
       "displayName": "Path to SPNEGO keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/spnego.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/spnego.service.keytab",
       "description": "Path to SPNEGO keytab file for Job History Server",
       "displayType": "directory",
       "isVisible": true,
@@ -462,7 +462,7 @@ var props = {
       "name": "resourcemanager_host",
       "displayName": "ResourceManager host",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The host that has been assigned to run ResourceManager",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -476,7 +476,7 @@ var props = {
       "name": "apptimelineserver_host",
       "displayName": "Application Timeline Server host",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The host that has been assigned to run AppTimelineServer",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -489,7 +489,7 @@ var props = {
       "name": "apptimelineserver_principal_name",
       "displayName": "App Timeline Server Principal name",
       "value": "",
-      "defaultValue": "yarn/_HOST",
+      "recommendedValue": "yarn/_HOST",
       "description": "Principal name for App Timeline Server. _HOST will get automatically replaced with actual hostname at an instance of App Timeline Server",
       "displayType": "principal",
       "isVisible": true,
@@ -503,7 +503,7 @@ var props = {
       "name": "apptimelineserver_keytab",
       "displayName": "Path to App Timeline Server keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/yarn.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/yarn.service.keytab",
       "description": "Path to App Timeline Server keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -517,7 +517,7 @@ var props = {
       "name": "apptimelineserver_http_principal_name",
       "displayName": "App Timeline Server HTTP Principal name",
       "value": "",
-      "defaultValue": "HTTP/_HOST",
+      "recommendedValue": "HTTP/_HOST",
       "description": "Principal name for App Timeline Server HTTP. _HOST will get automatically replaced with actual hostname at an instance of App Timeline Server",
       "displayType": "principal",
       "isVisible": true,
@@ -530,7 +530,7 @@ var props = {
       "name": "apptimelineserver_http_keytab",
       "displayName": "Path to App Timeline Server SPNEGO HTTP keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/spnego.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/spnego.service.keytab",
       "description": "Path to App Timeline Server SPNEGO HTTP keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -545,7 +545,7 @@ var props = {
       "name": "resourcemanager_principal_name",
       "displayName": "Principal name",
       "value": "",
-      "defaultValue": "rm/_HOST",
+      "recommendedValue": "rm/_HOST",
       "description": "Principal name for ResourceManager. _HOST will get automatically replaced with actual hostname at an instance of ResourceManager",
       "displayType": "principal",
       "isVisible": true,
@@ -559,7 +559,7 @@ var props = {
       "name": "resourcemanager_keytab",
       "displayName": "Path to keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/rm.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/rm.service.keytab",
       "description": "Path to ResourceManager keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -573,7 +573,7 @@ var props = {
       "name": "resourcemanager_http_principal_name",
       "displayName": "Web principal name",
       "value": "",
-      "defaultValue": "HTTP/_HOST",
+      "recommendedValue": "HTTP/_HOST",
       "description": "Principal name for SPNEGO access to ResourceManager. _HOST will get automatically replaced with actual hostname at an instance of ResourceManager",
       "displayType": "principal",
       "isVisible": true,
@@ -586,7 +586,7 @@ var props = {
       "name": "resourcemanager_http_keytab",
       "displayName": "Path to SPNEGO keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/spnego.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/spnego.service.keytab",
       "description": "Path to SPNEGO keytab file for ResourceManager",
       "displayType": "directory",
       "isVisible": true,
@@ -599,7 +599,7 @@ var props = {
       "name": "nodemanager_host",
       "displayName": "NodeManager hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that has been assigned to run NodeManager",
       "displayType": "slaveHosts",
       "isOverridable": false,
@@ -612,7 +612,7 @@ var props = {
       "name": "nodemanager_principal_name",
       "displayName": "Principal name",
       "value": "",
-      "defaultValue": "nm/_HOST",
+      "recommendedValue": "nm/_HOST",
       "description": "Principal name for NodeManager. _HOST will get automatically replaced with actual hostname at all instances of NodeManager",
       "displayType": "principal",
       "isVisible": true,
@@ -626,7 +626,7 @@ var props = {
       "name": "nodemanager_keytab",
       "displayName": "Path to keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/nm.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/nm.service.keytab",
       "description": "Path to NodeManager keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -640,7 +640,7 @@ var props = {
       "name": "nodemanager_http_principal_name",
       "displayName": "Web principal name",
       "value": "",
-      "defaultValue": "HTTP/_HOST",
+      "recommendedValue": "HTTP/_HOST",
       "description": "Principal name for SPNEGO access to NodeManager. _HOST will get automatically replaced with actual hostname at all instances of NodeManager",
       "displayType": "principal",
       "isVisible": true,
@@ -653,7 +653,7 @@ var props = {
       "name": "nodemanager_http_keytab",
       "displayName": "Path to SPNEGO keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/spnego.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/spnego.service.keytab",
       "description": "Path to SPNEGO keytab file for NodeManager",
       "displayType": "directory",
       "isVisible": true,
@@ -666,7 +666,7 @@ var props = {
       "name": "yarn_nodemanager_container-executor_class",
       "displayName": "yarn.nodemanager.container-executor.class",
       "value": "",
-      "defaultValue": "org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor",
+      "recommendedValue": "org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor",
       "description": "Executor(launcher) of the containers",
       "displayType": "advanced",
       "isVisible": true,
@@ -679,7 +679,7 @@ var props = {
       "name": "webhcatserver_host",
       "displayName": "WebHCat Server host",
       "value": "",
-      "defaultValue": "localhost",
+      "recommendedValue": "localhost",
       "description": "The host that has been assigned to run WebHCat Server",
       "displayType": "masterHost",
       "isVisible": true,
@@ -692,7 +692,7 @@ var props = {
       "name": "webHCat_http_principal_name",
       "displayName": "Principal name",
       "value": "",
-      "defaultValue": "HTTP/_HOST",
+      "recommendedValue": "HTTP/_HOST",
       "description": "Principal name for SPNEGO access for WebHCat",
       "displayType": "principal",
       "isVisible": true,
@@ -705,7 +705,7 @@ var props = {
       "name": "webhcat_http_keytab",
       "displayName": "Path to keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/spnego.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/spnego.service.keytab",
       "description": "Path to SPNEGO keytab file for WebHCat",
       "displayType": "directory",
       "isVisible": true,
@@ -720,7 +720,7 @@ var props = {
       "name": "hbasemaster_host",
       "displayName": "HBase Master hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The host that has been assigned to run HBase Master",
       "displayType": "masterHosts",
       "isOverridable": false,
@@ -733,7 +733,7 @@ var props = {
       "name": "hbase_master_principal_name",
       "displayName": "Principal name",
       "value": "",
-      "defaultValue": "hbase/_HOST",
+      "recommendedValue": "hbase/_HOST",
       "description": "Principal name for HBase master. _HOST will get automatically replaced with actual hostname at an instance of HBase Master",
       "displayType": "principal",
       "isVisible": true,
@@ -747,7 +747,7 @@ var props = {
       "name": "hbase_master_keytab",
       "displayName": "Path to keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/hbase.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/hbase.service.keytab",
       "description": "Path to HBase master keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -761,7 +761,7 @@ var props = {
       "name": "regionserver_hosts",
       "displayName": "RegionServer hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that have been assigned to run RegionServer",
       "displayType": "slaveHosts",
       "isOverridable": false,
@@ -774,7 +774,7 @@ var props = {
       "name": "hbase_regionserver_principal_name",
       "displayName": "Principal name",
       "value": "",
-      "defaultValue": "hbase/_HOST",
+      "recommendedValue": "hbase/_HOST",
       "description": "Principal name for RegionServer. _HOST will get automatically replaced with actual hostname at every instance of RegionServer",
       "displayType": "principal",
       "isVisible": true,
@@ -788,7 +788,7 @@ var props = {
       "name": "hbase_regionserver_keytab",
       "displayName": "Path to keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/hbase.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/hbase.service.keytab",
       "description": "Path to RegionServer keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -804,7 +804,7 @@ var props = {
       "name": "hive_metastore",
       "displayName": "Hive Metastore hosts",
       "value": "",
-      "defaultValue": "localhost",
+      "recommendedValue": "localhost",
       "description": "The hosts that have been assigned to run Hive Metastore and HiveServer2",
       "displayType": "masterHosts",
       "isVisible": true,
@@ -817,7 +817,7 @@ var props = {
       "name": "hive_metastore_principal_name",
       "displayName": "Principal name",
       "value": "",
-      "defaultValue": "hive/_HOST",
+      "recommendedValue": "hive/_HOST",
       "description": "Principal name for Hive Metastore and HiveServer2. _HOST will get automatically replaced with actual hostname at an instance of Hive Metastore and HiveServer2",
       "displayType": "principal",
       "isVisible": true,
@@ -831,7 +831,7 @@ var props = {
       "name": "hive_metastore_keytab",
       "displayName": "Path to keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/hive.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/hive.service.keytab",
       "description": "Path to Hive Metastore and HiveServer2 keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -845,7 +845,7 @@ var props = {
       "name": "hive_metastore_http_principal_name",
       "displayName": "Web principal name",
       "value": "",
-      "defaultValue": "HTTP/_HOST",
+      "recommendedValue": "HTTP/_HOST",
       "description": "Principal name for SPNEGO access to Hive Metastore and HiveServer2. _HOST will get automatically replaced with actual hostname at an instance of Hive Metastore and HiveServer2",
       "displayType": "principal",
       "isVisible": true,
@@ -858,7 +858,7 @@ var props = {
       "name": "hive_metastore_http_keytab",
       "displayName": "Path to SPNEGO keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/spnego.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/spnego.service.keytab",
       "description": "Path to SPNEGO keytab file for  Hive Metastore and HiveServer2",
       "displayType": "directory",
       "isVisible": true,
@@ -873,7 +873,7 @@ var props = {
       "name": "oozie_servername",
       "displayName": "Oozie Server host",
       "value": "",
-      "defaultValue": "localhost",
+      "recommendedValue": "localhost",
       "description": "Oozie server host name",
       "displayType": "masterHost",
       "isVisible": true,
@@ -886,7 +886,7 @@ var props = {
       "name": "oozie_principal_name",
       "displayName": "Principal name",
       "value": "",
-      "defaultValue": "oozie/_HOST",
+      "recommendedValue": "oozie/_HOST",
       "description": "Principal name for Oozie server",
       "displayType": "principal",
       "isVisible": true,
@@ -900,7 +900,7 @@ var props = {
       "name": "oozie_keytab",
       "displayName": "Path to keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/oozie.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/oozie.service.keytab",
       "description": "Path to Oozie server keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -915,7 +915,7 @@ var props = {
       "name": "oozie_http_principal_name",
       "displayName": "Web principal name",
       "value": "",
-      "defaultValue": "HTTP/_HOST",
+      "recommendedValue": "HTTP/_HOST",
       "description": "Principal name for SPNEGO access to Oozie",
       "displayType": "principal",
       "isVisible": true,
@@ -928,7 +928,7 @@ var props = {
       "name": "oozie_http_keytab",
       "displayName": "Path to SPNEGO keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/spnego.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/spnego.service.keytab",
       "description": "Path to SPNEGO keytab file for oozie",
       "displayType": "directory",
       "isVisible": true,
@@ -943,7 +943,7 @@ var props = {
       "name": "zookeeperserver_hosts",
       "displayName": "ZooKeeper Server hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The host that has been assigned to run ZooKeeper Server",
       "displayType": "masterHosts",
       "isVisible": true,
@@ -956,7 +956,7 @@ var props = {
       "name": "zookeeper_principal_name",
       "displayName": "Principal name",
       "value": "",
-      "defaultValue": "zookeeper/_HOST",
+      "recommendedValue": "zookeeper/_HOST",
       "description": "Principal name for ZooKeeper. _HOST will get automatically replaced with actual hostname at every instance of zookeeper server",
       "displayType": "principal",
       "isVisible": true,
@@ -971,7 +971,7 @@ var props = {
       "name": "zookeeper_keytab_path",
       "displayName": "Path to keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/zk.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/zk.service.keytab",
       "description": "Path to ZooKeeper keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -987,7 +987,7 @@ var props = {
       "name": "falcon_server_host",
       "displayName": "Falcon server host",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "Falcon Server host",
       "displayType": "masterHost",
       "isVisible": true,
@@ -1000,7 +1000,7 @@ var props = {
       "name": "falcon_principal_name",
       "displayName": "Falcon principal name",
       "value": "",
-      "defaultValue": "falcon/_HOST",
+      "recommendedValue": "falcon/_HOST",
       "description": "This is the principal name for Falcon Server",
       "displayType": "principal",
       "isVisible": true,
@@ -1014,7 +1014,7 @@ var props = {
       "name": "falcon_keytab",
       "displayName": "Path to Falcon server keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/falcon.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/falcon.service.keytab",
       "description": "Path to the Falcon Server keytab file",
       "displayType": "directory",
       "isVisible": true,
@@ -1028,7 +1028,7 @@ var props = {
       "name": "falcon_http_principal_name",
       "displayName": "Web principal name",
       "value": "",
-      "defaultValue": "HTTP/_HOST",
+      "recommendedValue": "HTTP/_HOST",
       "description": "Principal name for SPNEGO access to Falcon",
       "displayType": "principal",
       "isVisible": true,
@@ -1041,7 +1041,7 @@ var props = {
       "name": "falcon_http_keytab",
       "displayName": "Path to SPNEGO keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/spnego.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/spnego.service.keytab",
       "description": "Path to SPNEGO keytab file for Falcon",
       "displayType": "directory",
       "isVisible": true,
@@ -1054,7 +1054,7 @@ var props = {
       "name": "namenode_principal_name_falcon",
       "displayName": "NameNode principal name",
       "value": "",
-      "defaultValue": "nn/_HOST",
+      "recommendedValue": "nn/_HOST",
       "description": "NameNode principal to talk to config store",
       "displayType": "principal",
       "isVisible": true,
@@ -1069,7 +1069,7 @@ var props = {
       "name": "knox_gateway_hosts",
       "displayName": "Knox Gateway hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that has been assigned to run Knox Gateway",
       "displayType": "masterHosts",
       "isOverridable": false,
@@ -1082,7 +1082,7 @@ var props = {
       "name": "knox_principal_name",
       "displayName": "Principal name",
       "value": "",
-      "defaultValue": "knox/_HOST",
+      "recommendedValue": "knox/_HOST",
       "description": "This is the principal name for Knox Gateway",
       "displayType": "principal",
       "isVisible": true,
@@ -1097,7 +1097,7 @@ var props = {
       "name": "knox_keytab_path",
       "displayName": "Path to keytab file",
       "value": "",
-      "defaultValue": "/etc/security/keytabs/knox.service.keytab",
+      "recommendedValue": "/etc/security/keytabs/knox.service.keytab",
       "description": "This is the keytab file for Knox Gateway",
       "displayType": "directory",
       "isVisible": true,
@@ -1116,7 +1116,7 @@ var stormProperties = [
     "name": "storm_host",
     "displayName": "Storm component hosts",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "Storm component hosts",
     "displayType": "slaveHosts",
     "isVisible": true,
@@ -1129,7 +1129,7 @@ var stormProperties = [
     "name": "storm_principal_name",
     "displayName": " Storm principal name",
     "value": "",
-    "defaultValue": "storm/_HOST",
+    "recommendedValue": "storm/_HOST",
     "description": "Principal name for Supervisor. _HOST will get automatically replaced with actual hostname at an instance of every storm component.",
     "displayType": "principal",
     "isVisible": true,
@@ -1144,7 +1144,7 @@ var stormProperties = [
     "name": "storm_keytab",
     "displayName": "Path to Storm keytab file",
     "value": "",
-    "defaultValue": "/etc/security/keytabs/storm.service.keytab",
+    "recommendedValue": "/etc/security/keytabs/storm.service.keytab",
     "description": "Path to the storm keytab file",
     "displayType": "directory",
     "isVisible": true,
@@ -1161,7 +1161,7 @@ var storm22Properties = [
     "name": "storm_principal_name",
     "displayName": " Storm principal name",
     "value": "",
-    "defaultValue": "storm/_HOST",
+    "recommendedValue": "storm/_HOST",
     "description": "Principal name for Storm components. _HOST will get automatically replaced with actual hostname at an instance of every storm component.",
     "displayType": "principal",
     "isVisible": true,
@@ -1176,7 +1176,7 @@ var storm22Properties = [
     "name": "storm_keytab",
     "displayName": "Path to Storm keytab file",
     "value": "",
-    "defaultValue": "/etc/security/keytabs/storm.service.keytab",
+    "recommendedValue": "/etc/security/keytabs/storm.service.keytab",
     "description": "Path to the storm keytab file",
     "displayType": "directory",
     "isVisible": true,
@@ -1191,7 +1191,7 @@ var storm22Properties = [
     "name": "nimbus_host",
     "displayName": "Nimbus hosts",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "Nimbus component hosts",
     "displayType": "slaveHosts",
     "isVisible": true,
@@ -1204,7 +1204,7 @@ var storm22Properties = [
     "name": "nimbus_principal_name",
     "displayName": " Nimbus principal name",
     "value": "",
-    "defaultValue": "nimbus/_HOST",
+    "recommendedValue": "nimbus/_HOST",
     "description": "Nimbus Principal name",
     "displayType": "principal",
     "isVisible": true,
@@ -1219,7 +1219,7 @@ var storm22Properties = [
     "name": "nimbus_keytab",
     "displayName": "Path to Nimbus keytab file",
     "value": "",
-    "defaultValue": "/etc/security/keytabs/nimbus.service.keytab",
+    "recommendedValue": "/etc/security/keytabs/nimbus.service.keytab",
     "description": "Path to the nimbus keytab file",
     "displayType": "directory",
     "isVisible": true,
@@ -1234,7 +1234,7 @@ var storm22Properties = [
     "name": "storm_ui_principal_name",
     "displayName": "Storm UI principal name",
     "value": "",
-    "defaultValue": "HTTP/_HOST",
+    "recommendedValue": "HTTP/_HOST",
     "description": "Principal name for Storm UI",
     "displayType": "principal",
     "isVisible": false,
@@ -1248,7 +1248,7 @@ var storm22Properties = [
     "name": "storm_ui_keytab",
     "displayName": "Path to Nimbus UI keytab file",
     "value": "",
-    "defaultValue": "/etc/security/keytabs/spnego.service.keytab",
+    "recommendedValue": "/etc/security/keytabs/spnego.service.keytab",
     "description": "Path to the Storm UI keytab file",
     "displayType": "directory",
     "isVisible": false,


[3/6] ambari git commit: AMBARI-11216 Refactor service-config 'defaultValue' property into 'savedValue' and 'recommendedValue'. (ababiichuk)

Posted by ab...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/data/PHD/site_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/PHD/site_properties.js b/ambari-web/app/data/PHD/site_properties.js
index 9a2aa4b..733e8f4 100644
--- a/ambari-web/app/data/PHD/site_properties.js
+++ b/ambari-web/app/data/PHD/site_properties.js
@@ -79,7 +79,7 @@ module.exports =
       "name": "dfs.datanode.data.dir.mount.file",
       "displayName": "File that stores mount point for each data dir",
       "description": "File path that contains the last known mount point for each data dir. This file is used to avoid creating a DFS data dir on the root drive (and filling it up) if a path was previously mounted on a drive.",
-      "defaultValue": "/etc/hadoop/conf/dfs_data_dir_mount.hist",
+      "recommendedValue": "/etc/hadoop/conf/dfs_data_dir_mount.hist",
       "displayType": "directory",
       "isVisible": true,
       "category": "DATANODE",
@@ -530,7 +530,7 @@ module.exports =
       "name": "hive.server2.thrift.port",
       "displayName": "Hive Server Port",
       "description": "TCP port number to listen on, default 10000.",
-      "defaultValue": "10000",
+      "recommendedValue": "10000",
       "displayType": "int",
       "isReconfigurable": true,
       "isOverridable": false,
@@ -542,7 +542,7 @@ module.exports =
       "id": "site property",
       "name": "hive.server2.support.dynamic.service.discovery",
       "displayName": "hive.server2.support.dynamic.service.discovery",
-      "defaultValue": true,
+      "recommendedValue": true,
       "displayType": "checkbox",
       "category": "Advanced hive-site",
       "serviceName": "HIVE"
@@ -551,7 +551,7 @@ module.exports =
       "id": "site property",
       "name": "hive.zookeeper.quorum",
       "displayName": "hive.zookeeper.quorum",
-      "defaultValue": "localhost:2181",
+      "recommendedValue": "localhost:2181",
       "displayType": "multiLine",
       "isVisible": true,
       "serviceName": "HIVE",
@@ -1622,7 +1622,7 @@ module.exports =
       "name": "content",
       "displayName": "content",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "pig properties",
       "displayType": "content",
       "isRequired": false,
@@ -1649,7 +1649,7 @@ module.exports =
       "name": "namenode_host",
       "displayName": "NameNode hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that has been assigned to run NameNode",
       "displayType": "masterHosts",
       "isOverridable": false,
@@ -1665,7 +1665,7 @@ module.exports =
       "name": "namenode_heapsize",
       "displayName": "NameNode Java heap size",
       "description": "Initial and maximum Java heap size for NameNode (Java options -Xms and -Xmx).  This also applies to the Secondary NameNode.",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
@@ -1680,7 +1680,7 @@ module.exports =
       "name": "namenode_opt_newsize",
       "displayName": "NameNode new generation size",
       "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize).  This also applies to the Secondary NameNode.",
-      "defaultValue": "200",
+      "recommendedValue": "200",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
@@ -1695,7 +1695,7 @@ module.exports =
       "name": "namenode_opt_maxnewsize",
       "displayName": "NameNode maximum new generation size",
       "description": "Maximum size of Java new generation for NameNode (Java option -XX:MaxnewSize).",
-      "defaultValue": "200",
+      "recommendedValue": "200",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
@@ -1710,7 +1710,7 @@ module.exports =
       "name": "snamenode_host",
       "displayName": "SNameNode host",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The host that has been assigned to run SecondaryNameNode",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -1726,7 +1726,7 @@ module.exports =
       "name": "datanode_hosts", //not in the schema. For UI purpose
       "displayName": "DataNode hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that have been assigned to run DataNode",
       "displayType": "slaveHosts",
       "isRequired": false,
@@ -1743,7 +1743,7 @@ module.exports =
       "name": "dtnode_heapsize",
       "displayName": "DataNode maximum Java heap size",
       "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "displayType": "int",
       "unit": "MB",
       "isVisible": true,
@@ -1757,7 +1757,7 @@ module.exports =
       "name": "hadoop_heapsize",
       "displayName": "Hadoop maximum Java heap size",
       "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "displayType": "int",
       "unit": "MB",
       "isVisible": true,
@@ -1771,7 +1771,7 @@ module.exports =
       "name": "hdfs_log_dir_prefix",
       "displayName": "Hadoop Log Dir Prefix",
       "description": "The parent directory for Hadoop log files.  The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.",
-      "defaultValue": "/var/log/hadoop",
+      "recommendedValue": "/var/log/hadoop",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -1785,7 +1785,7 @@ module.exports =
       "name": "hadoop_pid_dir_prefix",
       "displayName": "Hadoop PID Dir Prefix",
       "description": "The parent directory in which the PID files for Hadoop processes will be created.  The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.",
-      "defaultValue": "/var/run/hadoop",
+      "recommendedValue": "/var/run/hadoop",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -1799,7 +1799,7 @@ module.exports =
       "name": "hadoop_root_logger",
       "displayName": "Hadoop Root Logger",
       "description": "Hadoop logging options",
-      "defaultValue": "INFO,RFA",
+      "recommendedValue": "INFO,RFA",
       "displayType": "string",
       "isOverridable": false,
       "isVisible": true,
@@ -1814,7 +1814,7 @@ module.exports =
       "name": "hs_host",
       "displayName": "History Server",
       "description": "History Server",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "displayType": "masterHost",
       "isRequiredByAgent": false,
@@ -1829,7 +1829,7 @@ module.exports =
       "name": "jobhistory_heapsize",
       "displayName": "History Server heap size",
       "description": "History Server heap size",
-      "defaultValue": "900",
+      "recommendedValue": "900",
       "unit": "MB",
       "isOverridable": true,
       "displayType": "int",
@@ -1844,7 +1844,7 @@ module.exports =
       "name": "mapred_log_dir_prefix",
       "displayName": "Mapreduce Log Dir Prefix",
       "description": "",
-      "defaultValue": "/var/log/hadoop-mapreduce",
+      "recommendedValue": "/var/log/hadoop-mapreduce",
       "displayType": "directory",
       "isOverridable": false,
       "isVisible": true,
@@ -1858,7 +1858,7 @@ module.exports =
       "name": "mapred_pid_dir_prefix",
       "displayName": "Mapreduce PID Dir Prefix",
       "description": "",
-      "defaultValue": "/var/run/hadoop-mapreduce",
+      "recommendedValue": "/var/run/hadoop-mapreduce",
       "displayType": "directory",
       "isOverridable": false,
       "isVisible": true,
@@ -1873,7 +1873,7 @@ module.exports =
       "name": "yarn_heapsize",
       "displayName": "YARN Java heap size",
       "description": "Max heapsize for all YARN components",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "isOverridable": true,
       "displayType": "int",
       "unit": "MB",
@@ -1888,7 +1888,7 @@ module.exports =
       "name": "rm_host",
       "displayName": "ResourceManager",
       "description": "ResourceManager",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "displayType": "masterHost",
       "isRequiredByAgent": false,
@@ -1903,7 +1903,7 @@ module.exports =
       "name": "resourcemanager_heapsize",
       "displayName": "ResourceManager Java heap size",
       "description": "Max heapsize for ResourceManager",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "isOverridable": false,
       "displayType": "int",
       "unit": "MB",
@@ -1918,7 +1918,7 @@ module.exports =
       "name": "nm_hosts",
       "displayName": "NodeManager",
       "description": "List of NodeManager Hosts.",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "displayType": "slaveHosts",
       "isRequiredByAgent": false,
@@ -1933,7 +1933,7 @@ module.exports =
       "name": "nodemanager_heapsize",
       "displayName": "NodeManager Java heap size",
       "description": "Max heapsize for NodeManager",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "isOverridable": true,
       "displayType": "int",
       "unit": "MB",
@@ -1948,7 +1948,7 @@ module.exports =
       "name": "yarn_log_dir_prefix",
       "displayName": "YARN Log Dir Prefix",
       "description": "",
-      "defaultValue": "/var/log/hadoop-yarn",
+      "recommendedValue": "/var/log/hadoop-yarn",
       "displayType": "directory",
       "isOverridable": false,
       "isReconfigurable": false,
@@ -1962,7 +1962,7 @@ module.exports =
       "name": "yarn_pid_dir_prefix",
       "displayName": "YARN PID Dir Prefix",
       "description": "",
-      "defaultValue": "/var/run/hadoop-yarn",
+      "recommendedValue": "/var/run/hadoop-yarn",
       "displayType": "directory",
       "isOverridable": false,
       "isVisible": true,
@@ -1987,7 +1987,7 @@ module.exports =
       "name": "ats_host",
       "displayName": "App Timeline Server",
       "description": "Application Timeline Server Host",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "displayType": "masterHost",
       "isRequiredByAgent": false,
@@ -2002,7 +2002,7 @@ module.exports =
       "name": "apptimelineserver_heapsize",
       "displayName": "AppTimelineServer Java heap size",
       "description": "AppTimelineServer Java heap size",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "isOverridable": false,
       "displayType": "int",
       "unit": "MB",
@@ -2018,7 +2018,7 @@ module.exports =
       "name": "hbasemaster_host",
       "displayName": "HBase Master hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The host that has been assigned to run HBase Master",
       "displayType": "masterHosts",
       "isOverridable": false,
@@ -2034,7 +2034,7 @@ module.exports =
       "name": "hbase_master_heapsize",
       "displayName": "HBase Master Maximum Java heap size",
       "description": "Maximum Java heap size for HBase master (Java option -Xmx)",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": true,
@@ -2049,7 +2049,7 @@ module.exports =
       "name": "regionserver_hosts",
       "displayName": "RegionServer hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that have been assigned to run RegionServer",
       "displayType": "slaveHosts",
       "isOverridable": false,
@@ -2066,7 +2066,7 @@ module.exports =
       "name": "hbase_regionserver_heapsize",
       "displayName": "RegionServers maximum Java heap size",
       "description": "Maximum Java heap size for RegionServers (Java option -Xmx)",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "displayType": "int",
       "unit": "MB",
       "isVisible": true,
@@ -2101,7 +2101,7 @@ module.exports =
       "name": "hbase_log_dir",
       "displayName": "HBase Log Dir",
       "description": "Directory for HBase logs",
-      "defaultValue": "/var/log/hbase",
+      "recommendedValue": "/var/log/hbase",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2115,7 +2115,7 @@ module.exports =
       "name": "hbase_pid_dir",
       "displayName": "HBase PID Dir",
       "description": "Directory in which the pid files for HBase processes will be created",
-      "defaultValue": "/var/run/hbase",
+      "recommendedValue": "/var/run/hbase",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2149,7 +2149,7 @@ module.exports =
       "name": "fs_glusterfs_default_name",
       "displayName": "GlusterFS default fs name 1.x Hadoop",
       "description": "GlusterFS default filesystem name (glusterfs://{MasterFQDN}:9000)",
-      "defaultValue": "glusterfs:///localhost:8020",
+      "recommendedValue": "glusterfs:///localhost:8020",
       "displayType": "string",
       "isVisible": true,
       "serviceName": "GLUSTERFS",
@@ -2161,7 +2161,7 @@ module.exports =
       "name": "glusterfs_defaultFS_name",
       "displayName": "GlusterFS default fs name 2.x Hadoop",
       "description": "GlusterFS default filesystem name (glusterfs:///)",
-      "defaultValue": "glusterfs:///localhost:8020",
+      "recommendedValue": "glusterfs:///localhost:8020",
       "displayType": "string",
       "isVisible": true,
       "serviceName": "GLUSTERFS",
@@ -2173,7 +2173,7 @@ module.exports =
       "name": "hadoop_heapsize",
       "displayName": "Hadoop maximum Java heap size",
       "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "displayType": "int",
       "unit": "MB",
       "isVisible": true,
@@ -2187,7 +2187,7 @@ module.exports =
       "name": "hdfs_log_dir_prefix",
       "displayName": "Hadoop Log Dir Prefix",
       "description": "The parent directory for Hadoop log files.  The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.",
-      "defaultValue": "/var/log/hadoop",
+      "recommendedValue": "/var/log/hadoop",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2201,7 +2201,7 @@ module.exports =
       "name": "hadoop_pid_dir_prefix",
       "displayName": "Hadoop PID Dir Prefix",
       "description": "The parent directory in which the PID files for Hadoop processes will be created.  The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.",
-      "defaultValue": "/var/run/hadoop",
+      "recommendedValue": "/var/run/hadoop",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2215,7 +2215,7 @@ module.exports =
       "name": "namenode_heapsize",
       "displayName": "Name Node Heap Size",
       "description": "Name Node Heap Size, default jvm memory setting",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "isReconfigurable": false,
       "displayType": "int",
       "isOverridable": false,
@@ -2229,7 +2229,7 @@ module.exports =
       "name": "namenode_opt_newsize",
       "displayName": "NameNode new generation size",
       "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize).  This also applies to the Secondary NameNode.",
-      "defaultValue": "200",
+      "recommendedValue": "200",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
@@ -2243,7 +2243,7 @@ module.exports =
       "name": "namenode_opt_maxnewsize",
       "displayName": "NameNode maximum new generation size",
       "description": "Maximum size of Java new generation for NameNode (Java option -XX:MaxnewSize).",
-      "defaultValue": "200",
+      "recommendedValue": "200",
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
@@ -2257,7 +2257,7 @@ module.exports =
       "name": "dtnode_heapsize",
       "displayName": "DataNode maximum Java heap size",
       "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
-      "defaultValue": "1024",
+      "recommendedValue": "1024",
       "displayType": "int",
       "unit": "MB",
       "isVisible": false,
@@ -2270,7 +2270,7 @@ module.exports =
       "name": "glusterfs_user",
       "displayName": "glusterfs user",
       "description": "glusterfs user",
-      "defaultValue": "root",
+      "recommendedValue": "root",
       "displayType": "string",
       "isVisible": false,
       "serviceName": "GLUSTERFS",
@@ -2282,7 +2282,7 @@ module.exports =
       "name": "namenode_host",
       "displayName": "NameNode Host",
       "description": "NameNode Host.",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "string",
       "isVisible": false,
       "serviceName": "GLUSTERFS",
@@ -2294,7 +2294,7 @@ module.exports =
       "name": "snamenode_host",
       "displayName": "Secondary NameNode Host",
       "description": "Secondary NameNode Host.",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "string",
       "isVisible": false,
       "serviceName": "GLUSTERFS",
@@ -2307,7 +2307,7 @@ module.exports =
       "name": "hivemetastore_host",
       "displayName": "Hive Metastore hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that have been assigned to run Hive Metastore",
       "displayType": "masterHosts",
       "isOverridable": false,
@@ -2321,7 +2321,7 @@ module.exports =
     {
       "name": "hive_master_hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "isRequiredByAgent": false,
       "isVisible": false,
@@ -2334,7 +2334,7 @@ module.exports =
       "name": "hive_existing_mysql_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "MySQL",
+      "recommendedValue": "MySQL",
       "description": "Using an existing MySQL database for Hive Metastore",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -2352,7 +2352,7 @@ module.exports =
       "name": "hive_existing_postgresql_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "PostgreSQL",
+      "recommendedValue": "PostgreSQL",
       "description": "Using an existing PostgreSQL database for Hive Metastore",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -2370,7 +2370,7 @@ module.exports =
       "name": "hive_existing_oracle_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "Oracle",
+      "recommendedValue": "Oracle",
       "description": "Using an existing Oracle database for Hive Metastore",
       "displayType": "masterHost",
       "isVisible": false,
@@ -2388,7 +2388,7 @@ module.exports =
       "name": "hive_ambari_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "PostgreSQL",
+      "recommendedValue": "PostgreSQL",
       "description": "PostgreSQL will be installed by Ambari",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -2403,7 +2403,7 @@ module.exports =
       "name": "hive_database",
       "displayName": "Hive Database",
       "value": "",
-      "defaultValue": "New PostgreSQL Database",
+      "recommendedValue": "New PostgreSQL Database",
       "options": [
         {
           displayName: 'New PostgreSQL Database',
@@ -2439,7 +2439,8 @@ module.exports =
       "name": "hive_hostname",
       "displayName": "Database Host",
       "description": "Specify the host on which the database is hosted",
-      "defaultValue": "",
+      "savedValue": "",
+      "recommendedValue": "",
       "isReconfigurable": true,
       "displayType": "host",
       "isOverridable": false,
@@ -2455,7 +2456,7 @@ module.exports =
       "name": "hive_existing_mysql_host",
       "displayName": "Database Host",
       "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "host",
       "isOverridable": false,
       "isVisible": false,
@@ -2470,7 +2471,7 @@ module.exports =
       "name": "hive_existing_postgresql_host",
       "displayName": "Database Host",
       "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "host",
       "isOverridable": false,
       "isVisible": false,
@@ -2485,7 +2486,7 @@ module.exports =
       "name": "hive_existing_oracle_host",
       "displayName": "Database Host",
       "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "host",
       "isOverridable": false,
       "isVisible": false,
@@ -2499,7 +2500,7 @@ module.exports =
       "id": "puppet var",
       "name": "hive_ambari_host",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayName": "Database Host",
       "description": "Host on which the database will be created by Ambari",
       "isReconfigurable": false,
@@ -2517,7 +2518,7 @@ module.exports =
       "name": "hive_metastore_port",
       "displayName": "Hive metastore port",
       "description": "",
-      "defaultValue": "9083",
+      "recommendedValue": "9083",
       "isReconfigurable": false,
       "displayType": "int",
       "isOverridable": false,
@@ -2531,7 +2532,7 @@ module.exports =
       "name": "hive_lib",
       "displayName": "Hive library",
       "description": "",
-      "defaultValue": "/usr/lib/hive/lib/",
+      "recommendedValue": "/usr/lib/hive/lib/",
       "isReconfigurable": false,
       "displayType": "directory",
       "isVisible": false,
@@ -2545,7 +2546,7 @@ module.exports =
       "name": "hive_dbroot",
       "displayName": "Hive db directory",
       "description": "",
-      "defaultValue": "/usr/lib/hive/lib",
+      "recommendedValue": "/usr/lib/hive/lib",
       "isReconfigurable": false,
       "displayType": "directory",
       "isVisible": false,
@@ -2559,7 +2560,7 @@ module.exports =
       "name": "hive_log_dir",
       "displayName": "Hive Log Dir",
       "description": "Directory for Hive log files",
-      "defaultValue": "/var/log/hive",
+      "recommendedValue": "/var/log/hive",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2573,7 +2574,7 @@ module.exports =
       "name": "hive_pid_dir",
       "displayName": "Hive PID Dir",
       "description": "Directory in which the PID files for Hive processes will be created",
-      "defaultValue": "/var/run/hive",
+      "recommendedValue": "/var/run/hive",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2588,7 +2589,7 @@ module.exports =
       "name": "webhcatserver_host",
       "displayName": "WebHCat Server host",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The host that has been assigned to run WebHCat Server",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -2603,7 +2604,7 @@ module.exports =
       "name": "hcat_log_dir",
       "displayName": "WebHCat Log Dir",
       "description": "Directory for WebHCat log files",
-      "defaultValue": "/var/log/webhcat",
+      "recommendedValue": "/var/log/webhcat",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2617,7 +2618,7 @@ module.exports =
       "name": "hcat_pid_dir",
       "displayName": "WebHCat PID Dir",
       "description": "Directory in which the PID files for WebHCat processes will be created",
-      "defaultValue": "/var/run/webhcat",
+      "recommendedValue": "/var/run/webhcat",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2632,7 +2633,7 @@ module.exports =
       "name": "oozieserver_host",
       "displayName": "Oozie Server host",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The hosts that have been assigned to run Oozie Server",
       "displayType": "masterHosts",
       "isOverridable": false,
@@ -2649,7 +2650,7 @@ module.exports =
       "name": "oozie_existing_oracle_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "Oracle",
+      "recommendedValue": "Oracle",
       "description": "Using an existing Oracle database for Oozie Metastore",
       "displayType": "masterHost",
       "isVisible": false,
@@ -2668,7 +2669,7 @@ module.exports =
       "name": "oozie_existing_postgresql_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "PostgreSQL",
+      "recommendedValue": "PostgreSQL",
       "description": "Using an existing PostgreSQL database for Oozie Metastore",
       "displayType": "masterHost",
       "isOverridable": false,
@@ -2686,7 +2687,7 @@ module.exports =
       "name": "oozie_ambari_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "MySQL",
+      "recommendedValue": "MySQL",
       "description": "MySQL will be installed by Ambari",
       "displayType": "masterHost",
       "isVisible": false,
@@ -2702,7 +2703,7 @@ module.exports =
       "name": "oozie_derby_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "Derby",
+      "recommendedValue": "Derby",
       "description": "Using current Derby database for Oozie Metastore",
       "displayType": "masterHost",
       "isVisible": false,
@@ -2719,7 +2720,7 @@ module.exports =
       "name": "oozie_existing_mysql_database",
       "displayName": "Database Type",
       "value": "",
-      "defaultValue": "MySQL",
+      "recommendedValue": "MySQL",
       "description": "Using an existing MySQL database for Oozie Metastore",
       "displayType": "masterHost",
       "isVisible": false,
@@ -2736,7 +2737,7 @@ module.exports =
       "name": "oozie_database",
       "displayName": "Oozie Database",
       "value": "",
-      "defaultValue": "New Derby Database",
+      "recommendedValue": "New Derby Database",
       "options": [
         {
           displayName: 'New Derby Database',
@@ -2779,7 +2780,7 @@ module.exports =
       "name": "oozie_data_dir",
       "displayName": "Oozie Data Dir",
       "description": "Data directory in which the Oozie DB exists",
-      "defaultValue": "",
+      "recommendedValue": "",
       "defaultDirectory": "/hadoop/oozie/data",
       "isReconfigurable": true,
       "displayType": "directory",
@@ -2794,7 +2795,8 @@ module.exports =
     {
       "id": "puppet var",
       "name": "oozie_hostname",
-      "defaultValue": "",
+      "savedValue": "",
+      "recommendedValue": "",
       "displayName": "Database Host",
       "description": "The host where the Oozie database is located",
       "isReconfigurable": true,
@@ -2811,7 +2813,7 @@ module.exports =
       "name": "oozie_existing_mysql_host",
       "displayName": "Database Host",
       "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "displayType": "host",
       "isVisible": false,
@@ -2826,7 +2828,7 @@ module.exports =
       "name": "oozie_existing_postgresql_host",
       "displayName": "Database Host",
       "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "displayType": "host",
       "isVisible": false,
@@ -2841,7 +2843,7 @@ module.exports =
       "name": "oozie_existing_oracle_host",
       "displayName": "Database Host",
       "description": "Specify the host on which the existing database is hosted",
-      "defaultValue": "",
+      "recommendedValue": "",
       "isOverridable": false,
       "displayType": "host",
       "isVisible": false,
@@ -2855,7 +2857,7 @@ module.exports =
       "id": "puppet var",
       "name": "oozie_ambari_host",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayName": "Database Host",
       "description": "Host on which the database will be created by Ambari",
       "isReconfigurable": false,
@@ -2872,7 +2874,7 @@ module.exports =
       "name": "oozie_log_dir",
       "displayName": "Oozie Log Dir",
       "description": "Directory for oozie logs",
-      "defaultValue": "/var/log/oozie",
+      "recommendedValue": "/var/log/oozie",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2886,7 +2888,7 @@ module.exports =
       "name": "oozie_pid_dir",
       "displayName": "Oozie PID Dir",
       "description": "Directory in which the pid files for oozie processes will be created",
-      "defaultValue": "/var/run/oozie",
+      "recommendedValue": "/var/run/oozie",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -2913,7 +2915,7 @@ module.exports =
       "name": "zookeeperserver_hosts",
       "displayName": "ZooKeeper Server hosts",
       "value": "",
-      "defaultValue": "",
+      "recommendedValue": "",
       "description": "The host that has been assigned to run ZooKeeper Server",
       "displayType": "masterHosts",
       "isVisible": true,
@@ -2930,7 +2932,7 @@ module.exports =
       "name": "zk_data_dir",
       "displayName": "ZooKeeper directory",
       "description": "Data directory for ZooKeeper",
-      "defaultValue": "",
+      "recommendedValue": "",
       "defaultDirectory": "/hadoop/zookeeper",
       "isReconfigurable": true,
       "displayType": "directory",
@@ -2945,7 +2947,7 @@ module.exports =
       "name": "tickTime",
       "displayName": "Length of single Tick",
       "description": "The length of a single tick in milliseconds, which is the basic time unit used by ZooKeeper",
-      "defaultValue": "2000",
+      "recommendedValue": "2000",
       "displayType": "int",
       "unit": "ms",
       "isOverridable": false,
@@ -2960,7 +2962,7 @@ module.exports =
       "name": "initLimit",
       "displayName": "Ticks to allow for sync at Init",
       "description": "Amount of time, in ticks to allow followers to connect and sync to a leader",
-      "defaultValue": "10",
+      "recommendedValue": "10",
       "displayType": "int",
       "isOverridable": false,
       "isVisible": true,
@@ -2974,7 +2976,7 @@ module.exports =
       "name": "syncLimit",
       "displayName": "Ticks to allow for sync at Runtime",
       "description": "Amount of time, in ticks to allow followers to connect",
-      "defaultValue": "5",
+      "recommendedValue": "5",
       "displayType": "int",
       "isOverridable": false,
       "isVisible": true,
@@ -2988,7 +2990,7 @@ module.exports =
       "name": "clientPort",
       "displayName": "Port for running ZK Server",
       "description": "Port for running ZooKeeper server",
-      "defaultValue": "2181",
+      "recommendedValue": "2181",
       "displayType": "int",
       "isOverridable": false,
       "isVisible": true,
@@ -3002,7 +3004,7 @@ module.exports =
       "name": "zk_log_dir",
       "displayName": "ZooKeeper Log Dir",
       "description": "Directory for ZooKeeper log files",
-      "defaultValue": "/var/log/zookeeper",
+      "recommendedValue": "/var/log/zookeeper",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -3017,7 +3019,7 @@ module.exports =
       "name": "zk_pid_dir",
       "displayName": "ZooKeeper PID Dir",
       "description": "Directory in which the pid files for zookeeper processes will be created",
-      "defaultValue": "/var/run/zookeeper",
+      "recommendedValue": "/var/run/zookeeper",
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
@@ -3033,7 +3035,7 @@ module.exports =
       "name": "ganglia_conf_dir",
       "displayName": "Ganglia conf directory",
       "description": "",
-      "defaultValue": "/etc/ganglia/hdp",
+      "recommendedValue": "/etc/ganglia/hdp",
       "isReconfigurable": false,
       "displayType": "directory",
       "isVisible": false,
@@ -3048,7 +3050,7 @@ module.exports =
       "name": "falconserver_host",
       "displayName": "Falcon Server",
       "description": "The host that has been assigned to run Falcon Server",
-      "defaultValue": "falcon",
+      "recommendedValue": "falcon",
       "displayType": "masterHost",
       "isVisible": true,
       "isRequiredByAgent": false,
@@ -3061,7 +3063,7 @@ module.exports =
       "name": "falcon_port",
       "displayName": "Falcon server port",
       "description": "Port the Falcon Server listens on",
-      "defaultValue": "15000",
+      "recommendedValue": "15000",
       "isReconfigurable": true,
       "displayType": "int",
       "isVisible": true,
@@ -3075,7 +3077,7 @@ module.exports =
       "name": "falcon_local_dir",
       "displayName": "Falcon data directory",
       "description": "Directory where Falcon data, such as activemq data, is stored",
-      "defaultValue": "/hadoop/falcon",
+      "recommendedValue": "/hadoop/falcon",
       "isReconfigurable": true,
       "displayType": "directory",
       "isVisible": true,
@@ -3089,7 +3091,7 @@ module.exports =
       "name": "falcon_store_uri",
       "displayName": "Falcon store URI",
       "description": "Directory where entity definitions are stored",
-      "defaultValue": "file:///hadoop/falcon/store",
+      "recommendedValue": "file:///hadoop/falcon/store",
       "isReconfigurable": true,
       "displayType": "string",
       "isVisible": true,
@@ -3103,7 +3105,7 @@ module.exports =
       "name": "falcon_log_dir",
       "displayName": "Falcon Log Dir",
       "description": "Directory for Falcon logs",
-      "defaultValue": "/var/log/falcon",
+      "recommendedValue": "/var/log/falcon",
       "displayType": "directory",
       "isOverridable": false,
       "isVisible": true,
@@ -3118,7 +3120,7 @@ module.exports =
       "name": "falcon_pid_dir",
       "displayName": "Falcon PID Dir",
       "description": "Directory in which the pid files for Falcon processes will be created",
-      "defaultValue": "/var/run/falcon",
+      "recommendedValue": "/var/run/falcon",
       "displayType": "directory",
       "isOverridable": false,
       "isVisible": true,
@@ -3133,7 +3135,7 @@ module.exports =
       "name": "falcon.embeddedmq",
       "displayName": "falcon.embeddedmq",
       "description": "Whether embeddedmq is enabled or not.",
-      "defaultValue": "true",
+      "recommendedValue": "true",
       "displayType": "string",
       "isOverridable": false,
       "isVisible": true,
@@ -3148,7 +3150,7 @@ module.exports =
       "name": "falcon.embeddedmq.data",
       "displayName": "falcon.embeddedmq.data",
       "description": "Directory in which embeddedmq data is stored.",
-      "defaultValue": "/hadoop/falcon/embeddedmq/data",
+      "recommendedValue": "/hadoop/falcon/embeddedmq/data",
       "displayType": "directory",
       "isOverridable": false,
       "isVisible": true,
@@ -3163,7 +3165,7 @@ module.exports =
       "name": "falcon.emeddedmq.port",
       "displayName": "falcon.emeddedmq.port",
       "description": "Port that embeddedmq will listen on.",
-      "defaultValue": "61616",
+      "recommendedValue": "61616",
       "displayType": "string",
       "isOverridable": false,
       "isVisible": true,
@@ -3179,7 +3181,7 @@ module.exports =
       "name": "storm_log_dir",
       "displayName": "storm_log_dir",
       "description": "Storm log directory",
-      "defaultValue": "/var/log/storm",
+      "recommendedValue": "/var/log/storm",
       "displayType": "directory",
       "isReconfigurable": true,
       "isVisible": true,
@@ -3193,7 +3195,7 @@ module.exports =
       "name": "storm_pid_dir",
       "displayName": "storm_pid_dir",
       "description": "Storm PID directory",
-      "defaultValue": "/var/run/storm",
+      "recommendedValue": "/var/run/storm",
       "displayType": "directory",
       "isReconfigurable": true,
       "isVisible": true,
@@ -3207,7 +3209,7 @@ module.exports =
       "name": "stormuiserver_host",
       "displayName": "Storm UI Server host",
       "description": "The host that has been assigned to run Storm UI Server",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "masterHost",
       "isReconfigurable": false,
       "isVisible": true,
@@ -3221,7 +3223,7 @@ module.exports =
       "name": "drpcserver_host",
       "displayName": "DRPC Server host",
       "description": "The host that has been assigned to run DRPC Server",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "masterHost",
       "isReconfigurable": false,
       "isVisible": true,
@@ -3235,7 +3237,7 @@ module.exports =
       "name": "supervisor_hosts",
       "displayName": "Supervisor hosts",
       "description": "The host that has been assigned to run Supervisor",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "slaveHosts",
       "isReconfigurable": false,
       "isVisible": true,
@@ -3250,7 +3252,7 @@ module.exports =
       "name": "storm_rest_api_host",
       "displayName": "Storm REST API host",
       "description": "The host that has been assigned to run Storm REST API Server",
-      "defaultValue": "",
+      "recommendedValue": "",
       "displayType": "masterHost",
       "isReconfigurable": false,
       "isVisible": true,
@@ -3266,7 +3268,7 @@ module.exports =
       "name": "hbase_conf_dir",
       "displayName": "HBase conf dir",
       "description": "",
-      "defaultValue": "/etc/hbase",
+      "recommendedValue": "/etc/hbase",
       "isRequired": false,
       "displayType": "directory",
       "isVisible": false,
@@ -3281,7 +3283,7 @@ module.exports =
       "name": "proxyuser_group",
       "displayName": "Proxy group for Hive, WebHCat, Oozie and Falcon",
       "description": "",
-      "defaultValue": "users",
+      "recommendedValue": "users",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3297,7 +3299,7 @@ module.exports =
       "name": "ganglia_runtime_dir",
       "displayName": "Ganglia runtime directory",
       "description": "",
-      "defaultValue": "/var/run/ganglia/hdp",
+      "recommendedValue": "/var/run/ganglia/hdp",
       "isReconfigurable": false,
       "displayType": "directory",
       "isVisible": false,
@@ -3311,7 +3313,7 @@ module.exports =
       "name": "hdfs_user",
       "displayName": "HDFS User",
       "description": "User to run HDFS as",
-      "defaultValue": "hdfs",
+      "recommendedValue": "hdfs",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3327,7 +3329,7 @@ module.exports =
       "name": "mapred_user",
       "displayName": "MapReduce User",
       "description": "User to run MapReduce as",
-      "defaultValue": "mapred",
+      "recommendedValue": "mapred",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3343,7 +3345,7 @@ module.exports =
       "name": "yarn_user",
       "displayName": "YARN User",
       "description": "User to run YARN as",
-      "defaultValue": "yarn",
+      "recommendedValue": "yarn",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3359,7 +3361,7 @@ module.exports =
       "name": "hbase_user",
       "displayName": "HBase User",
       "description": "User to run HBase as",
-      "defaultValue": "hbase",
+      "recommendedValue": "hbase",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3375,7 +3377,7 @@ module.exports =
       "name": "hive_user",
       "displayName": "Hive User",
       "description": "User to run Hive as",
-      "defaultValue": "hive",
+      "recommendedValue": "hive",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3391,7 +3393,7 @@ module.exports =
       "name": "hcat_user",
       "displayName": "HCat User",
       "description": "User to run HCatalog as",
-      "defaultValue": "hcat",
+      "recommendedValue": "hcat",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3407,7 +3409,7 @@ module.exports =
       "name": "webhcat_user",
       "displayName": "WebHCat User",
       "description": "User to run WebHCat as",
-      "defaultValue": "hcat",
+      "recommendedValue": "hcat",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3423,7 +3425,7 @@ module.exports =
       "name": "oozie_user",
       "displayName": "Oozie User",
       "description": "User to run Oozie as",
-      "defaultValue": "oozie",
+      "recommendedValue": "oozie",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3439,7 +3441,7 @@ module.exports =
       "name": "falcon_user",
       "displayName": "Falcon User",
       "description": "User to run Falcon as",
-      "defaultValue": "falcon",
+      "recommendedValue": "falcon",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3455,7 +3457,7 @@ module.exports =
       "name": "storm_user",
       "displayName": "Storm User",
       "description": "User to run Storm as",
-      "defaultValue": "storm",
+      "recommendedValue": "storm",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3471,7 +3473,7 @@ module.exports =
       "name": "zk_user",
       "displayName": "ZooKeeper User",
       "description": "User to run ZooKeeper as",
-      "defaultValue": "zookeeper",
+      "recommendedValue": "zookeeper",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3487,7 +3489,7 @@ module.exports =
       "name": "flume_user",
       "displayName": "Flume User",
       "description": "User to run Flume as",
-      "defaultValue": "flume",
+      "recommendedValue": "flume",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3503,7 +3505,7 @@ module.exports =
       "name": "gmetad_user",
       "displayName": "Ganglia User",
       "description": "The user used to run Ganglia",
-      "defaultValue": "nobody",
+      "recommendedValue": "nobody",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -3519,7 +3521,7 @@ module.exports =
       "name": "gmond_user",
       "displayName": "Gmond User",
       "description": "The user used to run gmond for Ganglia",
-      "defaultValue": "nobody",
+      "recommendedValue": "nobody",
       "isReconfigurable": false,
       "displayType": "advanced",
       "isOverridable": false,
@@ -3534,7 +3536,7 @@ module.exports =
       "name": "tez_user",
       "displayName": "Tez User",
       "description": "User to run Tez as",
-      "defaultValue": "tez",
+      "recommendedValue": "tez",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/mappers/configs/config_versions_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/configs/config_versions_mapper.js b/ambari-web/app/mappers/configs/config_versions_mapper.js
index aad5a3b..7ad1e37 100644
--- a/ambari-web/app/mappers/configs/config_versions_mapper.js
+++ b/ambari-web/app/mappers/configs/config_versions_mapper.js
@@ -78,8 +78,8 @@ App.configVersionsMapper = App.QuickDataMapper.create({
                 config_version_id: parsedItem.id,
                 stack_config_property_id: key  + '_' + type
               };
-              property.value = property.default_value = config.properties[key];
-              property.is_final = property.default_is_final = !!item.properties_attributes && item.properties_attributes.final[key] === "true";
+              property.value = property.recommended_value = config.properties[key];
+              property.is_final = property.recommended_is_final = !!item.properties_attributes && item.properties_attributes.final[key] === "true";
 
               properties.push(property);
               requestedProperties.push(property.id);

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/mappers/configs/stack_config_properties_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/configs/stack_config_properties_mapper.js b/ambari-web/app/mappers/configs/stack_config_properties_mapper.js
index 3d24df8..1f269c3 100644
--- a/ambari-web/app/mappers/configs/stack_config_properties_mapper.js
+++ b/ambari-web/app/mappers/configs/stack_config_properties_mapper.js
@@ -26,7 +26,7 @@ App.stackConfigPropertiesMapper = App.QuickDataMapper.create({
     file_name: 'StackConfigurations.type',
     description: 'StackConfigurations.property_description',
     value: 'StackConfigurations.property_value',
-    default_value: 'StackConfigurations.property_value',
+    recommended_value: 'StackConfigurations.property_value',
     type: 'StackConfigurations.property_type',
     service_name: 'StackConfigurations.service_name',
     stack_name: 'StackConfigurations.stack_name',
@@ -34,7 +34,7 @@ App.stackConfigPropertiesMapper = App.QuickDataMapper.create({
     property_depended_by: 'StackConfigurations.property_depended_by',
     value_attributes: 'StackConfigurations.property_value_attributes',
     is_final: 'default_is_final',
-    default_is_final: 'default_is_final',
+    recommended_is_final: 'default_is_final',
     supports_final: 'supports_final',
     widget: 'widget',
     /**** ui properties ***/
@@ -52,7 +52,7 @@ App.stackConfigPropertiesMapper = App.QuickDataMapper.create({
         stackItem.configurations.forEach(function(config) {
           var configType = App.config.getConfigTagFromFileName(config.StackConfigurations.type);
           config.id = config.StackConfigurations.property_name + '_' + configType;
-          config.default_is_final = config.StackConfigurations.final === "true";
+          config.recommended_is_final = config.StackConfigurations.final === "true";
           config.supports_final = !!configTypeInfo[configType] && configTypeInfo[configType].supports.final === "true";
           // Map from /dependencies to property_depended_by
           config.StackConfigurations.property_depended_by = [];

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index a93ab1f..410e849 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -265,6 +265,7 @@ Em.I18n.translations = {
   'common.preview': 'Preview',
   'common.scope': 'Scope',
   'common.clone': 'Clone',
+  'common.removed': 'Removed',
 
   'models.alert_instance.tiggered.verbose': "Occured on {0} <br> Checked on {1}",
   'models.alert_definition.triggered.verbose': "Occured on {0}",

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 944133b..acef483 100644
--- a/ambari-web/app/mixins/common/configs/configs_saver.js
+++ b/ambari-web/app/mixins/common/configs/configs_saver.js
@@ -312,13 +312,10 @@ App.ConfigsSaverMixin = Em.Mixin.create({
    * @method saveSiteConfigs
    */
   saveSiteConfigs: function (configs) {
-    //storedConfigs contains custom configs as well
     configs = this.setHiveHostName(configs);
     configs = this.setOozieHostName(configs);
     this.formatConfigValues(configs);
-    var mappedConfigs = App.config.excludeUnsupportedConfigs(this.get('configMapping').all(), App.Service.find().mapProperty('serviceName'));
-    var allUiConfigs = this.loadUiSideConfigs(mappedConfigs);
-    return configs.concat(allUiConfigs);
+    return configs;
   },
 
   /**
@@ -437,119 +434,6 @@ App.ConfigsSaverMixin = Em.Mixin.create({
     return configs;
   },
 
-  /*********************************** 2.2 ADD DYNAMIC CONFIGS ********************************/
-  /**
-   * return configs from the UI side
-   * @param configMapping array with configs
-   * @return {Array}
-   * @private
-   * @method loadUiSideConfigs
-   */
-  loadUiSideConfigs: function (configMapping) {
-    var uiConfig = [];
-    var configs = configMapping.filterProperty('foreignKey', null);
-    this.addDynamicProperties(configs);
-    configs.forEach(function (_config) {
-      var valueWithOverrides = this.getGlobConfigValueWithOverrides(_config.templateName, _config.value, _config.name);
-      if (valueWithOverrides !== null) {
-        uiConfig.pushObject({
-          "id": "site property",
-          "name": _config.name,
-          "value": valueWithOverrides.value,
-          "filename": _config.filename,
-          "overrides": valueWithOverrides.overrides
-        });
-      }
-    }, this);
-    return uiConfig;
-  },
-
-  /**
-   * @param configs
-   * @private
-   * @method addDynamicProperties
-   */
-  addDynamicProperties: function (configs) {
-    var allConfigs = this.get('stepConfigs').findProperty('serviceName', this.get('content.serviceName')).get('configs');
-    var templetonHiveProperty = allConfigs.someProperty('name', 'templeton.hive.properties');
-    if (!templetonHiveProperty && this.get('content.serviceName') === 'HIVE') {
-      configs.pushObject({
-        "name": "templeton.hive.properties",
-        "templateName": ["hive.metastore.uris"],
-        "foreignKey": null,
-        "value": "hive.metastore.local=false,hive.metastore.uris=<templateName[0]>,hive.metastore.sasl.enabled=yes,hive.metastore.execute.setugi=true,hive.metastore.warehouse.dir=/apps/hive/warehouse",
-        "filename": "webhcat-site.xml"
-      });
-    }
-  },
-
-  /**
-   * return config value
-   * @param templateName
-   * @param expression
-   * @param name
-   * @return {Object}
-   * example: <code>{
-   *   value: '...',
-   *   overrides: {
-   *    'value1': [h1, h2],
-   *    'value2': [h3]
-   *   }
-   * }</code>
-   * @private
-   * @method getGlobConfigValueWithOverrides
-   */
-  getGlobConfigValueWithOverrides: function (templateName, expression, name) {
-    var express = expression.match(/<(.*?)>/g);
-    var value = expression;
-    var overrideHostToValue = {};
-    if (express != null) {
-      express.forEach(function (_express) {
-        var index = parseInt(_express.match(/\[([\d]*)(?=\])/)[1]);
-        var globalObj = this.get('allConfigs').findProperty('name', templateName[index]);
-        if (globalObj) {
-          var globOverride = globalObj.overrides;
-          if (globOverride != null) {
-            for (var ov in globOverride) {
-              globOverride[ov].forEach(function (host) {
-                var replacedVal = (host in overrideHostToValue) ? overrideHostToValue[host] : expression;
-                overrideHostToValue[host] = App.config.replaceConfigValues(name, _express, replacedVal, ov);
-              }, this);
-            }
-          }
-          value = App.config.replaceConfigValues(name, _express, expression, globalObj.value);
-        } else {
-          value = null;
-        }
-      }, this);
-    }
-    return this.getValueWithOverrides(value, overrideHostToValue)
-  },
-
-  /**
-   * @param value
-   * @param overrideHostToValue
-   * @returns {{value: *, overrides: {}}}
-   * @private
-   * @method getValueWithOverrides
-   */
-  getValueWithOverrides: function (value, overrideHostToValue) {
-    var valueWithOverrides = {
-      value: value,
-      overrides: {}
-    };
-    if (!jQuery.isEmptyObject(overrideHostToValue)) {
-      for (var host in overrideHostToValue) {
-        var hostVal = overrideHostToValue[host];
-        if (!(hostVal in valueWithOverrides.overrides)) {
-          valueWithOverrides.overrides[hostVal] = [];
-        }
-        valueWithOverrides.overrides[hostVal].push(host);
-      }
-    }
-    return valueWithOverrides;
-  },
-
   /*********************************** 3. GENERATING JSON TO SAVE *****************************/
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/mixins/common/configs/enhanced_configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/common/configs/enhanced_configs.js b/ambari-web/app/mixins/common/configs/enhanced_configs.js
index 853a1ab..5d67ee7 100644
--- a/ambari-web/app/mixins/common/configs/enhanced_configs.js
+++ b/ambari-web/app/mixins/common/configs/enhanced_configs.js
@@ -33,10 +33,29 @@ App.EnhancedConfigsMixin = Em.Mixin.create({
    * @type {boolean}
    */
   hasChangedDependencies: function() {
-    return App.get('isClusterSupportsEnhancedConfigs') && this.get('_dependentConfigValues.length') > 0;
+    return App.get('isClusterSupportsEnhancedConfigs') && this.get('isControllerSupportsEnhancedConfigs') && this.get('_dependentConfigValues.length') > 0;
   }.property('_dependentConfigValues.length'),
 
   /**
+   * defines is block with changed dependent configs should be shown
+   * rely on controller
+   * @type {boolean}
+   */
+  isControllerSupportsEnhancedConfigs: function() {
+    return ['wizardStep7Controller','mainServiceInfoConfigsController'].contains(this.get('name'));
+  }.property('name'),
+
+  /**
+   * defines if initialValue of config can be used on current controller
+   * if not savedValue is used instead
+   * @type {boolean}
+   */
+  useInitialValue: function() {
+    ['wizardStep7Controller'].contains(this.get('name'));
+  }.property('name'),
+
+
+  /**
    * message fro alert box for dependent configs
    * @type {string}
    */
@@ -121,7 +140,11 @@ App.EnhancedConfigsMixin = Em.Mixin.create({
   },
 
   onConfigGroupChangeForEnhanced: function() {
-    this.clearDependentConfigs();
+    if (this.get('name') === 'mainServiceInfoConfigsController') {
+      this.clearDependentConfigs();
+    } else {
+      this.set('groupsToSave', {});
+    }
     this.get('dependentServiceNames').forEach(function(serviceName) {
       var defaultGroup = this.get('dependentConfigGroups').filterProperty('service.serviceName', serviceName).findProperty('isDefault');
       this.get('groupsToSave')[serviceName] = defaultGroup.get('name');
@@ -389,7 +412,7 @@ App.EnhancedConfigsMixin = Em.Mixin.create({
       var serviceName = service.get('serviceName');
       var stepConfig = this.get('stepConfigs').findProperty('serviceName', serviceName);
       if (stepConfig) {
-
+        var initialValue;
         var configProperties = stepConfig ? stepConfig.get('configs').filterProperty('filename', App.config.getOriginalFileName(key)) : [];
 
         var group = this.getGroupForService(serviceName);
@@ -401,14 +424,28 @@ App.EnhancedConfigsMixin = Em.Mixin.create({
           var override = (notDefaultGroup && group && cp && cp.get('overrides')) ? cp.get('overrides').findProperty('group.name', group.get('name')) : null;
 
           var value = override ? override.get('value') : cp && cp.get('value');
-          var defaultValue = override ? override.get('defaultValue') : cp && cp.get('defaultValue');
+
+          if (this.get('useInitialValue')) {
+            initialValue = override ? override.get('initialValue') : cp && cp.get('initialValue');
+          } else {
+            initialValue = override ? override.get('savedValue') : cp && cp.get('savedValue');
+          }
+
+
+          initialValue = Em.isNone(initialValue) ? value : initialValue;
           var recommendedValue = configObject[key].properties[propertyName];
 
           var isNewProperty = (!notDefaultGroup && Em.isNone(cp)) || (notDefaultGroup && group && Em.isNone(override));
 
-          if (!updateOnlyBoundaries && !parentPropertiesNames.contains(propertyName) && defaultValue != recommendedValue) { //on first initial request we don't need to change values
+          var parsedInit = parseFloat(initialValue);
+          var parsedRecommended = parseFloat(recommendedValue);
+          if (!isNaN(parsedInit) && !isNaN(parsedRecommended)) {
+            initialValue = parsedInit.toString();
+            recommendedValue = parsedRecommended.toString();
+          }
+          if (!updateOnlyBoundaries && !parentPropertiesNames.contains(propertyName) && initialValue != recommendedValue) { //on first initial request we don't need to change values
             if (dependentProperty) {
-              Em.set(dependentProperty, 'value', defaultValue);
+              Em.set(dependentProperty, 'value', initialValue);
               Em.set(dependentProperty, 'recommendedValue', recommendedValue);
               Em.set(dependentProperty, 'toDelete', false);
               Em.set(dependentProperty, 'toAdd', isNewProperty);
@@ -423,7 +460,7 @@ App.EnhancedConfigsMixin = Em.Mixin.create({
                 fileName: key,
                 propertyName: propertyName,
                 configGroup: group ? group.get('name') : service.get('displayName') + " Default",
-                value: defaultValue,
+                value: initialValue,
                 parentConfigs: parentPropertiesNames,
                 serviceName: serviceName,
                 allowChangeGroup: serviceName != this.get('content.serviceName') && !this.get('selectedConfigGroup.isDefault'),
@@ -448,21 +485,21 @@ App.EnhancedConfigsMixin = Em.Mixin.create({
            * properties that wasn't changed while recommendations
            */
 
-          if ((defaultValue == recommendedValue) || (Em.isNone(defaultValue) && Em.isNone(recommendedValue))) {
+          if ((initialValue == recommendedValue) || (Em.isNone(initialValue) && Em.isNone(recommendedValue))) {
             /** if recommended value same as default we shouldn't show it in popup **/
             if (notDefaultGroup) {
               if (override) {
                 if (override.get('isNotSaved')) {
                   cp.get('overrides').removeObject(override);
                 } else {
-                  override.set('value', defaultValue);
+                  override.set('value', initialValue);
                 }
                 if (dependentProperty) {
                   this.get('_dependentConfigValues').removeObject(dependentProperty);
                 }
               }
             } else {
-              cp.set('value', defaultValue);
+              cp.set('value', initialValue);
               if (dependentProperty) {
                 this.get('_dependentConfigValues').removeObject(dependentProperty);
               }
@@ -508,7 +545,7 @@ App.EnhancedConfigsMixin = Em.Mixin.create({
                 self.get('_dependentConfigValues').pushObject({
                   saveRecommended: true,
                   saveRecommendedDefault: true,
-                  propertyValue: cp && cp.get('defaultValue'),
+                  propertyValue: cp && (cp.get('useInitialValue') ? cp.get('initialValue') : cp.get('savedValue')),
                   toDelete: true,
                   toAdd: false,
                   isDeleted: true,
@@ -568,13 +605,13 @@ App.EnhancedConfigsMixin = Em.Mixin.create({
             name: Em.get(propertyToAdd, 'propertyName'),
             displayName: Em.get(propertyToAdd, 'propertyName'),
             value: Em.get(propertyToAdd, 'recommendedValue'),
-            defaultValue: Em.get(propertyToAdd, 'recommendedValue'),
+            recommendedValue: Em.get(propertyToAdd, 'recommendedValue'),
+            savedValue: null,
             category: 'Advanced ' + Em.get(propertyToAdd, 'fileName'),
             serviceName: stepConfigs.get('serviceName'),
             filename: App.config.getOriginalFileName(Em.get(propertyToAdd, 'fileName')),
             isNotSaved: !Em.get(propertyToAdd, 'isDeleted'),
-            isRequired: true,
-            forceUpdate: true
+            isRequired: true
           });
           stepConfigs.get('configs').pushObject(addedProperty);
           addedProperty.validate();
@@ -652,16 +689,23 @@ App.EnhancedConfigsMixin = Em.Mixin.create({
         if (propertyToUpdate) {
           var valueToSave = propertyToUpdate.saveRecommended ? propertyToUpdate.recommendedValue : propertyToUpdate.value;
           if (!selectedGroup || selectedGroup.get('isDefault')) {
-            cp.set('value', valueToSave);
-            cp.set('forceUpdate', true);
+            if (propertyToUpdate.saveRecommended || cp.get('value') == propertyToUpdate.recommendedValue) {
+              cp.set('value', valueToSave);
+            }
+            cp.set('recommendedValue', propertyToUpdate.recommendedValue);
           } else {
             if (stepConfigs.get('serviceName') !== this.get('content.serviceName')) {
-              cp.set('value', cp.get('defaultValue'));
-              cp.set('forceUpdate', true);
+              if (propertyToUpdate.saveRecommended || cp.get('value') == propertyToUpdate.recommendedValue) {
+                cp.set('value', this.get('useInitialValue') ? cp.get('initialValue') : cp.get('savedValue'));
+              }
+              cp.set('recommendedValue', propertyToUpdate.recommendedValue);
             }
             var overriddenConfig = cp.get('overrides') && cp.get('overrides').findProperty('group.name', selectedGroup.get('name'));
             if (overriddenConfig) {
-              overriddenConfig.set('value', valueToSave);
+              if (propertyToUpdate.saveRecommended || overriddenConfig.get('value') == propertyToUpdate.recommendedValue) {
+                overriddenConfig.set('value', valueToSave);
+              }
+              overriddenConfig.set('recommendedValue', propertyToUpdate.recommendedValue);
             }
           }
         }

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/models/configs/config_property.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/configs/config_property.js b/ambari-web/app/models/configs/config_property.js
index facaaf4..31ba3f6 100644
--- a/ambari-web/app/models/configs/config_property.js
+++ b/ambari-web/app/models/configs/config_property.js
@@ -36,18 +36,19 @@ App.ConfigProperty = DS.Model.extend({
    * @property {string}
    */
   fileName: DS.attr('string'),
+
   /**
    * value of property
-   * by default is same as <code>defaultValue<code>
+   * by default is same as <code>savedValue<code>
    * @property {string}
    */
   value: DS.attr('string'),
 
   /**
-   * default value of property
+   * saved value of property
    * @property {string}
    */
-  defaultValue: DS.attr('string'),
+  savedValue: DS.attr('string'),
 
   /**
    * recommended value of property
@@ -62,11 +63,17 @@ App.ConfigProperty = DS.Model.extend({
    */
   isFinal: DS.attr('boolean', {defaultValue: false}),
 
+
+  /**
+   * value saved on cluster
+   */
+  savedIsFinal: DS.attr('boolean', {defaultValue: false}),
+
   /**
-   * defines if property is final by default
+   * value recommendedFrom Server
    * @property {boolean}
    */
-  defaultIsFinal: DS.attr('boolean', {defaultValue: false}),
+  recommendedIsFinal: DS.attr('boolean', {defaultValue: false}),
 
   /**
    * link to config version
@@ -224,9 +231,9 @@ App.ConfigProperty = DS.Model.extend({
    */
   isNotDefaultValue: function () {
     return this.get('isEditable')
-      && ((this.get('defaultValue') != null && this.get('value') !== this.get('defaultValue'))
-      || (this.get('supportsFinal') && this.get('isFinal') !== this.get('defaultIsFinal')));
-  }.property('value', 'defaultValue', 'isEditable', 'isFinal', 'defaultIsFinal'),
+      && (!Em.isNone(this.get('savedValue') && this.get('value') !== this.get('savedValue'))
+      || (this.get('supportsFinal') && !Em.isNone(this.get('savedIsFinal')) && this.get('isFinal') !== this.get('savedIsFinal')));
+  }.property('value', 'savedValue', 'isEditable', 'isFinal', 'savedIsFinal'),
 
   /**
    * opposite to <code>hasErrors<code>

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/models/configs/objects/service_config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/configs/objects/service_config.js b/ambari-web/app/models/configs/objects/service_config.js
index fe4c8f0..e852c56 100644
--- a/ambari-web/app/models/configs/objects/service_config.js
+++ b/ambari-web/app/models/configs/objects/service_config.js
@@ -66,8 +66,7 @@ App.ServiceConfig = Ember.Object.extend({
     return requiredByAgent.someProperty('isNotSaved') ||
            requiredByAgent.someProperty('isNotDefaultValue') ||
            requiredByAgent.someProperty('isOverrideChanged') ||
-           this.get('configs.length') !== this.get('initConfigsLength') ||
-           (this.get('configs.length') === this.get('initConfigsLength') && this.get('configs').someProperty('defaultValue', null));
+           this.get('configs.length') !== this.get('initConfigsLength');
   }.property('configs.@each.isNotDefaultValue', 'configs.@each.isOverrideChanged', 'configs.length', 'configs.@each.isNotSaved')
 });
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 c8971ec..6abf4ac 100644
--- a/ambari-web/app/models/configs/objects/service_config_property.js
+++ b/ambari-web/app/models/configs/objects/service_config_property.js
@@ -24,9 +24,61 @@ App.ServiceConfigProperty = Em.Object.extend({
   id: '', //either 'puppet var' or 'site property'
   name: '',
   displayName: '',
+
+  /**
+   * value that is shown on IU
+   * and is changing by user
+   * @type {String|null}
+   */
   value: '',
+
+  /**
+   * value that is saved on cluster configs
+   * and stored in /api/v1/clusters/{name}/configurations
+   * @type {String|null}
+   */
+  savedValue: null,
+
+  /**
+   * value that is returned from server as recommended
+   * or stored on stack
+   * @type {String|null}
+   */
+  recommendedValue: null,
+
+  /**
+   * initial value of config. if value is saved it will be initial
+   * otherwise first recommendedValue will be initial
+   * @type {String|null}
+   */
+  initialValue: null,
+
+  /**
+   * value that is shown on IU
+   * and is changing by user
+   * @type {boolean}
+   */
+  isFinal: false,
+
+  /**
+   * value that is saved on cluster configs api
+   * @type {boolean}
+   */
+  savedIsFinal: null,
+
+  /**
+   * value that is returned from server as recommended
+   * or stored on stack
+   * @type {boolean}
+   */
+  recommendedIsFinal: null,
+
+  /**
+   * @type {boolean}
+   */
+  supportsFinal: false,
+
   retypedPassword: '',
-  defaultValue: '',
   defaultDirectory: '',
   description: '',
   displayType: 'string', // string, digits, number, directories, custom
@@ -36,12 +88,9 @@ App.ServiceConfigProperty = Em.Object.extend({
   isReconfigurable: true, // by default a config property is reconfigurable
   isEditable: true, // by default a config property is editable
   isNotEditable: Ember.computed.not('isEditable'),
-  isFinal: false,
   hideFinalIcon: function () {
     return (!this.get('isFinal'))&& this.get('isNotEditable');
   }.property('isFinal', 'isNotEditable'),
-  defaultIsFinal: false,
-  supportsFinal: false,
   isVisible: true,
   isMock: false, // mock config created created only to displaying
   isRequiredByAgent: true, // Setting it to true implies property will be stored in configuration
@@ -84,18 +133,11 @@ App.ServiceConfigProperty = Em.Object.extend({
   rowStyleClass: null, // CSS-Class to be applied on the row showing this config
   showAsTextBox: false,
 
-  forceUpdate: false,
-  /**
-   * value that is returned from server as recommended
-   * @type {String}
-   */
-  recommendedValue: null,
-
   /**
    * @type {boolean}
    */
   recommendedValueExists: function () {
-    return !Em.isNone(this.get('recommendedValue'));
+    return !Em.isNone(this.get('recommendedValue')) && this.get('isRequiredByAgent') && !this.get('cantBeUndone');
   }.property('recommendedValue'),
 
   /**
@@ -148,9 +190,13 @@ App.ServiceConfigProperty = Em.Object.extend({
       this.set('retypedPassword', this.get('value'));
     }
     if ((this.get('id') === 'puppet var') && this.get('value') == '') {
-      this.set('value', this.get('defaultValue'));
+      if (this.get('savedValue')) {
+        this.set('value', this.get('savedValue'));
+      } else if (this.get('recommendedValue')) {
+        this.set('value', this.get('recommendedValue'));
+      }
     }
-    // TODO: remove mock data
+    this.set('initialValue', this.get('value'));
   },
 
   /**
@@ -159,18 +205,18 @@ App.ServiceConfigProperty = Em.Object.extend({
    */
   isNotDefaultValue: function () {
     var value = this.get('value');
-    var defaultValue = this.get('defaultValue');
+    var savedValue = this.get('savedValue');
     var supportsFinal = this.get('supportsFinal');
     var isFinal = this.get('isFinal');
-    var defaultIsFinal = this.get('defaultIsFinal');
+    var savedIsFinal = this.get('savedIsFinal');
     // ignore precision difference for configs with type of `float` which value may ends with 0
     // e.g. between 0.4 and 0.40
     if (this.get('stackConfigProperty') && this.get('stackConfigProperty.valueAttributes.type') == 'float') {
-      defaultValue = '' + parseFloat(defaultValue);
+      savedValue = !Em.isNone(savedValue) ? '' + parseFloat(savedValue) : null;
       value = '' + parseFloat(value);
     }
-    return (defaultValue != null && value !== defaultValue) || (supportsFinal && isFinal !== defaultIsFinal);
-  }.property('value', 'defaultValue', 'isEditable', 'isFinal', 'defaultIsFinal'),
+    return (savedValue != null && value !== savedValue) || (supportsFinal && !Em.isNone(savedIsFinal) && isFinal !== savedIsFinal);
+  }.property('value', 'savedValue', 'isEditable', 'isFinal', 'savedIsFinal'),
 
   /**
    * Don't show "Undo" for hosts on Installer Step7

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/models/configs/stack_config_property.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/configs/stack_config_property.js b/ambari-web/app/models/configs/stack_config_property.js
index 5f66049..15dcfc2 100644
--- a/ambari-web/app/models/configs/stack_config_property.js
+++ b/ambari-web/app/models/configs/stack_config_property.js
@@ -62,7 +62,7 @@ App.StackConfigProperty = DS.Model.extend({
    * after cluster created is taken from cluster properties value
    * @property {string}
    */
-  defaultValue: DS.attr('string'),
+  recommendedValue: DS.attr('string'),
 
   /**
    * defines if property support usage <code>isFinal<code> flag
@@ -71,10 +71,10 @@ App.StackConfigProperty = DS.Model.extend({
   supportsFinal: DS.attr('boolean', {defaultValue: true}),
 
   /**
-   * defines the defaultValue value of <code>isFinal<code> value
+   * defines the recommended value of <code>isFinal<code> value
    * @property {boolean}
    */
-  defaultIsFinal: DS.attr('boolean', {defaultValue: false}),
+  recommendedIsFinal: DS.attr('boolean', {defaultValue: false}),
 
   /**
    * type of property
@@ -172,7 +172,7 @@ App.StackConfigProperty = DS.Model.extend({
   value: DS.attr('string'),
 
   /**
-   * config property isFinal value same as defaultIsFinal
+   * config property isFinal value same as recommendedIsFinal
    * @property {boolean}
    */
   isFinal: DS.attr('boolean', {defaultValue: false})

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/templates/common/modal_popups/dependent_configs_list.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/common/modal_popups/dependent_configs_list.hbs b/ambari-web/app/templates/common/modal_popups/dependent_configs_list.hbs
index c42d50d..d53a133 100644
--- a/ambari-web/app/templates/common/modal_popups/dependent_configs_list.hbs
+++ b/ambari-web/app/templates/common/modal_popups/dependent_configs_list.hbs
@@ -46,7 +46,13 @@
         </td>
         <td>{{config.fileName}}</td>
         <td>{{config.value}}</td>
-        <td>{{config.recommendedValue}}</td>
+        <td>
+          {{#if config.isDeleted}}
+            {{t common.removed}}
+          {{else}}
+            {{config.recommendedValue}}
+          {{/if}}
+        </td>
       </tr>
     {{/each}}
     </tbody>

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/utils/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js
index 5184051..d1df556 100644
--- a/ambari-web/app/utils/config.js
+++ b/ambari-web/app/utils/config.js
@@ -151,7 +151,6 @@ App.config = Em.Object.create({
                 "name": "content",
                 "displayName": type.endsWith('-env') ? type + ' template' : "content",
                 "value": "",
-                "defaultValue": "",
                 "description": type + " properties",
                 "displayType": "content",
                 "isOverridable": true,
@@ -231,7 +230,7 @@ App.config = Em.Object.create({
   handleSpecialProperties: function (config) {
     if (Em.get(config, 'displayType') === 'int' && /\d+m$/.test(Em.get(config, 'value') )) {
       Em.set(config, 'value', Em.get(config, 'value').slice(0, Em.get(config, 'value.length') - 1));
-      Em.set(config, 'defaultValue', Em.get(config, 'value'));
+      Em.set(config, 'savedValue', Em.get(config, 'value'));
     }
   },
 
@@ -311,7 +310,8 @@ App.config = Em.Object.create({
         var serviceConfigObj = App.ServiceConfig.create({
           name: index,
           value: value,
-          defaultValue: value,
+          savedValue: value,
+          recommendedValue: advancedConfig ? Em.get(advancedConfig, 'recommencedValue') : null,
           filename: filename,
           isUserProperty: !advancedConfig,
           isVisible: !!service,
@@ -319,7 +319,8 @@ App.config = Em.Object.create({
           isReconfigurable: true,
           isRequired: isAdvanced,
           isFinal: finalAttributes[index] === "true",
-          defaultIsFinal: finalAttributes[index] === "true",
+          savedIsFinal: finalAttributes[index] === "true",
+          recommendedIsFinal: advancedConfig ? Em.get(advancedConfig, 'recommendedIsFinal') : null,
           showLabel: true,
           serviceName: serviceName,
           belongsToService: [],
@@ -405,13 +406,13 @@ App.config = Em.Object.create({
     if (serviceConfigObj.get('displayType') == 'directories' && (serviceConfigObj.get('category') == 'DataNode' || serviceConfigObj.get('category') == 'NameNode')) {
       var dirs = serviceConfigObj.get('value').split(',').sort();
       serviceConfigObj.set('value', dirs.join(','));
-      serviceConfigObj.set('defaultValue', dirs.join(','));
+      serviceConfigObj.set('savedValue', dirs.join(','));
     }
 
     if (serviceConfigObj.get('displayType') == 'directory' && serviceConfigObj.get('category') == 'SNameNode') {
       var dirs = serviceConfigObj.get('value').split(',').sort();
       serviceConfigObj.set('value', dirs[0]);
-      serviceConfigObj.set('defaultValue', dirs[0]);
+      serviceConfigObj.set('savedValue', dirs[0]);
     }
 
     if (serviceConfigObj.get('displayType') == 'masterHosts') {
@@ -515,7 +516,8 @@ App.config = Em.Object.create({
         if (preDefined && stored) {
           configData = preDefined;
           configData.value = stored.value;
-          configData.defaultValue = stored.defaultValue;
+          configData.savedValue = stored.savedValue;
+          configData.recommendedValue = stored.recommendedValue;
           configData.overrides = stored.overrides;
           configData.displayName = stored.displayName;
           configData.name = stored.name;
@@ -565,7 +567,8 @@ App.config = Em.Object.create({
           var storedCfg = storedCfgs.findProperty('filename', cfg.filename);
           if (storedCfg) {
             configData.value = storedCfg.value;
-            configData.defaultValue = storedCfg.defaultValue;
+            configData.recommendedValue = storedCfg.recommendedValue;
+            configData.savedValue = storedCfg.savedValue;
             configData.overrides = storedCfg.overrides;
             configData.filename = storedCfg.filename;
             configData.description = storedCfg.description;
@@ -599,7 +602,7 @@ App.config = Em.Object.create({
     } else {
       configData.value = advanced ? advanced.value : configData.value;
     }
-    configData.defaultValue = configData.value;
+    configData.recommendedValue = configData.value;
     configData.filename = advanced ? advanced.filename : configData.filename;
     configData.displayName = advanced && advanced.displayName ? advanced.displayName : configData.displayName;
     configData.name = advanced && advanced.name ? advanced.name : configData.name;
@@ -645,7 +648,7 @@ App.config = Em.Object.create({
             _config.id = "site property";
             _config.category = configCategory;
             _config.displayName = _config.displayName || _config.name;
-            _config.defaultValue = _config.value;
+            _config.recommendedValue = _config.value;
             // make all advanced configs optional and populated by default
             /*
              * if (/\${.*}/.test(_config.value) || (service.serviceName !==
@@ -685,10 +688,9 @@ App.config = Em.Object.create({
    * @param allSelectedServiceNames
    * @param installedServiceNames
    * @param localDB
-   * @param recommended
    * @return {Array}
    */
-  renderConfigs: function (configs, storedConfigs, allSelectedServiceNames, installedServiceNames, localDB, recommended) {
+  renderConfigs: function (configs, storedConfigs, allSelectedServiceNames, installedServiceNames, localDB) {
     var renderedServiceConfigs = [];
     var services = [];
 
@@ -713,15 +715,15 @@ App.config = Em.Object.create({
           var hiveMetastoreUrisConfig = configs.filterProperty('filename', 'hive-site.xml').findProperty('name', 'hive.metastore.uris');
           var clientPortConfig = configs.filterProperty('filename', 'zoo.cfg.xml').findProperty('name', 'clientPort');
           var dependencies = {
-            'hive.metastore.uris': hiveMetastoreUrisConfig && hiveMetastoreUrisConfig.defaultValue,
-            'clientPort': clientPortConfig && clientPortConfig.defaultValue
+            'hive.metastore.uris': hiveMetastoreUrisConfig && hiveMetastoreUrisConfig.recommendedValue,
+            'clientPort': clientPortConfig && clientPortConfig.recommendedValue
           };
           configPropertyHelper.initialValue(serviceConfigProperty, localDB, dependencies);
         }
         if (storedConfigs && storedConfigs.filterProperty('name', _config.name).length && !!_config.filename) {
           var storedConfig = storedConfigs.filterProperty('name', _config.name).findProperty('filename', _config.filename);
           if (storedConfig) {
-            serviceConfigProperty.set('defaultValue', storedConfig.defaultValue);
+            serviceConfigProperty.set('recommendedValue', storedConfig.recommendedValue);
             serviceConfigProperty.set('value', storedConfig.value);
           }
         }
@@ -731,28 +733,6 @@ App.config = Em.Object.create({
       }, this);
       var serviceConfig = this.createServiceConfig(service.get('serviceName'));
       serviceConfig.set('showConfig', service.get('showConfig'));
-
-      // Use calculated default values for some configs
-      var recommendedDefaults = {};
-      if (!storedConfigs && service.get('configTypes')) {
-        Object.keys(service.get('configTypes')).forEach(function (type) {
-          if (!recommended || !recommended[type]) {
-            return;
-          }
-          var defaults = recommended[type].properties;
-          for (var name in defaults) {
-            var config = configsByService.findProperty('name', name);
-            if (!config) {
-              continue;
-            }
-            recommendedDefaults[name] = defaults[name];
-            config.set('value', defaults[name]);
-            config.set('defaultValue', defaults[name]);
-            config.set('recommendedValue', defaults[name]);
-            config.set('forceUpdate', true);
-          }
-        });
-      }
       serviceConfig.set('configs', configsByService);
       renderedServiceConfigs.push(serviceConfig);
     }, this);
@@ -770,9 +750,9 @@ App.config = Em.Object.create({
       break;
     }
     try {
-      if (typeof(config.defaultValue) == "string" && config.defaultValue.indexOf("{firstHost}") >= 0) {
+      if (typeof(config.recommendedValue) == "string" && config.recommendedValue.indexOf("{firstHost}") >= 0) {
         serviceConfigProperty.set('value', serviceConfigProperty.value.replace(new RegExp("{firstHost}"), firstHost));
-        serviceConfigProperty.set('defaultValue', serviceConfigProperty.defaultValue.replace(new RegExp("{firstHost}"), firstHost));
+        serviceConfigProperty.set('recommendedValue', serviceConfigProperty.recommendedValue.replace(new RegExp("{firstHost}"), firstHost));
       }
     } catch (err) {
       // Nothing to worry about here, most likely trying indexOf on a non-string
@@ -989,7 +969,7 @@ App.config = Em.Object.create({
       description: item.property_description,
       isVisible: item.isVisible,
       isFinal: item.final === "true",
-      defaultIsFinal: item.final === "true",
+      recommendedIsFinal: item.final === "true",
       filename: item.filename || fileName
     };
 
@@ -1145,7 +1125,7 @@ App.config = Em.Object.create({
     var propertyObject = {
       name: propertyName,
       displayName: propertyName,
-      defaultValue: propertyValue,
+      savedValue: propertyValue,
       value: propertyValue,
       displayType: stringUtils.isSingleLine(propertyValue) ? 'advanced' : 'multiLine',
       isSecureConfig: false,
@@ -1219,7 +1199,7 @@ App.config = Em.Object.create({
         if (Em.isNone(cFromMapped)) {
           var cFromAll = allConfigs.findProperty('name', cfk);
           if (!Em.isNone(cFromAll)) {
-            globalValue = Em.get(cFromAll, 'value') === '' ? Em.get(cFromAll, 'defaultValue') : Em.get(cFromAll, 'value');
+            globalValue = Em.get(cFromAll, 'value') === '' ? Em.get(cFromAll, 'recommendedValue') : Em.get(cFromAll, 'value');
             config.value = config.value.replace(_fkValue, globalValue);
           }
         }
@@ -1244,7 +1224,7 @@ App.config = Em.Object.create({
             config.noMatchSoSkipThisConfig = true;
           }
           else {
-            globalValue = Em.get(cFromAll, 'value') === '' ? Em.get(cFromAll, 'defaultValue') : Em.get(cFromAll, 'value');
+            globalValue = Em.get(cFromAll, 'value') === '' ? Em.get(cFromAll, 'recommendedValue') : Em.get(cFromAll, 'value');
             config._name = config.name.replace(_fkName, globalValue);
           }
         }
@@ -1305,7 +1285,8 @@ App.config = Em.Object.create({
           this.getOriginalConfigAttribute(stored, 'displayName', advancedConfigs) : App.format.normalizeName(stored.name),
         serviceName: stored.serviceName,
         value: stored.value,
-        defaultValue: stored.defaultValue,
+        savedValue: stored.savedValue,
+        recommendedValue: stored.recommendedValue,
         displayType: skipAttributeChanges.displayType.contains(stored.name) ?
           this.getOriginalConfigAttribute(stored, 'displayType', advancedConfigs) :
           (stringUtils.isSingleLine(stored.value) ? 'advanced' : 'multiLine'),
@@ -1317,7 +1298,7 @@ App.config = Em.Object.create({
         isRequired: false,
         isVisible: stored.isVisible,
         isFinal: stored.isFinal,
-        defaultIsFinal: stored.defaultIsFinal,
+        savedIsFinal: stored.savedIsFinal,
         supportsFinal: stored.supportsFinal,
         showLabel: stored.showLabel !== false,
         category: stored.category
@@ -1341,7 +1322,6 @@ App.config = Em.Object.create({
       "name": "capacity-scheduler",
       "displayName": "Capacity Scheduler",
       "value": "",
-      "defaultValue": "",
       "description": "Capacity Scheduler properties",
       "displayType": "custom",
       "isOverridable": true,
@@ -1366,22 +1346,30 @@ App.config = Em.Object.create({
    */
   fileConfigsIntoTextarea: function (configs, filename, configsToSkip) {
     var fileConfigs = configs.filterProperty('filename', filename);
-    var value = '';
-    var defaultValue = '';
+    var value = '', savedValue = '', recommendedValue = '';
     var template = this.get('complexConfigsTemplate').findProperty('filename', filename);
     var complexConfig = $.extend({}, template);
     if (complexConfig) {
       fileConfigs.forEach(function (_config) {
         if (!(configsToSkip && configsToSkip.someProperty('name', _config.name))) {
           value += _config.name + '=' + _config.value + '\n';
-          defaultValue += _config.name + '=' + _config.defaultValue + '\n';
+          if (!Em.isNone(_config.savedValue)) {
+            savedValue += _config.name + '=' + _config.savedValue + '\n';
+          }
+          if (!Em.isNone(_config.recommendedValue)) {
+            recommendedValue += _config.name + '=' + _config.recommendedValue + '\n';
+          }
         }
       }, this);
       var isFinal = fileConfigs.someProperty('isFinal', true);
+      var savedIsFinal = fileConfigs.someProperty('savedIsFinal', true);
+      var recommendedIsFinal = fileConfigs.someProperty('recommendedIsFinal', true);
       complexConfig.value = value;
-      complexConfig.defaultValue = defaultValue;
+      complexConfig.savedValue = savedValue;
+      complexConfig.recommendedValue = recommendedValue;
       complexConfig.isFinal = isFinal;
-      complexConfig.defaultIsFinal = isFinal;
+      complexConfig.savedIsFinal = savedIsFinal;
+      complexConfig.recommendedIsFinal = recommendedIsFinal;
       configs = configs.filter(function (_config) {
         return _config.filename !== filename || (configsToSkip && configsToSkip.someProperty('name', _config.name));
       });
@@ -1413,7 +1401,7 @@ App.config = Em.Object.create({
             id: configsTextarea.get('id'),
             name: name,
             value: value,
-            defaultValue: value,
+            savedValue: value,
             serviceName: configsTextarea.get('serviceName'),
             filename: filename,
             isFinal: configsTextarea.get('isFinal'),


[2/6] ambari git commit: AMBARI-11216 Refactor service-config 'defaultValue' property into 'savedValue' and 'recommendedValue'. (ababiichuk)

Posted by ab...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 07226c5..63b7290 100644
--- a/ambari-web/app/utils/configs/config_property_helper.js
+++ b/ambari-web/app/utils/configs/config_property_helper.js
@@ -36,14 +36,14 @@ module.exports = {
       case 'dfs.https.address':
       case 'dfs.namenode.https-address':
         var nnHost =  masterComponentHostsInDB.findProperty('component', 'NAMENODE').hostName;
-        this.setDefaultValue(configProperty, hostWithPort,nnHost);
+        this.setRecommendedValue(configProperty, hostWithPort,nnHost);
         break;
       case 'fs.default.name':
       case 'fs.defaultFS':
       case 'hbase.rootdir':
       case 'instance.volumes':
         var nnHost = masterComponentHostsInDB.filterProperty('component', 'NAMENODE').mapProperty('hostName');
-        this.setDefaultValue(configProperty, hostWithPrefix,'://' + nnHost);
+        this.setRecommendedValue(configProperty, hostWithPrefix,'://' + nnHost);
         break;
       case 'snamenode_host':
         // Secondary NameNode does not exist when NameNode HA is enabled
@@ -56,7 +56,7 @@ module.exports = {
       case 'dfs.namenode.secondary.http-address':
         var snnHost = masterComponentHostsInDB.findProperty('component', 'SECONDARY_NAMENODE');
         if (snnHost) {
-          this.setDefaultValue(configProperty, hostWithPort,snnHost.hostName);
+          this.setRecommendedValue(configProperty, hostWithPort,snnHost.hostName);
         }
         break;
       case 'datanode_hosts':
@@ -73,12 +73,12 @@ module.exports = {
         break;
       case 'yarn.log.server.url':
         var hsHost = masterComponentHostsInDB.filterProperty('component', 'HISTORYSERVER').mapProperty('hostName');
-        this.setDefaultValue(configProperty, hostWithPrefix,'://' + hsHost);
+        this.setRecommendedValue(configProperty, hostWithPrefix,'://' + hsHost);
         break;
       case 'mapreduce.jobhistory.webapp.address':
       case 'mapreduce.jobhistory.address':
         var hsHost = masterComponentHostsInDB.filterProperty('component', 'HISTORYSERVER').mapProperty('hostName');
-        this.setDefaultValue(configProperty, hostWithPort,hsHost);
+        this.setRecommendedValue(configProperty, hostWithPort,hsHost);
         break;
       case 'rm_host':
         configProperty.set('value', masterComponentHostsInDB.findProperty('component', 'RESOURCEMANAGER').hostName);
@@ -92,8 +92,8 @@ module.exports = {
         break;
       case 'yarn.resourcemanager.hostname':
         var rmHost = masterComponentHostsInDB.findProperty('component', 'RESOURCEMANAGER').hostName;
-        configProperty.set('defaultValue',rmHost);
-        configProperty.set('value',configProperty.get('defaultValue'));
+        configProperty.set('recommendedValue',rmHost);
+        configProperty.set('value',configProperty.get('recommendedValue'));
         break;
       case 'yarn.resourcemanager.resource-tracker.address':
       case 'yarn.resourcemanager.webapp.https.address':
@@ -102,14 +102,14 @@ module.exports = {
       case 'yarn.resourcemanager.address':
       case 'yarn.resourcemanager.admin.address':
         var rmHost = masterComponentHostsInDB.findProperty('component', 'RESOURCEMANAGER').hostName;
-        this.setDefaultValue(configProperty, hostWithPort,rmHost);
+        this.setRecommendedValue(configProperty, hostWithPort,rmHost);
         break;
       case 'yarn.timeline-service.webapp.address':
       case 'yarn.timeline-service.webapp.https.address':
       case 'yarn.timeline-service.address':
         var atsHost =  masterComponentHostsInDB.findProperty('component', 'APP_TIMELINE_SERVER');
         if (atsHost && atsHost.hostName) {
-          this.setDefaultValue(configProperty, hostWithPort,atsHost.hostName);
+          this.setRecommendedValue(configProperty, hostWithPort,atsHost.hostName);
         }
         break;
       case 'nm_hosts':
@@ -121,11 +121,11 @@ module.exports = {
       case 'mapred.job.tracker':
       case 'mapred.job.tracker.http.address':
         var jtHost = masterComponentHostsInDB.findProperty('component', 'JOBTRACKER').hostName;
-        this.setDefaultValue(configProperty, hostWithPort,jtHost);
+        this.setRecommendedValue(configProperty, hostWithPort,jtHost);
         break;
       case 'mapreduce.history.server.http.address':
         var jtHost = masterComponentHostsInDB.findProperty('component', 'HISTORYSERVER').hostName;
-        this.setDefaultValue(configProperty, hostWithPort,jtHost);
+        this.setRecommendedValue(configProperty, hostWithPort,jtHost);
         break;
       case 'tasktracker_hosts':
         configProperty.set('value', slaveComponentHostsInDB.findProperty('componentName', 'TASKTRACKER').hosts.mapProperty('hostName'));
@@ -164,7 +164,7 @@ module.exports = {
         break;
       case 'oozie.base.url':
         var oozieHost = masterComponentHostsInDB.findProperty('component', 'OOZIE_SERVER').hostName;
-        this.setDefaultValue(configProperty, hostWithPrefix,'://' + oozieHost);
+        this.setRecommendedValue(configProperty, hostWithPrefix,'://' + oozieHost);
         break;
       case 'webhcatserver_host':
         configProperty.set('value', masterComponentHostsInDB.findProperty('component', 'WEBHCAT_SERVER').hostName);
@@ -181,12 +181,12 @@ module.exports = {
       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('defaultValue', hiveServerHost);
+        configProperty.set('value', hiveServerHost).set('recommendedValue', hiveServerHost);
         break;
       case 'hive.metastore.uris':
         var hiveMSUris = this.getHiveMetastoreUris(masterComponentHostsInDB, dependencies['hive.metastore.uris']);
         if (hiveMSUris) {
-          this.setDefaultValue(configProperty, "(.*)", hiveMSUris);
+          this.setRecommendedValue(configProperty, "(.*)", hiveMSUris);
         }
         break;
       case 'oozie_existing_mysql_host':
@@ -195,7 +195,7 @@ module.exports = {
       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('defaultValue', oozieServerHost);
+        configProperty.set('value', oozieServerHost).set('recommendedValue', oozieServerHost);
         break;
       case 'storm.zookeeper.servers':
       case 'zookeeperserver_hosts':
@@ -243,14 +243,14 @@ module.exports = {
       case 'hbase.zookeeper.quorum':
         if (configProperty.get('filename') == 'hbase-site.xml') {
           var zkHosts = masterComponentHostsInDB.filterProperty('component', 'ZOOKEEPER_SERVER').mapProperty('hostName');
-          this.setDefaultValue(configProperty, "(\\w*)", zkHosts);
+          this.setRecommendedValue(configProperty, "(\\w*)", zkHosts);
         }
         break;
       case 'yarn.resourcemanager.zk-address':
         var value = masterComponentHostsInDB.findProperty('component', 'ZOOKEEPER_SERVER').hostName + ':' + dependencies.clientPort;
         configProperty.setProperties({
           value: value,
-          defaultValue: value
+          recommendedValue: value
         });
         break;
       case 'zookeeper.connect':
@@ -262,21 +262,21 @@ module.exports = {
         var zkHosts = masterComponentHostsInDB.filterProperty('component', 'ZOOKEEPER_SERVER').mapProperty('hostName');
         var zkHostPort = zkHosts;
         var regex = "\\w*:(\\d+)";   //regex to fetch the port
-        var portValue = configProperty.get('defaultValue').match(new RegExp(regex));
+        var portValue = configProperty.get('recommendedValue').match(new RegExp(regex));
         if (!portValue) return;
         if (portValue[1]) {
           for ( var i = 0; i < zkHosts.length; i++ ) {
             zkHostPort[i] = zkHosts[i] + ":" + portValue[1];
           }
         }
-        this.setDefaultValue(configProperty, "(.*)", zkHostPort);
+        this.setRecommendedValue(configProperty, "(.*)", zkHostPort);
         break;
       case 'templeton.hive.properties':
         var hiveMSUris = this.getHiveMetastoreUris(masterComponentHostsInDB, dependencies['hive.metastore.uris']).replace(',', '\\,');
         if (/\/\/localhost:/g.test(configProperty.get('value'))) {
-          configProperty.set('defaultValue', configProperty.get('value') + ',hive.metastore.execute.setugi=true');
+          configProperty.set('recommendedValue', configProperty.get('value') + ',hive.metastore.execute.setugi=true');
         }
-        this.setDefaultValue(configProperty, "(hive\\.metastore\\.uris=)([^\\,]+)", "$1" + hiveMSUris);
+        this.setRecommendedValue(configProperty, "(hive\\.metastore\\.uris=)([^\\,]+)", "$1" + hiveMSUris);
         break;
       case 'dfs.name.dir':
       case 'dfs.namenode.name.dir':
@@ -306,7 +306,7 @@ module.exports = {
         break;
       case '*.broker.url':
         var falconServerHost = masterComponentHostsInDB.findProperty('component', 'FALCON_SERVER').hostName;
-        this.setDefaultValue(configProperty, 'localhost', falconServerHost);
+        this.setRecommendedValue(configProperty, 'localhost', falconServerHost);
         break;
       case 'RANGER_HOST':
         var rangerAdminHost = masterComponentHostsInDB.findProperty('component', 'RANGER_ADMIN');
@@ -331,7 +331,7 @@ module.exports = {
         var masterComponent = masterComponentHostsInDB.findProperty('component', 'RANGER_ADMIN'),
           rangerServerHost = masterComponent ? masterComponentHostsInDB.findProperty('component', 'RANGER_ADMIN').hostName : '';
         if (rangerServerHost) {
-          configProperty.set('value', rangerServerHost).set('defaultValue', rangerServerHost);
+          configProperty.set('value', rangerServerHost).set('recommendedValue', rangerServerHost);
         }
         break;
     }
@@ -340,14 +340,14 @@ module.exports = {
   /**
    * Get hive.metastore.uris initial value
    * @param hosts
-   * @param defaultValue
+   * @param recommendedValue
    * @returns {string}
    */
-  getHiveMetastoreUris: function (hosts, defaultValue) {
+  getHiveMetastoreUris: function (hosts, recommendedValue) {
     var hiveMSHosts = hosts.filterProperty('component', 'HIVE_METASTORE').mapProperty('hostName'),
       hiveMSUris = hiveMSHosts,
       regex = "\\w*:(\\d+)",
-      portValue = defaultValue && defaultValue.match(new RegExp(regex));
+      portValue = recommendedValue && recommendedValue.match(new RegExp(regex));
 
     if (!portValue) return '';
     if (portValue[1]) {
@@ -363,12 +363,12 @@ module.exports = {
    * @param replaceWith : String
    * @param configProperty
    */
-  setDefaultValue: function(configProperty, regex, replaceWith) {
-    var defaultValue = configProperty.get('defaultValue');
+  setRecommendedValue: function(configProperty, regex, replaceWith) {
+    var recommendedValue = !Em.isNone(configProperty.get('recommendedValue')) ? configProperty.get('recommendedValue') : '';
     var re = new RegExp(regex);
-    defaultValue = defaultValue.replace(re,replaceWith);
-    configProperty.set('defaultValue',defaultValue);
-    configProperty.set('value',configProperty.get('defaultValue'));
+    recommendedValue = recommendedValue.replace(re,replaceWith);
+    configProperty.set('recommendedValue', recommendedValue);
+    configProperty.set('value', !Em.isNone(configProperty.get('recommendedValue')) ? configProperty.get('recommendedValue') : '');
   },
 
   unionAllMountPoints: function (configProperty, isOnlyFirstOneNeeded, localDB) {
@@ -543,7 +543,7 @@ module.exports = {
           mPoint += eachDrive.mountpoint + configProperty.get('defaultDirectory') + "\n";
         }
         configProperty.set('value', mPoint);
-        configProperty.set('defaultValue', mPoint);
+        configProperty.set('recommendedValue', mPoint);
       }, this);
     } else {
       var mPoint = allMountPoints[0].mountpoint;
@@ -570,7 +570,7 @@ module.exports = {
         mPoint = mPoint + configProperty.get('defaultDirectory');
       }
       configProperty.set('value', mPoint);
-      configProperty.set('defaultValue', mPoint);
+      configProperty.set('recommendedValue', mPoint);
     }
   }
 };

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/views.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js
index 6af5d2f..a684f41 100644
--- a/ambari-web/app/views.js
+++ b/ambari-web/app/views.js
@@ -30,7 +30,6 @@ require('views/common/modal_popups/alert_popup');
 require('views/common/modal_popups/confirmation_feedback_popup');
 require('views/common/modal_popups/confirmation_popup');
 require('views/common/modal_popups/hosts_table_list_popup');
-require('views/common/modal_popups/prompt_popup');
 require('views/common/modal_popups/cluster_check_popup');
 require('views/common/modal_popups/invalid_KDC_popup');
 require('views/common/modal_popups/dependent_configs_list_popup');

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/views/common/configs/service_configs_by_category_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/service_configs_by_category_view.js b/ambari-web/app/views/common/configs/service_configs_by_category_view.js
index 5cfc3e9..3df706e 100644
--- a/ambari-web/app/views/common/configs/service_configs_by_category_view.js
+++ b/ambari-web/app/views/common/configs/service_configs_by_category_view.js
@@ -188,7 +188,7 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
           var affected = self.get("newAffectedProperties").objectAt(0),
             changedProperty = self.get("controller.stepConfigs").findProperty("serviceName", affected.sourceServiceName)
               .get("configs").findProperty("name", affected.changedPropertyName);
-          changedProperty.set('value', changedProperty.get('defaultValue'));
+          changedProperty.set('value', changedProperty.get('savedValue'));
           self.get("controller").set("miscModalVisible", false);
           this.hide();
         },
@@ -252,7 +252,7 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
           return false;
         }
 
-        var searchString = config.get('defaultValue') + config.get('description') +
+        var searchString = config.get('savedValue') + config.get('description') +
           config.get('displayName') + config.get('name') + config.get('value') + config.getWithDefault('stackConfigProperty.displayName', '');
 
         if (config.get('overrides')) {
@@ -383,7 +383,8 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
       category: propertyObj.categoryName,
       id: 'site property',
       serviceName: propertyObj.serviceName,
-      defaultValue: null,
+      savedValue: null,
+      recommendedValue: null,
       supportsFinal: App.config.shouldSupportFinal(propertyObj.serviceName, propertyObj.filename),
       filename: propertyObj.filename || '',
       isUserProperty: true,
@@ -633,18 +634,18 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
   doRestoreDefaultValue: function (event) {
     var serviceConfigProperty = event.contexts[0];
     var value = serviceConfigProperty.get('value');
-    var dValue = serviceConfigProperty.get('defaultValue');
+    var savedValue = serviceConfigProperty.get('savedValue');
     var supportsFinal = serviceConfigProperty.get('supportsFinal');
-    var defaultIsFinal = serviceConfigProperty.get('defaultIsFinal');
+    var savedIsFinal = serviceConfigProperty.get('savedIsFinal');
 
-    if (dValue != null) {
+    if (savedValue != null) {
       if (serviceConfigProperty.get('displayType') === 'password') {
-        serviceConfigProperty.set('retypedPassword', dValue);
+        serviceConfigProperty.set('retypedPassword', savedValue);
       }
-      serviceConfigProperty.set('value', dValue);
+      serviceConfigProperty.set('value', savedValue);
     }
     if (supportsFinal) {
-      serviceConfigProperty.set('isFinal', defaultIsFinal);
+      serviceConfigProperty.set('isFinal', savedIsFinal);
     }
     this.configChangeObserver(serviceConfigProperty);
     Em.$('body>.tooltip').remove(); //some tooltips get frozen when their owner's DOM element is removed

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/views/common/configs/widgets/checkbox_config_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/checkbox_config_widget_view.js b/ambari-web/app/views/common/configs/widgets/checkbox_config_widget_view.js
index 03d3d3f..8ab8088 100644
--- a/ambari-web/app/views/common/configs/widgets/checkbox_config_widget_view.js
+++ b/ambari-web/app/views/common/configs/widgets/checkbox_config_widget_view.js
@@ -59,13 +59,6 @@ App.CheckboxConfigWidgetView = App.ConfigWidgetView.extend({
   restoreValue: function () {
     this.$('input[type="checkbox"]:eq(0)').checkbox('click');
     this._super();
-  },
-
-  /**
-   * @method setRecommendedValue
-   */
-  setRecommendedValue: function () {
-    this.set('config.value', this.get('config.recommendedValue'));
   }
 
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/views/common/configs/widgets/combo_config_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/combo_config_widget_view.js b/ambari-web/app/views/common/configs/widgets/combo_config_widget_view.js
index a9346ab..2cb4488 100644
--- a/ambari-web/app/views/common/configs/widgets/combo_config_widget_view.js
+++ b/ambari-web/app/views/common/configs/widgets/combo_config_widget_view.js
@@ -115,8 +115,7 @@ App.ComboConfigWidgetView = App.ConfigWidgetView.extend({
    * @method restoreValue
    */
   restoreValue: function() {
-    this._super();
-    this.setConfigValue({ context: this.get('config.defaultValue') });
+    this.setConfigValue({ context: this.get('config.savedValue') });
   },
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/views/common/configs/widgets/config_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/config_widget_view.js b/ambari-web/app/views/common/configs/widgets/config_widget_view.js
index 0b3939c..b7c1931 100644
--- a/ambari-web/app/views/common/configs/widgets/config_widget_view.js
+++ b/ambari-web/app/views/common/configs/widgets/config_widget_view.js
@@ -207,8 +207,8 @@ App.ConfigWidgetView = Em.View.extend(App.SupportsDependentConfigs, App.WidgetPo
    * @type {boolean}
    */
   valueIsChanged: function () {
-    return this.get('config.value') != this.get('config.defaultValue');
-  }.property('config.value'),
+    return !Em.isNone(this.get('config.savedValue')) && this.get('config.value') != this.get('config.savedValue');
+  }.property('config.value', 'config.savedValue'),
 
   /**
    * Enable/disable widget state
@@ -224,13 +224,31 @@ App.ConfigWidgetView = Em.View.extend(App.SupportsDependentConfigs, App.WidgetPo
    */
   restoreValue: function () {
     var self = this;
-    this.set('config.value', this.get('config.defaultValue'));
+    this.set('config.value', this.get('config.savedValue'));
     this.sendRequestRorDependentConfigs(this.get('config')).done(function() {
       self.restoreDependentConfigs(self.get('config'));
     });
 
     if (this.get('config.supportsFinal')) {
-      this.get('config').set('isFinal', this.get('config.defaultIsFinal'));
+      this.get('config').set('isFinal', this.get('config.savedIsFinal'));
+    }
+    Em.$('body > .tooltip').remove();
+  },
+
+  /**
+   * set <code>recommendedValue<code> to config
+   * and send request to change dependent configs
+   * @method setRecommendedValue
+   */
+  setRecommendedValue: function() {
+    var self = this;
+    this.set('config.value', this.get('config.recommendedValue'));
+    this.sendRequestRorDependentConfigs(this.get('config')).done(function() {
+      self.restoreDependentConfigs(self.get('config'));
+    });
+
+    if (this.get('config.supportsFinal')) {
+      this.get('config').set('isFinal', this.get('config.recommendedIsFinal'));
     }
     Em.$('body > .tooltip').remove();
   },
@@ -367,11 +385,6 @@ App.ConfigWidgetView = Em.View.extend(App.SupportsDependentConfigs, App.WidgetPo
       return true;
     }
     return this.isValueCompatibleWithWidget();
-  }.property('config.value', 'config.showAsTextBox'),
-
-  /**
-   * @method setRecommendedValue
-   */
-  setRecommendedValue: Em.required(Function)
+  }.property('config.value', 'config.showAsTextBox')
 
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/views/common/configs/widgets/directory_config_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/directory_config_widget_view.js b/ambari-web/app/views/common/configs/widgets/directory_config_widget_view.js
index be589b0..3f132ea 100644
--- a/ambari-web/app/views/common/configs/widgets/directory_config_widget_view.js
+++ b/ambari-web/app/views/common/configs/widgets/directory_config_widget_view.js
@@ -39,6 +39,7 @@ App.DirectoryConfigWidgetView = App.ConfigWidgetView.extend({
 
   didInsertElement: function() {
     this.initPopover();
+    this._super();
     this.set('config.displayType', this.get('config.stackConfigProperty.widget.type'));
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js b/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js
index 149f87d..41bc203 100644
--- a/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js
+++ b/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js
@@ -243,7 +243,7 @@ App.ListConfigWidgetView = App.ConfigWidgetView.extend({
    * @method setRecommendedValue
    */
   setRecommendedValue: function () {
-    this.set('config.value', this.get('config.recommendedValue'));
+    this._super();
     this.calculateInitVal();
   },
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/views/common/configs/widgets/plain_config_text_field.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/plain_config_text_field.js b/ambari-web/app/views/common/configs/widgets/plain_config_text_field.js
index 27d6b3b..ba62dee 100644
--- a/ambari-web/app/views/common/configs/widgets/plain_config_text_field.js
+++ b/ambari-web/app/views/common/configs/widgets/plain_config_text_field.js
@@ -28,7 +28,7 @@ App.PlainConfigTextField = Ember.View.extend(App.SupportsDependentConfigs, {
   templateName: require('templates/common/configs/widgets/plain_config_text_field'),
   valueBinding: 'serviceConfig.value',
   classNames: ['widget-config-plain-text-field'],
-  placeholderBinding: 'serviceConfig.defaultValue',
+  placeholderBinding: 'serviceConfig.savedValue',
   unit: function() {
     return Em.getWithDefault(this, 'serviceConfig.stackConfigProperty.valueAttributes.unit', false);
   }.property('serviceConfig.stackConfigProperty.valueAttributes.unit'),

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js b/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js
index e618020..2924514 100644
--- a/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js
+++ b/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js
@@ -99,8 +99,8 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({
    */
   widgetDefaultValue: function () {
     var parseFunction = this.get('mirrorValueParseFunction');
-    return parseFunction(this.widgetValueByConfigAttributes(this.get('config.defaultValue')));
-  }.property('config.defaultValue'),
+    return parseFunction(this.widgetValueByConfigAttributes(this.get('config.savedValue')));
+  }.property('config.savedValue'),
 
   /**
    * Default value of config property transformed according widget format
@@ -240,8 +240,8 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({
         }
       }
       // avoid precision during restore value
-      if (parsed == parseFunction(this.widgetValueByConfigAttributes(this.get('config.defaultValue')))) {
-        this.set('config.value', this.get('config.defaultValue'));
+      if (parsed == parseFunction(this.widgetValueByConfigAttributes(this.get('config.savedValue')))) {
+        this.set('config.value', this.get('config.savedValue'));
       }
     } else {
       this.set('isMirrorValueValid', false);
@@ -304,7 +304,7 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({
       ticksLabels.push((items.length < 5 || index % 2 === 0 || items.length - 1 == index) ? tick + ' ' + self.get('unitLabel') : '');
     });
 
-    // default-value marker should be added only if defaultValue is in range [min, max]
+    // default marker should be added only if recommendedValue is in range [min, max]
     if (recommendedValue <= this.get('maxMirrorValue') && recommendedValue >= this.get('minMirrorValue') && recommendedValue != '') {
       // process additional tick for default value if it not defined in previous computation
       if (!ticks.contains(recommendedValue)) {
@@ -410,7 +410,7 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({
   },
 
   /**
-   * Restore <code>defaultValue</code> for config
+   * Restore <code>savedValue</code> for config
    * Restore <code>mirrorValue</code> too
    * @method restoreValue
    */
@@ -423,11 +423,19 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({
    * @method setRecommendedValue
    */
   setRecommendedValue: function () {
-    this.setValue(this.get('config.recommendedValue'));
-    this.get('slider').setValue(this.get('mirrorValue'));
+    this._super();
+    this.get('slider').setValue(this.get('widgetRecommendedValue'));
   },
 
   /**
+   * Determines if config-value was changed
+   * @type {boolean}
+   */
+  valueIsChanged: function () {
+    return !Em.isNone(this.get('config.savedValue')) && this.get('parseFunction')(this.get('config.value')) != this.get('parseFunction')(this.get('config.savedValue'));
+  }.property('config.value', 'config.savedValue'),
+
+  /**
    * Run changeBoundariesOnce only once
    * @method changeBoundaries
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/views/common/configs/widgets/time_interval_spinner_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/time_interval_spinner_view.js b/ambari-web/app/views/common/configs/widgets/time_interval_spinner_view.js
index fb5879d..231bacf 100644
--- a/ambari-web/app/views/common/configs/widgets/time_interval_spinner_view.js
+++ b/ambari-web/app/views/common/configs/widgets/time_interval_spinner_view.js
@@ -45,10 +45,10 @@ App.TimeIntervalSpinnerView = App.ConfigWidgetView.extend({
   /**
    * Default property value in widget format.
    *
-   * @property defaultValue
+   * @property savedValue
    * @type {Object[]}
    */
-  defaultValue: null,
+  savedValue: null,
 
   /**
    * Maximum property value in widget format.
@@ -92,7 +92,7 @@ App.TimeIntervalSpinnerView = App.ConfigWidgetView.extend({
    * Content setter.
    * Affects to view attributes:
    *  @see propertyUnit
-   *  @see defaultValue
+   *  @see savedValue
    *  @see minValue
    *  @see maxValue
    *       content
@@ -167,7 +167,7 @@ App.TimeIntervalSpinnerView = App.ConfigWidgetView.extend({
    * @method checkModified
    */
   checkModified: function() {
-    this.set('valueIsChanged', this.configValueByWidget(this.get('content')) != parseInt(this.get('config.defaultValue')));
+    this.set('valueIsChanged', this.configValueByWidget(this.get('content')) != parseInt(this.get('config.savedValue')));
   },
 
   /**
@@ -228,7 +228,7 @@ App.TimeIntervalSpinnerView = App.ConfigWidgetView.extend({
    */
   restoreValue: function() {
     this._super();
-    this.set('content', this.generateWidgetValue(this.get('config.defaultValue')));
+    this.set('content', this.generateWidgetValue(this.get('config.savedValue')));
     this.parseIncrement();
   },
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/views/common/configs/widgets/toggle_config_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/toggle_config_widget_view.js b/ambari-web/app/views/common/configs/widgets/toggle_config_widget_view.js
index 8aec220..7f5d283 100644
--- a/ambari-web/app/views/common/configs/widgets/toggle_config_widget_view.js
+++ b/ambari-web/app/views/common/configs/widgets/toggle_config_widget_view.js
@@ -163,6 +163,7 @@ App.ToggleConfigWidgetView = App.ConfigWidgetView.extend({
    * @method setRecommendedValue
    */
   setRecommendedValue: function () {
+    this._super();
     this.setValue(this.get('config.recommendedValue'));
   },
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 6dd82b7..7263475 100644
--- a/ambari-web/app/views/common/controls_view.js
+++ b/ambari-web/app/views/common/controls_view.js
@@ -159,7 +159,7 @@ App.ServiceConfigTextField = Ember.TextField.extend(App.ServiceConfigPopoverSupp
 
   valueBinding: 'serviceConfig.value',
   classNameBindings: 'textFieldClassName',
-  placeholderBinding: 'serviceConfig.defaultValue',
+  placeholderBinding: 'serviceConfig.savedValue',
 
   keyPress: function (event) {
     if (event.keyCode == 13) {
@@ -203,7 +203,7 @@ App.ServiceConfigTextField = Ember.TextField.extend(App.ServiceConfigPopoverSupp
 App.ServiceConfigTextFieldWithUnit = Ember.View.extend(App.ServiceConfigPopoverSupport, App.SupportsDependentConfigs, {
   valueBinding: 'serviceConfig.value',
   classNames: ['input-append', 'with-unit'],
-  placeholderBinding: 'serviceConfig.defaultValue',
+  placeholderBinding: 'serviceConfig.savedValue',
 
   //Set editDone true for last edited config text field parameter
   focusOut: function () {
@@ -467,7 +467,7 @@ App.ServiceConfigRadioButtons = Ember.View.extend(App.ServiceConfigCalculateId,
         var hostNameDefault;
         var databaseNameDefault;
         var connectionUrlValue = connectionUrl.get('value');
-        var connectionUrlDefaultValue = connectionUrl.get('defaultValue');
+        var connectionUrlDefaultValue = connectionUrl.get('recommendedValue');
         var dbClassValue = dbClass.get('value');
         var serviceName = this.get('serviceConfig.serviceName');
         var isServiceInstalled = App.Service.find().someProperty('serviceName', serviceName);
@@ -478,8 +478,8 @@ App.ServiceConfigRadioButtons = Ember.View.extend(App.ServiceConfigCalculateId,
         var isNotExistingMySQLServer = this.get('serviceConfig.value') !== 'Existing MSSQL Server database with integrated authentication';
         var categoryConfigsAll = this.get('categoryConfigsAll');
         if (isServiceInstalled) {
-          hostNameDefault = this.get('hostNameProperty.defaultValue');
-          databaseNameDefault = this.get('databaseNameProperty.defaultValue');
+          hostNameDefault = this.get('hostNameProperty.recommendedValue');
+          databaseNameDefault = this.get('databaseNameProperty.recommendedValue');
         } else {
           hostNameDefault = hostName;
           databaseNameDefault = databaseName;
@@ -615,12 +615,12 @@ App.ServiceConfigRadioButtons = Ember.View.extend(App.ServiceConfigCalculateId,
             }
             this.get('categoryConfigsAll').findProperty('name', 'db_host').set('value', this.get('hostNameProperty.value'));
             sqlConnectorJAR.set('value',sqlConnectorJARValue);
-            sqlConnectorJAR.set('defaultValue',sqlConnectorJARValue);
+            sqlConnectorJAR.set('recommendedValue',sqlConnectorJARValue);
             sqlCommandInvoker.set('value', sqlCommand);
             break;
         }
         connectionUrl.set('value', connectionUrlValue);
-        connectionUrl.set('defaultValue', connectionUrlDefaultValue);
+        connectionUrl.set('recommendedValue', connectionUrlDefaultValue);
         dbClass.set('value', dbClassValue);
       }
     }
@@ -863,7 +863,7 @@ App.ServiceConfigRadioButton = Ember.Checkbox.extend({
 App.ServiceConfigComboBox = Ember.Select.extend(App.ServiceConfigPopoverSupport, App.ServiceConfigCalculateId, App.SupportsDependentConfigs, {
   contentBinding: 'serviceConfig.options',
   selectionBinding: 'serviceConfig.value',
-  placeholderBinding: 'serviceConfig.defaultValue',
+  placeholderBinding: 'serviceConfig.savedValue',
   classNames: [ 'span3' ]
 });
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/views/common/modal_popups/prompt_popup.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/modal_popups/prompt_popup.js b/ambari-web/app/views/common/modal_popups/prompt_popup.js
deleted file mode 100644
index df45489..0000000
--- a/ambari-web/app/views/common/modal_popups/prompt_popup.js
+++ /dev/null
@@ -1,54 +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');
-
-/**
- * Show prompt popup
- *
- * @param {String} text - additional text constant. Will be placed on the top of the input field
- * @param {Function} primary - "OK" button click handler
- * @param {String} defaultValue - additional text constant. Will be default value for input field
- * @param {Function} secondary
- * @return {*}
- */
-App.showPromptPopup = function (text, primary, defaultValue, secondary) {
-  if (!primary) {
-    return false;
-  }
-  return App.ModalPopup.show({
-    header: Em.I18n.t('popup.prompt.commonHeader'),
-    bodyClass: Em.View.extend({
-      templateName: require('templates/common/modal_popups/prompt_popup'),
-      text: text
-    }),
-    inputValue: defaultValue || '',
-    isInvalid: false,
-    errorMessage: '',
-    onPrimary: function () {
-      this.hide();
-      primary(this.get('inputValue'));
-    },
-    onSecondary: function () {
-      this.hide();
-      if (secondary) {
-        secondary();
-      }
-    }
-  });
-};

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/test/controllers/main/admin/highAvailability/resourceManager/step3_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/admin/highAvailability/resourceManager/step3_controller_test.js b/ambari-web/test/controllers/main/admin/highAvailability/resourceManager/step3_controller_test.js
index 21416d6..d9ed1df 100644
--- a/ambari-web/test/controllers/main/admin/highAvailability/resourceManager/step3_controller_test.js
+++ b/ambari-web/test/controllers/main/admin/highAvailability/resourceManager/step3_controller_test.js
@@ -267,22 +267,22 @@ describe('App.RMHighAvailabilityWizardStep3Controller', function () {
     it('setting new RM properties values', function () {
       controller.setDynamicConfigValues(configs, '2181', ':8088', ':8090');
       expect(configs.configs.findProperty('name', 'yarn.resourcemanager.hostname.rm1').get('value')).to.equal('h0');
-      expect(configs.configs.findProperty('name', 'yarn.resourcemanager.hostname.rm1').get('defaultValue')).to.equal('h0');
+      expect(configs.configs.findProperty('name', 'yarn.resourcemanager.hostname.rm1').get('recommendedValue')).to.equal('h0');
       expect(configs.configs.findProperty('name', 'yarn.resourcemanager.hostname.rm2').get('value')).to.equal('h1');
-      expect(configs.configs.findProperty('name', 'yarn.resourcemanager.hostname.rm2').get('defaultValue')).to.equal('h1');
+      expect(configs.configs.findProperty('name', 'yarn.resourcemanager.hostname.rm2').get('recommendedValue')).to.equal('h1');
 
       expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.address.rm1').get('value')).to.equal('h0:8088');
-      expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.address.rm1').get('defaultValue')).to.equal('h0:8088');
+      expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.address.rm1').get('recommendedValue')).to.equal('h0:8088');
       expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.address.rm2').get('value')).to.equal('h1:8088');
-      expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.address.rm2').get('defaultValue')).to.equal('h1:8088');
+      expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.address.rm2').get('recommendedValue')).to.equal('h1:8088');
 
       expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.https.address.rm1').get('value')).to.equal('h0:8090');
-      expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.https.address.rm1').get('defaultValue')).to.equal('h0:8090');
+      expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.https.address.rm1').get('recommendedValue')).to.equal('h0:8090');
       expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.https.address.rm2').get('value')).to.equal('h1:8090');
-      expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.https.address.rm2').get('defaultValue')).to.equal('h1:8090');
+      expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.https.address.rm2').get('recommendedValue')).to.equal('h1:8090');
 
       expect(configs.configs.findProperty('name', 'yarn.resourcemanager.zk-address').get('value')).to.equal('h2:2181,h3:2181');
-      expect(configs.configs.findProperty('name', 'yarn.resourcemanager.zk-address').get('defaultValue')).to.equal('h2:2181,h3:2181');
+      expect(configs.configs.findProperty('name', 'yarn.resourcemanager.zk-address').get('recommendedValue')).to.equal('h2:2181,h3:2181');
     });
 
   });

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/test/controllers/main/admin/kerberos/step4_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/admin/kerberos/step4_controller_test.js b/ambari-web/test/controllers/main/admin/kerberos/step4_controller_test.js
index b45a3a4..780bc00 100644
--- a/ambari-web/test/controllers/main/admin/kerberos/step4_controller_test.js
+++ b/ambari-web/test/controllers/main/admin/kerberos/step4_controller_test.js
@@ -180,8 +180,8 @@ describe('App.KerberosWizardStep4Controller', function() {
             getDBProperty: function() {
               return Em.A([
                 Em.Object.create({ name: 'realm', value: 'realm_value' }),
-                Em.Object.create({ name: 'admin_principal', value: 'some_val1', defaultValue: 'some_val1', filename: 'krb5-conf.xml' }),
-                Em.Object.create({ name: 'admin_password', value: 'some_password', defaultValue: 'some_password', filename: 'krb5-conf.xml' })
+                Em.Object.create({ name: 'admin_principal', value: 'some_val1', recommendedValue: 'some_val1', filename: 'krb5-conf.xml' }),
+                Em.Object.create({ name: 'admin_password', value: 'some_password', recommendedValue: 'some_password', filename: 'krb5-conf.xml' })
               ]);
             }
           })

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 7d46d9d..320edc8 100644
--- a/ambari-web/test/controllers/main/service/info/config_test.js
+++ b/ambari-web/test/controllers/main/service/info/config_test.js
@@ -606,138 +606,6 @@ describe("App.MainServiceInfoConfigsController", function () {
 
   });
 
-  describe("#addDynamicProperties", function() {
-
-    var tests = [
-      {
-        stepConfigs: [Em.Object.create({
-          serviceName: "HIVE",
-          configs: []
-        })],
-        content: Em.Object.create({
-          serviceName: "HIVE"
-        }),
-        m: "add dynamic property",
-        addDynamic: true
-      },
-      {
-        stepConfigs: [Em.Object.create({
-          serviceName: "HIVE",
-          configs: [
-            Em.Object.create({
-              name: "templeton.hive.properties"
-            })
-          ]
-        })],
-        content: Em.Object.create({
-          serviceName: "HIVE"
-        }),
-        m: "don't add dynamic property (already included)",
-        addDynamic: false
-      },
-      {
-        stepConfigs: [Em.Object.create({
-          serviceName: "HDFS",
-          configs: []
-        })],
-        content: Em.Object.create({
-          serviceName: "HDFS"
-        }),
-        m: "don't add dynamic property (wrong service)",
-        addDynamic: false
-      }
-    ];
-    var dynamicProperty = {
-      "name": "templeton.hive.properties",
-      "templateName": ["hive.metastore.uris"],
-      "foreignKey": null,
-      "value": "hive.metastore.local=false,hive.metastore.uris=<templateName[0]>,hive.metastore.sasl.enabled=yes,hive.metastore.execute.setugi=true,hive.metastore.warehouse.dir=/apps/hive/warehouse",
-      "filename": "webhcat-site.xml"
-    };
-
-
-
-    tests.forEach(function(t) {
-      it(t.m, function() {
-        mainServiceInfoConfigsController.set("content", t.content);
-        mainServiceInfoConfigsController.set("stepConfigs", t.stepConfigs);
-        var configs = [];
-        mainServiceInfoConfigsController.addDynamicProperties(configs);
-        if (t.addDynamic){
-          expect(configs.findProperty("name","templeton.hive.properties")).to.deep.eql(dynamicProperty);
-        }
-      });
-    });
-  });
-
-  describe("#loadUiSideConfigs", function () {
-
-    var t = {
-      configMapping: [
-        {
-          foreignKey: null,
-          templateName: "",
-          value: "default",
-          name: "name1",
-          filename: "filename1"
-        },
-        {
-          foreignKey: "notNull",
-          templateName: "",
-          value: "default2",
-          name: "name2",
-          filename: "filename2"
-        }
-      ],
-      configMappingf: [
-        {
-          foreignKey: null,
-          templateName: "",
-          value: "default",
-          name: "name1",
-          filename: "filename1"
-        }
-      ],
-      valueWithOverrides: {
-        "value": "default",
-        "overrides": {
-          "value1": "value1",
-          "value2": "value2"
-        }
-      },
-      uiConfigs: [
-        {
-          "id": "site property",
-          "name": "name1",
-          "value": "default",
-          "filename": "filename1",
-          "overrides": {
-            "value1": "value1",
-            "value2": "value2"
-          }
-        }
-      ]
-    };
-
-    beforeEach(function(){
-      sinon.stub(mainServiceInfoConfigsController, "addDynamicProperties", Em.K);
-      sinon.stub(mainServiceInfoConfigsController, "getGlobConfigValueWithOverrides", function () {
-        return t.valueWithOverrides
-      });
-    });
-
-    afterEach(function(){
-      mainServiceInfoConfigsController.addDynamicProperties.restore();
-      mainServiceInfoConfigsController.getGlobConfigValueWithOverrides.restore();
-    });
-
-    it("load ui config", function() {
-      expect(mainServiceInfoConfigsController.loadUiSideConfigs(t.configMapping)[0]).to.deep.equal(t.uiConfigs[0]);
-      expect(mainServiceInfoConfigsController.addDynamicProperties.calledWith(t.configMappingf)).to.equal(true);
-      expect(mainServiceInfoConfigsController.getGlobConfigValueWithOverrides.calledWith(t.configMapping[0].templateName, t.configMapping[0].value, t.configMapping[0].name)).to.equal(true);
-    });
-  });
-
   describe("#formatConfigValues", function () {
     var t = {
       configs: [

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 044ebbb..7eeaa82 100644
--- a/ambari-web/test/controllers/wizard/step7_test.js
+++ b/ambari-web/test/controllers/wizard/step7_test.js
@@ -670,10 +670,10 @@ describe('App.InstallerStep7Controller', function () {
     it('should set property to true', function () {
       var allSelectedServiceNames = ['SLIDER', 'YARN'],
         configs = [
-          {name: 'hadoop.registry.rm.enabled', value: false, defaultValue: false}
+          {name: 'hadoop.registry.rm.enabled', value: false, recommendedValue: false}
         ],
         expected = [
-          {name: 'hadoop.registry.rm.enabled', value: true, defaultValue: true, forceUpdate: true}
+          {name: 'hadoop.registry.rm.enabled', value: true, recommendedValue: true}
         ];
       installerStep7Controller.reopen({allSelectedServiceNames: allSelectedServiceNames});
       installerStep7Controller.resolveYarnConfigs(configs);
@@ -683,10 +683,10 @@ describe('App.InstallerStep7Controller', function () {
     it('should set property to false', function () {
       var allSelectedServiceNames = ['YARN'],
         configs = [
-          {name: 'hadoop.registry.rm.enabled', value: true, defaultValue: true}
+          {name: 'hadoop.registry.rm.enabled', value: true, recommendedValue: true}
         ],
         expected = [
-          {name: 'hadoop.registry.rm.enabled', value: false, defaultValue: false, forceUpdate: true}
+          {name: 'hadoop.registry.rm.enabled', value: false, recommendedValue: false}
         ];
       installerStep7Controller.reopen({allSelectedServiceNames: allSelectedServiceNames});
       installerStep7Controller.resolveYarnConfigs(configs);
@@ -696,10 +696,10 @@ describe('App.InstallerStep7Controller', function () {
     it('should skip setting property', function () {
       var allSelectedServiceNames = ['YARN', 'SLIDER'],
         configs = [
-          {name: 'hadoop.registry.rm.enabled', value: true, defaultValue: true}
+          {name: 'hadoop.registry.rm.enabled', value: true, recommendedValue: true}
         ],
         expected = [
-          {name: 'hadoop.registry.rm.enabled', value: true, defaultValue: true}
+          {name: 'hadoop.registry.rm.enabled', value: true, recommendedValue: true}
         ];
       installerStep7Controller.reopen({allSelectedServiceNames: allSelectedServiceNames});
       installerStep7Controller.resolveYarnConfigs(configs);
@@ -727,14 +727,14 @@ describe('App.InstallerStep7Controller', function () {
     it('shouldn\'t do nothing if Ganglia and Storm are installed', function () {
       var installedServiceNames = ['GANGLIA', 'STORM'],
         configs = [
-          {name: 'nimbus.childopts', value: '.jar=host=host2', defaultValue: ''},
-          {name: 'supervisor.childopts', value: '.jar=host=host2', defaultValue: ''},
-          {name: 'worker.childopts', value: '.jar=host=host2', defaultValue: ''}
+          {name: 'nimbus.childopts', value: '.jar=host=host2', recommendedValue: ''},
+          {name: 'supervisor.childopts', value: '.jar=host=host2', recommendedValue: ''},
+          {name: 'worker.childopts', value: '.jar=host=host2', recommendedValue: ''}
         ],
         expected = [
-          {name: 'nimbus.childopts', value: '.jar=host=host2', defaultValue: ''},
-          {name: 'supervisor.childopts', value: '.jar=host=host2', defaultValue: ''},
-          {name: 'worker.childopts', value: '.jar=host=host2', defaultValue: ''}
+          {name: 'nimbus.childopts', value: '.jar=host=host2', recommendedValue: ''},
+          {name: 'supervisor.childopts', value: '.jar=host=host2', recommendedValue: ''},
+          {name: 'worker.childopts', value: '.jar=host=host2', recommendedValue: ''}
         ];
       installerStep7Controller.reopen({installedServiceNames: installedServiceNames});
       installerStep7Controller.resolveStormConfigs(configs);
@@ -744,14 +744,14 @@ describe('App.InstallerStep7Controller', function () {
     it('shouldn\'t do nothing if Ganglia is in allSelectedServiceNames', function () {
       var allSelectedServiceNames = ['GANGLIA'],
         configs = [
-          {name: 'nimbus.childopts', value: '.jar=host=host2', defaultValue: ''},
-          {name: 'supervisor.childopts', value: '.jar=host=host2', defaultValue: ''},
-          {name: 'worker.childopts', value: '.jar=host=host2', defaultValue: ''}
+          {name: 'nimbus.childopts', value: '.jar=host=host2', recommendedValue: ''},
+          {name: 'supervisor.childopts', value: '.jar=host=host2', recommendedValue: ''},
+          {name: 'worker.childopts', value: '.jar=host=host2', recommendedValue: ''}
         ],
         expected = [
-          {name: 'nimbus.childopts', value: '.jar=host=host1', defaultValue: '.jar=host=host1', forceUpdate: true},
-          {name: 'supervisor.childopts', value: '.jar=host=host1', defaultValue: '.jar=host=host1', forceUpdate: true},
-          {name: 'worker.childopts', value: '.jar=host=host1', defaultValue: '.jar=host=host1', forceUpdate: true}
+          {name: 'nimbus.childopts', value: '.jar=host=host1', recommendedValue: '.jar=host=host1'},
+          {name: 'supervisor.childopts', value: '.jar=host=host1', recommendedValue: '.jar=host=host1'},
+          {name: 'worker.childopts', value: '.jar=host=host1', recommendedValue: '.jar=host=host1'}
         ];
       installerStep7Controller.reopen({allSelectedServiceNames: allSelectedServiceNames});
       installerStep7Controller.resolveStormConfigs(configs);
@@ -763,14 +763,14 @@ describe('App.InstallerStep7Controller', function () {
     it('shouldn\'t do nothing if Ganglia is in installedServiceNames (2)', function () {
       var installedServiceNames = ['GANGLIA'],
         configs = [
-          {name: 'nimbus.childopts', value: '.jar=host=host2', defaultValue: ''},
-          {name: 'supervisor.childopts', value: '.jar=host=host2', defaultValue: ''},
-          {name: 'worker.childopts', value: '.jar=host=host2', defaultValue: ''}
+          {name: 'nimbus.childopts', value: '.jar=host=host2', recommendedValue: ''},
+          {name: 'supervisor.childopts', value: '.jar=host=host2', recommendedValue: ''},
+          {name: 'worker.childopts', value: '.jar=host=host2', recommendedValue: ''}
         ],
         expected = [
-          {name: 'nimbus.childopts', value: '.jar=host=host1', defaultValue: '.jar=host=host1', forceUpdate: true},
-          {name: 'supervisor.childopts', value: '.jar=host=host1', defaultValue: '.jar=host=host1', forceUpdate: true},
-          {name: 'worker.childopts', value: '.jar=host=host1', defaultValue: '.jar=host=host1', forceUpdate: true}
+          {name: 'nimbus.childopts', value: '.jar=host=host1', recommendedValue: '.jar=host=host1'},
+          {name: 'supervisor.childopts', value: '.jar=host=host1', recommendedValue: '.jar=host=host1'},
+          {name: 'worker.childopts', value: '.jar=host=host1', recommendedValue: '.jar=host=host1'}
         ];
       installerStep7Controller.reopen({installedServiceNames: installedServiceNames});
       installerStep7Controller.resolveStormConfigs(configs);
@@ -782,14 +782,14 @@ describe('App.InstallerStep7Controller', function () {
     it('should replace host name for *.childopts properties if Ganglia is in installedServiceNames for Add Service Wizard', function () {
       var installedServiceNames = ['GANGLIA'],
         configs = [
-          {name: 'nimbus.childopts', value: '.jar=host=host2', defaultValue: ''},
-          {name: 'supervisor.childopts', value: '.jar=host=host2', defaultValue: ''},
-          {name: 'worker.childopts', value: '.jar=host=host2', defaultValue: ''}
+          {name: 'nimbus.childopts', value: '.jar=host=host2', recommendedValue: ''},
+          {name: 'supervisor.childopts', value: '.jar=host=host2', recommendedValue: ''},
+          {name: 'worker.childopts', value: '.jar=host=host2', recommendedValue: ''}
         ],
         expected = [
-          {name: 'nimbus.childopts', value: '.jar=host=realhost1', defaultValue: '.jar=host=realhost1', forceUpdate: true},
-          {name: 'supervisor.childopts', value: '.jar=host=realhost1', defaultValue: '.jar=host=realhost1', forceUpdate: true},
-          {name: 'worker.childopts', value: '.jar=host=realhost1', defaultValue: '.jar=host=realhost1', forceUpdate: true}
+          {name: 'nimbus.childopts', value: '.jar=host=realhost1', recommendedValue: '.jar=host=realhost1'},
+          {name: 'supervisor.childopts', value: '.jar=host=realhost1', recommendedValue: '.jar=host=realhost1'},
+          {name: 'worker.childopts', value: '.jar=host=realhost1', recommendedValue: '.jar=host=realhost1'}
         ];
       installerStep7Controller.reopen({
         installedServiceNames: installedServiceNames,
@@ -1691,9 +1691,9 @@ describe('App.InstallerStep7Controller', function () {
       var properties = configs.filterProperty('name', 'hbase.client.scanner.caching');
       expect(properties).to.have.length(2);
       expect(properties.findProperty('filename', 'hbase-site.xml').value).to.equal('1500');
-      expect(properties.findProperty('filename', 'hbase-site.xml').defaultValue).to.equal('1500');
+      expect(properties.findProperty('filename', 'hbase-site.xml').savedValue).to.equal('1500');
       expect(properties.findProperty('filename', 'ams-hbase-site.xml').value).to.equal('2500');
-      expect(properties.findProperty('filename', 'ams-hbase-site.xml').defaultValue).to.equal('2500');
+      expect(properties.findProperty('filename', 'ams-hbase-site.xml').savedValue).to.equal('2500');
     });
 
   });

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/test/controllers/wizard/step8_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/wizard/step8_test.js b/ambari-web/test/controllers/wizard/step8_test.js
index 432f8e0..67631a6 100644
--- a/ambari-web/test/controllers/wizard/step8_test.js
+++ b/ambari-web/test/controllers/wizard/step8_test.js
@@ -413,42 +413,6 @@ describe('App.WizardStep8Controller', function () {
     });
   });
 
-  describe('#getGlobConfigValueWithOverrides', function () {
-    it('should retun empty objects', function () {
-      expect(installerStep8Controller.getGlobConfigValueWithOverrides('','','')).to.eql({
-        "value": "",
-        "overrides": []
-      });
-    });
-    it('should retun overrides', function () {
-      var expression = '<cod index=[1]></cod index=[2]>';
-      installerStep8Controller.set('configs', Em.A([
-        Em.Object.create({
-          name:'name', overrides: Em.A([
-            Em.Object.create({
-              value: '4',
-              hosts: Em.A(['h1','h2'])
-            })
-          ])
-        })
-      ]));
-      var names = Em.A(['name0', 'name', 'name', 'ad']);
-      var result = {
-        "value": "undefinedundefined",
-        "overrides": [
-          {
-            "value": "44",
-            "hosts": [
-              "h1",
-              "h2"
-            ]
-          }
-        ]
-      };
-      expect(installerStep8Controller.getGlobConfigValueWithOverrides(names,expression,'')).to.eql(result);
-    });
-  });
-
   describe('#isConfigsChanged', function () {
     it('should return true if config changed', function () {
       var properties = Em.Object.create({
@@ -1692,25 +1656,6 @@ describe('App.WizardStep8Controller', function () {
     });
   });
 
-  describe('#addDynamicProperties', function() {
-    it('shouldn\'t add property', function() {
-      var serviceConfigProperties = [
-          {name: 'templeton.hive.properties'}
-        ],
-        configs = [];
-      installerStep8Controller.reopen({content: {serviceConfigProperties: serviceConfigProperties}});
-      installerStep8Controller.addDynamicProperties(configs);
-      expect(configs.length).to.equal(0);
-    });
-    it('should add property', function() {
-      var serviceConfigProperties = [],
-        configs = [];
-      installerStep8Controller.reopen({content: {serviceConfigProperties: serviceConfigProperties}});
-      installerStep8Controller.addDynamicProperties(configs);
-      expect(configs.length).to.equal(1);
-    });
-  });
-
   describe('#applyInstalledServicesConfigurationGroup', function() {
     beforeEach(function() {
       sinon.stub($, 'ajax', function () {
@@ -1750,45 +1695,14 @@ describe('App.WizardStep8Controller', function () {
 
   describe('#loadUiSideConfigs', function() {
     beforeEach(function() {
-      sinon.stub(installerStep8Controller, 'addDynamicProperties', Em.K);
-      sinon.stub(installerStep8Controller, 'getGlobConfigValueWithOverrides', function(t, v, n) {
-        return {
-          value: v,
-          overrides: []
-        }
-      });
       sinon.stub(App.config, 'setConfigValue', Em.K);
     });
     afterEach(function() {
-      installerStep8Controller.addDynamicProperties.restore();
-      installerStep8Controller.getGlobConfigValueWithOverrides.restore();
       App.config.setConfigValue.restore();
     });
 
-    it('all configs witohut foreignKey', function() {
+    it('configs with foreignKey', function() {
       var configMapping = [
-        {foreignKey: null, templateName: 't1', value: 'v1', name: 'c1', filename: 'f1'},
-        {foreignKey: null, templateName: 't2', value: 'v2', name: 'c2', filename: 'f2'},
-        {foreignKey: null, templateName: 't3', value: 'v3', name: 'c3', filename: 'f2'},
-        {foreignKey: null, templateName: 't4', value: 'v4', name: 'c4', filename: 'f1'}
-      ];
-      var uiConfigs = installerStep8Controller.loadUiSideConfigs(configMapping);
-      expect(uiConfigs.length).to.equal(configMapping.length);
-      expect(uiConfigs.everyProperty('id', 'site property')).to.be.true;
-      uiConfigs.forEach(function(c, index) {
-        expect(c.overrides).to.be.an.array;
-        expect(c.value).to.equal(configMapping[index].value);
-        expect(c.name).to.equal(configMapping[index].name);
-        expect(c.filename).to.equal(configMapping[index].filename);
-      });
-    });
-
-    it('some configs witohut foreignKey', function() {
-      var configMapping = [
-        {foreignKey: null, templateName: 't1', value: 'v1', name: 'c1', filename: 'f1'},
-        {foreignKey: null, templateName: 't2', value: 'v2', name: 'c2', filename: 'f2'},
-        {foreignKey: null, templateName: 't3', value: 'v3', name: 'c3', filename: 'f2'},
-        {foreignKey: null, templateName: 't4', value: 'v4', name: 'c4', filename: 'f1'},
         {foreignKey: 'fk1', templateName: 't5', value: 'v5', name: 'c5', filename: 'f1'},
         {foreignKey: 'fk2', templateName: 't6', value: 'v6', name: 'c6', filename: 'f1'},
         {foreignKey: 'fk3', templateName: 't7', value: 'v7', name: 'c7', filename: 'f2'},
@@ -2187,52 +2101,6 @@ describe('App.WizardStep8Controller', function () {
     });
   });
 
-  describe("#addDynamicProperties", function() {
-
-    var tests = [
-        {
-          content: Em.Object.create({
-            serviceConfigProperties: [
-              Em.Object.create({
-                configs: []
-              })
-            ]
-          }),
-          m: 'add dynamic property',
-          addDynamic: true
-        },
-        {
-          content: Em.Object.create({
-            serviceConfigProperties: [
-              Em.Object.create({
-                name: 'templeton.hive.properties'
-              })
-            ]
-          }),
-          m: 'don\'t add dynamic property (already included)',
-          addDynamic: false
-        }
-      ],
-      dynamicProperty = {
-        name: 'templeton.hive.properties',
-        templateName: ['hive.metastore.uris'],
-        foreignKey: null,
-        value: 'hive.metastore.local=false,hive.metastore.uris=<templateName[0]>,hive.metastore.sasl.enabled=yes,hive.metastore.execute.setugi=true,hive.metastore.warehouse.dir=/apps/hive/warehouse',
-        filename: 'webhcat-site.xml'
-      };
-
-    tests.forEach(function(t) {
-      it(t.m, function() {
-        installerStep8Controller.set('content', t.content);
-        var configs = [];
-        installerStep8Controller.addDynamicProperties(configs);
-        if (t.addDynamic){
-          expect(configs.findProperty('name', 'templeton.hive.properties')).to.deep.eql(dynamicProperty);
-        }
-      });
-    });
-  });
-
   describe('#isAllClusterDeleteRequestsCompleted', function () {
     it('should depend on completed cluster delete requests number', function () {
       installerStep8Controller.setProperties({

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/test/controllers/wizard_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/wizard_test.js b/ambari-web/test/controllers/wizard_test.js
index 9b9c06f..a94e31a 100644
--- a/ambari-web/test/controllers/wizard_test.js
+++ b/ambari-web/test/controllers/wizard_test.js
@@ -186,7 +186,7 @@ describe('App.WizardController', function () {
             id: 'id',
             name: 'name',
             value: 'value',
-            defaultValue: 'defaultValue',
+            recommendedValue: 'recommendedValue',
             description: 'description',
             serviceName: 'serviceName',
             domain: 'domain',

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/test/data/HDP2/site_properties_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/data/HDP2/site_properties_test.js b/ambari-web/test/data/HDP2/site_properties_test.js
index 0336f92..ced9376 100644
--- a/ambari-web/test/data/HDP2/site_properties_test.js
+++ b/ambari-web/test/data/HDP2/site_properties_test.js
@@ -29,13 +29,13 @@ describe('hdp2SiteProperties', function () {
     });
   });
 
-  // No site properties should have value and defaultValue defined on client side.
+  // No site properties should have value and recommendedValue defined on client side.
   // These should be always retrieved from server.
 
     siteProperties.forEach(function(siteProperty){
-      it('Check value and defaultValue attribute of "' + siteProperty.name + '"' + '. It should not be defined ', function () {
+      it('Check value and recommendedValue attribute of "' + siteProperty.name + '"' + '. It should not be defined ', function () {
         expect(siteProperty.value).to.equal(undefined);
-        expect(siteProperty.defaultValue).to.equal(undefined);
+        expect(siteProperty.recommendedValue).to.equal(undefined);
     });
   });
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/test/mappers/configs/config_versions_mapper_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/mappers/configs/config_versions_mapper_test.js b/ambari-web/test/mappers/configs/config_versions_mapper_test.js
index 4e590fe..bf0b145 100644
--- a/ambari-web/test/mappers/configs/config_versions_mapper_test.js
+++ b/ambari-web/test/mappers/configs/config_versions_mapper_test.js
@@ -118,9 +118,9 @@ describe('App.configVersionsMapper', function () {
 
       //CONFIG_PROPERTY
       expect(App.ConfigProperty.find('dtnode_heapsize_hadoop-env_4').get('value')).to.eql('1026m');
-      expect(App.ConfigProperty.find('dtnode_heapsize_hadoop-env_4').get('defaultValue')).to.equal('1026m');
+      expect(App.ConfigProperty.find('dtnode_heapsize_hadoop-env_4').get('recommendedValue')).to.equal('1026m');
       expect(App.ConfigProperty.find('dtnode_heapsize_hadoop-env_4').get('isFinal')).to.be.false;
-      expect(App.ConfigProperty.find('dtnode_heapsize_hadoop-env_4').get('defaultIsFinal')).to.be.false;
+      expect(App.ConfigProperty.find('dtnode_heapsize_hadoop-env_4').get('recommendedIsFinal')).to.be.false;
     });
   });
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/test/mappers/configs/stack_config_properties_mapper_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/mappers/configs/stack_config_properties_mapper_test.js b/ambari-web/test/mappers/configs/stack_config_properties_mapper_test.js
index 416a14f..8fcb30e 100644
--- a/ambari-web/test/mappers/configs/stack_config_properties_mapper_test.js
+++ b/ambari-web/test/mappers/configs/stack_config_properties_mapper_test.js
@@ -174,8 +174,8 @@ describe('App.stackConfigPropertiesMapper', function () {
       expect(App.StackConfigProperty.find('p1_site1').get('name')).to.eql('p1');
       expect(App.StackConfigProperty.find('p1_site1').get('displayName')).to.eql('P1');
       expect(App.StackConfigProperty.find('p1_site1').get('description')).to.eql('desc1');
-      expect(App.StackConfigProperty.find('p1_site1').get('defaultValue')).to.eql('v1');
-      expect(App.StackConfigProperty.find('p1_site1').get('defaultIsFinal')).to.be.false;
+      expect(App.StackConfigProperty.find('p1_site1').get('recommendedValue')).to.eql('v1');
+      expect(App.StackConfigProperty.find('p1_site1').get('recommendedIsFinal')).to.be.false;
       expect(App.StackConfigProperty.find('p1_site1').get('serviceName')).to.eql('s1');
       expect(App.StackConfigProperty.find('p1_site1').get('stackName')).to.eql('HDP');
       expect(App.StackConfigProperty.find('p1_site1').get('stackVersion')).to.eql('2.2');

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 0136f9b..6c50628 100644
--- a/ambari-web/test/mock_data_setup/configs_mock_data.js
+++ b/ambari-web/test/mock_data_setup/configs_mock_data.js
@@ -226,7 +226,7 @@ module.exports = {
           "c6401.ambari.apache.org",
           "c6402.ambari.apache.org"
         ],
-        "defaultValue":"['c6401.ambari.apache.org','c6402.ambari.apache.org']",
+        "recommendedValue":"['c6401.ambari.apache.org','c6402.ambari.apache.org']",
         "filename":"storm-site.xml",
         "isUserProperty":false,
         "isOverridable":false,
@@ -243,7 +243,7 @@ module.exports = {
       {
         "name":"single_line_property",
         "value":"value",
-        "defaultValue":"value",
+        "recommendedValue":"value",
         "filename":"storm-site.xml",
         "isUserProperty":true,
         "isOverridable":true,
@@ -257,7 +257,7 @@ module.exports = {
       {
         "name":"multi_line_property",
         "value":"value \n value",
-        "defaultValue":"value \n value",
+        "recommendedValue":"value \n value",
         "filename":"storm-site.xml",
         "isUserProperty":true,
         "isOverridable":true,
@@ -271,7 +271,7 @@ module.exports = {
       {
         "name":"nonexistent_property",
         "value":"some value",
-        "defaultValue":"some value",
+        "recommendedValue":"some value",
         "filename":"storm-env.xml",
         "isUserProperty":false,
         "isOverridable":true,
@@ -285,7 +285,7 @@ module.exports = {
       {
         "name":"dfs.datanode.data.dir",
         "value":"/a,/b",
-        "defaultValue":"/a,/b",
+        "recommendedValue":"/a,/b",
         "filename":"hdfs-site.xml",
         "isUserProperty":false,
         "isOverridable":true,
@@ -305,7 +305,7 @@ module.exports = {
       {
         "name":"content",
         "value":"custom mock property",
-        "defaultValue":"custom mock property",
+        "recommendedValue":"custom mock property",
         "filename":"hdfs-site.xml",
         "isUserProperty":false,
         "isOverridable":true,
@@ -325,7 +325,7 @@ module.exports = {
       {
         "name":"content",
         "value":"hdfs log4j content",
-        "defaultValue":"hdfs log4j content",
+        "recommendedValue":"hdfs log4j content",
         "filename":"hdfs-log4j.xml",
         "isUserProperty":false,
         "isOverridable":true,
@@ -345,7 +345,7 @@ module.exports = {
       {
         "name":"storm_log_dir",
         "value":"/var/log/storm",
-        "defaultValue":"/var/log/storm",
+        "recommendedValue":"/var/log/storm",
         "filename":"storm-env.xml",
         "isUserProperty":false,
         "isOverridable":true,

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/test/models/configs/config_property_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/models/configs/config_property_test.js b/ambari-web/test/models/configs/config_property_test.js
index 84cae0b..5faad7a 100644
--- a/ambari-web/test/models/configs/config_property_test.js
+++ b/ambari-web/test/models/configs/config_property_test.js
@@ -43,7 +43,7 @@ describe('App.ConfigProperty', function () {
     });
   });
 
-  describe('#isNotDefaultValue', function () {
+  describe.skip('#isNotDefaultValue', function () {
     var tests = [
       { isEditable: false, value: 1, defaultValue: 2, supportsFinal: true, isFinal: true, defaultIsFinal: false, isNotDefaultValue: false },
       { isEditable: true, value: 1, defaultValue: 1, supportsFinal: false, isFinal: true, defaultIsFinal: true, isNotDefaultValue: false },

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 a71e838..a364810 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
@@ -185,7 +185,7 @@ var serviceConfigProperty,
       initial: {
         id: 'puppet var',
         value: '',
-        defaultValue: 'default'
+        savedValue: 'default'
       },
       result: {
         value: 'default'
@@ -197,17 +197,17 @@ var serviceConfigProperty,
       isEditable: false
     },
     {
-      defaultValue: null
+      savedValue: null
     },
     {
       value: 'value',
-      defaultValue: 'value'
+      savedValue: 'value'
     }
   ],
   notDefaultTrueData = {
     isEditable: true,
     value: 'value',
-    defaultValue: 'default'
+    savedValue: 'default'
   },
   types = ['masterHost', 'slaveHosts', 'masterHosts', 'slaveHost', 'radio button'],
   classCases = [

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 ccc6931..ae85b15 100644
--- a/ambari-web/test/utils/config_test.js
+++ b/ambari-web/test/utils/config_test.js
@@ -66,11 +66,11 @@ describe('App.config', function () {
       config = {
         displayType: 'int',
         value: '1024m',
-        defaultValue: '1024m'
+        savedValue: '1024m'
       };
       App.config.handleSpecialProperties(config);
       expect(config.value).to.equal('1024');
-      expect(config.defaultValue).to.equal('1024');
+      expect(config.savedValue).to.equal('1024');
     });
   });
 
@@ -80,13 +80,13 @@ describe('App.config', function () {
       {
         name: 'config1',
         value: 'value1',
-        defaultValue: 'value1',
+        recommendedValue: 'value1',
         filename: 'capacity-scheduler.xml'
       },
       {
         name: 'config2',
         value: 'value2',
-        defaultValue: 'value2',
+        recommendedValue: 'value2',
         filename: 'capacity-scheduler.xml'
       }
     ];
@@ -94,19 +94,19 @@ describe('App.config', function () {
       var result = App.config.fileConfigsIntoTextarea.call(App.config, configs, filename);
       expect(result.length).to.equal(1);
       expect(result[0].value).to.equal('config1=value1\nconfig2=value2\n');
-      expect(result[0].defaultValue).to.equal('config1=value1\nconfig2=value2\n');
+      expect(result[0].recommendedValue).to.equal('config1=value1\nconfig2=value2\n');
     });
     it('three config into textarea', function () {
       configs.push({
         name: 'config3',
         value: 'value3',
-        defaultValue: 'value3',
+        recommendedValue: 'value3',
         filename: 'capacity-scheduler.xml'
       });
       var result = App.config.fileConfigsIntoTextarea.call(App.config, configs, filename);
       expect(result.length).to.equal(1);
       expect(result[0].value).to.equal('config1=value1\nconfig2=value2\nconfig3=value3\n');
-      expect(result[0].defaultValue).to.equal('config1=value1\nconfig2=value2\nconfig3=value3\n');
+      expect(result[0].recommendedValue).to.equal('config1=value1\nconfig2=value2\nconfig3=value3\n');
     });
     it('one of three configs has different filename', function () {
       configs[1].filename = 'another filename';
@@ -114,7 +114,7 @@ describe('App.config', function () {
       //result contains two configs: one with different filename and one textarea config
       expect(result.length).to.equal(2);
       expect(result[1].value).to.equal('config1=value1\nconfig3=value3\n');
-      expect(result[1].defaultValue).to.equal('config1=value1\nconfig3=value3\n');
+      expect(result[1].recommendedValue).to.equal('config1=value1\nconfig3=value3\n');
     });
     it('none configs into empty textarea', function () {
       filename = 'capacity-scheduler.xml';
@@ -122,34 +122,34 @@ describe('App.config', function () {
       var result = App.config.fileConfigsIntoTextarea.call(App.config, configs, filename);
       expect(result.length).to.equal(1);
       expect(result[0].value).to.equal('');
-      expect(result[0].defaultValue).to.equal('');
+      expect(result[0].recommendedValue).to.equal('');
     });
     it("filename has configs that shouldn't be included in textarea", function () {
       var configs = [
         {
           name: 'config1',
           value: 'value1',
-          defaultValue: 'value1',
+          recommendedValue: 'value1',
           filename: filename
         },
         {
           name: 'config2',
           value: 'value2',
-          defaultValue: 'value2',
+          recommendedValue: 'value2',
           filename: filename
         }
       ];
       var cfg = {
         name: 'config3',
         value: 'value3',
-        defaultValue: 'value3',
+        recommendedValue: 'value3',
         filename: filename
       };
       configs.push(cfg);
       var result = App.config.fileConfigsIntoTextarea.call(App.config, configs, filename, [cfg]);
       expect(result.length).to.equal(2);
       expect(result[1].value).to.equal('config1=value1\nconfig2=value2\n');
-      expect(result[1].defaultValue).to.equal('config1=value1\nconfig2=value2\n');
+      expect(result[1].recommendedValue).to.equal('config1=value1\nconfig2=value2\n');
       expect(configs.findProperty('name', 'config3')).to.eql(cfg);
     });
   });
@@ -409,7 +409,7 @@ describe('App.config', function () {
     });
 
     it('bigtop should use New PostgreSQL Database as its default hive metastore database', function () {
-      expect(App.config.get('preDefinedSiteProperties').findProperty('defaultValue', 'New PostgreSQL Database')).to.be.ok;
+      expect(App.config.get('preDefinedSiteProperties').findProperty('recommendedValue', 'New PostgreSQL Database')).to.be.ok;
     });
 
     after(function() {
@@ -423,7 +423,7 @@ describe('App.config', function () {
     });
 
     it('HDP2 should use New MySQL Database as its default hive metastore database', function () {
-      expect(App.config.get('preDefinedSiteProperties').findProperty('defaultValue', 'New MySQL Database')).to.be.ok;
+      expect(App.config.get('preDefinedSiteProperties').findProperty('recommendedValue', 'New MySQL Database')).to.be.ok;
     });
 
     after(function() {
@@ -901,12 +901,12 @@ describe('App.config', function () {
             name: 'prop_name0',
             serviceName: 's0',
             value: 'v0',
-            defaultValue: 'dv0',
+            savedValue: 'dv0',
             filename: 'fn0.xml',
             overrides: null,
             isVisible: false,
             isFinal: true,
-            defaultIsFinal: false,
+            savedIsFinal: false,
             supportsFinal: true,
             category: 'c0'
           },
@@ -916,7 +916,7 @@ describe('App.config', function () {
             displayName: 'Prop Name0',
             serviceName: 's0',
             value: 'v0',
-            defaultValue: 'dv0',
+            savedValue: 'dv0',
             displayType: 'advanced',
             filename: 'fn0.xml',
             isUserProperty: false,
@@ -926,7 +926,7 @@ describe('App.config', function () {
             isRequired: false,
             isVisible: false,
             isFinal: true,
-            defaultIsFinal: false,
+            savedIsFinal: false,
             supportsFinal: true,
             showLabel: true,
             category: 'c0'
@@ -1129,7 +1129,7 @@ describe('App.config', function () {
             {
               name: 'falcon_user',
               value: '',
-              defaultValue: 'fu'
+              recommendedValue: 'fu'
             }
           ],
           m: 'in all, default value used',

http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 d66f402..1e48c54 100644
--- a/ambari-web/test/utils/configs/config_property_helper_test.js
+++ b/ambari-web/test/utils/configs/config_property_helper_test.js
@@ -85,11 +85,11 @@ describe('configPropertyHelper', function () {
     serviceConfigProperty = App.ServiceConfigProperty.create();
   });
 
-  describe('#setDefaultValue', function () {
-    it('should change the default value', function () {
-      serviceConfigProperty.set('defaultValue', 'value0');
-      configPropertyHelper.setDefaultValue(serviceConfigProperty, /\d/, '1');
-      expect(serviceConfigProperty.get('defaultValue')).to.equal('value1');
+  describe('#setRecommendedValue', function () {
+    it('should change the recommended value', function () {
+      serviceConfigProperty.set('recommendedValue', 'value0');
+      configPropertyHelper.setRecommendedValue(serviceConfigProperty, /\d/, '1');
+      expect(serviceConfigProperty.get('recommendedValue')).to.equal('value1');
     });
   });
 
@@ -194,13 +194,13 @@ describe('configPropertyHelper', function () {
         {
           filename: 'hbase-site.xml',
           value: 'host0,host1',
-          defaultValue: 'host0,host1',
+          recommendedValue: 'host0,host1',
           title: 'should set ZooKeeper Server hostnames'
         },
         {
           filename: 'ams-hbase-site.xml',
           value: 'localhost',
-          defaultValue: '',
+          recommendedValue: null,
           title: 'should ignore ZooKeeper Server hostnames'
         }
       ],
@@ -272,7 +272,7 @@ describe('configPropertyHelper', function () {
         dependencies: {
           'hive.metastore.uris': 'thrift://localhost:9083'
         },
-        defaultValue: 'thrift://localhost:9083',
+        recommendedValue: 'thrift://localhost:9083',
         value: 'thrift://h0:9083,thrift://h1:9083',
         title: 'comma separated list of Metastore hosts with thrift prefix and port'
       },
@@ -292,7 +292,7 @@ describe('configPropertyHelper', function () {
         dependencies: {
           'hive.metastore.uris': 'thrift://localhost:9083'
         },
-        defaultValue: 'hive.metastore.local=false,hive.metastore.uris=thrift://localhost:9933,hive.metastore.sasl.enabled=false',
+        recommendedValue: 'hive.metastore.local=false,hive.metastore.uris=thrift://localhost:9933,hive.metastore.sasl.enabled=false',
         value: 'hive.metastore.local=false,hive.metastore.uris=thrift://h0:9083\\,thrift://h1:9083,hive.metastore.sasl.enabled=false,hive.metastore.execute.setugi=true',
         title: 'should add relevant hive.metastore.uris value'
       },
@@ -312,7 +312,7 @@ describe('configPropertyHelper', function () {
         dependencies: {
           clientPort: '2182'
         },
-        defaultValue: 'localhost:2181',
+        recommendedValue: 'localhost:2181',
         value: 'h0:2182',
         title: 'should add ZK host and port dynamically'
       },
@@ -399,7 +399,7 @@ describe('configPropertyHelper', function () {
           }
         });
         expect(serviceConfigProperty.get('value')).to.equal(item.value);
-        expect(serviceConfigProperty.get('defaultValue')).to.equal(item.defaultValue);
+        expect(serviceConfigProperty.get('recommendedValue')).to.equal(item.recommendedValue);
       });
     });
 
@@ -435,32 +435,32 @@ describe('configPropertyHelper', function () {
     it(cases['hive.metastore.uris'].title, function () {
       serviceConfigProperty.setProperties({
         name: 'hive.metastore.uris',
-        defaultValue: cases['hive.metastore.uris'].defaultValue
+        recommendedValue: cases['hive.metastore.uris'].recommendedValue
       });
       configPropertyHelper.initialValue(serviceConfigProperty, cases['hive.metastore.uris'].localDB, cases['hive.metastore.uris'].dependencies);
       expect(serviceConfigProperty.get('value')).to.equal(cases['hive.metastore.uris'].value);
-      expect(serviceConfigProperty.get('defaultValue')).to.equal(cases['hive.metastore.uris'].value);
+      expect(serviceConfigProperty.get('recommendedValue')).to.equal(cases['hive.metastore.uris'].value);
     });
 
     it(cases['templeton.hive.properties'].title, function () {
       serviceConfigProperty.setProperties({
         name: 'templeton.hive.properties',
-        defaultValue: cases['templeton.hive.properties'].defaultValue,
-        value: cases['templeton.hive.properties'].defaultValue
+        recommendedValue: cases['templeton.hive.properties'].recommendedValue,
+        value: cases['templeton.hive.properties'].recommendedValue
       });
       configPropertyHelper.initialValue(serviceConfigProperty, cases['templeton.hive.properties'].localDB, cases['templeton.hive.properties'].dependencies);
       expect(serviceConfigProperty.get('value')).to.equal(cases['templeton.hive.properties'].value);
-      expect(serviceConfigProperty.get('defaultValue')).to.equal(cases['templeton.hive.properties'].value);
+      expect(serviceConfigProperty.get('recommendedValue')).to.equal(cases['templeton.hive.properties'].value);
     });
 
     it(cases['yarn.resourcemanager.zk-address'].title, function () {
       serviceConfigProperty.setProperties({
         name: 'yarn.resourcemanager.zk-address',
-        defaultValue: cases['yarn.resourcemanager.zk-address'].defaultValue
+        recommendedValue: cases['yarn.resourcemanager.zk-address'].recommendedValue
       });
       configPropertyHelper.initialValue(serviceConfigProperty, cases['yarn.resourcemanager.zk-address'].localDB, cases['yarn.resourcemanager.zk-address'].dependencies);
       expect(serviceConfigProperty.get('value')).to.equal(cases['yarn.resourcemanager.zk-address'].value);
-      expect(serviceConfigProperty.get('defaultValue')).to.equal(cases['yarn.resourcemanager.zk-address'].value);
+      expect(serviceConfigProperty.get('recommendedValue')).to.equal(cases['yarn.resourcemanager.zk-address'].value);
     });
 
     it(cases['oozieserver_host'].title, function () {
@@ -495,7 +495,7 @@ describe('configPropertyHelper', function () {
             component: 'HIVE_METASTORE'
           }
         ],
-        defaultValue: 'thrift://localhost:9083',
+        recommendedValue: 'thrift://localhost:9083',
         expected: 'thrift://h1:9083,thrift://h2:9083',
         title: 'typical case'
       },
@@ -506,7 +506,7 @@ describe('configPropertyHelper', function () {
             component: 'HIVE_SERVER'
           }
         ],
-        defaultValue: 'thrift://localhost:9083',
+        recommendedValue: 'thrift://localhost:9083',
         expected: '',
         title: 'no Metastore hosts in DB'
       },
@@ -525,7 +525,7 @@ describe('configPropertyHelper', function () {
             component: 'HIVE_METASTORE'
           }
         ],
-        defaultValue: '',
+        recommendedValue: '',
         expected: '',
         title: 'default value without port'
       },
@@ -551,7 +551,7 @@ describe('configPropertyHelper', function () {
 
     cases.forEach(function (item) {
       it(item.title, function () {
-        expect(configPropertyHelper.getHiveMetastoreUris(item.hosts, item.defaultValue)).to.equal(item.expected);
+        expect(configPropertyHelper.getHiveMetastoreUris(item.hosts, item.recommendedValue)).to.equal(item.expected);
       });
     });
 
@@ -862,7 +862,7 @@ describe('configPropertyHelper', function () {
         });
         configPropertyHelper.unionAllMountPoints(serviceConfigProperty, item.isOnlyFirstOneNeeded, localDB);
         expect(serviceConfigProperty.get('value')).to.equal(item.value);
-        expect(serviceConfigProperty.get('defaultValue')).to.equal(item.value);
+        expect(serviceConfigProperty.get('recommendedValue')).to.equal(item.value);
       });
     });
 


[4/6] ambari git commit: AMBARI-11216 Refactor service-config 'defaultValue' property into 'savedValue' and 'recommendedValue'. (ababiichuk)

Posted by ab...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/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 e818799..6a51391 100644
--- a/ambari-web/app/data/HDP2/site_properties.js
+++ b/ambari-web/app/data/HDP2/site_properties.js
@@ -82,7 +82,7 @@ var hdp2properties = [
     "name": "dfs.datanode.data.dir.mount.file",
     "displayName": "File that stores mount point for each data dir",
     "description": "File path that contains the last known mount point for each data dir. This file is used to avoid creating a DFS data dir on the root drive (and filling it up) if a path was previously mounted on a drive.",
-    "defaultValue": "/etc/hadoop/conf/dfs_data_dir_mount.hist",
+    "recommendedValue": "/etc/hadoop/conf/dfs_data_dir_mount.hist",
     "displayType": "directory",
     "isVisible": true,
     "category": "DATANODE",
@@ -125,7 +125,7 @@ var hdp2properties = [
     "id": "site property",
     "name": "dfs.namenode.accesstime.precision",
     "displayName": "Access time precision",
-    "defaultValue": "0",
+    "recommendedValue": "0",
     "displayType": "long",
     "category": "NFS_GATEWAY",
     "serviceName": "HDFS",
@@ -136,7 +136,7 @@ var hdp2properties = [
     "id": "site property",
     "name": "nfs.exports.allowed.hosts",
     "displayName": "Allowed hosts",
-    "defaultValue": "* rw",
+    "recommendedValue": "* rw",
     "displayType": "string",
     "category": "NFS_GATEWAY",
     "serviceName": "HDFS",
@@ -523,7 +523,7 @@ var hdp2properties = [
     "name": "hive.server2.thrift.port",
     "displayName": "Hive Server Port",
     "description": "TCP port number to listen on, default 10000.",
-    "defaultValue": "10000",
+    "recommendedValue": "10000",
     "displayType": "int",
     "isReconfigurable": true,
     "isOverridable": false,
@@ -536,7 +536,7 @@ var hdp2properties = [
     "id": "site property",
     "name": "hive.server2.support.dynamic.service.discovery",
     "displayName": "hive.server2.support.dynamic.service.discovery",
-    "defaultValue": true,
+    "recommendedValue": true,
     "displayType": "checkbox",
     "category": "Advanced hive-site",
     "serviceName": "HIVE",
@@ -546,7 +546,7 @@ var hdp2properties = [
     "id": "site property",
     "name": "hive.security.authorization.enabled",
     "displayName": "hive.security.authorization.enabled",
-    "defaultValue": false,
+    "recommendedValue": false,
     "displayType": "checkbox",
     "category": "Advanced hive-site",
     "serviceName": "HIVE",
@@ -1692,7 +1692,7 @@ var hdp2properties = [
     "id": "site property",
     "name": "*.falcon.graph.preserve.history",
     "displayName": "*.falcon.graph.preserve.history",
-    "defaultValue": false,
+    "recommendedValue": false,
     "displayType": "checkbox",
     "category": "FalconStartupSite",
     "serviceName": "FALCON",
@@ -1733,7 +1733,7 @@ var hdp2properties = [
     "name": "content",
     "displayName": "content",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "pig properties",
     "displayType": "content",
     "isRequired": false,
@@ -1749,7 +1749,7 @@ var hdp2properties = [
     "name": "content",
     "displayName": "content",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "content",
     "isRequired": false,
     "showLabel": false,
@@ -1763,7 +1763,7 @@ var hdp2properties = [
     "name": "content",
     "displayName": "content",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "content",
     "isRequired": false,
     "showLabel": false,
@@ -1776,7 +1776,7 @@ var hdp2properties = [
     "name": "knox_gateway_host",
     "displayName": "Knox Gateway host",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "The hosts that have been assigned to run Knox Gateway",
     "displayType": "masterHosts",
     "isOverridable": false,
@@ -1792,7 +1792,7 @@ var hdp2properties = [
     "name": "knox_master_secret",
     "displayName": "Knox Master Secret",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "password",
     "isReconfigurable": false,
     "isOverridable": false,
@@ -1820,7 +1820,7 @@ var hdp2properties = [
     "name": "kafka_broker_hosts",
     "displayName": "Kafka Broker host",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "The host that has been assigned to run Kafka Broker",
     "displayType": "masterHosts",
     "isOverridable": false,
@@ -1836,7 +1836,7 @@ var hdp2properties = [
     "name": "log.dirs",
     "displayName": "log.dirs",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "defaultDirectory": "/kafka-logs",
     "displayType": "directories",
     "serviceName": "KAFKA",
@@ -1849,7 +1849,7 @@ var hdp2properties = [
     "name": "port",
     "displayName": "port",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "int",
     "serviceName": "KAFKA",
     "filename": "kafka-broker.xml",
@@ -1861,7 +1861,7 @@ var hdp2properties = [
     "name": "listeners",
     "displayName": "listeners",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "advanced",
     "serviceName": "KAFKA",
     "filename": "kafka-broker.xml",
@@ -1872,7 +1872,7 @@ var hdp2properties = [
     "name": "log.roll.hours",
     "displayName": "log.roll.hours",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "advanced",
     "serviceName": "KAFKA",
     "filename": "kafka-broker.xml",
@@ -1884,7 +1884,7 @@ var hdp2properties = [
     "name": "log.retention.hours",
     "displayName": "log.retention.hours",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "advanced",
     "serviceName": "KAFKA",
     "filename": "kafka-broker.xml",
@@ -1896,7 +1896,7 @@ var hdp2properties = [
     "name": "zookeeper.connect",
     "displayName": "zookeeper.connect",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "advanced",
     "serviceName": "KAFKA",
     "filename": "kafka-broker.xml",
@@ -1908,7 +1908,7 @@ var hdp2properties = [
     "name": "kafka_pid_dir",
     "displayName": "Kafka PID dir",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": false,
     "isOverridable": false,
     "displayType": "directory",
@@ -2060,7 +2060,7 @@ var hdp2properties = [
     "name": "accumulo_monitor_bind_all",
     "displayName": "Monitor Bind All Interfaces",
     "displayType": "checkbox",
-    "defaultValue": false,
+    "recommendedValue": false,
     "serviceName": "ACCUMULO",
     "filename": "accumulo-env.xml",
     "category": "Advanced accumulo-env"
@@ -2163,7 +2163,7 @@ var hdp2properties = [
     "name": "tserver.memory.maps.native.enabled",
     "displayName": "tserver.memory.maps.native.enabled",
     "displayType": "checkbox",
-    "defaultValue": false,
+    "recommendedValue": false,
     "serviceName": "ACCUMULO",
     "filename": "accumulo-site.xml",
     "category": "Advanced accumulo-site",
@@ -2443,7 +2443,7 @@ var hdp2properties = [
     "name": "conf_dir",
     "displayName": "krb5-conf directory path",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "",
     "isOverridable": false,
     "isVisible": true,
@@ -2459,7 +2459,7 @@ var hdp2properties = [
     "name": "content",
     "displayName": "krb5-conf template",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "",
     "isOverridable": false,
     "isVisible": true,
@@ -2487,7 +2487,7 @@ var hdp2properties = [
     "name": "flume_conf_dir",
     "displayName": "Flume Conf Dir",
     "description": "Location to save configuration files",
-    "defaultValue": "/etc/flume/conf",
+    "recommendedValue": "/etc/flume/conf",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -2502,7 +2502,7 @@ var hdp2properties = [
     "name": "flume_log_dir",
     "displayName": "Flume Log Dir",
     "description": "Location to save log files",
-    "defaultValue": "/var/log/flume",
+    "recommendedValue": "/var/log/flume",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -2518,7 +2518,7 @@ var hdp2properties = [
     "name": "namenode_host",
     "displayName": "NameNode hosts",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "The hosts that has been assigned to run NameNode",
     "displayType": "masterHosts",
     "isOverridable": false,
@@ -2534,7 +2534,7 @@ var hdp2properties = [
     "name": "namenode_heapsize",
     "displayName": "NameNode Java heap size",
     "description": "Initial and maximum Java heap size for NameNode (Java options -Xms and -Xmx).  This also applies to the Secondary NameNode.",
-    "defaultValue": "1024",
+    "recommendedValue": "1024",
     "displayType": "int",
     "unit": "MB",
     "isOverridable": false,
@@ -2549,7 +2549,7 @@ var hdp2properties = [
     "name": "namenode_opt_newsize",
     "displayName": "NameNode new generation size",
     "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize).  This also applies to the Secondary NameNode.",
-    "defaultValue": "200",
+    "recommendedValue": "200",
     "displayType": "int",
     "unit": "MB",
     "isOverridable": false,
@@ -2564,7 +2564,7 @@ var hdp2properties = [
     "name": "namenode_opt_permsize",
     "displayName": "NameNode permanent generation size",
     "description": "Default size of Java permanent generation for NameNode (Java option -XX:PermSize).  This also applies to the Secondary NameNode.",
-    "defaultValue": "128",
+    "recommendedValue": "128",
     "displayType": "int",
     "unit": "MB",
     "isOverridable": false,
@@ -2579,7 +2579,7 @@ var hdp2properties = [
     "name": "namenode_opt_maxpermsize",
     "displayName": "NameNode maximum permanent generation size",
     "description": "Maximum size of Java permanent generation for NameNode (Java option -XX:MaxPermSize).",
-    "defaultValue": "256",
+    "recommendedValue": "256",
     "displayType": "int",
     "unit": "MB",
     "isOverridable": false,
@@ -2594,7 +2594,7 @@ var hdp2properties = [
     "name": "namenode_opt_maxnewsize",
     "displayName": "NameNode maximum new generation size",
     "description": "Maximum size of Java new generation for NameNode (Java option -XX:MaxnewSize).",
-    "defaultValue": "200",
+    "recommendedValue": "200",
     "displayType": "int",
     "unit": "MB",
     "isOverridable": false,
@@ -2609,7 +2609,7 @@ var hdp2properties = [
     "name": "snamenode_host",
     "displayName": "SNameNode host",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "The host that has been assigned to run SecondaryNameNode",
     "displayType": "masterHost",
     "isOverridable": false,
@@ -2625,7 +2625,7 @@ var hdp2properties = [
     "name": "datanode_hosts", //not in the schema. For UI purpose
     "displayName": "DataNode hosts",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "The hosts that have been assigned to run DataNode",
     "displayType": "slaveHosts",
     "isRequired": false,
@@ -2642,7 +2642,7 @@ var hdp2properties = [
     "name": "dtnode_heapsize",
     "displayName": "DataNode maximum Java heap size",
     "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
-    "defaultValue": "1024",
+    "recommendedValue": "1024",
     "displayType": "int",
     "unit": "MB",
     "isVisible": true,
@@ -2656,7 +2656,7 @@ var hdp2properties = [
     "name": "nfsgateway_hosts", //not in the schema. For UI purpose
     "displayName": "NFSGateway hosts",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "The hosts that have been assigned to run NFSGateway",
     "displayType": "slaveHosts",
     "isRequired": false,
@@ -2673,7 +2673,7 @@ var hdp2properties = [
     "name": "nfsgateway_heapsize",
     "displayName": "NFSGateway maximum Java heap size",
     "description": "Maximum Java heap size for NFSGateway (Java option -Xmx)",
-    "defaultValue": "1024",
+    "recommendedValue": "1024",
     "displayType": "int",
     "unit": "MB",
     "isVisible": true,
@@ -2687,7 +2687,7 @@ var hdp2properties = [
     "name": "hadoop_heapsize",
     "displayName": "Hadoop maximum Java heap size",
     "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)",
-    "defaultValue": "1024",
+    "recommendedValue": "1024",
     "displayType": "int",
     "unit": "MB",
     "isVisible": true,
@@ -2701,7 +2701,7 @@ var hdp2properties = [
     "name": "hdfs_log_dir_prefix",
     "displayName": "Hadoop Log Dir Prefix",
     "description": "The parent directory for Hadoop log files.  The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.",
-    "defaultValue": "/var/log/hadoop",
+    "recommendedValue": "/var/log/hadoop",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -2715,7 +2715,7 @@ var hdp2properties = [
     "name": "hadoop_pid_dir_prefix",
     "displayName": "Hadoop PID Dir Prefix",
     "description": "The parent directory in which the PID files for Hadoop processes will be created.  The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.",
-    "defaultValue": "/var/run/hadoop",
+    "recommendedValue": "/var/run/hadoop",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -2729,7 +2729,7 @@ var hdp2properties = [
     "name": "hadoop_root_logger",
     "displayName": "Hadoop Root Logger",
     "description": "Hadoop logging options",
-    "defaultValue": "INFO,RFA",
+    "recommendedValue": "INFO,RFA",
     "displayType": "string",
     "isOverridable": false,
     "isVisible": true,
@@ -2744,7 +2744,7 @@ var hdp2properties = [
     "name": "hs_host",
     "displayName": "History Server",
     "description": "History Server",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isOverridable": false,
     "displayType": "masterHost",
     "isRequiredByAgent": false,
@@ -2759,7 +2759,7 @@ var hdp2properties = [
     "name": "jobhistory_heapsize",
     "displayName": "History Server heap size",
     "description": "History Server heap size",
-    "defaultValue": "900",
+    "recommendedValue": "900",
     "unit": "MB",
     "isOverridable": true,
     "displayType": "int",
@@ -2774,7 +2774,7 @@ var hdp2properties = [
     "name": "mapred_log_dir_prefix",
     "displayName": "Mapreduce Log Dir Prefix",
     "description": "",
-    "defaultValue": "/var/log/hadoop-mapreduce",
+    "recommendedValue": "/var/log/hadoop-mapreduce",
     "displayType": "directory",
     "isOverridable": false,
     "isVisible": true,
@@ -2788,7 +2788,7 @@ var hdp2properties = [
     "name": "mapred_pid_dir_prefix",
     "displayName": "Mapreduce PID Dir Prefix",
     "description": "",
-    "defaultValue": "/var/run/hadoop-mapreduce",
+    "recommendedValue": "/var/run/hadoop-mapreduce",
     "displayType": "directory",
     "isOverridable": false,
     "isVisible": true,
@@ -2803,7 +2803,7 @@ var hdp2properties = [
     "name": "yarn_heapsize",
     "displayName": "YARN Java heap size",
     "description": "Max heapsize for all YARN components",
-    "defaultValue": "1024",
+    "recommendedValue": "1024",
     "isOverridable": true,
     "displayType": "int",
     "unit": "MB",
@@ -2818,7 +2818,7 @@ var hdp2properties = [
     "name": "rm_host",
     "displayName": "ResourceManager",
     "description": "ResourceManager",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isOverridable": false,
     "displayType": "masterHost",
     "isRequiredByAgent": false,
@@ -2833,7 +2833,7 @@ var hdp2properties = [
     "name": "resourcemanager_heapsize",
     "displayName": "ResourceManager Java heap size",
     "description": "Max heapsize for ResourceManager",
-    "defaultValue": "1024",
+    "recommendedValue": "1024",
     "isOverridable": false,
     "displayType": "int",
     "unit": "MB",
@@ -2848,7 +2848,7 @@ var hdp2properties = [
     "name": "nm_hosts",
     "displayName": "NodeManager",
     "description": "List of NodeManager Hosts.",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isOverridable": false,
     "displayType": "slaveHosts",
     "isRequiredByAgent": false,
@@ -2863,7 +2863,7 @@ var hdp2properties = [
     "name": "nodemanager_heapsize",
     "displayName": "NodeManager Java heap size",
     "description": "Max heapsize for NodeManager",
-    "defaultValue": "1024",
+    "recommendedValue": "1024",
     "isOverridable": true,
     "displayType": "int",
     "unit": "MB",
@@ -2878,7 +2878,7 @@ var hdp2properties = [
     "name": "yarn_log_dir_prefix",
     "displayName": "YARN Log Dir Prefix",
     "description": "",
-    "defaultValue": "/var/log/hadoop-yarn",
+    "recommendedValue": "/var/log/hadoop-yarn",
     "displayType": "directory",
     "isOverridable": false,
     "isReconfigurable": false,
@@ -2892,7 +2892,7 @@ var hdp2properties = [
     "name": "yarn_pid_dir_prefix",
     "displayName": "YARN PID Dir Prefix",
     "description": "",
-    "defaultValue": "/var/run/hadoop-yarn",
+    "recommendedValue": "/var/run/hadoop-yarn",
     "displayType": "directory",
     "isOverridable": false,
     "isVisible": true,
@@ -2917,7 +2917,7 @@ var hdp2properties = [
     "name": "ats_host",
     "displayName": "App Timeline Server",
     "description": "Application Timeline Server Host",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isOverridable": false,
     "displayType": "masterHost",
     "isRequiredByAgent": false,
@@ -2932,7 +2932,7 @@ var hdp2properties = [
     "name": "apptimelineserver_heapsize",
     "displayName": "AppTimelineServer Java heap size",
     "description": "AppTimelineServer Java heap size",
-    "defaultValue": "1024",
+    "recommendedValue": "1024",
     "isOverridable": false,
     "displayType": "int",
     "unit": "MB",
@@ -2948,7 +2948,7 @@ var hdp2properties = [
     "name": "hbasemaster_host",
     "displayName": "HBase Master hosts",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "The host that has been assigned to run HBase Master",
     "displayType": "masterHosts",
     "isOverridable": false,
@@ -2964,7 +2964,7 @@ var hdp2properties = [
     "name": "hbase_master_heapsize",
     "displayName": "HBase Master Maximum Java heap size",
     "description": "Maximum Java heap size for HBase master (Java option -Xmx)",
-    "defaultValue": "1024",
+    "recommendedValue": "1024",
     "displayType": "int",
     "unit": "MB",
     "isOverridable": true,
@@ -2979,7 +2979,7 @@ var hdp2properties = [
     "name": "regionserver_hosts",
     "displayName": "RegionServer hosts",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "The hosts that have been assigned to run RegionServer",
     "displayType": "slaveHosts",
     "isOverridable": false,
@@ -2996,7 +2996,7 @@ var hdp2properties = [
     "name": "hbase_regionserver_heapsize",
     "displayName": "RegionServers maximum Java heap size",
     "description": "Maximum Java heap size for RegionServers (Java option -Xmx)",
-    "defaultValue": "1024",
+    "recommendedValue": "1024",
     "displayType": "int",
     "unit": "MB",
     "isVisible": true,
@@ -3033,7 +3033,7 @@ var hdp2properties = [
     "name": "hbase_log_dir",
     "displayName": "HBase Log Dir",
     "description": "Directory for HBase logs",
-    "defaultValue": "/var/log/hbase",
+    "recommendedValue": "/var/log/hbase",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -3047,7 +3047,7 @@ var hdp2properties = [
     "name": "hbase_pid_dir",
     "displayName": "HBase PID Dir",
     "description": "Directory in which the pid files for HBase processes will be created",
-    "defaultValue": "/var/run/hbase",
+    "recommendedValue": "/var/run/hbase",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -3081,7 +3081,7 @@ var hdp2properties = [
     "name": "fs_glusterfs_default_name",
     "displayName": "GlusterFS default fs name 1.x Hadoop",
     "description": "GlusterFS default filesystem name (glusterfs://{MasterFQDN}:9000)",
-    "defaultValue": "glusterfs:///localhost:8020",
+    "recommendedValue": "glusterfs:///localhost:8020",
     "displayType": "string",
     "isVisible": true,
     "serviceName": "GLUSTERFS",
@@ -3093,7 +3093,7 @@ var hdp2properties = [
     "name": "glusterfs_defaultFS_name",
     "displayName": "GlusterFS default fs name 2.x Hadoop",
     "description": "GlusterFS default filesystem name (glusterfs:///)",
-    "defaultValue": "glusterfs:///localhost:8020",
+    "recommendedValue": "glusterfs:///localhost:8020",
     "displayType": "string",
     "isVisible": true,
     "serviceName": "GLUSTERFS",
@@ -3105,7 +3105,7 @@ var hdp2properties = [
     "name": "hadoop_heapsize",
     "displayName": "Hadoop maximum Java heap size",
     "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)",
-    "defaultValue": "1024",
+    "recommendedValue": "1024",
     "displayType": "int",
     "unit": "MB",
     "isVisible": true,
@@ -3119,7 +3119,7 @@ var hdp2properties = [
     "name": "hdfs_log_dir_prefix",
     "displayName": "Hadoop Log Dir Prefix",
     "description": "The parent directory for Hadoop log files.  The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.",
-    "defaultValue": "/var/log/hadoop",
+    "recommendedValue": "/var/log/hadoop",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -3133,7 +3133,7 @@ var hdp2properties = [
     "name": "hadoop_pid_dir_prefix",
     "displayName": "Hadoop PID Dir Prefix",
     "description": "The parent directory in which the PID files for Hadoop processes will be created.  The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.",
-    "defaultValue": "/var/run/hadoop",
+    "recommendedValue": "/var/run/hadoop",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -3147,7 +3147,7 @@ var hdp2properties = [
     "name": "namenode_heapsize",
     "displayName": "Name Node Heap Size",
     "description": "Name Node Heap Size, default jvm memory setting",
-    "defaultValue": "1024",
+    "recommendedValue": "1024",
     "isReconfigurable": false,
     "displayType": "int",
     "isOverridable": false,
@@ -3161,7 +3161,7 @@ var hdp2properties = [
     "name": "namenode_opt_newsize",
     "displayName": "NameNode new generation size",
     "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize).  This also applies to the Secondary NameNode.",
-    "defaultValue": "200",
+    "recommendedValue": "200",
     "displayType": "int",
     "unit": "MB",
     "isOverridable": false,
@@ -3175,7 +3175,7 @@ var hdp2properties = [
     "name": "namenode_opt_maxnewsize",
     "displayName": "NameNode maximum new generation size",
     "description": "Maximum size of Java new generation for NameNode (Java option -XX:MaxnewSize).",
-    "defaultValue": "200",
+    "recommendedValue": "200",
     "displayType": "int",
     "unit": "MB",
     "isOverridable": false,
@@ -3189,7 +3189,7 @@ var hdp2properties = [
     "name": "namenode_opt_permsize",
     "displayName": "NameNode permanent generation size",
     "description": "Default size of Java permanent generation for NameNode (Java option -XX:PermSize).  This also applies to the Secondary NameNode.",
-    "defaultValue": "128",
+    "recommendedValue": "128",
     "displayType": "int",
     "unit": "MB",
     "isOverridable": false,
@@ -3203,7 +3203,7 @@ var hdp2properties = [
     "name": "namenode_opt_maxpermsize",
     "displayName": "NameNode maximum permanent generation size",
     "description": "Maximum size of Java permanent generation for NameNode (Java option -XX:MaxPermSize).",
-    "defaultValue": "256",
+    "recommendedValue": "256",
     "displayType": "int",
     "unit": "MB",
     "isOverridable": false,
@@ -3217,7 +3217,7 @@ var hdp2properties = [
     "name": "dtnode_heapsize",
     "displayName": "DataNode maximum Java heap size",
     "description": "Maximum Java heap size for DataNode (Java option -Xmx)",
-    "defaultValue": "1024",
+    "recommendedValue": "1024",
     "displayType": "int",
     "unit": "MB",
     "isVisible": false,
@@ -3230,7 +3230,7 @@ var hdp2properties = [
     "name": "glusterfs_user",
     "displayName": "glusterfs user",
     "description": "glusterfs user",
-    "defaultValue": "root",
+    "recommendedValue": "root",
     "displayType": "string",
     "isVisible": false,
     "serviceName": "GLUSTERFS",
@@ -3242,7 +3242,7 @@ var hdp2properties = [
     "name": "namenode_host",
     "displayName": "NameNode Host",
     "description": "NameNode Host.",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "string",
     "isVisible": false,
     "serviceName": "GLUSTERFS",
@@ -3254,7 +3254,7 @@ var hdp2properties = [
     "name": "snamenode_host",
     "displayName": "Secondary NameNode Host",
     "description": "Secondary NameNode Host.",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "string",
     "isVisible": false,
     "serviceName": "GLUSTERFS",
@@ -3267,7 +3267,7 @@ var hdp2properties = [
     "name": "hivemetastore_host",
     "displayName": "Hive Metastore hosts",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "The hosts that have been assigned to run Hive Metastore",
     "displayType": "masterHosts",
     "isOverridable": false,
@@ -3281,7 +3281,7 @@ var hdp2properties = [
   {
     "name": "hive_master_hosts",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isOverridable": false,
     "isRequiredByAgent": false,
     "isVisible": false,
@@ -3294,7 +3294,7 @@ var hdp2properties = [
     "name": "hive_existing_mysql_database",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "MySQL",
+    "recommendedValue": "MySQL",
     "description": "Using an existing MySQL database for Hive Metastore",
     "displayType": "masterHost",
     "isOverridable": false,
@@ -3311,7 +3311,7 @@ var hdp2properties = [
     "name": "hive_existing_mssql_server_database",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "MSSQL",
+    "recommendedValue": "MSSQL",
     "description": "Using an existing MSSQL database for Hive Metastore",
     "displayType": "masterHost",
     "isOverridable": false,
@@ -3328,7 +3328,7 @@ var hdp2properties = [
     "name": "hive_existing_mssql_server_2_database",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "MSSQL",
+    "recommendedValue": "MSSQL",
     "description": "Using an existing MSSQL database for Hive Metastore",
     "displayType": "masterHost",
     "isOverridable": false,
@@ -3346,7 +3346,7 @@ var hdp2properties = [
     "name": "hive_existing_postgresql_database",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "PostgreSQL",
+    "recommendedValue": "PostgreSQL",
     "description": "Using an existing PostgreSQL database for Hive Metastore",
     "displayType": "masterHost",
     "isOverridable": false,
@@ -3364,7 +3364,7 @@ var hdp2properties = [
     "name": "hive_existing_oracle_database",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "Oracle",
+    "recommendedValue": "Oracle",
     "description": "Using an existing Oracle database for Hive Metastore",
     "displayType": "masterHost",
     "isVisible": false,
@@ -3382,7 +3382,7 @@ var hdp2properties = [
     "name": "hive_ambari_database",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "MySQL",
+    "recommendedValue": "MySQL",
     "description": "MySQL will be installed by Ambari",
     "displayType": "masterHost",
     "isOverridable": false,
@@ -3399,7 +3399,7 @@ var hdp2properties = [
     "name": "hive_database",
     "displayName": "Hive Database",
     "value": "",
-    "defaultValue": "New MySQL Database",
+    "recommendedValue": "New MySQL Database",
     "options": [
       {
         displayName: 'New MySQL Database',
@@ -3438,7 +3438,8 @@ var hdp2properties = [
     "name": "hive_hostname",
     "displayName": "Database Host",
     "description": "Specify the host on which the database is hosted",
-    "defaultValue": "",
+    "savedValue": "",
+    "recommendedValue": "",
     "isReconfigurable": true,
     "displayType": "host",
     "isOverridable": false,
@@ -3454,7 +3455,7 @@ var hdp2properties = [
     "name": "hive_existing_mysql_host",
     "displayName": "Database Host",
     "description": "Specify the host on which the existing database is hosted",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "host",
     "isOverridable": false,
     "isVisible": false,
@@ -3469,7 +3470,7 @@ var hdp2properties = [
     "name": "hive_existing_postgresql_host",
     "displayName": "Database Host",
     "description": "Specify the host on which the existing database is hosted",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "host",
     "isOverridable": false,
     "isVisible": false,
@@ -3484,7 +3485,7 @@ var hdp2properties = [
     "name": "hive_existing_oracle_host",
     "displayName": "Database Host",
     "description": "Specify the host on which the existing database is hosted",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "host",
     "isOverridable": false,
     "isVisible": false,
@@ -3498,7 +3499,7 @@ var hdp2properties = [
     "id": "puppet var",
     "name": "hive_ambari_host",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayName": "Database Host",
     "description": "Host on which the database will be created by Ambari",
     "isReconfigurable": false,
@@ -3516,7 +3517,7 @@ var hdp2properties = [
     "name": "hive_existing_mssql_server_host",
     "displayName": "Database Host",
     "description": "Specify the host on which the existing database is hosted",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "host",
     "isOverridable": false,
     "isVisible": false,
@@ -3531,7 +3532,7 @@ var hdp2properties = [
     "name": "hive_existing_mssql_server_2_host",
     "displayName": "Database Host",
     "description": "Specify the host on which the existing database is hosted",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "host",
     "isOverridable": false,
     "isVisible": false,
@@ -3546,7 +3547,7 @@ var hdp2properties = [
     "name": "hive_metastore_port",
     "displayName": "Hive metastore port",
     "description": "",
-    "defaultValue": "9083",
+    "recommendedValue": "9083",
     "isReconfigurable": false,
     "displayType": "int",
     "isOverridable": false,
@@ -3560,7 +3561,7 @@ var hdp2properties = [
     "name": "hive_lib",
     "displayName": "Hive library",
     "description": "",
-    "defaultValue": "/usr/lib/hive/lib/",
+    "recommendedValue": "/usr/lib/hive/lib/",
     "isReconfigurable": false,
     "displayType": "directory",
     "isVisible": false,
@@ -3574,7 +3575,7 @@ var hdp2properties = [
     "name": "hive_dbroot",
     "displayName": "Hive db directory",
     "description": "",
-    "defaultValue": "/usr/lib/hive/lib",
+    "recommendedValue": "/usr/lib/hive/lib",
     "isReconfigurable": false,
     "displayType": "directory",
     "isVisible": false,
@@ -3588,7 +3589,7 @@ var hdp2properties = [
     "name": "hive_log_dir",
     "displayName": "Hive Log Dir",
     "description": "Directory for Hive log files",
-    "defaultValue": "/var/log/hive",
+    "recommendedValue": "/var/log/hive",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -3602,7 +3603,7 @@ var hdp2properties = [
     "name": "hive_pid_dir",
     "displayName": "Hive PID Dir",
     "description": "Directory in which the PID files for Hive processes will be created",
-    "defaultValue": "/var/run/hive",
+    "recommendedValue": "/var/run/hive",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -3617,7 +3618,7 @@ var hdp2properties = [
     "name": "webhcatserver_host",
     "displayName": "WebHCat Server host",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "The host that has been assigned to run WebHCat Server",
     "displayType": "masterHost",
     "isOverridable": false,
@@ -3632,7 +3633,7 @@ var hdp2properties = [
     "name": "hcat_log_dir",
     "displayName": "WebHCat Log Dir",
     "description": "Directory for WebHCat log files",
-    "defaultValue": "/var/log/webhcat",
+    "recommendedValue": "/var/log/webhcat",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -3646,7 +3647,7 @@ var hdp2properties = [
     "name": "hcat_pid_dir",
     "displayName": "WebHCat PID Dir",
     "description": "Directory in which the PID files for WebHCat processes will be created",
-    "defaultValue": "/var/run/webhcat",
+    "recommendedValue": "/var/run/webhcat",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -3659,7 +3660,7 @@ var hdp2properties = [
     "id": "puppet var",
     "name": "hive_database_name",
     "displayName": "hive_database_name",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isReconfigurable": false,
     "isOverridable": false,
     "isVisible": false,
@@ -3671,7 +3672,7 @@ var hdp2properties = [
     "id": "puppet var",
     "name": "hive_database_type",
     "displayName": "hive_database_type",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isOverridable": false,
     "isVisible": false,
     "serviceName": "HIVE",
@@ -3684,7 +3685,7 @@ var hdp2properties = [
     "name": "oozieserver_host",
     "displayName": "Oozie Server host",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "The hosts that have been assigned to run Oozie Server",
     "displayType": "masterHosts",
     "isOverridable": false,
@@ -3701,7 +3702,7 @@ var hdp2properties = [
     "name": "oozie_existing_oracle_database",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "Oracle",
+    "recommendedValue": "Oracle",
     "description": "Using an existing Oracle database for Oozie Metastore",
     "displayType": "masterHost",
     "isVisible": false,
@@ -3719,7 +3720,7 @@ var hdp2properties = [
     "name": "oozie_existing_postgresql_database",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "PostgreSQL",
+    "recommendedValue": "PostgreSQL",
     "description": "Using an existing PostgreSQL database for Oozie Metastore",
     "displayType": "masterHost",
     "isOverridable": false,
@@ -3736,7 +3737,7 @@ var hdp2properties = [
     "name": "oozie_ambari_database",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "MySQL",
+    "recommendedValue": "MySQL",
     "description": "MySQL will be installed by Ambari",
     "displayType": "masterHost",
     "isVisible": false,
@@ -3753,7 +3754,7 @@ var hdp2properties = [
     "name": "oozie_derby_database",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "Derby",
+    "recommendedValue": "Derby",
     "description": "Using current Derby database for Oozie Metastore",
     "displayType": "masterHost",
     "isVisible": false,
@@ -3770,7 +3771,7 @@ var hdp2properties = [
     "name": "oozie_existing_mysql_database",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "MySQL",
+    "recommendedValue": "MySQL",
     "description": "Using an existing MySQL database for Oozie Metastore",
     "displayType": "masterHost",
     "isVisible": false,
@@ -3787,7 +3788,7 @@ var hdp2properties = [
     "name": "oozie_existing_mssql_server_database",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "MSSQL",
+    "recommendedValue": "MSSQL",
     "description": "Using an existing MSSQL database with SQL authentication for Oozie Metastore",
     "displayType": "masterHost",
     "isVisible": false,
@@ -3804,7 +3805,7 @@ var hdp2properties = [
     "name": "oozie_existing_mssql_server_2_database",
     "displayName": "Database Type",
     "value": "",
-    "defaultValue": "MSSQL",
+    "recommendedValue": "MSSQL",
     "description": "Using an existing MSSQL database with integrated authentication for Oozie Metastore",
     "displayType": "masterHost",
     "isVisible": false,
@@ -3821,7 +3822,7 @@ var hdp2properties = [
     "name": "oozie_database",
     "displayName": "Oozie Database",
     "value": "",
-    "defaultValue": "New Derby Database",
+    "recommendedValue": "New Derby Database",
     "options": [
       {
         displayName: 'New Derby Database',
@@ -3860,7 +3861,7 @@ var hdp2properties = [
     "name": "oozie_data_dir",
     "displayName": "Oozie Data Dir",
     "description": "Data directory in which the Oozie DB exists",
-    "defaultValue": "",
+    "recommendedValue": "",
     "defaultDirectory": "/hadoop/oozie/data",
     "isReconfigurable": true,
     "displayType": "directory",
@@ -3875,7 +3876,8 @@ var hdp2properties = [
   {
     "id": "puppet var",
     "name": "oozie_hostname",
-    "defaultValue": "",
+    "savedValue": "",
+    "recommendedValue": "",
     "displayName": "Database Host",
     "description": "The host where the Oozie database is located",
     "isReconfigurable": true,
@@ -3892,7 +3894,7 @@ var hdp2properties = [
     "name": "oozie_existing_mysql_host",
     "displayName": "Database Host",
     "description": "Specify the host on which the existing database is hosted",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isOverridable": false,
     "displayType": "host",
     "isVisible": false,
@@ -3907,7 +3909,7 @@ var hdp2properties = [
     "name": "oozie_existing_postgresql_host",
     "displayName": "Database Host",
     "description": "Specify the host on which the existing database is hosted",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isOverridable": false,
     "displayType": "host",
     "isVisible": false,
@@ -3922,7 +3924,7 @@ var hdp2properties = [
     "name": "oozie_existing_oracle_host",
     "displayName": "Database Host",
     "description": "Specify the host on which the existing database is hosted",
-    "defaultValue": "",
+    "recommendedValue": "",
     "isOverridable": false,
     "displayType": "host",
     "isVisible": false,
@@ -3936,7 +3938,7 @@ var hdp2properties = [
     "id": "puppet var",
     "name": "oozie_ambari_host",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayName": "Database Host",
     "description": "Host on which the database will be created by Ambari",
     "isReconfigurable": false,
@@ -3953,7 +3955,7 @@ var hdp2properties = [
     "name": "oozie_existing_mssql_server_host",
     "displayName": "Database Host",
     "description": "Specify the host on which the existing database is hosted",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "host",
     "isOverridable": false,
     "isRequiredByAgent": false,
@@ -3969,7 +3971,7 @@ var hdp2properties = [
     "name": "oozie_existing_mssql_server_2_host",
     "displayName": "Database Host",
     "description": "Specify the host on which the existing database is hosted",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "host",
     "isOverridable": false,
     "isRequiredByAgent": false,
@@ -3985,7 +3987,7 @@ var hdp2properties = [
     "name": "oozie_log_dir",
     "displayName": "Oozie Log Dir",
     "description": "Directory for oozie logs",
-    "defaultValue": "/var/log/oozie",
+    "recommendedValue": "/var/log/oozie",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -3999,7 +4001,7 @@ var hdp2properties = [
     "name": "oozie_pid_dir",
     "displayName": "Oozie PID Dir",
     "description": "Directory in which the pid files for oozie processes will be created",
-    "defaultValue": "/var/run/oozie",
+    "recommendedValue": "/var/run/oozie",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -4026,7 +4028,7 @@ var hdp2properties = [
     "name": "zookeeperserver_hosts",
     "displayName": "ZooKeeper Server hosts",
     "value": "",
-    "defaultValue": "",
+    "recommendedValue": "",
     "description": "The host that has been assigned to run ZooKeeper Server",
     "displayType": "masterHosts",
     "isVisible": true,
@@ -4043,7 +4045,7 @@ var hdp2properties = [
     "name": "dataDir",
     "displayName": "ZooKeeper directory",
     "description": "Data directory for ZooKeeper",
-    "defaultValue": "",
+    "recommendedValue": "",
     "defaultDirectory": "/hadoop/zookeeper",
     "isReconfigurable": true,
     "displayType": "directory",
@@ -4058,7 +4060,7 @@ var hdp2properties = [
     "name": "tickTime",
     "displayName": "Length of single Tick",
     "description": "The length of a single tick in milliseconds, which is the basic time unit used by ZooKeeper",
-    "defaultValue": "2000",
+    "recommendedValue": "2000",
     "displayType": "int",
     "unit": "ms",
     "isOverridable": false,
@@ -4073,7 +4075,7 @@ var hdp2properties = [
     "name": "initLimit",
     "displayName": "Ticks to allow for sync at Init",
     "description": "Amount of time, in ticks to allow followers to connect and sync to a leader",
-    "defaultValue": "10",
+    "recommendedValue": "10",
     "displayType": "int",
     "isOverridable": false,
     "isVisible": true,
@@ -4087,7 +4089,7 @@ var hdp2properties = [
     "name": "syncLimit",
     "displayName": "Ticks to allow for sync at Runtime",
     "description": "Amount of time, in ticks to allow followers to connect",
-    "defaultValue": "5",
+    "recommendedValue": "5",
     "displayType": "int",
     "isOverridable": false,
     "isVisible": true,
@@ -4101,7 +4103,7 @@ var hdp2properties = [
     "name": "clientPort",
     "displayName": "Port for running ZK Server",
     "description": "Port for running ZooKeeper server",
-    "defaultValue": "2181",
+    "recommendedValue": "2181",
     "displayType": "int",
     "isOverridable": false,
     "isVisible": true,
@@ -4115,7 +4117,7 @@ var hdp2properties = [
     "name": "zk_log_dir",
     "displayName": "ZooKeeper Log Dir",
     "description": "Directory for ZooKeeper log files",
-    "defaultValue": "/var/log/zookeeper",
+    "recommendedValue": "/var/log/zookeeper",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -4130,7 +4132,7 @@ var hdp2properties = [
     "name": "zk_pid_dir",
     "displayName": "ZooKeeper PID Dir",
     "description": "Directory in which the pid files for zookeeper processes will be created",
-    "defaultValue": "/var/run/zookeeper",
+    "recommendedValue": "/var/run/zookeeper",
     "isReconfigurable": false,
     "displayType": "directory",
     "isOverridable": false,
@@ -4146,7 +4148,7 @@ var hdp2properties = [
     "name": "ganglia_conf_dir",
     "displayName": "Ganglia conf directory",
     "description": "",
-    "defaultValue": "/etc/ganglia/hdp",
+    "recommendedValue": "/etc/ganglia/hdp",
     "isReconfigurable": false,
     "displayType": "directory",
     "isVisible": false,
@@ -4161,7 +4163,7 @@ var hdp2properties = [
     "name": "falconserver_host",
     "displayName": "Falcon Server",
     "description": "The host that has been assigned to run Falcon Server",
-    "defaultValue": "falcon",
+    "recommendedValue": "falcon",
     "displayType": "masterHost",
     "isVisible": true,
     "isRequiredByAgent": false,
@@ -4174,7 +4176,7 @@ var hdp2properties = [
     "name": "falcon_port",
     "displayName": "Falcon server port",
     "description": "Port the Falcon Server listens on",
-    "defaultValue": "15000",
+    "recommendedValue": "15000",
     "isReconfigurable": true,
     "displayType": "int",
     "isVisible": true,
@@ -4188,7 +4190,7 @@ var hdp2properties = [
     "name": "falcon_local_dir",
     "displayName": "Falcon data directory",
     "description": "Directory where Falcon data, such as activemq data, is stored",
-    "defaultValue": "/hadoop/falcon",
+    "recommendedValue": "/hadoop/falcon",
     "isReconfigurable": true,
     "displayType": "directory",
     "isVisible": true,
@@ -4202,7 +4204,7 @@ var hdp2properties = [
     "name": "falcon_store_uri",
     "displayName": "Falcon store URI",
     "description": "Directory where entity definitions are stored",
-    "defaultValue": "file:///hadoop/falcon/store",
+    "recommendedValue": "file:///hadoop/falcon/store",
     "isReconfigurable": true,
     "displayType": "string",
     "isVisible": true,
@@ -4216,7 +4218,7 @@ var hdp2properties = [
     "name": "falcon_log_dir",
     "displayName": "Falcon Log Dir",
     "description": "Directory for Falcon logs",
-    "defaultValue": "/var/log/falcon",
+    "recommendedValue": "/var/log/falcon",
     "displayType": "directory",
     "isOverridable": false,
     "isVisible": true,
@@ -4231,7 +4233,7 @@ var hdp2properties = [
     "name": "falcon_pid_dir",
     "displayName": "Falcon PID Dir",
     "description": "Directory in which the pid files for Falcon processes will be created",
-    "defaultValue": "/var/run/falcon",
+    "recommendedValue": "/var/run/falcon",
     "displayType": "directory",
     "isOverridable": false,
     "isVisible": true,
@@ -4246,7 +4248,7 @@ var hdp2properties = [
     "name": "falcon.embeddedmq",
     "displayName": "falcon.embeddedmq",
     "description": "Whether embeddedmq is enabled or not.",
-    "defaultValue": "true",
+    "recommendedValue": "true",
     "displayType": "string",
     "isOverridable": false,
     "isVisible": true,
@@ -4261,7 +4263,7 @@ var hdp2properties = [
     "name": "falcon.embeddedmq.data",
     "displayName": "falcon.embeddedmq.data",
     "description": "Directory in which embeddedmq data is stored.",
-    "defaultValue": "/hadoop/falcon/embeddedmq/data",
+    "recommendedValue": "/hadoop/falcon/embeddedmq/data",
     "displayType": "directory",
     "isOverridable": false,
     "isVisible": true,
@@ -4276,7 +4278,7 @@ var hdp2properties = [
     "name": "falcon.emeddedmq.port",
     "displayName": "falcon.emeddedmq.port",
     "description": "Port that embeddedmq will listen on.",
-    "defaultValue": "61616",
+    "recommendedValue": "61616",
     "displayType": "string",
     "isOverridable": false,
     "isVisible": true,
@@ -4292,7 +4294,7 @@ var hdp2properties = [
     "name": "storm_log_dir",
     "displayName": "storm_log_dir",
     "description": "Storm log directory",
-    "defaultValue": "/var/log/storm",
+    "recommendedValue": "/var/log/storm",
     "displayType": "directory",
     "isReconfigurable": true,
     "isVisible": true,
@@ -4306,7 +4308,7 @@ var hdp2properties = [
     "name": "storm_pid_dir",
     "displayName": "storm_pid_dir",
     "description": "Storm PID directory",
-    "defaultValue": "/var/run/storm",
+    "recommendedValue": "/var/run/storm",
     "displayType": "directory",
     "isReconfigurable": true,
     "isVisible": true,
@@ -4320,7 +4322,7 @@ var hdp2properties = [
     "name": "stormuiserver_host",
     "displayName": "Storm UI Server host",
     "description": "The host that has been assigned to run Storm UI Server",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "masterHost",
     "isReconfigurable": false,
     "isVisible": true,
@@ -4334,7 +4336,7 @@ var hdp2properties = [
     "name": "drpcserver_host",
     "displayName": "DRPC Server host",
     "description": "The host that has been assigned to run DRPC Server",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "masterHost",
     "isReconfigurable": false,
     "isVisible": true,
@@ -4348,7 +4350,7 @@ var hdp2properties = [
     "name": "supervisor_hosts",
     "displayName": "Supervisor hosts",
     "description": "The host that has been assigned to run Supervisor",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "slaveHosts",
     "isReconfigurable": false,
     "isVisible": true,
@@ -4363,7 +4365,7 @@ var hdp2properties = [
     "name": "storm_rest_api_host",
     "displayName": "Storm REST API host",
     "description": "The host that has been assigned to run Storm REST API Server",
-    "defaultValue": "",
+    "recommendedValue": "",
     "displayType": "masterHost",
     "isReconfigurable": false,
     "isVisible": true,
@@ -4379,7 +4381,7 @@ var hdp2properties = [
     "name": "hbase_conf_dir",
     "displayName": "HBase conf dir",
     "description": "",
-    "defaultValue": "/etc/hbase",
+    "recommendedValue": "/etc/hbase",
     "isRequired": false,
     "displayType": "directory",
     "isVisible": false,
@@ -4394,7 +4396,7 @@ var hdp2properties = [
     "name": "ganglia_runtime_dir",
     "displayName": "Ganglia runtime directory",
     "description": "",
-    "defaultValue": "/var/run/ganglia/hdp",
+    "recommendedValue": "/var/run/ganglia/hdp",
     "isReconfigurable": false,
     "displayType": "directory",
     "isVisible": false,
@@ -4408,7 +4410,7 @@ var hdp2properties = [
     "name": "rrdcached_base_dir",
     "displayName": "Ganglia rrdcached base directory",
     "description": "Default directory for saving the rrd files on ganglia server",
-    "defaultValue": "/var/lib/ganglia/rrds",
+    "recommendedValue": "/var/lib/ganglia/rrds",
     "displayType": "directory",
     "isReconfigurable": true,
     "isOverridable": false,
@@ -4439,7 +4441,7 @@ var hdp2properties = [
     "isVisible": false,
     "serviceName": "MISC",
     "category": "Notifications",
-    "defaultValue": "no",
+    "recommendedValue": "no",
     "filename": "alert_notification"
   },
   {
@@ -4506,7 +4508,7 @@ var hdp2properties = [
     "isRequired": false,
     "isReconfigurable": true,
     "isOverridable": false,
-    "defaultValue": true,
+    "recommendedValue": true,
     "isVisible": true,
     "serviceName": "MISC",
     "category": "Notifications",
@@ -4571,7 +4573,7 @@ var hdp2properties = [
     "name": "timeline.metrics.service.operation.mode",
     "displayName": "Metrics Service operation mode",
     "description": "\n      Service Operation modes:\n      1) embedded: Metrics stored on local FS, HBase in Standalone mode\n      2) distributed: HBase daemons writing to HDFS\n      3) external: External HBase storage backend\n    ",
-    "defaultValue": "embedded",
+    "recommendedValue": "embedded",
     "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4583,7 +4585,7 @@ var hdp2properties = [
     "name": "metrics_collector_log_dir",
     "displayName": "Metrics Collector log dir",
     "description": "\n      Log location for collector logs\n    ",
-    "defaultValue": "embedded",
+    "recommendedValue": "embedded",
     "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-env.xml",
@@ -4595,7 +4597,7 @@ var hdp2properties = [
     "name": "metrics_collector_pid_dir",
     "displayName": "Metrics Collector pid dir",
     "description": "\n      pid location for collector\n    ",
-    "defaultValue": "embedded",
+    "recommendedValue": "embedded",
     "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-env.xml",
@@ -4607,7 +4609,7 @@ var hdp2properties = [
     "name": "metrics_monitor_log_dir",
     "displayName": "Metrics Monitor log dir",
     "description": "\n      Log location for monitor logs\n    ",
-    "defaultValue": "embedded",
+    "recommendedValue": "embedded",
     "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-env.xml",
@@ -4619,7 +4621,7 @@ var hdp2properties = [
     "name": "metrics_monitor_pid_dir",
     "displayName": "Metrics Monitor pid dir",
     "description": "\n      pid location for monitor\n    ",
-    "defaultValue": "embedded",
+    "recommendedValue": "embedded",
     "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-env.xml",
@@ -4631,7 +4633,7 @@ var hdp2properties = [
     "name": "timeline.metrics.aggregator.checkpoint.dir",
     "displayName": "Aggregator checkpoint directory",
     "description": "\n      Directory to store aggregator checkpoints\n    ",
-    "defaultValue": "/tmp",
+    "recommendedValue": "/tmp",
     "displayType": "directory",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4643,7 +4645,7 @@ var hdp2properties = [
     "name": "timeline.metrics.cluster.aggregator.hourly.checkpointCutOffMultiplier",
     "displayName": "Hourly cluster aggregator checkpoint cutOff multiplier",
     "description": "\n      Multiplier value * interval = Max allowed checkpoint lag. Effectively\n      if aggregator checkpoint is greater than max allowed checkpoint delay,\n      the checkpoint will be discarded by the aggregator.\n    ",
-    "defaultValue": "2",
+    "recommendedValue": "2",
     "displayType": "int",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4655,7 +4657,7 @@ var hdp2properties = [
     "name": "timeline.metrics.cluster.aggregator.hourly.disabled",
     "displayName": "Disable Hourly cluster aggregator",
     "description": "\n      Disable cluster based hourly aggregations.\n    ",
-    "defaultValue": "false",
+    "recommendedValue": "false",
     "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4667,7 +4669,7 @@ var hdp2properties = [
     "name": "timeline.metrics.cluster.aggregator.hourly.interval",
     "displayName": "Hourly cluster aggregator Interval",
     "description": "\n      Time in seconds to sleep for the hourly resolution cluster wide\n      aggregator. Default is 1 hour.\n    ",
-    "defaultValue": "3600",
+    "recommendedValue": "3600",
     "displayType": "int",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4679,7 +4681,7 @@ var hdp2properties = [
     "name": "timeline.metrics.cluster.aggregator.minute.checkpointCutOffMultiplier",
     "displayName": "Minute cluster aggregator checkpoint cutOff multiplier",
     "description": "\n      Multiplier value * interval = Max allowed checkpoint lag. Effectively\n      if aggregator checkpoint is greater than max allowed checkpoint delay,\n      the checkpoint will be discarded by the aggregator.\n    ",
-    "defaultValue": "2",
+    "recommendedValue": "2",
     "displayType": "int",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4691,7 +4693,7 @@ var hdp2properties = [
     "name": "timeline.metrics.cluster.aggregator.minute.disabled",
     "displayName": "Disable minute cluster aggregator",
     "description": "\n      Disable cluster based minute aggregations.\n    ",
-    "defaultValue": "false",
+    "recommendedValue": "false",
     "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4703,7 +4705,7 @@ var hdp2properties = [
     "name": "timeline.metrics.cluster.aggregator.minute.interval",
     "displayName": "Minute cluster aggregator interval",
     "description": "\n      Time in seconds to sleep for the minute resolution cluster wide\n      aggregator. Default resolution is 2 minutes.\n    ",
-    "defaultValue": "120",
+    "recommendedValue": "120",
     "displayType": "int",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4715,7 +4717,7 @@ var hdp2properties = [
     "name": "timeline.metrics.cluster.aggregator.minute.timeslice.interval",
     "displayName": "Minute cluster aggregator timeslice interval",
     "description": "\n      Lowest resolution of desired data for cluster level minute aggregates.\n    ",
-    "defaultValue": "15",
+    "recommendedValue": "15",
     "displayType": "int",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4727,7 +4729,7 @@ var hdp2properties = [
     "name": "timeline.metrics.host.aggregator.hourly.checkpointCutOffMultiplier",
     "displayName": "Hourly host aggregator checkpoint cutOff multiplier",
     "description": "\n      Multiplier value * interval = Max allowed checkpoint lag. Effectively\n      if aggregator checkpoint is greater than max allowed checkpoint delay,\n      the checkpoint will be discarded by the aggregator.\n    ",
-    "defaultValue": "2",
+    "recommendedValue": "2",
     "displayType": "int",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4739,7 +4741,7 @@ var hdp2properties = [
     "name": "timeline.metrics.host.aggregator.hourly.disabled",
     "displayName": "Disable Hourly host aggregator",
     "description": "\n      Disable host based hourly aggregations\n    ",
-    "defaultValue": "false",
+    "recommendedValue": "false",
     "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4751,7 +4753,7 @@ var hdp2properties = [
     "name": "timeline.metrics.host.aggregator.hourly.interval",
     "displayName": "Hourly host aggregator interval",
     "description": "\n      Time in seconds to sleep for the hourly resolution host based\n      aggregator. Default resolution is 1 hour.\n    ",
-    "defaultValue": "3600",
+    "recommendedValue": "3600",
     "displayType": "int",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4763,7 +4765,7 @@ var hdp2properties = [
     "name": "timeline.metrics.host.aggregator.minute.checkpointCutOffMultiplier",
     "displayName": "Minute host aggregator checkpoint cutOff multiplier",
     "description": "\n      Multiplier value * interval = Max allowed checkpoint lag. Effectively\n      if aggregator checkpoint is greater than max allowed checkpoint delay,\n      the checkpoint will be discarded by the aggregator.\n    ",
-    "defaultValue": "2",
+    "recommendedValue": "2",
     "displayType": "int",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4775,7 +4777,7 @@ var hdp2properties = [
     "name": "timeline.metrics.host.aggregator.minute.disabled",
     "displayName": "Disable Minute host aggregator",
     "description": "\n      Disable host based minute aggregations.\n    ",
-    "defaultValue": "false",
+    "recommendedValue": "false",
     "displayType": "string",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4787,7 +4789,7 @@ var hdp2properties = [
     "name": "timeline.metrics.host.aggregator.minute.interval",
     "displayName": "Minute host aggregator interval",
     "description": "\n      Time in seconds to sleep for the minute resolution host based\n      aggregator. Default resolution is 5 minutes.\n    ",
-    "defaultValue": "300",
+    "recommendedValue": "300",
     "displayType": "int",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4799,7 +4801,7 @@ var hdp2properties = [
     "name": "timeline.metrics.service.checkpointDelay",
     "displayName": "Metrics service checkpoint delay",
     "description": "\n      Time in seconds to sleep on the first run or when the checkpoint is\n      too old.\n    ",
-    "defaultValue": "120",
+    "recommendedValue": "120",
     "displayType": "int",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4811,7 +4813,7 @@ var hdp2properties = [
     "name": "timeline.metrics.service.default.result.limit",
     "displayName": "Metrics service default result limit",
     "description": "\n      Max result limit on number of rows returned. Calculated as follows:\n      4 aggregate metrics/min * 60 * 24: Retrieve aggregate data for 1 day.\n    ",
-    "defaultValue": "5760",
+    "recommendedValue": "5760",
     "displayType": "int",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -4823,7 +4825,7 @@ var hdp2properties = [
     "name": "timeline.metrics.service.resultset.fetchSize",
     "displayName": "Metrics service resultset fetchSize",
     "description": "\n      JDBC resultset prefect size for aggregator queries.\n    ",
-    "defaultValue": "2000",
+    "recommendedValue": "2000",
     "displayType": "int",
     "serviceName": "AMBARI_METRICS",
     "filename": "ams-site.xml",
@@ -5056,7 +5058,7 @@ if (App.get('isHadoopWindowsStack')) {
       "name": "hadoop.user.name",
       "displayName": "Hadoop User Name",
       "description": "User to run Hadoop services under",
-      "defaultValue": "hadoop",
+      "recommendedValue": "hadoop",
       "isReconfigurable": false,
       "displayType": "user",
       "isOverridable": false,
@@ -5087,7 +5089,7 @@ if (App.get('isHadoopWindowsStack')) {
       "name": "hive_database",
       "displayName": "Hive Database",
       "value": "",
-      "defaultValue": "Existing MSSQL Server database with SQL authentication",
+      "recommendedValue": "Existing MSSQL Server database with SQL authentication",
       "options": [
         {
           displayName: 'Existing MSSQL Server database with SQL authentication',
@@ -5116,7 +5118,7 @@ if (App.get('isHadoopWindowsStack')) {
       "name": "oozie_database",
       "displayName": "Oozie Database",
       "value": "",
-      "defaultValue": "Existing MSSQL Server database with SQL authentication",
+      "recommendedValue": "Existing MSSQL Server database with SQL authentication",
       "options": [
         {
           displayName: 'Existing MSSQL Server database with SQL authentication',