Эх сурвалжийг харах

HUE-5145 [metadata] Get tenant from optimization API

Romain Rigaux 9 жил өмнө
parent
commit
4d77d46

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

@@ -51,6 +51,26 @@ def error_handler(view_fn):
   return decorator
 
 
+@require_POST
+@error_handler
+def get_tenant(request):
+  response = {'status': -1}
+
+  email = request.POST.get('email')
+
+  api = OptimizerApi()
+
+  data = api.get_tenant(email=email)
+
+  if data['status'] == 'success':
+    response['status'] = 0
+    response['data'] = data['tenant']
+  else:
+    response['message'] = 'Optimizer: %s' % data['details']
+
+  return JsonResponse(response)
+
+
 @require_POST
 @error_handler
 def top_tables(request):

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

@@ -18,6 +18,7 @@
 
 import json
 import logging
+import subprocess
 import uuid
 
 from django.utils.translation import ugettext as _
@@ -68,6 +69,26 @@ class OptimizerApi(object):
     return self._token
 
 
+  def get_tenant(self, email):
+    try:
+      data = subprocess.check_output([
+          'cws',
+          'navopt',
+          '--endpoint-url=%s' % self._api_url,
+          'get-tenant',
+          '--email',
+          email,
+          '--auth-config',
+          self._product_secret
+      ])
+    except RestException, e:
+      raise PopupException(e, title=_('Error while accessing Optimizer'))
+    
+    response = json.loads(data)
+    response['status'] = 'success'
+    return response
+
+
   def create_product(self, product_name=None, product_secret=None, authCode=None):
     try:
       data = {

+ 4 - 0
desktop/libs/metadata/src/metadata/optimizer_tests.py

@@ -57,6 +57,10 @@ class TestOptimizerApi(object):
     cls.user.is_superuser = False
     cls.user.save()
 
+  def test_tenant(self):
+    resp = self.api.get_tenant(email='romain@cloudera.com')
+
+    assert_equal('success', resp['status'], resp)
 
   def test_create_product(self):
     resp = self.api.create_product()

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

@@ -43,4 +43,7 @@ urlpatterns += patterns('metadata.optimizer_api',
   url(r'^api/optimizer_api/query_complexity/?$', 'query_complexity', name='query_complexity'),
   url(r'^api/optimizer_api/popular_values/?$', 'popular_values', name='popular_values'),
   url(r'^api/optimizer_api/similar_queries/?$', 'similar_queries', name='similar_queries'),
+
+  #v2
+  url(r'^api/optimizer_api/get_tenant/?$', 'get_tenant', name='get_tenant'),
 )