소스 검색

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

Romain Rigaux 9 년 전
부모
커밋
fc3e5af

+ 1 - 0
apps/oozie/src/oozie/static/oozie/js/coordinator-editor.ko.js

@@ -39,6 +39,7 @@ var Coordinator = function (vm, coordinator) {
   self.id = ko.observable(typeof coordinator.id != "undefined" && coordinator.id != null ? coordinator.id : null);
   self.uuid = ko.observable(typeof coordinator.uuid != "undefined" && coordinator.uuid != null ? coordinator.uuid : UUID());
   self.name = ko.observable(typeof coordinator.name != "undefined" && coordinator.name != null ? coordinator.name : "").extend({ trackChange: true });
+  self.isManaged = ko.observable(typeof coordinator.isManaged != "undefined" && coordinator.isManaged != null ? coordinator.isManaged : false);
 
   self.properties = ko.mapping.fromJS(typeof coordinator.properties != "undefined" && coordinator.properties != null ? coordinator.properties : {});
   self.variables = ko.mapping.fromJS(typeof coordinator.variables != "undefined" && coordinator.variables != null ? coordinator.variables : []);

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

@@ -637,16 +637,16 @@ def save_coordinator(request):
   if coordinator_data.get('id'):
     coordinator_doc = Document2.objects.get(id=coordinator_data['id'])
   else:
-    coordinator_doc = Document2.objects.create(name=coordinator_data['name'], uuid=coordinator_data['uuid'], type='oozie-coordinator2', owner=request.user)
+    coordinator_doc = Document2.objects.create(name=coordinator_data['name'], uuid=coordinator_data['uuid'], type='oozie-coordinator2', owner=request.user, is_managed=coordinator_data.get('isManaged'))
     Document.objects.link(coordinator_doc, owner=coordinator_doc.owner, name=coordinator_doc.name, description=coordinator_doc.description, extra='coordinator2')
 
   if coordinator_data['properties']['workflow']:
     workflow_doc = Document2.objects.get(type='oozie-workflow2', uuid=coordinator_data['properties']['workflow'])
     workflow_doc.doc.get().can_read_or_exception(request.user)
     coordinator_doc.dependencies = [workflow_doc]
-    scheduled_doc = workflow_doc.dependencies.filter(type__startswith='query-', owner=request.user, is_managed=True)
-    if scheduled_doc.exists():
-      coordinator_doc.dependencies.add(scheduled_doc)
+    scheduled_doc = workflow_doc.dependencies.filter(type__startswith='query-', owner=request.user, is_managed=False)
+    for action in scheduled_doc.all():
+      coordinator_doc.dependencies.add(action)
 
   coordinator_doc1 = coordinator_doc.doc.get()
   coordinator_doc.update_data(coordinator_data)

+ 1 - 0
desktop/core/src/desktop/models.py

@@ -1118,6 +1118,7 @@ class Document2(models.Model):
       'perms': self._massage_permissions(),
       'last_modified': self.last_modified.strftime(UTC_TIME_FORMAT),
       'last_modified_ts': calendar.timegm(self.last_modified.utctimetuple()),
+      'is_managed': self.is_managed,
       'isSelected': False,
       'absoluteUrl': self.get_absolute_url(),
     }

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

@@ -1603,7 +1603,8 @@
 
     self.saveScheduler = function() {
       if (! self.coordinatorUuid() || self.schedulerViewModel.coordinator.isDirty()) {
-        self.schedulerViewModel.save(function(data) {
+        self.schedulerViewModel.coordinator.isManaged(true);        
+    	self.schedulerViewModel.save(function(data) {
           self.coordinatorUuid(data.uuid);
         });
       }