Browse Source

HUE-6850 [metastore] Rely on default SQL editor type for querying data

Romain Rigaux 8 năm trước cách đây
mục cha
commit
1cc666770a
2 tập tin đã thay đổi với 23 bổ sung10 xóa
  1. 15 8
      apps/metastore/src/metastore/views.py
  2. 8 2
      desktop/core/src/desktop/models.py

+ 15 - 8
apps/metastore/src/metastore/views.py

@@ -29,7 +29,7 @@ from django.views.decorators.http import require_http_methods
 from desktop.context_processors import get_app_name
 from desktop.lib.django_util import JsonResponse, render
 from desktop.lib.exceptions_renderable import PopupException
-from desktop.models import Document2
+from desktop.models import Document2, ClusterConfig
 
 from beeswax.design import hql_query
 from beeswax.models import SavedQuery
@@ -41,6 +41,7 @@ from notebook.models import make_notebook
 
 from metastore.forms import LoadDataForm, DbForm
 from metastore.settings import DJANGO_APPS
+from beeswax.server.dbms import get_query_server_config
 
 
 LOG = logging.getLogger(__name__)
@@ -71,7 +72,7 @@ Database Views
 def databases(request):
   search_filter = request.GET.get('filter', '')
 
-  db = dbms.get(request.user)
+  db = _get_db(user=request.user)
   databases = db.get_databases(search_filter)
 
   return render("metastore.mako", request, {
@@ -152,7 +153,7 @@ def alter_database(request, database):
 
 
 def get_database_metadata(request, database):
-  db = dbms.get(request.user)
+  db = _get_db(user=request.user)
   response = {'status': -1, 'data': ''}
   try:
     db_metadata = db.get_database(database)
@@ -186,7 +187,7 @@ def table_queries(request, database, table):
 Table Views
 """
 def show_tables(request, database=None):
-  db = dbms.get(request.user)
+  db = _get_db(user=request.user)
 
   if database is None:
     database = 'default' # Assume always 'default'
@@ -237,7 +238,7 @@ def show_tables(request, database=None):
 
 
 def get_table_metadata(request, database, table):
-  db = dbms.get(request.user)
+  db = _get_db(user=request.user)
   response = {'status': -1, 'data': ''}
   try:
     table_metadata = db.get_table(database, table)
@@ -258,7 +259,7 @@ def get_table_metadata(request, database, table):
 
 def describe_table(request, database, table):
   app_name = get_app_name(request)
-  db = dbms.get(request.user)
+  db = _get_db(user=request.user)
 
   try:
     table = db.get_table(database, table)
@@ -489,7 +490,7 @@ def load_table(request, database, table):
 
 
 def describe_partitions(request, database, table):
-  db = dbms.get(request.user)
+  db = _get_db(user=request.user)
 
   table_obj = db.get_table(database, table)
 
@@ -571,7 +572,7 @@ def _massage_partition(database, table, partition):
 
 
 def browse_partition(request, database, table, partition_spec):
-  db = dbms.get(request.user)
+  db = _get_db(user=request.user)
   try:
     decoded_spec = urllib.unquote(partition_spec)
     partition_table = db.describe_partition(database, table, decoded_spec)
@@ -637,5 +638,11 @@ def has_write_access(user):
   return user.is_superuser or user.has_hue_permission(action="write", app=DJANGO_APPS[0])
 
 
+def _get_db(user):
+  default_sql_interpreter = ClusterConfig(user).get_config()['default_sql_interpreter']
+  query_server = get_query_server_config(name=default_sql_interpreter['type'] if default_sql_interpreter['type'] != 'hive' else 'beeswax')
+  return dbms.get(user, query_server)
+
+
 def _get_servername(db):
   return 'hive' if db.server_name == 'beeswax' else db.server_name

+ 8 - 2
desktop/core/src/desktop/models.py

@@ -1561,10 +1561,16 @@ class ClusterConfig():
   def get_config(self):
     app_config = self.get_apps()
     editors = app_config.get('editor')
+    main_button_action = self.get_main_quick_action(app_config)
+
+    if main_button_action.get('is_sql'):
+      default_sql_interpreter = main_button_action
+    else:
+      default_sql_interpreter = editors and editors['default_sql_interpreter']
 
     return {
       'app_config': app_config,
-      'main_button_action': self.get_main_quick_action(app_config),
+      'main_button_action': main_button_action,
       'button_actions': [
         app for app in [
           editors,
@@ -1572,7 +1578,7 @@ class ClusterConfig():
           app_config.get('scheduler')
         ] if app is not None
       ],
-      'default_sql_interpreter': editors and editors['default_sql_interpreter'],
+      'default_sql_interpreter': default_sql_interpreter,
       'cluster_type': self.cluster_type
     }