Browse Source

HUE-8758 [connectors] Fix get_sample() Snippet type impala is not configured

Romain 6 years ago
parent
commit
fcffc4ad2e

+ 1 - 1
apps/metastore/src/metastore/views.py

@@ -733,4 +733,4 @@ def _get_db(user, source_type=None, cluster=None):
 
 
 def _get_servername(db):
-  return 'hive' if db.server_name == 'beeswax' else db.server_name.rsplit('-', 1)[0]
+  return 'hive' if db.server_name == 'beeswax' else db.server_name

+ 0 - 1
desktop/core/src/desktop/auth/backend.py

@@ -846,4 +846,3 @@ def delete_oidc_session_tokens(session):
       del session['oidc_refresh_token']
     if 'oidc_state' in session:
       del session['oidc_state']
-

+ 48 - 1
desktop/libs/notebook/src/notebook/connectors/hiveserver2_tests.py

@@ -29,6 +29,7 @@ from django.contrib.auth.models import User
 from django.urls import reverse
 from TCLIService.ttypes import TStatusCode, TProtocolVersion, TOperationType
 
+from desktop.auth.backend import rewrite_user
 from desktop.lib.i18n import smart_str
 from desktop.lib.django_test_util import make_logged_in_client
 from desktop.lib.test_utils import add_to_group, grant_access
@@ -94,7 +95,7 @@ class TestApi():
   def setUp(self):
     self.client = make_logged_in_client(username="test", groupname="default", recreate=True, is_superuser=False)
 
-    self.user = User.objects.get(username="test")
+    self.user = rewrite_user(User.objects.get(username="test"))
     grant_access("test", "default", "notebook")
 
 
@@ -214,6 +215,52 @@ class TestApi():
     assert_equal(data['rows'], [[1], [2]])
 
 
+  def test_sample_data_table_async_impala(self):
+
+    with patch('desktop.lib.connectors.api.CONNECTOR_INSTANCES', TestApi.CONNECTOR):
+      with patch('beeswax.server.dbms.get') as get:
+        get.return_value = Mock(
+          get_table=Mock(
+            return_value=Mock(is_impala_only=False)
+          ),
+          server_name='impala-xx',
+          get_sample=Mock(
+            return_value='SELECT * from customers'
+          ),
+          client=Mock(
+            user=self.user,
+            query=Mock(
+              return_value=Mock(
+                get=Mock(
+                  return_value=('server_id', 'server_guid')
+                ),
+                log_context='log_context',
+                has_result_set=True,
+                session_guid='session_guid',
+                modified_row_count=0,
+                operation_type=1
+              ),
+            )
+          )
+        )
+
+        response = self.client.post(
+          reverse('notebook:api_sample_data', kwargs={'database': 'sfdc', 'table': 'customers'}), {
+            'notebook': TestApi.NOTEBOOK_JSON,
+            'snippet': json.dumps(json.loads(TestApi.NOTEBOOK_JSON)['snippets'][0]),
+            'async': '"true"'
+          }
+        )
+
+      get.assert_called()
+
+    assert_equal(response.status_code, 200)
+    data = json.loads(response.content)
+    assert_equal(data['status'], 0)
+    assert_equal(data['result']['handle']['secret'], 'server_id')
+    assert_equal(data['result']['handle']['statement'], 'SELECT * from customers')
+
+
 class TestHiveserver2Api(object):
 
   def setUp(self):

+ 6 - 3
desktop/libs/notebook/src/notebook/models.py

@@ -79,6 +79,9 @@ def make_notebook(name='Browse', description='', editor_type='hive', statement='
   # impala can have compute name appended to the editor_type (impala/dbms.py - get_query_server_config)
   if editor_type.startswith('impala'):
     editor_type = 'impala'
+    editor_connector = 'impala-xx'
+  else:
+    editor_connector = editor_type
 
   editor = Notebook()
   if snippet_properties is None:
@@ -109,12 +112,12 @@ def make_notebook(name='Browse', description='', editor_type='hive', statement='
     'description': description,
     'sessions': [
       {
-         'type': editor_type,
+         'type': editor_connector,
          'properties': sessions_properties,
          'id': None
       }
     ],
-    'selectedSnippet': editor_type,
+    'selectedSnippet': editor_connector, # TODO: might need update in notebook.ko.js
     'type': 'notebook' if is_notebook else 'query-%s' % editor_type,
     'showHistory': True,
     'isSaved': is_saved,
@@ -128,7 +131,7 @@ def make_notebook(name='Browse', description='', editor_type='hive', statement='
          'id': str(uuid.uuid4()),
          'statement_raw': statement,
          'statement': statement,
-         'type': editor_type,
+         'type': editor_connector,
          'wasBatchExecuted': batch_submit,
          'lastExecuted': last_executed,
          'properties': {