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');
+    });
+
+  });
+
 });

Reply via email to