فهرست منبع

HUE-3228 [dashboard] Also list SqlAlchemy connectors

Romain 6 سال پیش
والد
کامیت
fc4906dc79

+ 0 - 1
apps/beeswax/src/beeswax/server/dbms.py

@@ -82,7 +82,6 @@ def get(user, query_server=None, cluster=None):
 def get_query_server_config(name='beeswax', server=None, cluster=None):
   LOG.debug("Query cluster %s: %s" % (name, cluster))
 
-
   cluster_config = get_cluster_config(cluster)
 
   if name == 'impala':

+ 1 - 10
apps/beeswax/src/beeswax/server/hive_server2_lib.py

@@ -773,16 +773,11 @@ class HiveServerClient:
     (desc_results, desc_schema), operation_handle = self.execute_statement(query, max_rows=5000, orientation=TFetchOrientation.FETCH_NEXT)
     self.close_operation(operation_handle)
 
-    print '-----'
-    print self.query_server['server_name']
-    print desc_results.results
-    print desc_schema.schema
     if self.query_server['server_name'].startswith('impala'):
       cols = ('name', 'location', 'comment') # Skip owner as on a new line
     else:
       cols = ('db_name', 'comment', 'location', 'owner_name', 'owner_type', 'parameters')
 
-#     print cols
 #     try:
 #       if len(HiveServerTRowSet(desc_results.results, desc_schema.schema).cols(cols)) != 1:
 #         raise ValueError(_("%(query)s returned more than 1 row") % {'query': query})
@@ -790,11 +785,7 @@ class HiveServerClient:
 #       print e
 #       raise e
 
-    
-    a = HiveServerTRowSet(desc_results.results, desc_schema.schema).cols(cols)[0]  # Should only contain one row
-    print a
-    # {'comment': 'Default Hive database', 'name': 'default', 'location': 'hdfs://nightly6x-unsecure-1.vpc.cloudera.com:8020/user/hive/warehouse'}
-    return a
+    return HiveServerTRowSet(desc_results.results, desc_schema.schema).cols(cols)[0]  # Should only contain one row
 
   def get_tables_meta(self, database, table_names, table_types=None):
     if not table_types:

+ 3 - 3
apps/search/src/search/dashboard_api.py

@@ -17,13 +17,13 @@
 
 import logging
 
-from dashboard.dashboard_api import DashboardApi
-from dashboard.models import augment_solr_response
 from libsolr.api import SolrApi
 from indexer.solr_client import SolrClient
-
 from search.conf import SOLR_URL
 
+from dashboard.dashboard_api import DashboardApi
+from dashboard.models import augment_solr_response
+
 
 LOG = logging.getLogger(__name__)
 

+ 3 - 3
desktop/libs/dashboard/src/dashboard/conf.py

@@ -114,7 +114,7 @@ def get_engines(user):
       'nesting': settings.get('solr') and settings['solr'].get('nesting'),
     })
 
-  if HAS_SQL_ENABLED.get() and ('beeswax' in apps or 'rdbms' in apps):
+  if HAS_SQL_ENABLED.get():
     engines += [{
           'name': _('Table (%s)') % interpreter['name'],
           'type': interpreter['type'],
@@ -122,7 +122,7 @@ def get_engines(user):
           'analytics': settings.get('sql') and settings['sql'].get('analytics'),
           'nesting': settings.get('sql') and settings['sql'].get('nesting'),
       }
-      for interpreter in get_ordered_interpreters(user) if interpreter['interface'] in ('hiveserver2', 'jdbc', 'rdbms')
+      for interpreter in get_ordered_interpreters(user) if interpreter['interface'] in ('hiveserver2', 'jdbc', 'rdbms', 'sqlalchemy')
     ]
 
   return engines
@@ -149,4 +149,4 @@ ENGINES = UnspecifiedConfigSection(
       ),
     )
   )
-)
+)

+ 2 - 0
desktop/libs/dashboard/src/dashboard/views.py

@@ -134,7 +134,9 @@ def index_m(request):
 def new_search(request):
   engine = request.GET.get('engine', 'solr')
   cluster = request.POST.get('cluster','""')
+
   collections = get_engine(request.user, engine, cluster=cluster).datasets() if engine != 'report' else ['default']
+
   if not collections:
     if engine == 'solr':
       return no_collections(request)

+ 1 - 1
desktop/libs/notebook/src/notebook/connectors/base.py

@@ -351,7 +351,7 @@ def get_api(request, snippet):
   LOG.info('Selected cluster %s %s interface %s' % (cluster_name, cluster, interface))
   snippet['interface'] = interface
 
-  if interface == 'hiveserver2':
+  if interface == 'hiveserver2' or interface == 'hms':
     from notebook.connectors.hiveserver2 import HS2Api
     return HS2Api(user=request.user, request=request, cluster=cluster)
   elif interface == 'oozie':

+ 7 - 2
desktop/libs/notebook/src/notebook/dashboard_api.py

@@ -211,10 +211,15 @@ class SQLDashboardApi(DashboardApi):
   # This method currently behaves more like a static method
   def datasets(self, show_all=False):
     snippet = {'type': self.engine}
+
     # Ideally from left assist at some point instead
     databases = get_api(MockRequest(self.user, self.cluster), snippet).autocomplete(snippet)['databases']
-    database = databases and 'default' not in databases and databases[0] or 'default'
-    return [database + '.' + table['name'] for table in get_api(MockRequest(self.user, self.cluster), snippet).autocomplete(snippet, database=database)['tables_meta']]
+    database = databases and 'default' not in databases and sorted(databases)[0] or 'default'
+
+    return [
+      database + '.' + table['name']
+      for table in get_api(MockRequest(self.user, self.cluster), snippet).autocomplete(snippet, database=database)['tables_meta']
+    ]
 
 
   # This method currently behaves more like a static method