Pārlūkot izejas kodu

HUE-4954 [oozie] Automatically pick up the variables from the notebook

Romain Rigaux 9 gadi atpakaļ
vecāks
revīzija
0c676081ea

+ 11 - 4
apps/oozie/src/oozie/models2.py

@@ -388,10 +388,17 @@ class Workflow(Job):
       for param in find_json_parameters(self.sla):
         params.add(param)
 
-    for node in self.nodes:
-      params.update(node.find_parameters())
+    parameters = dict([(param, '') for param in list(params)]) 
 
-    return dict([(param, '') for param in list(params)])
+    for node in self.nodes:
+      print '===='
+      if 'document' in node.data['type']:
+        parameters.update(node.data['type'])
+        params.update(node.find_parameters())
+      return 
+      print node.find_parameters()
+      
+    return parameters
 
   def get_json(self):
     _data = self.get_data()
@@ -3616,7 +3623,7 @@ class WorkflowBuilder():
     node = self._get_hive_node(document.uuid, user, is_document_node=True)
 
     notebook = Notebook(document=document)
-    parameters = find_dollar_braced_variables(notebook.get_str())
+    parameters = find_dollar_braced_variables(notebook.get_str()) # TODO just pick them from snippet 1
     node['parameters'] = [{u'value': u'%s=${%s}' % (p, p)} for p in parameters] #Todo check if need properties
     node['properties']['uuid'] = document.uuid
 

+ 10 - 2
apps/oozie/src/oozie/views/editor2.py

@@ -328,8 +328,16 @@ def workflow_parameters(request):
   response = {'status': -1}
 
   try:
-    workflow_doc = Document2.objects.get(type='oozie-workflow2', uuid=request.GET.get('uuid'))
-    workflow = Workflow(document=workflow_doc, user=request.user)
+    #workflow_doc = Document2.objects.get(type='oozie-workflow2', uuid=request.GET.get('uuid'))
+    workflow_doc = Document2.objects.get(uuid=request.GET.get('uuid') or request.GET.get('document'))
+
+    if workflow_doc.type == 'oozie-workflow2':
+      workflow = Workflow(document=workflow_doc, user=request.user)
+    else:
+      wf_doc = WorkflowBuilder().create_workflow(document=workflow_doc, user=request.user, managed=True)
+      workflow = Workflow(data=wf_doc.data)
+      print wf_doc.data
+      wf_doc.delete()
 
     response['status'] = 0
     response['parameters'] = workflow.find_all_parameters(with_lib_path=False)

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

@@ -486,7 +486,7 @@
         });
       }
 
-     if (toDelete.length > 0 || toAdd.length > 0) { // Only re-update observable when changed
+      if (toDelete.length > 0 || toAdd.length > 0) { // Only re-update observable when changed
         self.variables.sort(function (left, right) {
           var leftIndex = newVal.indexOf(left.name());
           var rightIndex = newVal.indexOf(right.name());
@@ -1614,12 +1614,11 @@
                 'last_modified': data.last_modified
               });
             }
-            // if (! self.schedulerViewModel) {
-            // self.loadScheduler();
-           //} else {
+
             if (self.coordinatorUuid()) {
              self.saveScheduler();
-             //self.refreshSchedulerParameters(); todo
+             //self.refreshSchedulerParameters();        if (notebook.schedulerViewModel != null) {
+             self.schedulerViewModel.coordinator.refreshParameters();
             }
 
             hueUtils.changeURL('/notebook/editor?editor=' + data.id);
@@ -1844,7 +1843,7 @@
         }, function(data) {
           if (data.status == 0) {
             if (data.changed) {
-              self.schedulerViewModel.coordinator.refreshParameters()
+              self.schedulerViewModel.coordinator.refreshParameters();
             }
           } else {
             $(document).trigger("error", data.message);