AMBARI-20302. Despite user selecting not to apply Config Changes, Changes are being applied (akovalenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2572469f Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2572469f Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2572469f Branch: refs/heads/branch-feature-AMBARI-12556 Commit: 2572469f537f0400cab1377940dc90cbac497e6e Parents: 135c0cb Author: Aleksandr Kovalenko <akovale...@hortonworks.com> Authored: Fri Mar 3 16:57:47 2017 +0200 Committer: Aleksandr Kovalenko <akovale...@hortonworks.com> Committed: Fri Mar 3 17:39:27 2017 +0200 ---------------------------------------------------------------------- ambari-web/app/controllers/main/service/item.js | 22 +++++- .../test/controllers/main/service/item_test.js | 71 ++++++++++++++++++++ 2 files changed, 91 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/2572469f/ambari-web/app/controllers/main/service/item.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/service/item.js b/ambari-web/app/controllers/main/service/item.js index 621c3b6..817d5d9 100644 --- a/ambari-web/app/controllers/main/service/item.js +++ b/ambari-web/app/controllers/main/service/item.js @@ -1524,8 +1524,12 @@ App.MainServiceItemController = Em.Controller.extend(App.SupportClientConfigsDow */ saveConfigs: function() { var data = [], - progressPopup = this.get('deleteServiceProgressPopup'); - this.get('stepConfigs').forEach(function(stepConfig) { + progressPopup = this.get('deleteServiceProgressPopup'), + stepConfigs = this.get('stepConfigs'); + + this.applyRecommendedValues(stepConfigs); + + stepConfigs.forEach(function (stepConfig) { var serviceConfig = this.getServiceConfigToSave(stepConfig.get('serviceName'), stepConfig.get('configs')); if (serviceConfig) { @@ -1544,6 +1548,20 @@ App.MainServiceItemController = Em.Controller.extend(App.SupportClientConfigsDow } }, + applyRecommendedValues: function (stepConfigs) { + var changedProperties = this.get('changedProperties'); + changedProperties.forEach(function (property) { + var serviceConfigs = stepConfigs.findProperty('serviceName', property.serviceName); + if (serviceConfigs) { + var prop = serviceConfigs.get('configs').findProperty('name', property.propertyName); + if (prop) { + prop.set('value', property.saveRecommended ? property.recommendedValue : property.initialValue); + } + } + }); + return stepConfigs; + }, + confirmServiceDeletion: function() { let serviceNames, msg; if (this.get('interDependentServices.length')) { http://git-wip-us.apache.org/repos/asf/ambari/blob/2572469f/ambari-web/test/controllers/main/service/item_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/service/item_test.js b/ambari-web/test/controllers/main/service/item_test.js index fff321c..e33ecaa 100644 --- a/ambari-web/test/controllers/main/service/item_test.js +++ b/ambari-web/test/controllers/main/service/item_test.js @@ -1922,4 +1922,75 @@ describe('App.MainServiceItemController', function () { }); }); + + describe('#applyRecommendedValues', function () { + + var controller; + + beforeEach(function () { + controller = App.MainServiceItemController.create({ + stepConfigs: [ + Em.Object.create({ + serviceName: 's1', + configs: [ + Em.Object.create({ + name: 'p1', + value: 'v1' + }), + Em.Object.create({ + name: 'p2', + value: 'v2' + }) + ] + }), + Em.Object.create({ + serviceName: 's2', + configs: [ + Em.Object.create({ + name: 'p3', + value: 'v3' + }), + Em.Object.create({ + name: 'p4', + value: 'v4' + }) + ] + }) + ], + changedProperties: [ + { + serviceName: 's1', + propertyName: 'p1', + recommendedValue: 'r1', + initialValue: 'i1', + saveRecommended: false + }, + { + serviceName: 's1', + propertyName: 'p2', + recommendedValue: 'r2', + initialValue: 'i2', + saveRecommended: true + }, + { + serviceName: 's2', + propertyName: 'p3', + recommendedValue: 'r3', + initialValue: 'i3', + saveRecommended: true + } + ] + }); + }); + + it('should update properties with saveRecommended flag set to true', function () { + controller.applyRecommendedValues(controller.get('stepConfigs')); + expect(controller.get('stepConfigs').findProperty('serviceName', 's1').get('configs').findProperty('name', 'p1').get('value')).to.equal('i1'); + expect(controller.get('stepConfigs').findProperty('serviceName', 's1').get('configs').findProperty('name', 'p2').get('value')).to.equal('r2'); + expect(controller.get('stepConfigs').findProperty('serviceName', 's2').get('configs').findProperty('name', 'p3').get('value')).to.equal('r3'); + expect(controller.get('stepConfigs').findProperty('serviceName', 's2').get('configs').findProperty('name', 'p4').get('value')).to.equal('v4'); + }); + + }); + });