فهرست منبع

HUE-8758 [hive] Update use_sasl tests

Romain 5 سال پیش
والد
کامیت
46c674ae87
3فایلهای تغییر یافته به همراه37 افزوده شده و 26 حذف شده
  1. 15 3
      apps/beeswax/src/beeswax/server/dbms.py
  2. 8 6
      apps/beeswax/src/beeswax/server/hive_server2_lib.py
  3. 14 17
      apps/beeswax/src/beeswax/tests.py

+ 15 - 3
apps/beeswax/src/beeswax/server/dbms.py

@@ -84,13 +84,22 @@ def get(user, query_server=None, cluster=None):
       if query_server.get('dialect') == 'impala':
         from impala.dbms import ImpalaDbms
         from impala.server import ImpalaServerClient
-        DBMS_CACHE[user.id][query_server['server_name']] = ImpalaDbms(HiveServerClientCompatible(ImpalaServerClient(query_server, user)), QueryHistory.SERVER_TYPE[1][0])
+        DBMS_CACHE[user.id][query_server['server_name']] = ImpalaDbms(
+            HiveServerClientCompatible(ImpalaServerClient(query_server, user)),
+            QueryHistory.SERVER_TYPE[1][0]
+        )
       elif query_server['server_name'] == 'hms':
         from beeswax.server.hive_metastore_server import HiveMetastoreClient
-        DBMS_CACHE[user.id][query_server['server_name']] = HiveServer2Dbms(HiveMetastoreClient(query_server, user), QueryHistory.SERVER_TYPE[1][0])
+        DBMS_CACHE[user.id][query_server['server_name']] = HiveServer2Dbms(
+            HiveMetastoreClient(query_server, user),
+            QueryHistory.SERVER_TYPE[1][0]
+        )
       else:
         from beeswax.server.hive_server2_lib import HiveServerClient
-        DBMS_CACHE[user.id][query_server['server_name']] = HiveServer2Dbms(HiveServerClientCompatible(HiveServerClient(query_server, user)), QueryHistory.SERVER_TYPE[1][0])
+        DBMS_CACHE[user.id][query_server['server_name']] = HiveServer2Dbms(
+            HiveServerClientCompatible(HiveServerClient(query_server, user)),
+            QueryHistory.SERVER_TYPE[1][0]
+        )
 
     return DBMS_CACHE[user.id][query_server['server_name']]
   finally:
@@ -199,6 +208,9 @@ def get_query_server_config(name='beeswax', connector=None):
           'use_sasl': SPARK_USE_SASL.get()
       })
 
+  if not query_server.get('dialect'):
+    query_server['dialect'] = query_server['server_name']
+
   debug_query_server = query_server.copy()
   debug_query_server['auth_password_used'] = bool(debug_query_server.pop('auth_password', None))
   LOG.debug("Query Server: %s" % debug_query_server)

+ 8 - 6
apps/beeswax/src/beeswax/server/hive_server2_lib.py

@@ -590,7 +590,7 @@ class HiveServerClient(object):
   def get_security(self):
     principal = self.query_server['principal']
     impersonation_enabled = False
-    auth_username = self.query_server['auth_username'] # Pass-through LDAP/PAM authentication
+    auth_username = self.query_server['auth_username']  # Pass-through LDAP/PAM authentication
     auth_password = self.query_server['auth_password']
 
     if principal:
@@ -598,9 +598,9 @@ class HiveServerClient(object):
     else:
       kerberos_principal_short_name = None
 
-    use_sasl = self.query_server['use_sasl']
+    use_sasl = self.query_server['use_sasl']  # Coming from dialect conf.USE_SASL
     if self.query_server.get('dialect') == 'impala':
-      if auth_password: # Force LDAP/PAM.. auth if auth_password is provided
+      if auth_password:  # Force LDAP/PAM.. auth if auth_password is provided
         mechanism = HiveServerClient.HS2_MECHANISMS['NONE']
       else:
         mechanism = HiveServerClient.HS2_MECHANISMS['KERBEROS']
@@ -608,7 +608,9 @@ class HiveServerClient(object):
     else:
       hive_mechanism = hive_site.get_hiveserver2_authentication()
       if hive_mechanism not in HiveServerClient.HS2_MECHANISMS:
-        raise Exception(_('%s server authentication not supported. Valid are %s.') % (hive_mechanism, list(HiveServerClient.HS2_MECHANISMS.keys())))
+        raise Exception(
+          _('%s server authentication not supported. Valid are %s.') % (hive_mechanism, list(HiveServerClient.HS2_MECHANISMS.keys()))
+        )
       mechanism = HiveServerClient.HS2_MECHANISMS[hive_mechanism]
       impersonation_enabled = hive_site.hiveserver2_impersonation_enabled()
 
@@ -619,14 +621,14 @@ class HiveServerClient(object):
     self.user = user
     kwargs = {
         'client_protocol': beeswax_conf.THRIFT_VERSION.get() - 1,
-        'username': user.username, # If SASL or LDAP, it gets the username from the authentication mechanism" since it dependents on it.
+        'username': user.username,  # If SASL or LDAP, it gets the username from the authentication mechanism since it dependents on it.
         'configuration': {},
     }
 
     if self.impersonation_enabled:
       kwargs.update({'username': DEFAULT_USER})
 
-      if self.query_server.get('dialect') == 'impala': # Only when Impala accepts it
+      if self.query_server.get('dialect') == 'impala':  # Only when Impala accepts it
         kwargs['configuration'].update({'impala.doas.user': user.username})
 
     if self.query_server['server_name'] == 'beeswax': # All the time

+ 14 - 17
apps/beeswax/src/beeswax/tests.py

@@ -3106,26 +3106,23 @@ def test_hiveserver2_get_security():
 
 
     # Impala
-    cluster_conf = hadoop.cluster.get_cluster_conf_for_job_submission()
+    impala_query_server = {
+        'server_name': 'impala', 'dialect': 'impala', 'principal': 'impala', 'impersonation_enabled': False, 'auth_username': 'hue',
+        'auth_password': None, 'use_sasl': False
+    }
+    impala_query_server.update(default_query_server)
+    assert_equal((False, 'GSSAPI', 'impala', False, 'hue', None), HiveServerClient(impala_query_server, user).get_security())
 
-    finish = cluster_conf.SECURITY_ENABLED.set_for_testing(False)
-    try:
-      impala_query_server = {'server_name': 'impala', 'principal': 'impala', 'impersonation_enabled': False, 'auth_username': 'hue', 'auth_password': None, 'use_sasl': False}
-      impala_query_server.update(default_query_server)
-      assert_equal((False, 'GSSAPI', 'impala', False, 'hue', None), HiveServerClient(impala_query_server, user).get_security())
+    impala_query_server = {
+        'server_name': 'impala', 'dialect': 'impala', 'principal': 'impala', 'impersonation_enabled': True, 'auth_username': 'hue',
+        'auth_password': None, 'use_sasl': False
+    }
+    impala_query_server.update(default_query_server)
+    assert_equal((False, 'GSSAPI', 'impala', True, 'hue', None), HiveServerClient(impala_query_server, user).get_security())
 
-      impala_query_server = {'server_name': 'impala', 'principal': 'impala', 'impersonation_enabled': True, 'auth_username': 'hue', 'auth_password': None, 'use_sasl': False}
-      impala_query_server.update(default_query_server)
-      assert_equal((False, 'GSSAPI', 'impala', True, 'hue', None), HiveServerClient(impala_query_server, user).get_security())
-    finally:
-      finish()
 
-    finish = cluster_conf.SECURITY_ENABLED.set_for_testing(True)
-    try:
-      impala_query_server.update({'use_sasl': True})
-      assert_equal((True, 'GSSAPI', 'impala', True, 'hue', None), HiveServerClient(impala_query_server, user).get_security())
-    finally:
-      finish()
+    impala_query_server.update({'use_sasl': True})
+    assert_equal((True, 'GSSAPI', 'impala', True, 'hue', None), HiveServerClient(impala_query_server, user).get_security())
   finally:
     if prev is not None:
       hive_site._HIVE_SITE_DICT[hive_site._CNF_HIVESERVER2_AUTHENTICATION] = prev