AMBARI-20526. Config is not shown on comparison mode if it doesn't exist in the latest version (onechiporenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/da814785 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/da814785 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/da814785 Branch: refs/heads/branch-feature-AMBARI-12556 Commit: da814785ddea9b86384188f4d01c987f1154e896 Parents: 64fc0e2 Author: Oleg Nechiporenko <[email protected]> Authored: Wed Mar 22 11:44:15 2017 +0200 Committer: Oleg Nechiporenko <[email protected]> Committed: Thu Mar 23 10:13:23 2017 +0200 ---------------------------------------------------------------------- .../mixins/common/configs/configs_comparator.js | 21 ++++++++++++++++---- .../service_config_version_mapper_test.js | 2 +- .../test/mappers/configs/themes_mapper_test.js | 2 +- .../common/configs/configs_comparator_test.js | 2 ++ 4 files changed, 21 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/da814785/ambari-web/app/mixins/common/configs/configs_comparator.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mixins/common/configs/configs_comparator.js b/ambari-web/app/mixins/common/configs/configs_comparator.js index e9fb942..748e77e 100644 --- a/ambari-web/app/mixins/common/configs/configs_comparator.js +++ b/ambari-web/app/mixins/common/configs/configs_comparator.js @@ -98,7 +98,8 @@ App.ConfigsComparator = Em.Mixin.create({ type: configuration.type, tag: configuration.tag, version: configuration.version, - service_config_version: item.service_config_version + service_config_version: item.service_config_version, + filename: App.config.getOriginalFileName(configuration.type) }; if (Em.isNone(configNamesMap[prop])) { allConfigs.push(this.getMockConfig(prop, serviceName, App.config.getOriginalFileName(configuration.type))); @@ -127,7 +128,7 @@ App.ConfigsComparator = Em.Mixin.create({ */ addCompareConfigs: function(compareNonDefaultVersions, allConfigs, serviceVersionMap) { var compareVersionNumber = this.get('compareServiceVersion.version'); - + var serviceName = this.get('content.serviceName'); if (compareNonDefaultVersions) { allConfigs.forEach(function (serviceConfig) { if (Em.get(serviceConfig, 'isRequiredByAgent') !== false) { @@ -135,13 +136,25 @@ App.ConfigsComparator = Em.Mixin.create({ } }, this); } else { + var serviceCfgVersionMap = serviceVersionMap[this.get('compareServiceVersion.version')] || {}; + var allConfigsMap = {}; allConfigs.forEach(function (serviceConfig) { + var id = serviceConfig.name + '-' + App.config.getConfigTagFromFileName(serviceConfig.filename); + allConfigsMap[id] = serviceConfig; if (Em.get(serviceConfig, 'isRequiredByAgent') !== false) { - var serviceCfgVersionMap = serviceVersionMap[this.get('compareServiceVersion.version')]; - var compareConfig = serviceCfgVersionMap[serviceConfig.name + '-' + App.config.getConfigTagFromFileName(serviceConfig.filename)]; + var compareConfig = serviceCfgVersionMap[id]; this.setCompareDefaultGroupConfig(serviceConfig, compareConfig); } }, this); + if (allConfigs.length !== Object.keys(serviceCfgVersionMap).length) { + Object.keys(serviceCfgVersionMap).forEach(id => { + if (!allConfigsMap[id]) { + var mockConfig = this.getMockConfig(serviceCfgVersionMap[id].name, serviceName, serviceCfgVersionMap[id].filename); + this.setCompareDefaultGroupConfig(mockConfig, serviceCfgVersionMap[id]); + allConfigs.push(mockConfig); + } + }); + } } }, http://git-wip-us.apache.org/repos/asf/ambari/blob/da814785/ambari-web/test/mappers/configs/service_config_version_mapper_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/mappers/configs/service_config_version_mapper_test.js b/ambari-web/test/mappers/configs/service_config_version_mapper_test.js index d99864a..2027bba 100644 --- a/ambari-web/test/mappers/configs/service_config_version_mapper_test.js +++ b/ambari-web/test/mappers/configs/service_config_version_mapper_test.js @@ -124,7 +124,7 @@ describe('App.serviceConfigVersionsMapper', function () { }); it('currentVersionMap should have not current version', function() { - expect(currentVersionMap['S1_g2'].get('isCurrent')).to.be.false; + expect(currentVersionMap.S1_g2.get('isCurrent')).to.be.false; }); it('App.router.set should be called', function() { http://git-wip-us.apache.org/repos/asf/ambari/blob/da814785/ambari-web/test/mappers/configs/themes_mapper_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/mappers/configs/themes_mapper_test.js b/ambari-web/test/mappers/configs/themes_mapper_test.js index b869109..a36de72 100644 --- a/ambari-web/test/mappers/configs/themes_mapper_test.js +++ b/ambari-web/test/mappers/configs/themes_mapper_test.js @@ -487,7 +487,7 @@ describe('App.themeMapper', function () { } }; beforeEach(function() { - this.mockConfig = sinon.stub(App.configsCollection, 'getConfig'); + this.mockConfig = sinon.stub(App.configsCollection, 'getConfig'); this.mockConfigByName = sinon.stub(App.configsCollection, 'getConfigByName'); }); afterEach(function() { http://git-wip-us.apache.org/repos/asf/ambari/blob/da814785/ambari-web/test/mixins/common/configs/configs_comparator_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/mixins/common/configs/configs_comparator_test.js b/ambari-web/test/mixins/common/configs/configs_comparator_test.js index dc7534c..263cd96 100644 --- a/ambari-web/test/mixins/common/configs/configs_comparator_test.js +++ b/ambari-web/test/mixins/common/configs/configs_comparator_test.js @@ -226,6 +226,7 @@ describe('App.ConfigsComparator', function() { expect(mixin.addCompareConfigs.getCall(0).args[2]).to.be.eql({ v1: { 'prop1-t1': { + filename: 't1.xml', name: 'prop1', value: 'val1', type: 't1', @@ -236,6 +237,7 @@ describe('App.ConfigsComparator', function() { }, v2: { 'prop2-t2': { + filename: 't2.xml', name: 'prop2', value: 'val2', type: 't2',
