This is an automated email from the ASF dual-hosted git repository. atkach pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push: new a46fd29 AMBARI-24868 JS error when changing service auto-start toggle a46fd29 is described below commit a46fd29294a64a8672d7e091ea4fb459e7299328 Author: Andrii Tkach <atk...@apache.org> AuthorDate: Thu Nov 8 13:13:16 2018 +0200 AMBARI-24868 JS error when changing service auto-start toggle --- .../app/controllers/global/update_controller.js | 9 ++-- .../controllers/main/admin/service_auto_start.js | 44 +++++++++--------- .../controllers/global/update_controller_test.js | 4 +- .../main/admin/service_auto_start_test.js | 53 +++++++++------------- 4 files changed, 52 insertions(+), 58 deletions(-) diff --git a/ambari-web/app/controllers/global/update_controller.js b/ambari-web/app/controllers/global/update_controller.js index 5d6b15de..6ab57dd 100644 --- a/ambari-web/app/controllers/global/update_controller.js +++ b/ambari-web/app/controllers/global/update_controller.js @@ -685,10 +685,11 @@ App.UpdateController = Em.Controller.extend({ }, configsChangedHandler: function(event) { - if (event.configs && event.configs.someProperty('type', 'cluster-env')) { - this.updateClusterEnv(); - } - App.router.get('configurationController').updateConfigTags(); + App.router.get('configurationController').updateConfigTags().always(() => { + if (event.configs && event.configs.someProperty('type', 'cluster-env')) { + this.updateClusterEnv(); + } + }); }, //TODO - update service auto-start to use this diff --git a/ambari-web/app/controllers/main/admin/service_auto_start.js b/ambari-web/app/controllers/main/admin/service_auto_start.js index 1eb4cc7..d5a4fd6 100644 --- a/ambari-web/app/controllers/main/admin/service_auto_start.js +++ b/ambari-web/app/controllers/main/admin/service_auto_start.js @@ -37,11 +37,11 @@ App.MainAdminServiceAutoStartController = Em.Controller.extend({ */ componentsConfigsCachedMap: function() { const map = {}; - this.get('componentsConfigsCached').mapProperty('ServiceComponentInfo').forEach((component) => { + this.get('componentsConfigsCached').forEach((component) => { map[component.component_name] = component.recovery_enabled === 'true' }); return map; - }.property('componentsConfigsCached.@each.ServiceComponentInfo.recovery_enabled'), + }.property('componentsConfigsCached.@each.recovery_enabled'), /** * @type {Array} @@ -94,23 +94,19 @@ App.MainAdminServiceAutoStartController = Em.Controller.extend({ }.property('componentsConfigsGrouped.@each.recoveryEnabled', 'componentsConfigsCachedMap'), parseComponentConfigs: function(componentsConfigsCached) { - componentsConfigsCached.sortPropertyLight('ServiceComponentInfo.service_name'); + componentsConfigsCached.sortPropertyLight('service_name'); const componentsConfigsGrouped = []; - const servicesMap = componentsConfigsCached - .mapProperty('ServiceComponentInfo.service_name').uniq().toWickMap(); - - componentsConfigsCached.mapProperty('ServiceComponentInfo').forEach((component) => { - // Hide clients, as the are not restartable, components which are not installed - if (App.StackServiceComponent.find(component.component_name).get('isRestartable') && component.total_count) { - componentsConfigsGrouped.push(Em.Object.create({ - serviceDisplayName: App.format.role(component.service_name, true), - isFirst: servicesMap[component.service_name], - componentName: component.component_name, - displayName: App.format.role(component.component_name, false), - recoveryEnabled: component.recovery_enabled === 'true' - })); - servicesMap[component.service_name] = false; - } + const servicesMap = componentsConfigsCached.mapProperty('service_name').uniq().toWickMap(); + + componentsConfigsCached.forEach((component) => { + componentsConfigsGrouped.push(Em.Object.create({ + serviceDisplayName: App.format.role(component.service_name, true), + isFirst: servicesMap[component.service_name], + componentName: component.component_name, + displayName: App.format.role(component.component_name, false), + recoveryEnabled: component.recovery_enabled === 'true' + })); + servicesMap[component.service_name] = false; }); return componentsConfigsGrouped; }, @@ -140,8 +136,12 @@ App.MainAdminServiceAutoStartController = Em.Controller.extend({ }, loadComponentsConfigsSuccess: function (data) { - this.set('componentsConfigsCached', data.items); - this.set('componentsConfigsGrouped', this.parseComponentConfigs(data.items)); + const restartableComponents = data.items.mapProperty('ServiceComponentInfo').filter((component) => { + // Hide clients, as the are not restartable, components which are not installed + return App.StackServiceComponent.find(component.component_name).get('isRestartable') && component.total_count > 0; + }); + this.set('componentsConfigsCached', restartableComponents); + this.set('componentsConfigsGrouped', this.parseComponentConfigs(restartableComponents)); }, saveClusterConfigs: function (clusterConfigs, recoveryEnabled) { @@ -172,9 +172,9 @@ App.MainAdminServiceAutoStartController = Em.Controller.extend({ syncStatus: function () { const componentsConfigsGrouped = this.get('componentsConfigsGrouped'); this.set('isGeneralRecoveryEnabledCached', this.get('isGeneralRecoveryEnabled')); - this.get('componentsConfigsCached').mapProperty('ServiceComponentInfo').forEach((component) => { + this.get('componentsConfigsCached').forEach((component) => { const actualComponent = componentsConfigsGrouped.findProperty('componentName', component.component_name); - component.recovery_enabled = String(actualComponent.get('recoveryEnabled')); + Ember.set(component, 'recovery_enabled', String(actualComponent.get('recoveryEnabled'))); }); this.propertyDidChange('componentsConfigsCached'); }, diff --git a/ambari-web/test/controllers/global/update_controller_test.js b/ambari-web/test/controllers/global/update_controller_test.js index dabb4e1..5ca5703 100644 --- a/ambari-web/test/controllers/global/update_controller_test.js +++ b/ambari-web/test/controllers/global/update_controller_test.js @@ -542,7 +542,9 @@ describe('App.UpdateController', function () { describe('#configsChangedHandler', function() { beforeEach(function() { sinon.stub(c, 'updateClusterEnv'); - sinon.stub(App.router.get('configurationController'), 'updateConfigTags'); + sinon.stub(App.router.get('configurationController'), 'updateConfigTags').returns({ + always: Em.clb + }); }); afterEach(function() { c.updateClusterEnv.restore(); diff --git a/ambari-web/test/controllers/main/admin/service_auto_start_test.js b/ambari-web/test/controllers/main/admin/service_auto_start_test.js index 5e8983e..30c0c4d 100644 --- a/ambari-web/test/controllers/main/admin/service_auto_start_test.js +++ b/ambari-web/test/controllers/main/admin/service_auto_start_test.js @@ -31,31 +31,18 @@ describe('App.MainAdminServiceAutoStartController', function() { describe('#parseComponentConfigs', function() { var components = [ { - ServiceComponentInfo: { - service_name: 'S1', - component_name: 'C1', - recovery_enabled: 'true', - category: 'SLAVE', - total_count: 1 - } - }, - { - ServiceComponentInfo: { - service_name: 'S1', - component_name: 'C2', - recovery_enabled: 'false', - total_count: 2, - category: 'SLAVE', - } + service_name: 'S1', + component_name: 'C1', + recovery_enabled: 'true', + category: 'SLAVE', + total_count: 1 }, { - ServiceComponentInfo: { - category: 'SLAVE', - service_name: 'S2', - component_name: 'C1', - recovery_enabled: 'false', - total_count: 0 - } + service_name: 'S1', + component_name: 'C2', + recovery_enabled: 'false', + total_count: 2, + category: 'SLAVE', } ]; it('should return parsed components, filter out not installed components', function() { @@ -142,18 +129,24 @@ describe('App.MainAdminServiceAutoStartController', function() { beforeEach(function() { sinon.stub(controller, 'parseComponentConfigs').returns({}); + sinon.stub(App.StackServiceComponent, 'find').returns(Em.Object.create({ + isRestartable: true + })); + controller.loadComponentsConfigsSuccess({items: [ + {ServiceComponentInfo:{total_count: 0}}, + {ServiceComponentInfo:{total_count: 1}} + ]}); }); afterEach(function() { controller.parseComponentConfigs.restore(); + App.StackServiceComponent.find.restore(); }); it('componentsConfigsCached should be set', function() { - controller.loadComponentsConfigsSuccess({items: [{prop1: 'val1'}]}); - expect(controller.get('componentsConfigsCached')).to.be.eql([{prop1: 'val1'}]); + expect(controller.get('componentsConfigsCached')).to.be.eql([{total_count: 1}]); }); it('componentsConfigsGrouped should be set', function() { - controller.loadComponentsConfigsSuccess({items: {prop1: 'val1'}}); expect(controller.get('componentsConfigsGrouped')).to.be.eql({}); }); }); @@ -204,10 +197,8 @@ describe('App.MainAdminServiceAutoStartController', function() { controller.set('isGeneralRecoveryEnabled', true); controller.set('componentsConfigsCached', [ { - ServiceComponentInfo: { - component_name: 'C1', - recovery_enabled: 'false' - } + component_name: 'C1', + recovery_enabled: 'false' } ]); controller.set('componentsConfigsGrouped', [ @@ -217,7 +208,7 @@ describe('App.MainAdminServiceAutoStartController', function() { }) ]); controller.syncStatus(); - expect(controller.get('componentsConfigsCached')[0].ServiceComponentInfo.recovery_enabled).to.be.equal('true'); + expect(controller.get('componentsConfigsCached')[0].recovery_enabled).to.be.equal('true'); expect(controller.get('isGeneralRecoveryEnabledCached')).to.be.true; }); });