Repository: ambari
Updated Branches:
  refs/heads/trunk f01f86caa -> fcf60e74e


AMBARI-17862. Unexpected warning modal window is appearing while config 
modification. Second patch. (akovalenko)


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

Branch: refs/heads/trunk
Commit: fcf60e74ea48fbb18f7ba2bbb21d29534fadeaf2
Parents: f01f86c
Author: Aleksandr Kovalenko <[email protected]>
Authored: Wed Jul 27 17:25:21 2016 +0300
Committer: Aleksandr Kovalenko <[email protected]>
Committed: Wed Jul 27 17:29:52 2016 +0300

----------------------------------------------------------------------
 .../controllers/main/service/info/configs.js    |  12 ++-
 ambari-web/app/utils/config.js                  |   7 +-
 .../main/service/info/config_test.js            | 102 +++++++++++++++++--
 ambari-web/test/utils/config_test.js            |  60 +++++------
 4 files changed, 136 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/fcf60e74/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 6e2d091..89e8870 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -318,13 +318,17 @@ App.MainServiceInfoConfigsController = 
Em.Controller.extend(App.AddSecurityConfi
     }
     var hash = {};
     var sortedProperties = 
this.get('selectedService.configs').slice().sort(function(a, b) {
-      if (a.get('id') > b.get('id')) return -1;
-      if (a.get('id') < b.get('id')) return 1;
+      var first = a.get('id') || App.config.configId(a.get('name'), 
a.get('filename'));
+      var second = b.get('id') || App.config.configId(b.get('name'), 
b.get('filename'));
+      if (first < second) return -1;
+      if (first > second) return 1;
       return 0;
     });
     sortedProperties.forEach(function (config) {
+      var configId = '';
       if (config.isRequiredByAgent) {
-        hash[config.get('id')] = {
+        configId = config.get('id') || App.config.configId(config.get('name'), 
config.get('filename'));
+        hash[configId] = {
           value: App.config.formatPropertyValue(config),
           overrides: [],
           isFinal: config.get('isFinal')
@@ -333,7 +337,7 @@ App.MainServiceInfoConfigsController = 
Em.Controller.extend(App.AddSecurityConfi
         if (!config.get('overrides.length')) return;
 
         config.get('overrides').forEach(function (override) {
-          
hash[config.get('id')].overrides.push(App.config.formatPropertyValue(override));
+          
hash[configId].overrides.push(App.config.formatPropertyValue(override));
         });
       }
     });

http://git-wip-us.apache.org/repos/asf/ambari/blob/fcf60e74/ambari-web/app/utils/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js
index 20202e4..1b2bb89 100644
--- a/ambari-web/app/utils/config.js
+++ b/ambari-web/app/utils/config.js
@@ -362,8 +362,11 @@ App.config = Em.Object.create({
    */
   createHostNameProperty: function(serviceName, componentName, value, 
stackComponent) {
     var hostOrHosts = stackComponent.get('isMultipleAllowed') ? 'hosts' : 
'host';
+    var name = componentName.toLowerCase() + '_' + hostOrHosts;
+    var filename = serviceName.toLowerCase() + "-site.xml";
     return {
-      "name": componentName.toLowerCase() + '_' + hostOrHosts,
+      "id": App.config.configId(name, filename),
+      "name": name,
       "displayName":  stackComponent.get('displayName') + ' ' + (value.length 
> 1 ? 'hosts' : 'host'),
       "value": value,
       "recommendedValue": value,
@@ -372,7 +375,7 @@ App.config = Em.Object.create({
       "isOverridable": false,
       "isRequiredByAgent": false,
       "serviceName": serviceName,
-      "filename": serviceName.toLowerCase() + "-site.xml",
+      "filename": filename,
       "category": componentName,
       "index": 0
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/fcf60e74/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 fb127a2..a06ff8a 100644
--- a/ambari-web/test/controllers/main/service/info/config_test.js
+++ b/ambari-web/test/controllers/main/service/info/config_test.js
@@ -56,14 +56,103 @@ describe("App.MainServiceInfoConfigsController", function 
() {
           Em.Object.create({
             id: "hive.llap.daemon.task.scheduler.enable.preemption",
             isRequiredByAgent: true,
-            isFinal: false
+            isFinal: false,
+            value: ''
           }),
           Em.Object.create({
             id: "ambari.copy.hive.llap.daemon.num.executors",
             isRequiredByAgent: false,
+            isFinal: false,
+            value: ''
+          })
+        ],
+        result: JSON.stringify({
+          'hive.llap.daemon.task.scheduler.enable.preemption': {
+            value: '',
+            overrides: [],
             isFinal: false
+          }
+        })
+      },
+      {
+        msg: "properties should be sorted in alphabetical order",
+        configs: [
+          Em.Object.create({
+            id: "b.b",
+            isRequiredByAgent: true,
+            isFinal: false,
+            value: ''
+          }),
+          Em.Object.create({
+            id: "b.a",
+            isRequiredByAgent: true,
+            isFinal: false,
+            value: ''
+          }),
+          Em.Object.create({
+            id: "b.c",
+            isRequiredByAgent: true,
+            isFinal: false,
+            value: ''
+          }),
+          Em.Object.create({
+            id: "a.b",
+            isRequiredByAgent: true,
+            isFinal: false,
+            value: ''
           })
-        ]
+        ],
+        result: JSON.stringify({
+          'a.b': {
+            value: '',
+            overrides: [],
+            isFinal: false
+          },
+          'b.a': {
+            value: '',
+            overrides: [],
+            isFinal: false
+          },
+          'b.b': {
+            value: '',
+            overrides: [],
+            isFinal: false
+          },
+          'b.c': {
+            value: '',
+            overrides: [],
+            isFinal: false
+          }
+        })
+      },{
+        msg: "properties without id should be sorted with",
+        configs: [
+          Em.Object.create({
+            isRequiredByAgent: true,
+            isFinal: false,
+            value: '',
+            name: 'name',
+            filename: 'filename'
+          }),
+          Em.Object.create({
+            id: "a",
+            isRequiredByAgent: true,
+            isFinal: false,
+            value: ''
+          })
+        ],
+        result: JSON.stringify({
+          'a': {
+            value: '',
+            overrides: [],
+            isFinal: false
+          },
+          'name__filename': {
+            value: '',
+            overrides: [],
+            isFinal: false
+          }
+        })
       }
     ];
 
@@ -74,14 +163,7 @@ describe("App.MainServiceInfoConfigsController", function 
() {
     tests.forEach(function (t) {
       it(t.msg, function () {
         mainServiceInfoConfigsController.set('selectedService', {configs: 
t.configs});
-        var stackDrivenConfig = t.configs.findProperty('isRequiredByAgent');
-        var configs = {};
-        configs[stackDrivenConfig.id] = {
-          value: stackDrivenConfig.value,
-          overrides: [],
-          isFinal: stackDrivenConfig.isFinal
-        };
-        
expect(mainServiceInfoConfigsController.getHash()).to.equal(JSON.stringify(configs));
+        expect(mainServiceInfoConfigsController.getHash()).to.equal(t.result);
       });
     });
   });

http://git-wip-us.apache.org/repos/asf/ambari/blob/fcf60e74/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 7b7dfa9..35d272d 100644
--- a/ambari-web/test/utils/config_test.js
+++ b/ambari-web/test/utils/config_test.js
@@ -823,45 +823,47 @@ describe('App.config', function () {
     });
   });
 
-  describe('#createHostNameProperty', function() {
-    it('create host property', function() {
+  describe('#createHostNameProperty', function () {
+    it('create host property', function () {
       expect(App.config.createHostNameProperty('service1', 'component1', 
['host1'], Em.Object.create({
         isMultipleAllowed: false,
         displayName: 'display name'
       }))).to.eql({
-          "name": 'component1_host',
-          "displayName": 'display name host',
-          "value": ['host1'],
-          "recommendedValue": ['host1'],
-          "description": "The host that has been assigned to run display name",
-          "displayType": "componentHost",
-          "isOverridable": false,
-          "isRequiredByAgent": false,
-          "serviceName": 'service1',
-          "filename": "service1-site.xml",
-          "category": 'component1',
-          "index": 0
-        })
+            "id": 'component1_host__service1-site',
+            "name": 'component1_host',
+            "displayName": 'display name host',
+            "value": ['host1'],
+            "recommendedValue": ['host1'],
+            "description": "The host that has been assigned to run display 
name",
+            "displayType": "componentHost",
+            "isOverridable": false,
+            "isRequiredByAgent": false,
+            "serviceName": 'service1',
+            "filename": "service1-site.xml",
+            "category": 'component1',
+            "index": 0
+          })
     });
 
-    it('create hosts property', function() {
+    it('create hosts property', function () {
       expect(App.config.createHostNameProperty('service1', 'component1', 
['host1'], Em.Object.create({
         isMultipleAllowed: true,
         displayName: 'display name'
       }))).to.eql({
-          "name": 'component1_hosts',
-          "displayName": 'display name host',
-          "value": ['host1'],
-          "recommendedValue": ['host1'],
-          "description": "The hosts that has been assigned to run display 
name",
-          "displayType": "componentHosts",
-          "isOverridable": false,
-          "isRequiredByAgent": false,
-          "serviceName": 'service1',
-          "filename": "service1-site.xml",
-          "category": 'component1',
-          "index": 0
-        })
+            "id": 'component1_hosts__service1-site',
+            "name": 'component1_hosts',
+            "displayName": 'display name host',
+            "value": ['host1'],
+            "recommendedValue": ['host1'],
+            "description": "The hosts that has been assigned to run display 
name",
+            "displayType": "componentHosts",
+            "isOverridable": false,
+            "isRequiredByAgent": false,
+            "serviceName": 'service1',
+            "filename": "service1-site.xml",
+            "category": 'component1',
+            "index": 0
+          })
     });
   });
 

Reply via email to