Explorar o código

HUE-7010 [sqoop] Take configured databases from librdms instead of hardcoding the list of drivers

Prachi Poddar %!s(int64=8) %!d(string=hai) anos
pai
achega
e1e1ef1

+ 9 - 1
desktop/libs/indexer/src/indexer/indexers/rdbms.py

@@ -24,7 +24,7 @@ from django.utils.translation import ugettext as _
 
 from desktop.lib.django_util import JsonResponse
 from librdbms.server import dbms as rdbms
-from librdbms.conf import DATABASES, get_database_password
+from librdbms.conf import DATABASES, get_database_password, get_server_choices
 from notebook.connectors.rdbms import Assist
 from notebook.models import make_notebook
 
@@ -68,6 +68,14 @@ def get_db_component(request):
 
   return JsonResponse(format_)
 
+def get_drivers(request):
+  format_ = {'data': [], 'status': 1}
+  servers_dict = dict(get_server_choices())
+  format_['data'] = [{'value': key, 'name': servers_dict[key]} for key in servers_dict.keys()]
+  format_['data'].append({'value': 'jdbc', 'name': 'JDBC'})
+  format_['status'] = 0
+
+  return JsonResponse(format_)
 
 def run_sqoop(request, source, destination, start_time):
   rdbms_mode = source['rdbmsMode']

+ 18 - 11
desktop/libs/indexer/src/indexer/templates/importer.mako

@@ -1230,16 +1230,23 @@ ${ assist.assistPanel() }
         self.rdbmsUsername('');
         self.rdbmsPassword('');
         self.rdbmsDbIsValid(false);
+        if (val == 'configRdbms') {
+          $.post("${ url('indexer:get_drivers') }", {
+          }, function (resp) {
+            if (resp.data) {
+              self.rdbmsTypes(resp.data);
+            }
+          });
+        } else if (val == 'customRdbms') {
+          self.rdbmsTypes([
+              {'value': 'jdbc', 'name': 'JDBC'},
+              {'value': 'mysql', 'name': 'MySQL'},
+              {'value': 'oracle', 'name': 'Oracle'},
+              {'value': 'postgresql', 'name': 'PostgreSQL'}
+          ]);
+        }
       });
-      self.rdbmsTypesAll = ko.observableArray([
-          {'value': 'mysql', 'name': 'MySQL'},
-          {'value': 'oracle', 'name': 'Oracle'},
-          {'value': 'postgresql', 'name': 'PostgreSQL'},
-          {'value': 'db2', 'name': 'DB2'}
-      ]);
-      self.rdbmsTypes = ko.pureComputed(function() {
-        return self.rdbmsTypesAll();
-      });
+      self.rdbmsTypes = ko.observableArray();
       self.rdbmsType = ko.observable('');
       self.rdbmsType.subscribe(function (val) {
         self.path('');
@@ -1266,14 +1273,14 @@ ${ assist.assistPanel() }
           });
         }
       });
-      self.rdbmsDatabaseNames = ko.observableArray([]);
+      self.rdbmsDatabaseNames = ko.observableArray();
       self.rdbmsTableName = ko.observable('');
       self.rdbmsTableName.subscribe(function (val) {
         if (val != '') {
           wizard.guessFieldTypes();
         }
       });
-      self.rdbmsTableNames = ko.observableArray([]);
+      self.rdbmsTableNames = ko.observableArray();
       self.rdbmsHostname = ko.observable('');
       self.rdbmsHostname.subscribe(function (val) {
         self.rdbmsDatabaseNames([]);

+ 2 - 1
desktop/libs/indexer/src/indexer/urls.py

@@ -60,7 +60,8 @@ urlpatterns += patterns('indexer.api3',
 )
 
 urlpatterns += patterns('indexer.indexers.rdbms',
-  url(r'^api/indexer/indexers/get_db_component/$', 'get_db_component', name='get_db_component')
+  url(r'^api/indexer/indexers/get_db_component/$', 'get_db_component', name='get_db_component'),
+  url(r'^api/indexer/indexers/get_drivers/$', 'get_drivers', name='get_drivers')
 )