Repository: ambari Updated Branches: refs/heads/trunk 0f602e15c -> 3dd19b160
AMBARI-11523. Add Service Wizard: issues with JDBC setup warning for Ranger (onechiporenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/3dd19b16 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/3dd19b16 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/3dd19b16 Branch: refs/heads/trunk Commit: 3dd19b16027440e837f0a5acd0369771eca95122 Parents: 0f602e1 Author: Oleg Nechiporenko <onechipore...@apache.org> Authored: Fri May 29 12:21:26 2015 +0300 Committer: Oleg Nechiporenko <onechipore...@apache.org> Committed: Fri May 29 12:21:26 2015 +0300 ---------------------------------------------------------------------- ambari-web/app/views/common/controls_view.js | 36 ++-- .../test/views/common/controls_view_test.js | 183 +++++++++++++++++++ 2 files changed, 202 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/3dd19b16/ambari-web/app/views/common/controls_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/common/controls_view.js b/ambari-web/app/views/common/controls_view.js index d2953b9..96e8a5d 100644 --- a/ambari-web/app/views/common/controls_view.js +++ b/ambari-web/app/views/common/controls_view.js @@ -780,26 +780,28 @@ App.ServiceConfigRadioButtons = Ember.View.extend(App.ServiceConfigCalculateId, // check for all db types when installing Ranger - not only for existing ones checkDatabase = true; } - propertyAppendTo1.set('additionalView', null); - propertyAppendTo2.set('additionalView', null); - if (currentDB && checkDatabase) { - if (handledProperties.contains(this.get('serviceConfig.name'))) { - if (propertyAppendTo1) { - Em.run.next(function(){ - propertyAppendTo1.set('additionalView', App.CheckDBConnectionView.extend({databaseName: currentDB})); - }); - } - if (propertyAppendTo2) { - propertyAppendTo2.set('additionalView', Ember.View.extend({ - template: Ember.Handlebars.compile('<div class="alert">{{{view.message}}}</div>'), - message: Em.I18n.t('services.service.config.database.msg.jdbcSetup').format(currentDBType.toLowerCase(), currentDBType.toLowerCase()) - })); - } - } - } else { + if (propertyAppendTo1) { propertyAppendTo1.set('additionalView', null); + } + if (propertyAppendTo2) { propertyAppendTo2.set('additionalView', null); } + var shouldAdditionalViewsBeSet = currentDB && checkDatabase && handledProperties.contains(this.get('serviceConfig.name')), + additionalView1 = shouldAdditionalViewsBeSet ? App.CheckDBConnectionView.extend({databaseName: currentDB}) : null, + additionalView2 = shouldAdditionalViewsBeSet ? Ember.View.extend({ + template: Ember.Handlebars.compile('<div class="alert">{{{view.message}}}</div>'), + message: Em.I18n.t('services.service.config.database.msg.jdbcSetup').format(currentDBType.toLowerCase(), currentDBType.toLowerCase()) + }) : null; + if (propertyAppendTo1) { + Em.run.next(function () { + propertyAppendTo1.set('additionalView', additionalView1); + }); + } + if (propertyAppendTo2) { + Em.run.next(function () { + propertyAppendTo2.set('additionalView', additionalView2); + }); + } }.observes('serviceConfig.value'), optionsBinding: 'serviceConfig.options' http://git-wip-us.apache.org/repos/asf/ambari/blob/3dd19b16/ambari-web/test/views/common/controls_view_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/views/common/controls_view_test.js b/ambari-web/test/views/common/controls_view_test.js index f673871..7a27f46 100644 --- a/ambari-web/test/views/common/controls_view_test.js +++ b/ambari-web/test/views/common/controls_view_test.js @@ -634,6 +634,189 @@ describe('App.ServiceConfigRadioButtons', function () { }); + describe('#handleDBConnectionProperty', function () { + + var view, + cases = [ + { + dbType: 'mysql', + serviceConfig: { + name: 'hive_database', + value: 'New MySQL Database', + serviceName: 'HIVE' + }, + categoryConfigsAll: [ + Em.Object.create({ + name: 'javax.jdo.option.ConnectionURL', + displayName: 'Database URL' + }), + Em.Object.create({ + name: 'hive_database', + displayName: 'Hive Database' + }) + ], + currentStackVersion: 'HDP-2.2', + propertyAppendTo1: 'javax.jdo.option.ConnectionURL', + propertyAppendTo2: 'hive_database', + isAdditionalView1Null: true, + isAdditionalView2Null: true, + title: 'Hive, embedded database' + }, + { + dbType: 'postgres', + serviceConfig: { + name: 'hive_database', + value: 'Existing PostgreSQL Database', + serviceName: 'HIVE' + }, + categoryConfigsAll: [ + Em.Object.create({ + name: 'javax.jdo.option.ConnectionURL', + displayName: 'Database URL' + }), + Em.Object.create({ + name: 'hive_database', + displayName: 'Hive Database' + }) + ], + currentStackVersion: 'HDP-2.2', + propertyAppendTo1: 'javax.jdo.option.ConnectionURL', + propertyAppendTo2: 'hive_database', + isAdditionalView1Null: false, + isAdditionalView2Null: false, + title: 'Hive, external database' + }, + { + dbType: 'derby', + serviceConfig: { + name: 'oozie_database', + value: 'New Derby Database', + serviceName: 'OOZIE' + }, + categoryConfigsAll: [ + Em.Object.create({ + name: 'oozie.service.JPAService.jdbc.url', + displayName: 'Database URL' + }), + Em.Object.create({ + name: 'oozie_database', + displayName: 'Oozie Database' + }) + ], + currentStackVersion: 'HDP-2.2', + propertyAppendTo1: 'oozie.service.JPAService.jdbc.url', + propertyAppendTo2: 'oozie_database', + isAdditionalView1Null: true, + isAdditionalView2Null: true, + title: 'Oozie, embedded database' + }, + { + dbType: 'oracle', + serviceConfig: { + name: 'oozie_database', + value: 'Existing Oracle Database', + serviceName: 'OOZIE' + }, + categoryConfigsAll: [ + Em.Object.create({ + name: 'oozie.service.JPAService.jdbc.url', + displayName: 'Database URL' + }), + Em.Object.create({ + name: 'oozie_database', + displayName: 'Oozie Database' + }) + ], + currentStackVersion: 'HDP-2.2', + propertyAppendTo1: 'oozie.service.JPAService.jdbc.url', + propertyAppendTo2: 'oozie_database', + isAdditionalView1Null: false, + isAdditionalView2Null: false, + title: 'Oozie, external database' + }, + { + dbType: 'mysql', + serviceConfig: { + name: 'DB_FLAVOR', + value: 'MYSQL', + serviceName: 'RANGER' + }, + categoryConfigsAll: [ + Em.Object.create({ + name: 'ranger.jpa.jdbc.url' + }), + Em.Object.create({ + name: 'DB_FLAVOR' + }) + ], + currentStackVersion: 'HDP-2.2', + propertyAppendTo1: 'ranger.jpa.jdbc.url', + propertyAppendTo2: 'DB_FLAVOR', + isAdditionalView1Null: true, + isAdditionalView2Null: true, + title: 'Ranger, HDP 2.2, external database' + }, + { + dbType: 'mssql', + serviceConfig: { + name: 'DB_FLAVOR', + value: 'MSSQL', + serviceName: 'RANGER' + }, + categoryConfigsAll: [ + Em.Object.create({ + name: 'ranger.jpa.jdbc.url' + }), + Em.Object.create({ + name: 'DB_FLAVOR' + }) + ], + currentStackVersion: 'HDP-2.3', + propertyAppendTo1: 'ranger.jpa.jdbc.url', + propertyAppendTo2: 'DB_FLAVOR', + isAdditionalView1Null: false, + isAdditionalView2Null: false, + title: 'Ranger, HDP 2.3, external database' + } + ]; + + before(function () { + sinon.stub(Em.run, 'next', function (arg) { + arg(); + }); + }); + + beforeEach(function () { + view = App.ServiceConfigRadioButtons.create(); + }); + + afterEach(function () { + App.get.restore(); + }); + + after(function () { + Em.run.next.restore(); + }); + + cases.forEach(function (item) { + it(item.title, function () { + sinon.stub(App, 'get').withArgs('currentStackName').returns('HDP').withArgs('currentStackVersion').returns(item.currentStackVersion); + view.setProperties({ + categoryConfigsAll: item.categoryConfigsAll, + serviceConfig: item.serviceConfig + }); + var additionalView1 = view.get('categoryConfigsAll').findProperty('name', item.propertyAppendTo1).get('additionalView'), + additionalView2 = view.get('categoryConfigsAll').findProperty('name', item.propertyAppendTo2).get('additionalView'); + expect(Em.isNone(additionalView1)).to.equal(item.isAdditionalView1Null); + expect(Em.isNone(additionalView2)).to.equal(item.isAdditionalView2Null); + if (!item.isAdditionalView2Null) { + expect(additionalView2.create().get('message')).to.equal(Em.I18n.t('services.service.config.database.msg.jdbcSetup').format(item.dbType, item.dbType)); + } + }); + }); + + }); + }); describe('App.ServiceConfigRadioButton', function () {