Browse Source

HUE-8586 [metastore] Support multi cluster parameters

Romain Rigaux 7 năm trước cách đây
mục cha
commit
22bc6e8

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

@@ -77,7 +77,7 @@ 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)
+  LOG.debug("Query cluster %s: %s" % (name, cluster))
 
   if cluster and cluster.get('id') != CLUSTER_ID.get():
     if 'altus:dataware:k8s' in cluster['id']:

+ 44 - 16
apps/metastore/src/metastore/views.py

@@ -73,8 +73,9 @@ Database Views
 
 def databases(request):
   search_filter = request.GET.get('filter', '')
+  cluster = json.loads(request.POST.get('cluster', '{}'))
 
-  db = _get_db(user=request.user)
+  db = _get_db(user=request.user, cluster=cluster)
   databases = db.get_databases(search_filter)
   apps_list = _get_apps(request.user, '')
 
@@ -97,7 +98,9 @@ def databases(request):
 @check_has_write_access_permission
 def drop_database(request):
   source_type = request.POST.get('source_type', 'hive')
-  db = _get_db(user=request.user, source_type=source_type)
+  cluster = json.loads(request.POST.get('cluster', '{}'))
+
+  db = _get_db(user=request.user, source_type=source_type, cluster=cluster)
 
   if request.method == 'POST':
     databases = request.POST.getlist('database_selection')
@@ -142,7 +145,9 @@ def alter_database(request, database):
   response = {'status': -1, 'data': ''}
 
   source_type = request.POST.get('source_type', 'hive')
-  db = _get_db(user=request.user, source_type=source_type)
+  cluster = json.loads(request.POST.get('cluster', '{}'))
+
+  db = _get_db(user=request.user, source_type=source_type, cluster=cluster)
 
   try:
     properties = request.POST.get('properties')
@@ -166,6 +171,7 @@ def alter_database(request, database):
 
 def get_database_metadata(request, database):
   response = {'status': -1, 'data': ''}
+
   source_type = request.POST.get('source_type', 'hive')
   cluster = json.loads(request.POST.get('cluster', '{}'))
 
@@ -188,8 +194,10 @@ def table_queries(request, database, table):
 
   response = {'status': -1, 'queries': []}
   try:
-    queries = [{'doc': d.to_dict(), 'data': Notebook(document=d).get_data()}
-              for d in Document2.objects.filter(qfilter, owner=request.user, type='query', is_history=False)[:50]]
+    queries = [
+        {'doc': d.to_dict(), 'data': Notebook(document=d).get_data()}
+        for d in Document2.objects.filter(qfilter, owner=request.user, type='query', is_history=False)[:50]
+    ]
     response['status'] = 0
     response['queries'] = queries
   except Exception, ex:
@@ -203,7 +211,9 @@ def table_queries(request, database, table):
 Table Views
 """
 def show_tables(request, database=None):
-  db = _get_db(user=request.user)
+  cluster = json.loads(request.POST.get('cluster', '{}'))
+
+  db = _get_db(user=request.user, cluster=cluster)
 
   if database is None:
     database = 'default' # Assume always 'default'
@@ -256,7 +266,9 @@ def show_tables(request, database=None):
 
 
 def get_table_metadata(request, database, table):
-  db = _get_db(user=request.user)
+  cluster = json.loads(request.POST.get('cluster', '{}'))
+
+  db = _get_db(user=request.user, cluster=cluster)
   response = {'status': -1, 'data': ''}
   try:
     table_metadata = db.get_table(database, table)
@@ -341,7 +353,9 @@ def alter_table(request, database, table):
   response = {'status': -1, 'data': ''}
 
   source_type = request.POST.get('source_type', 'hive')
-  db = _get_db(user=request.user, source_type=source_type)
+  cluster = json.loads(request.POST.get('cluster', '{}'))
+
+  db = _get_db(user=request.user, source_type=source_type, cluster=cluster)
 
   try:
     new_table_name = request.POST.get('new_table_name', None)
@@ -374,7 +388,9 @@ def alter_column(request, database, table):
   response = {'status': -1, 'message': ''}
 
   source_type = request.POST.get('source_type', 'hive')
-  db = _get_db(user=request.user, source_type=source_type)
+  cluster = json.loads(request.POST.get('cluster', '{}'))
+
+  db = _get_db(user=request.user, source_type=source_type, cluster=cluster)
 
   try:
     column = request.POST.get('column', None)
@@ -409,7 +425,9 @@ def alter_column(request, database, table):
 @check_has_write_access_permission
 def drop_table(request, database):
   source_type = request.POST.get('source_type', 'hive')
-  db = _get_db(user=request.user, source_type=source_type)
+  cluster = json.loads(request.POST.get('cluster', '{}'))
+
+  db = _get_db(user=request.user, source_type=source_type, cluster=cluster)
 
   if request.method == 'POST':
     try:
@@ -452,8 +470,9 @@ def drop_table(request, database):
 
 # Deprecated
 def read_table(request, database, table):
-  db = dbms.get(request.user)
+  cluster = json.loads(request.POST.get('cluster', '{}'))
 
+  db = dbms.get(request.user, cluster=cluster)
   table = db.get_table(database, table)
 
   try:
@@ -468,7 +487,9 @@ def load_table(request, database, table):
   response = {'status': -1, 'data': 'None'}
 
   source_type = request.POST.get('source_type', 'hive')
-  db = _get_db(user=request.user, source_type=source_type)
+  cluster = json.loads(request.POST.get('cluster', '{}'))
+
+  db = _get_db(user=request.user, source_type=source_type, cluster=cluster)
 
   table = db.get_table(database, table)
 
@@ -526,8 +547,9 @@ def load_table(request, database, table):
 
 
 def describe_partitions(request, database, table):
-  db = _get_db(user=request.user)
+  cluster = json.loads(request.POST.get('cluster', '{}'))
 
+  db = _get_db(user=request.user, cluster=cluster)
   table_obj = db.get_table(database, table)
 
   if not table_obj.partition_keys:
@@ -610,7 +632,9 @@ def _massage_partition(database, table, partition):
 
 
 def browse_partition(request, database, table, partition_spec):
-  db = _get_db(user=request.user)
+  cluster = json.loads(request.POST.get('cluster', '{}'))
+
+  db = _get_db(user=request.user, cluster=cluster)
   try:
     decoded_spec = urllib.unquote(partition_spec)
     partition_table = db.describe_partition(database, table, decoded_spec)
@@ -625,7 +649,9 @@ def browse_partition(request, database, table, partition_spec):
 
 # Deprecated
 def read_partition(request, database, table, partition_spec):
-  db = dbms.get(request.user)
+  cluster = json.loads(request.POST.get('cluster', '{}'))
+
+  db = dbms.get(request.user, cluster=cluster)
   try:
     decoded_spec = urllib.unquote(partition_spec)
     query = db.get_partition(database, table, decoded_spec)
@@ -639,7 +665,9 @@ def read_partition(request, database, table, partition_spec):
 @check_has_write_access_permission
 def drop_partition(request, database, table):
   source_type = request.POST.get('source_type', 'hive')
-  db = _get_db(user=request.user, source_type=source_type)
+  cluster = json.loads(request.POST.get('cluster', '{}'))
+
+  db = _get_db(user=request.user, source_type=source_type, cluster=cluster)
 
   if request.method == 'POST':
     partition_specs = request.POST.getlist('partition_selection')