Repository: ambari Updated Branches: refs/heads/branch-2.4 b30e6b7f1 -> 154536857
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/15453685 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/15453685 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/15453685 Branch: refs/heads/branch-2.4 Commit: 154536857a9b6c54d51762b4273a2e6da3ea7b96 Parents: b30e6b7 Author: Aleksandr Kovalenko <[email protected]> Authored: Wed Jul 27 17:25:21 2016 +0300 Committer: Aleksandr Kovalenko <[email protected]> Committed: Wed Jul 27 18:19:55 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/15453685/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/15453685/ambari-web/app/utils/config.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js index 6c6e7f6..e97f08d 100644 --- a/ambari-web/app/utils/config.js +++ b/ambari-web/app/utils/config.js @@ -341,8 +341,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, @@ -351,7 +354,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/15453685/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/15453685/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 + }) }); });
