Просмотр исходного кода

HUE-8586 [notebook] Add selected cluster to the create session call

Romain Rigaux 7 лет назад
Родитель
Сommit
05c4501155

+ 12 - 0
desktop/libs/notebook/src/notebook/api.py

@@ -27,6 +27,7 @@ from django.utils.translation import ugettext as _
 from django.views.decorators.http import require_GET, require_POST
 from django.views.decorators.http import require_GET, require_POST
 
 
 from desktop.api2 import __paginate
 from desktop.api2 import __paginate
+from desktop.conf import IS_K8S_ONLY
 from desktop.lib.i18n import smart_str
 from desktop.lib.i18n import smart_str
 from desktop.lib.django_util import JsonResponse
 from desktop.lib.django_util import JsonResponse
 from desktop.models import Document2, Document
 from desktop.models import Document2, Document
@@ -81,6 +82,17 @@ def create_session(request):
   notebook = json.loads(request.POST.get('notebook', '{}'))
   notebook = json.loads(request.POST.get('notebook', '{}'))
   session = json.loads(request.POST.get('session', '{}'))
   session = json.loads(request.POST.get('session', '{}'))
 
 
+  if IS_K8S_ONLY.get(): # TODO: create session happening asynchronously on cluster selection when opening Notebook
+    return JsonResponse({
+      "status": 0,
+      "session": {
+        "reuse_session": True, "type": session['type'],
+        "properties": [
+          {"nice_name": "Settings", "multiple": True, "key": "settings", "help_text": "Hive and Hadoop configuration properties.", "defaultValue": [], "type": "settings", "options": ["hive.map.aggr", "hive.exec.compress.output", "hive.exec.parallel", "hive.execution.engine", "mapreduce.job.queuename"], "value": []}
+        ]
+      }
+    })
+
   properties = session.get('properties', [])
   properties = session.get('properties', [])
 
 
   response['session'] = get_api(request, session).create_session(lang=session['type'], properties=properties)
   response['session'] = get_api(request, session).create_session(lang=session['type'], properties=properties)

+ 1 - 1
desktop/libs/notebook/src/notebook/connectors/base.py

@@ -314,7 +314,7 @@ def get_api(request, snippet):
   interface = interpreter['interface']
   interface = interpreter['interface']
 
 
   # Multi cluster
   # Multi cluster
-  cluster = json.loads(request.POST.get('cluster', '""')) # Via Catalog autocomplete API
+  cluster = json.loads(request.POST.get('cluster', '""')) # Via Catalog autocomplete API or Notebook create sessions
   if cluster == 'undefined':
   if cluster == 'undefined':
     cluster = None
     cluster = None
   if not cluster and snippet.get('compute'): # Via notebook.ko.js
   if not cluster and snippet.get('compute'): # Via notebook.ko.js

+ 6 - 1
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -2429,8 +2429,12 @@ var EditorViewModel = (function() {
         self.creatingSessionLocks.push(session.type());
         self.creatingSessionLocks.push(session.type());
       }
       }
 
 
+      var compute = null;
       $.each(self.getSnippets(session.type()), function(index, snippet) {
       $.each(self.getSnippets(session.type()), function(index, snippet) {
         snippet.status('loading');
         snippet.status('loading');
+        if (index == 0) {
+          compute = snippet.compute();
+        }
       });
       });
 
 
       var fail = function (message) {
       var fail = function (message) {
@@ -2445,7 +2449,8 @@ var EditorViewModel = (function() {
 
 
       $.post("/notebook/api/create_session", {
       $.post("/notebook/api/create_session", {
         notebook: ko.mapping.toJSON(self.getContext()),
         notebook: ko.mapping.toJSON(self.getContext()),
-        session: ko.mapping.toJSON(session) // e.g. {'type': 'pyspark', 'properties': [{'name': driverCores', 'value', '2'}]}
+        session: ko.mapping.toJSON(session), // e.g. {'type': 'pyspark', 'properties': [{'name': driverCores', 'value', '2'}]}
+        cluster: ko.mapping.toJSON(compute ? compute : '')
       }, function (data) {
       }, function (data) {
         if (data.status == 0) {
         if (data.status == 0) {
           ko.mapping.fromJS(data.session, {}, session);
           ko.mapping.fromJS(data.session, {}, session);