Browse Source

HUE-8591 [impala] Properly point to the selected cluster hostname

Romain Rigaux 7 years ago
parent
commit
381e04481e

+ 5 - 11
apps/beeswax/src/beeswax/server/dbms.py

@@ -80,20 +80,14 @@ def get(user, query_server=None, cluster=None):
 
 def get_query_server_config(name='beeswax', server=None, cluster=None):
   LOG.debug("Query cluster: %s" % cluster)
-  if cluster and cluster != CLUSTER_ID.get():
-    if cluster and 'altus:dataware:k8s' in cluster:
-      cluster_name = re.search('cluster:(.+?)/', cluster).group(1)
-      cluster_config = {'server_host': 'impala-coordinator' + cluster_name, 'name': cluster}
+
+  if cluster and cluster.get('id') != CLUSTER_ID.get():
+    if 'altus:dataware:k8s' in cluster['id']:
+      cluster_config = {'server_host': cluster['compute_end_point'], 'name': cluster['name']}
     else:
-      cluster_config = Cluster(user=None).get_config(cluster)
+      cluster_config = Cluster(user=None).get_config(cluster) # Direct cluster
   else:
     cluster_config = None
-    
-  # Safeguard
-  if not cluster or cluster == 'localhost':
-    api = DataWarehouse2Api(None)
-    clusters = [_cluster for _cluster in api.list_clusters()['clusters'] if _cluster['status'] == 'ONLINE']
-    cluster_config = {'server_host': clusters[0]['coordinatorEndpoint']['publicHost'], 'name': clusters[0]['name']}
 
   try:
     LOG.debug("Query cluster mapping %s: %s %s" % (cluster, repr(cluster_config), socket.gethostbyaddr(cluster_config['server_host'])))

+ 1 - 1
desktop/core/src/desktop/api2.py

@@ -160,7 +160,7 @@ def get_context_computes(request, interface):
           'name': cluster.get('clusterName'),
           'status': cluster.get('status'),
           'namespace': cluster.get('namespaceCrn', cluster.get('crn')),
-          'impalad_host': IS_K8_ONLY.get() and '%(publicHost)s' % cluster['coordinatorEndpoint'] or '',
+          'compute_end_point': IS_K8_ONLY.get() and '%(publicHost)s' % cluster['coordinatorEndpoint'] or '',
           'type': 'altus-dw'
         } for cluster in dw_clusters if (cluster.get('status') == 'CREATED' and cluster.get('cdhVersion') >= 'CDH515') or (IS_K8_ONLY.get() and cluster['status'] == 'ONLINE')]
       )

+ 1 - 1
desktop/core/src/desktop/static/desktop/js/apiHelper.js

@@ -1319,7 +1319,7 @@ var ApiHelper = (function () {
           type: sourceType,
           source: isQuery ? 'query' : 'data',
         }),
-        cluster: '"' + (options.compute ? options.compute.id : '') + '"'
+        cluster: ko.mapping.toJSON(options.compute)
       },
       timeout: options.timeout
     }).success(function (data) {

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

@@ -314,11 +314,11 @@ def get_api(request, snippet):
   interface = interpreter['interface']
 
   # Multi cluster
-  cluster = json.loads(request.POST.get('cluster', '""')) # Via Catalog API
+  cluster = json.loads(request.POST.get('cluster', '""')) # Via Catalog autocomplete API
   if cluster == 'undefined':
     cluster = None
   if not cluster and snippet.get('compute'): # Via notebook.ko.js
-    cluster = snippet.get('compute').get('id')
+    cluster = snippet['compute']
 
   if cluster and 'altus:dataware:k8s' in cluster:
     interface = 'hiveserver2'
@@ -349,10 +349,10 @@ def get_api(request, snippet):
     return RdbmsApi(request.user, interpreter=snippet['type'], query_server=snippet.get('query_server'))
   elif interface == 'altus-adb':
     from notebook.connectors.altus_adb import AltusAdbApi
-    return AltusAdbApi(user=request.user, cluster_name=cluster, request=request)
+    return AltusAdbApi(user=request.user, cluster_name=cluster.get('id'), request=request)
   elif interface == 'dataeng':
     from notebook.connectors.dataeng import DataEngApi
-    return DataEngApi(user=request.user, request=request, cluster_name=cluster)
+    return DataEngApi(user=request.user, request=request, cluster_name=cluster.get('id'))
   elif interface == 'jdbc':
     if not interpreter['options'] or interpreter['options'].get('url', '').find('teradata') < 0:
       from notebook.connectors.jdbc import JdbcApi