Bläddra i källkod

HUE-4954 [editor] Load and save the managed coordinator

Romain Rigaux 9 år sedan
förälder
incheckning
fa9f92339a

+ 1 - 1
apps/oozie/src/oozie/urls.py

@@ -81,7 +81,7 @@ urlpatterns += patterns(
   url(r'^editor/workflow/add_node/$', 'add_node', name='add_node'),
   url(r'^editor/workflow/parameters/$', 'workflow_parameters', name='workflow_parameters'),
   url(r'^editor/workflow/action/parameters/$', 'action_parameters', name='action_parameters'),
-  url(r'^editor/workflow/action/refresh_parameters/$', 'refresh_action_parameters', name='refresh_action_parameters'),
+  url(r'^editor/workflow/refresh_document_parameters/$', 'refresh_document_parameters', name='refresh_document_parameters'),
   url(r'^editor/workflow/gen_xml/$', 'gen_xml_workflow', name='gen_xml_workflow'),
   url(r'^editor/workflow/open_v1/$', 'open_old_workflow', name='open_old_workflow'),
   

+ 32 - 29
apps/oozie/src/oozie/views/editor2.py

@@ -341,29 +341,32 @@ def workflow_parameters(request):
 
 @check_editor_access_permission
 @check_document_access_permission()
-def refresh_action_parameters(request):
+def refresh_document_parameters(request):
   response = {'status': -1}
 
   try:
-    coord_uuid = request.POST.get('uuid')
-    workflow_doc = Document2.objects.get(type='oozie-workflow2', owner=request.user, is_managed=True, dependents__uuid__in=[coord_uuid])
+    notebook_uuid = request.POST.get('uuid')
+    current_parameters = json.loads(request.POST.get('parameters')) # hive_node['properties']['parameters']
+    
+    #workflow_doc = Document2.objects.get(type='oozie-workflow2', owner=request.user, is_managed=True, dependents__uuid__in=[coord_uuid])
 
     # Refresh the action parameters of a document action in case the document changed
-    workflow = Workflow(document=workflow_doc, user=request.user)
+#     workflow = Workflow(document=workflow_doc, user=request.user)
 
-    _data = workflow.get_data()
-    hive_node = _data['workflow']['nodes'][3]
-    query_document = Document2.objects.get_by_uuid(user=request.user, uuid=hive_node['properties']['uuid'])
+#     _data = workflow.get_data()
+#     hive_node = _data['workflow']['nodes'][3]
+#     query_document = Document2.objects.get_by_uuid(user=request.user, uuid=hive_node['properties']['uuid'])
+    query_document = Document2.objects.get_by_uuid(user=request.user, uuid=notebook_uuid)
     parameters = WorkflowBuilder().get_document_parameters(query_document)
 
-    changed = set([p['value'] for p in parameters]) != set([p['value'] for p in hive_node['properties']['parameters']])
+    changed = set([p['value'] for p in parameters]) != set([p['value'] for p in current_parameters])
 
-    if changed:
-      hive_node['properties']['parameters'] = parameters
-      workflow.data = json.dumps(_data)
+#     if changed:
+#       hive_node['properties']['parameters'] = parameters
+#       workflow.data = json.dumps(_data)
 
-      workflow_doc.update_data({'workflow': _data['workflow']})
-      workflow_doc.save()
+#       workflow_doc.update_data({'workflow': _data['workflow']})
+#       workflow_doc.save()
 
     response['status'] = 0
     response['parameters'] = parameters
@@ -502,22 +505,7 @@ def edit_coordinator(request):
     coordinator = Coordinator()
     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?
-    workflows = Document2.objects.filter(type='oozie-workflow2', owner=request.user, is_managed=True, dependencies__uuid__in=[document_uuid])
-    if workflows.exists():
-      workflow_doc = workflows.get()
-    else:
-      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
-    coordinator.data['name'] = _('Schedule of %s') % workflow_doc.name
-  elif request.GET.get('workflow'):
+  if request.GET.get('workflow'):
     workflow_uuid = request.GET.get('workflow')
 
   if workflow_uuid:
@@ -621,6 +609,21 @@ def save_coordinator(request):
     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')
 
+# Automatically create the workflow of a scheduled document
+#   document_uuid = request.GET.get('document')
+#   if document_uuid:
+#     # Has already a workflow managing the query for this user?
+#     workflows = Document2.objects.filter(type='oozie-workflow2', owner=request.user, is_managed=True, dependencies__uuid__in=[document_uuid])
+#     if workflows.exists():
+#       workflow_doc = workflows.get()
+#     else:
+#       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
+#     coordinator.data['name'] = _('Schedule of %s') % workflow_doc.name
+
   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)

+ 17 - 11
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -1614,11 +1614,12 @@
                 'last_modified': data.last_modified
               });
             }
-            if (! self.schedulerViewModel) {
-              self.loadScheduler();
-            } else {
-              self.saveScheduler();
-              self.refreshSchedulerParameters();
+            // if (! self.schedulerViewModel) {
+            // self.loadScheduler();
+           //} else {
+            if (self.coordinatorUuid()) {
+             self.saveScheduler();
+             //self.refreshSchedulerParameters(); todo
             }
 
             hueUtils.changeURL('/notebook/editor?editor=' + data.id);
@@ -1812,8 +1813,9 @@
         }, function (data) {
           if ($("#schedulerEditor").length > 0) {
             $("#schedulerEditor").html(data.layout);
+            
             self.schedulerViewModel = new vm.CoordinatorEditorViewModel(data.coordinator, data.credentials, data.workflows, data.can_edit);
-
+            
             ko.cleanNode($("#schedulerEditor")[0]);
             ko.applyBindings(self.schedulerViewModel, $("#schedulerEditor")[0]);
 
@@ -1824,8 +1826,12 @@
             self.schedulerViewModel.isEditing(true);
 
             if (_action == 'new') {
-              self.saveScheduler();
+              self.coordinatorUuid(UUID());
+              self.schedulerViewModel.coordinator.uuid(self.coordinatorUuid());             
+      		//self.schedulerViewModel.coordinator.properties.workflow('aa');
             }
+
+
           }
         }).fail(function (xhr) {
           $(document).trigger("error", xhr.responseText);
@@ -1833,9 +1839,9 @@
       }
     };
 
-    self.refreshSchedulerParameters = function() {
+    self.refreshSchedulerParameters = function() { // dup of 0/oozie/editor/workflow/parameters/?uuid=uui ?
       if (self.isBatchable()) {
-        $.post("/oozie/editor/workflow/action/refresh_parameters/", {
+        $.post("/oozie/editor/workflow/action/refresh_document_parameters/", {
           uuid: self.coordinatorUuid()
         }, function(data) {
           if (data.status == 0) {
@@ -1853,7 +1859,7 @@
       if (self.isBatchable() && (! self.coordinatorUuid() || self.schedulerViewModel.coordinator.isDirty())) {
         self.schedulerViewModel.coordinator.isManaged(true);
         self.schedulerViewModel.save(function(data) {
-          self.coordinatorUuid(data.uuid);
+          self.coordinatorUuid(data.uuid); // bewarre
         });
       }
     };
@@ -2163,7 +2169,7 @@
         }
 
         if (notebook.isSaved()) {
-          notebook.loadScheduler();
+            //notebook.loadScheduler(); // load only if schedule id there
           notebook.snippets()[0].currentQueryTab('savedQueries');
           if (notebook.snippets()[0].queries().length === 0) {
             notebook.snippets()[0].fetchQueries(); // Subscribe not updating yet

+ 6 - 2
desktop/libs/notebook/src/notebook/templates/editor_components.mako

@@ -1111,7 +1111,7 @@ ${ hueIcons.symbols() }
         <a data-bind="click: showSubmitPopup">${ _('Start') }</a></br>
         </br>
         <div id="schedulerEditor">
-          <div id="schedulerEditor"></div>
+          ## <div id="schedulerEditor"></div>
         </div>
       <!-- /ko -->
 
@@ -3568,7 +3568,11 @@ ${ hueIcons.symbols() }
       });
 
       $(document).on('shown', 'a[href="#scheduleTab"]', function(){
-        huePubSub.publish('render.jqcron');
+        if (viewModel.selectedNotebook().schedulerViewModel == null) {
+          viewModel.selectedNotebook().loadScheduler();
+        }
+                                                                   
+// huePubSub.publish('render.jqcron');
       });
 
       huePubSub.subscribe('render.jqcron', function(){