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 () {

Reply via email to