This is an automated email from the ASF dual-hosted git repository. ishanbha pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push: new 79ed221 [AMBARI-24523] Hive and Oozie JDBC url reset after set manually. 79ed221 is described below commit 79ed22126f1ae203d70375bd17088f7c0a2e9645 Author: Ishan Bhatt <ishanbhatt.1...@gmail.com> AuthorDate: Wed Aug 22 14:34:09 2018 -0700 [AMBARI-24523] Hive and Oozie JDBC url reset after set manually. --- .../mixins/common/configs/config_recommendation_parser.js | 11 ++++++++--- ambari-web/app/mixins/common/configs/enhanced_configs.js | 15 ++++++++++++--- ambari-web/app/views/common/controls_view.js | 2 ++ .../common/configs/config_recommendation_parser_test.js | 2 ++ 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/ambari-web/app/mixins/common/configs/config_recommendation_parser.js b/ambari-web/app/mixins/common/configs/config_recommendation_parser.js index 6bcd322..49b86a1 100644 --- a/ambari-web/app/mixins/common/configs/config_recommendation_parser.js +++ b/ambari-web/app/mixins/common/configs/config_recommendation_parser.js @@ -158,7 +158,7 @@ App.ConfigRecommendationParser = Em.Mixin.create(App.ConfigRecommendations, { fileName = Em.get(config, 'filename'), group = Em.get(config, 'group.name'), value = Em.get(config, 'value'), - prevRecommeneded = Em.get(config, 'recommendedValue'); + isUserOverriden = Em.get(config, 'didUserOverrideValue');; Em.set(config, 'recommendedValue', recommendedValue); if (this.allowUpdateProperty(parentProperties, name, fileName, group, value)) { var allowConfigUpdate = true; @@ -170,7 +170,7 @@ App.ConfigRecommendationParser = Em.Mixin.create(App.ConfigRecommendations, { } } - if (prevRecommeneded !== value && name !== "capacity-scheduler") { + if (isUserOverriden && name !== "capacity-scheduler") { allowConfigUpdate = false; } @@ -184,7 +184,12 @@ App.ConfigRecommendationParser = Em.Mixin.create(App.ConfigRecommendations, { if (!Em.isNone(recommendedValue) && !Em.get(config, 'hiddenBySection')) { Em.set(config, 'isVisible', true); } - this.applyRecommendation(name, fileName, group, recommendedValue, this._getInitialValue(config), parentProperties, Em.get(config, 'isEditable')); + let recommendationExists = this.getRecommendation(name, fileName, group); + if (recommendationExists && isUserOverriden) { + this.removeRecommendation(name, fileName, group); + } else if (!isUserOverriden) { + this.applyRecommendation(name, fileName, group, recommendedValue, this._getInitialValue(config), parentProperties, Em.get(config, 'isEditable')); + } } if (this.updateInitialOnRecommendations(Em.get(config, 'serviceName'))) { Em.set(config, 'initialValue', recommendedValue); diff --git a/ambari-web/app/mixins/common/configs/enhanced_configs.js b/ambari-web/app/mixins/common/configs/enhanced_configs.js index e8b0864..750ab4d 100644 --- a/ambari-web/app/mixins/common/configs/enhanced_configs.js +++ b/ambari-web/app/mixins/common/configs/enhanced_configs.js @@ -628,14 +628,23 @@ App.EnhancedConfigsMixin = Em.Mixin.create(App.ConfigWithOverrideRecommendationP }, /** - * disable saving recommended value for current config + * disable saving recommended value for current config. Remove recommendation for useroverriden values * @param config * @param {boolean} saveRecommended * @method removeCurrentFromDependentList */ removeCurrentFromDependentList: function (config, saveRecommended) { - var recommendation = this.getRecommendation(config.get('name'), config.get('filename'), config.get('group.name')); - if (recommendation) this.saveRecommendation(recommendation, saveRecommended); + let name = config.get('name'), + fileName = config.get('filename'), + group = config.get('group.name'); + var recommendation = this.getRecommendation(name, fileName, group); + if (recommendation) { + if (config.get('didUserOverrideValue')) { + this.removeRecommendation(name, fileName, group); + } else { + this.saveRecommendation(recommendation, saveRecommended); + } + } }, updateAttributesFromTheme: function (serviceName) { diff --git a/ambari-web/app/views/common/controls_view.js b/ambari-web/app/views/common/controls_view.js index 2c3c4d8..387dbca 100644 --- a/ambari-web/app/views/common/controls_view.js +++ b/ambari-web/app/views/common/controls_view.js @@ -170,6 +170,7 @@ App.ValueObserver = Em.Mixin.create(App.SupportsDependentConfigs, { if (this.get('selected') || this.get('serviceConfig.changedViaUndoValue')) { var self = this, config = this.get('serviceConfig'), controller = this.get('controller'); + Em.set(config, 'didUserOverrideValue', true); delay(function(){ self.sendRequestRorDependentConfigs(config, controller); }, 500); @@ -186,6 +187,7 @@ App.WidgetValueObserver = Em.Mixin.create(App.ValueObserver, { if (this.get('selected')) { var self = this, config = this.get('config'), controller = this.get('controller'); + Em.set(config, 'didUserOverrideValue', true); delay(function(){ self.sendRequestRorDependentConfigs(config, controller); }, 500); diff --git a/ambari-web/test/mixins/common/configs/config_recommendation_parser_test.js b/ambari-web/test/mixins/common/configs/config_recommendation_parser_test.js index f08bbad..e128ed5 100644 --- a/ambari-web/test/mixins/common/configs/config_recommendation_parser_test.js +++ b/ambari-web/test/mixins/common/configs/config_recommendation_parser_test.js @@ -229,6 +229,7 @@ describe('App.ConfigRecommendationParser', function() { describe('update recommendation', function() { beforeEach(function() { sinon.spy(instanceObject, 'applyRecommendation'); + sinon.stub(instanceObject, 'getRecommendation').returns(false); sinon.stub(instanceObject, 'allowUpdateProperty').returns(c.allowUpdateProperty); sinon.stub(instanceObject, 'updateInitialOnRecommendations').returns(c.updateInitialOnRecommendations); }); @@ -236,6 +237,7 @@ describe('App.ConfigRecommendationParser', function() { instanceObject.allowUpdateProperty.restore(); instanceObject.updateInitialOnRecommendations.restore(); instanceObject.applyRecommendation.restore(); + instanceObject.getRecommendation.restore(); }); it(c.m, function() {