Эх сурвалжийг харах

HUE-4116 [oozie] Add dependency from coordinator to query

Romain Rigaux 9 жил өмнө
parent
commit
7011f31

+ 2 - 3
apps/oozie/src/oozie/models2.py

@@ -2800,14 +2800,13 @@ class WorkflowBuilder():
   Only support Hive document currently, but then will have Pig, PySpark, MapReduce...
   """
 
-  def create_workflow(self, doc_uuid, user, name=None, managed=False):
-    document = Document2.objects.get_by_uuid(user=user, uuid=doc_uuid)
+  def create_workflow(self, document, user, name=None, managed=False):
     parameters = self.get_document_parameters(document)
 
     if name is None:
       name = _('Schedule of ') + document.name
 
-    workflow_doc = self.create_hive_document_workflow(name, doc_uuid, parameters, user, managed=managed)
+    workflow_doc = self.create_hive_document_workflow(name, document.uuid, parameters, user, managed=managed)
     workflow_doc.dependencies.add(document)
 
     return workflow_doc

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

@@ -526,6 +526,7 @@ def edit_coordinator(request):
     coordinator.set_workspace(request.user)
 
   # Automatically create the workflow of a scheduled document
+  # To move to save coordinator
   document_uuid = request.GET.get('document')
   if document_uuid:
     # Has already a workflow managing the query for this user?
@@ -533,7 +534,8 @@ def edit_coordinator(request):
     if workflows.exists():
       workflow_doc = workflows.get()
     else:
-      workflow_doc = WorkflowBuilder().create_workflow(doc_uuid=document_uuid, user=request.user, managed=True)
+      document = Document2.objects.get_by_uuid(user=request.user, uuid=document_uuid)
+      workflow_doc = WorkflowBuilder().create_workflow(document=document, user=request.user, managed=True)
       if doc:
         doc.dependencies.add(workflow_doc)
     workflow_uuid = workflow_doc.uuid
@@ -644,7 +646,7 @@ def save_coordinator(request):
     coordinator_doc.dependencies = [workflow_doc]
     scheduled_doc = workflow_doc.dependencies.filter(type__startswith='query-', owner=request.user, is_managed=True)
     if scheduled_doc.exists():
-      print scheduled_doc
+      coordinator_doc.dependencies.add(scheduled_doc)
 
   coordinator_doc1 = coordinator_doc.doc.get()
   coordinator_doc.update_data(coordinator_data)

+ 14 - 10
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -1353,10 +1353,6 @@
         snippet.jobs.length = 0;
       });
 
-      if (self.schedulerViewModel) {
-    	self.saveScheduler();
-      }
-
       $.post("/notebook/api/notebook/save", {
         "notebook": ko.mapping.toJSON(cp, NOTEBOOK_MAPPING),
         "editorMode": vm.editorMode
@@ -1379,8 +1375,10 @@
             if (! self.schedulerViewModel) {
               self.loadScheduler();
             } else {
+              self.saveScheduler();
               self.refreshSchedulerParameters();
             }
+
             hueUtils.changeURL('/notebook/editor?editor=' + data.id);
           }
           else {
@@ -1580,6 +1578,10 @@
         self.schedulerViewModel.coordinator.properties.cron_advanced.valueHasMutated(); // Update jsCron enabled status
         self.schedulerViewModel.coordinator.tracker().markCurrentStateAsClean();
         self.schedulerViewModel.isEditing(true);
+        
+        if (_action == 'new') {
+          self.saveScheduler();
+        }
       }).fail(function (xhr) {
         $(document).trigger("error", xhr.responseText);
       });
@@ -1589,18 +1591,20 @@
       $.post("/oozie/editor/workflow/action/refresh_parameters/", {
         uuid: self.coordinatorUuid()
       }, function(data) {
-    	if (data.status == 0 && data.changed) {
-    	  self.schedulerViewModel.coordinator.refreshParameters()
-    	} else {
+        if (data.status == 0) {
+          if (data.changed) {
+            self.schedulerViewModel.coordinator.refreshParameters()
+          }
+        } else {
           $(document).trigger("error", data.message);
         }
       });
     }
-    
+
     self.saveScheduler = function() {
       if (! self.coordinatorUuid() || self.schedulerViewModel.coordinator.isDirty()) {
         self.schedulerViewModel.save(function(data) {
-    	  self.coordinatorUuid(data.uuid);
+          self.coordinatorUuid(data.uuid);
         });
       }
     };
@@ -1614,7 +1618,7 @@
       });
     };
 
-    
+
     self.viewSchedulerId = ko.observable('0000000-160519110441280-oozie-oozi-C');
     self.viewScheduler = function() {
       logGA('schedule/view');