Browse Source

[notebook] Allow to pick a certain dialect in install examples

Romain Rigaux 4 years ago
parent
commit
e0ae8160db

+ 1 - 0
apps/beeswax/src/beeswax/management/commands/beeswax_install_examples.py

@@ -58,6 +58,7 @@ class Command(BaseCommand):
       request = None
       request = None
       self.queries = None
       self.queries = None
       self.tables = None
       self.tables = None
+      interpreter = None
     else:
     else:
       dialect = options['dialect']
       dialect = options['dialect']
       db_name = options.get('db_name', 'default')
       db_name = options.get('db_name', 'default')

+ 2 - 1
desktop/libs/notebook/src/notebook/management/commands/notebook_setup.py

@@ -39,6 +39,7 @@ class Command(BaseCommand):
       user = User.objects.get(username=pwd.getpwuid(os.getuid()).pw_name)
       user = User.objects.get(username=pwd.getpwuid(os.getuid()).pw_name)
     else:
     else:
       user = options['user']
       user = options['user']
+    dialect = options.get('dialect', 'hive')
 
 
     # Install sample notebook from fixture if notebook with sample UUID doesn't exist
     # Install sample notebook from fixture if notebook with sample UUID doesn't exist
     if not Document2.objects.filter(uuid="7f2ea775-e067-4fde-8f5f-4d704ab9b002").exists():
     if not Document2.objects.filter(uuid="7f2ea775-e067-4fde-8f5f-4d704ab9b002").exists():
@@ -63,4 +64,4 @@ class Command(BaseCommand):
       LOG.info('Successfully installed sample notebook')
       LOG.info('Successfully installed sample notebook')
 
 
     from beeswax.management.commands.beeswax_install_examples import Command
     from beeswax.management.commands.beeswax_install_examples import Command
-    Command().handle(dialect='hive', user=user)
+    Command().handle(dialect=dialect, user=user)

+ 1 - 1
desktop/libs/notebook/src/notebook/views.py

@@ -412,7 +412,7 @@ def install_examples(request):
       response['errorMessage'] = ' '.join(errors)
       response['errorMessage'] = ' '.join(errors)
       response['status'] = len(errors)
       response['status'] = len(errors)
     else:
     else:
-      Command().handle(user=request.user)
+      Command().handle(user=request.user, dialect=request.POST.get('dialect', 'hive'))
       response['status'] = 0
       response['status'] = 0
       response['message'] = _('Examples refreshed')
       response['message'] = _('Examples refreshed')
   except Exception as e:
   except Exception as e:

+ 33 - 31
desktop/libs/notebook/src/notebook/views_tests.py

@@ -48,38 +48,40 @@ class TestInstallExamples():
       with patch('notebook.views.get_interpreter') as get_interpreter:
       with patch('notebook.views.get_interpreter') as get_interpreter:
         with patch('notebook.connectors.base.get_ordered_interpreters') as get_ordered_interpreters:
         with patch('notebook.connectors.base.get_ordered_interpreters') as get_ordered_interpreters:
           with patch('beeswax.management.commands.beeswax_install_examples.make_notebook') as make_notebook:
           with patch('beeswax.management.commands.beeswax_install_examples.make_notebook') as make_notebook:
+            with patch('beeswax.management.commands.beeswax_install_examples.cluster.get_hdfs') as get_hdfs:
+              get_hdfs.return_value = None
 
 
-            ConnectorObjects.get = Mock(
-              return_value=Connector(
-                id=10,
-                name='MySql',
-                dialect='mysql',
-              ),
-            )
-
-            get_interpreter.return_value = {'type': 10, 'dialect': 'mysql'}
-            get_ordered_interpreters.return_value = [
-              {
-                'name': 'MySql',
-                'type': 10,
-                'dialect': 'mysql',
-                'interface': 'sqlalchemy',
-              }
-            ]
-
-            resp = self.client.post(reverse('notebook:install_examples'), {'db_name': 'default'})
-            data = json.loads(resp.content)
-
-            assert_equal(0, data['status'], data)
-            assert_equal(
-                'Query Sample: Salary Analysis mysql installed. '
-                'Table default.employe_sample installed.',
-                data['message'],
-                data
-            )
-            assert_equal('', data['errorMessage'], data)
-
-            make_notebook.assert_called()
+              ConnectorObjects.get = Mock(
+                return_value=Connector(
+                  id=10,
+                  name='MySql',
+                  dialect='mysql',
+                ),
+              )
+
+              get_interpreter.return_value = {'type': 10, 'dialect': 'mysql'}
+              get_ordered_interpreters.return_value = [
+                {
+                  'name': 'MySql',
+                  'type': 10,
+                  'dialect': 'mysql',
+                  'interface': 'sqlalchemy',
+                }
+              ]
+
+              resp = self.client.post(reverse('notebook:install_examples'), {'db_name': 'default', 'dialect': 'mysql'})
+              data = json.loads(resp.content)
+
+              assert_equal(0, data['status'], data)
+              assert_equal(
+                  'Query Sample: Salary Analysis mysql installed. '
+                  'Table default.employe_sample installed.',
+                  data['message'],
+                  data
+              )
+              assert_equal('', data['errorMessage'], data)
+
+              make_notebook.assert_called()
 
 
 
 
   def test_install_via_load_hive(self):
   def test_install_via_load_hive(self):