You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by pa...@apache.org on 2016/06/30 11:38:17 UTC

ambari git commit: AMBARI-17425. [Hive view] hiveserver service check fails for LDAP configured hive view (pallavkul)

Repository: ambari
Updated Branches:
  refs/heads/trunk 2fa027c18 -> 8df1e8f01


AMBARI-17425. [Hive view] hiveserver service check fails for LDAP configured hive view (pallavkul)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/8df1e8f0
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/8df1e8f0
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/8df1e8f0

Branch: refs/heads/trunk
Commit: 8df1e8f015c480ca94dc37d580e7db49752705dc
Parents: 2fa027c
Author: Pallav Kulshreshtha <pa...@gmail.com>
Authored: Thu Jun 30 17:07:12 2016 +0530
Committer: Pallav Kulshreshtha <pa...@gmail.com>
Committed: Thu Jun 30 17:07:12 2016 +0530

----------------------------------------------------------------------
 .../ui/hive-web/app/controllers/databases.js    | 43 +++++--------
 .../ui/hive-web/app/controllers/index.js        | 63 ++++++++------------
 .../ui/hive-web/app/controllers/splash.js       | 39 +++++++++++-
 .../app/services/ldap-authentication.js         | 41 +++++++++++++
 .../ui/hive-web/app/utils/constants.js          |  1 +
 5 files changed, 119 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/8df1e8f0/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/databases.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/databases.js b/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/databases.js
index 2c3cd5e..fbd726c 100644
--- a/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/databases.js
+++ b/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/databases.js
@@ -23,6 +23,7 @@ import ENV from '../config/environment';
 export default Ember.Controller.extend({
   databaseService: Ember.inject.service(constants.namingConventions.database),
   notifyService: Ember.inject.service(constants.namingConventions.notify),
+  ldapAuthenticationService: Ember.inject.service(constants.namingConventions.ldapAuthentication),
 
   pageCount: 10,
 
@@ -172,7 +173,7 @@ export default Ember.Controller.extend({
       self._handleError(error);
 
       if(error.status == 401) {
-         self.send('passwordLDAPDB');
+         self.send('openLdapPasswordModal');
       }
     }).finally(function() {
       self.set('isDatabaseRefreshInProgress', false);
@@ -241,9 +242,10 @@ export default Ember.Controller.extend({
       }
     },
 
-    passwordLDAPDB: function(){
+    openLdapPasswordModal: function(){
+
       var self = this,
-          defer = Ember.RSVP.defer();
+        defer = Ember.RSVP.defer();
 
       this.send('openModal', 'modal-save', {
         heading: "modals.authenticationLDAP.heading",
@@ -253,31 +255,18 @@ export default Ember.Controller.extend({
       });
 
       defer.promise.then(function (text) {
-        // make a post call with the given ldap password.
-        var password = text;
-        var pathName = window.location.pathname;
-        var pathNameArray = pathName.split("/");
-        var hiveViewVersion = pathNameArray[3];
-        var hiveViewName = pathNameArray[4];
-        var ldapAuthURL = "/api/v1/views/HIVE/versions/"+ hiveViewVersion + "/instances/" + hiveViewName + "/jobs/auth";
-
-        $.ajax({
-          url: ldapAuthURL,
-          type: 'post',
-          headers: {'X-Requested-With': 'XMLHttpRequest', 'X-Requested-By': 'ambari'},
-          contentType: 'application/json',
-          data: JSON.stringify({ "password" : password}),
-          success: function( data, textStatus, jQxhr ){
-            console.log( "LDAP done: " + data );
-            self.getDatabases();
-            self.syncDatabases();
-          },
-          error: function( jqXhr, textStatus, errorThrown ){
-            console.log( "LDAP fail: " + errorThrown );
-            self.get('notifyService').error( "Wrong Credentials." );
-          }
-        });
+        var ldapAuthPromise = self.get('ldapAuthenticationService').authenticateLdapPassword(text);
+
+        ldapAuthPromise.then(function (data) {
+          console.log( "LDAP done: " + data );
+          self.getDatabases();
+          self.syncDatabases();
+        }, function (error) {
+          console.log( "LDAP fail: " + error );
+          self.get('notifyService').error( "Wrong Credentials." );
+        })
       });
+
     },
 
     loadSampleData: function (tableName, database) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/8df1e8f0/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/index.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/index.js b/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/index.js
index 36faa86..4d35ae7 100644
--- a/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/index.js
+++ b/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/index.js
@@ -26,6 +26,7 @@ export default Ember.Controller.extend({
   notifyService: Ember.inject.service(constants.namingConventions.notify),
   session: Ember.inject.service(constants.namingConventions.session),
   settingsService: Ember.inject.service(constants.namingConventions.settings),
+  ldapAuthenticationService: Ember.inject.service(constants.namingConventions.ldapAuthentication),
 
   openQueries   : Ember.inject.controller(constants.namingConventions.openQueries),
   udfs          : Ember.inject.controller(constants.namingConventions.udfs),
@@ -499,46 +500,32 @@ export default Ember.Controller.extend({
             self = this,
             defer = Ember.RSVP.defer();
 
-        this.send('openModal', 'modal-save', {
-          heading: "modals.authenticationLDAP.heading",
-          text:"",
-          type: "password",
-          defer: defer
-        });
-
-        defer.promise.then(function (text) {
-            // make a post call with the given ldap password.
-            var password = text;
-            var pathName = window.location.pathname;
-            var pathNameArray = pathName.split("/");
-            var hiveViewVersion = pathNameArray[3];
-            var hiveViewName = pathNameArray[4];
-            var ldapAuthURL = "/api/v1/views/HIVE/versions/"+ hiveViewVersion + "/instances/" + hiveViewName + "/jobs/auth";
-
-            $.ajax({
-                url: ldapAuthURL,
-                type: 'post',
-                headers: {'X-Requested-With': 'XMLHttpRequest', 'X-Requested-By': 'ambari'},
-                contentType: 'application/json',
-                data: JSON.stringify({ "password" : password}),
-                success: function( data, textStatus, jQxhr ){
-
-                  self.get('databaseService').getDatabases().then(function (databases) {
-                    var selectedDatabase = self.get('databaseService.selectedDatabase.name') || 'default';
-                    self.get('databaseService').setDatabaseByName( selectedDatabase);
-                    return self.send('executeQuery', 'job', self.get('openQueries.currentQuery.fileContent') );
-                  }).catch(function (error) {
-                    self.get('notifyService').error( "Error in accessing databases." );
-                  });
-
-                },
-                error: function( jqXhr, textStatus, errorThrown ){
-                    console.log( "LDAP fail: " + errorThrown );
-                    self.get('notifyService').error( "Wrong Credentials." );
-                }
-            });
+      this.send('openModal', 'modal-save', {
+        heading: "modals.authenticationLDAP.heading",
+        text:"",
+        type: "password",
+        defer: defer
+      });
 
+      defer.promise.then(function (text) {
+        var ldapAuthPromise = self.get('ldapAuthenticationService').authenticateLdapPassword(text);
+
+        ldapAuthPromise.then(function (data) {
+          console.log( "LDAP done: " + data );
+          self.get('databaseService').getDatabases().then(function (databases) {
+            var selectedDatabase = self.get('databaseService.selectedDatabase.name') || 'default';
+            self.get('databaseService').setDatabaseByName( selectedDatabase);
+            return self.send('executeQuery', 'job', self.get('openQueries.currentQuery.fileContent') );
+          }).catch(function (error) {
+            self.get('notifyService').error( "Error in accessing databases." );
           });
+
+        }, function (error) {
+          console.log( "LDAP fail: " + error );
+          self.get('notifyService').error( "Wrong Credentials." );
+        })
+      });
+
     },
 
     stopCurrentJob: function () {

http://git-wip-us.apache.org/repos/asf/ambari/blob/8df1e8f0/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/splash.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/splash.js b/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/splash.js
index 6f495ed..0e9ee34 100644
--- a/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/splash.js
+++ b/contrib/views/hive/src/main/resources/ui/hive-web/app/controllers/splash.js
@@ -19,9 +19,11 @@
 import Ember from 'ember';
 import constants from 'hive/utils/constants';
 
-export default Ember.Controller.extend({
 
+export default Ember.Controller.extend({
   databaseService: Ember.inject.service(constants.namingConventions.database),
+  ldapAuthenticationService: Ember.inject.service(constants.namingConventions.ldapAuthentication),
+  notifyService: Ember.inject.service(constants.namingConventions.notify),
   isExpanded: false,
   errors: "",
   stackTrace: "",
@@ -32,12 +34,16 @@ export default Ember.Controller.extend({
     var self = this;
 
     var processResponse = function(name, data) {
-
       if( data != undefined ){
         if(data.databases){
           data = Ember.Object.create( {trace: null, message: "OK", status: "200"});
         } else {
-          data = data;
+
+          if(data.status === 401 && data.message === 'Hive Password Required'){
+            self.send('openLdapPasswordModal');
+          } else {
+            data = data;
+          }
         }
       } else {
         data = Ember.Object.create( {trace: null, message: "Server Error", status: "500"});
@@ -126,6 +132,33 @@ export default Ember.Controller.extend({
     toggleStackTrace:function () {
       var value = this.get('isExpanded');
       this.set('isExpanded', !value);
+    },
+    openLdapPasswordModal: function(){
+
+      var self = this,
+          defer = Ember.RSVP.defer();
+
+      this.send('openModal', 'modal-save', {
+        heading: "modals.authenticationLDAP.heading",
+        text:"",
+        type: "password",
+        defer: defer
+      });
+
+      defer.promise.then(function (text) {
+        var ldapAuthPromise = self.get('ldapAuthenticationService').authenticateLdapPassword(text);
+
+        ldapAuthPromise.then(function (data) {
+          self.send('reloadView');
+        }, function (error) {
+          console.log( "LDAP fail: " + error );
+          self.get('notifyService').error( "Wrong Credentials." );
+        })
+      });
+
+    },
+    reloadView: function() {
+      document.location.reload(true);
     }
   }
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/8df1e8f0/contrib/views/hive/src/main/resources/ui/hive-web/app/services/ldap-authentication.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive/src/main/resources/ui/hive-web/app/services/ldap-authentication.js b/contrib/views/hive/src/main/resources/ui/hive-web/app/services/ldap-authentication.js
new file mode 100644
index 0000000..711419c
--- /dev/null
+++ b/contrib/views/hive/src/main/resources/ui/hive-web/app/services/ldap-authentication.js
@@ -0,0 +1,41 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import Ember from 'ember';
+import constants from 'hive/utils/constants';
+import ENV from '../config/environment';
+
+export default Ember.Service.extend({
+
+  authenticateLdapPassword: function(password){
+      var password = password;
+      var pathName = window.location.pathname;
+      var pathNameArray = pathName.split("/");
+      var hiveViewVersion = pathNameArray[3];
+      var hiveViewName = pathNameArray[4];
+      var ldapAuthURL = "/api/v1/views/HIVE/versions/"+ hiveViewVersion + "/instances/" + hiveViewName + "/jobs/auth";
+
+      return Ember.$.ajax({
+        url: ldapAuthURL,
+        type: 'post',
+        headers: {'X-Requested-With': 'XMLHttpRequest', 'X-Requested-By': 'ambari'},
+        contentType: 'application/json',
+        data: JSON.stringify({ "password" : password}),
+      })
+  }
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/8df1e8f0/contrib/views/hive/src/main/resources/ui/hive-web/app/utils/constants.js
----------------------------------------------------------------------
diff --git a/contrib/views/hive/src/main/resources/ui/hive-web/app/utils/constants.js b/contrib/views/hive/src/main/resources/ui/hive-web/app/utils/constants.js
index ec8352b..cf87c9d 100644
--- a/contrib/views/hive/src/main/resources/ui/hive-web/app/utils/constants.js
+++ b/contrib/views/hive/src/main/resources/ui/hive-web/app/utils/constants.js
@@ -81,6 +81,7 @@ export default Ember.Object.create({
     databaseSearch: 'databases-search-results',
     settings: 'settings',
     jobProgress: 'job-progress',
+    ldapAuthentication: 'ldap-authentication',
     queryTabs: 'query-tabs',
     session: 'session'
   },