Sfoglia il codice sorgente

HUE-3294 [metadata] Add top databases API

Romain Rigaux 9 anni fa
parent
commit
d9fd92e

+ 17 - 0
desktop/libs/metadata/src/metadata/optimizer_api.py

@@ -240,6 +240,23 @@ def top_aggs(request):
   return JsonResponse(response)
 
 
+@require_POST
+@error_handler
+def top_databases(request):
+  response = {'status': -1}
+
+  api = OptimizerApi()
+  data = api.top_databases()
+
+  if data['status'] == 'success':
+    response['status'] = 0
+    response['values'] = data['results']
+  else:
+    response['message'] = 'Optimizer: %s' % data
+
+  return JsonResponse(response)
+
+
 @require_POST
 @error_handler
 def upload_history(request):

+ 8 - 0
desktop/libs/metadata/src/metadata/optimizer_client.py

@@ -233,6 +233,14 @@ class OptimizerApi(object):
     return self._exec('get-top-joins', args)
 
 
+  def top_databases(self, db_tables=None):
+    args = [
+        '--tenant', self._product_name,
+    ]
+
+    return self._exec('get-top-data-bases', args)
+
+
 def OptimizerDataAdapter(queries):
   headers = ['SQL_ID', 'ELAPSED_TIME', 'SQL_FULLTEXT']
   if queries and len(queries[0]) == 3:

+ 8 - 0
desktop/libs/metadata/src/metadata/optimizer_client_tests.py

@@ -209,6 +209,14 @@ class TestOptimizerApi(object):
     assert_true('columns' in resp['results'][0], resp)
 
 
+  def test_top_databases(self): 
+    resp = self.api.top_databases()
+
+    assert_equal('success', resp['status'], resp)
+    assert_true('instanceCount' in resp['results'], resp)
+    assert_true('totalTableCount' in resp['results'], resp)
+
+
   def test_similar_queries(self):
     source_platform = 'hive'
     query = 'Select * from (Select item.id from item)'

+ 1 - 0
desktop/libs/metadata/src/metadata/urls.py

@@ -42,6 +42,7 @@ urlpatterns += patterns('metadata.optimizer_api',
   #v2
   url(r'^api/optimizer/get_tenant/?$', 'get_tenant', name='get_tenant'),
 
+  url(r'^api/optimizer/top_databases/?$', 'top_databases', name='top_databases'),
   url(r'^api/optimizer/top_tables/?$', 'top_tables', name='top_tables'),
   url(r'^api/optimizer/top_joins/?$', 'top_joins', name='top_joins'),
   url(r'^api/optimizer/top_filters/?$', 'top_filters', name='top_filters'),