浏览代码

HUE-8758 [catalog] Adding the Catalog/Browser category

Romain Rigaux 6 年之前
父节点
当前提交
4afcdb82a9

+ 9 - 1
apps/metastore/src/metastore/static/metastore/js/metastore.ko.js

@@ -63,7 +63,8 @@ var MetastoreViewModel = (function () {
 
     huePubSub.publish('cluster.config.get.config', function (clusterConfig) {
       var initialSourceType = options.sourceType || 'hive';
-      if (clusterConfig && clusterConfig.app_config && clusterConfig.app_config.editor && clusterConfig.app_config.editor.interpreters) {
+      if (clusterConfig && clusterConfig.app_config && (
+          (clusterConfig.app_config.editor && clusterConfig.app_config.editor.interpreters) || clusterConfig.app_config.catalogs)) {
         var sources = [];
         clusterConfig.app_config.editor.interpreters.forEach(function (interpreter) {
           if (interpreter.is_sql) {
@@ -74,6 +75,13 @@ var MetastoreViewModel = (function () {
             }))
           }
         });
+        clusterConfig.app_config.catalogs.forEach(function (interpreter) {
+          sources.push(new MetastoreSource({
+            metastoreViewModel: self,
+            name: interpreter.name,
+            type: interpreter.type
+          }))
+        });
         if (!sources.length) {
           sources.push(new MetastoreSource({
             metastoreViewModel: self,

+ 31 - 9
desktop/core/src/desktop/models.py

@@ -1608,6 +1608,7 @@ class ClusterConfig():
     apps = OrderedDict([app for app in [
       ('editor', self._get_editor()),
       ('dashboard', self._get_dashboard()),
+      ('catalogs', self._get_catalogs()),
       ('browser', self._get_browser()),
       ('scheduler', self._get_scheduler()),
       ('sdkapps', self._get_sdk_apps()),
@@ -1663,15 +1664,16 @@ class ClusterConfig():
       _interpreters = [interpreter for interpreter in _interpreters if interpreter['type'] in ('impala')] #, 'hive', 'spark2', 'pyspark', 'mapreduce')]
 
     for interpreter in _interpreters:
-      interpreters.append({
-        'name': interpreter['name'],
-        'type': interpreter['type'],
-        'displayName': interpreter['name'],
-        'buttonName': _('Query'),
-        'tooltip': _('%s Query') % interpreter['type'].title(),
-        'page': '/editor/?type=%(type)s' % interpreter,
-        'is_sql': interpreter['is_sql'],
-      })
+      if interpreter['interface'] != 'hms':
+        interpreters.append({
+          'name': interpreter['name'],
+          'type': interpreter['type'],
+          'displayName': interpreter['name'],
+          'buttonName': _('Query'),
+          'tooltip': _('%s Query') % interpreter['type'].title(),
+          'page': '/editor/?type=%(type)s' % interpreter,
+          'is_sql': interpreter['is_sql'],
+        })
 
     if SHOW_NOTEBOOKS.get() and ANALYTIC_DB not in self.cluster_type:
       try:
@@ -1701,6 +1703,26 @@ class ClusterConfig():
     else:
       return None
 
+  def _get_catalogs(self):
+    interpreters = []
+
+    _interpreters = get_ordered_interpreters(self.user)
+
+    for interpreter in _interpreters:
+      if interpreter['interface'] == 'hms':
+        interpreters.append({
+          'name': interpreter['name'],
+          'type': interpreter['type'],
+          'displayName': interpreter['name'],
+          'buttonName': _('Query'),
+          'tooltip': _('%s Query') % interpreter['type'].title(),
+          'page': '/editor/?type=%(type)s' % interpreter,
+          'is_sql': interpreter['is_sql'],
+          'is_catalog': interpreter['is_catalog'],
+        })
+
+    return interpreters if interpreters else None
+
   def _get_dashboard(self):
     interpreters = get_engines(self.user)
     _interpreters = []

+ 2 - 1
desktop/libs/notebook/src/notebook/conf.py

@@ -92,7 +92,8 @@ def get_ordered_interpreters(user=None):
       "type": i['type'],
       "interface": i['interface'],
       "options": i['options'],
-      "is_sql": i['interface'] in ["hiveserver2", "rdbms", "jdbc", "solr", "sqlalchemy", "hms"],
+      "is_sql": i['interface'] in ["hiveserver2", "rdbms", "jdbc", "solr", "sqlalchemy"],
+      "is_catalog": i['interface'] in ["hms",],
     }
     for i in reordered_interpreters
   ]