Przeglądaj źródła

[oozie] Submit a Coordinator

Romain Rigaux 11 lat temu
rodzic
commit
fbea788

+ 16 - 0
apps/oozie/src/oozie/models2.py

@@ -1191,6 +1191,7 @@ def import_workflow_from_hue_3_7(old_wf):
 class Coordinator():
   XML_FILE_NAME = 'coordinator.xml'
   PROPERTY_APP_PATH = 'oozie.coord.application.path'
+  HUE_ID = 'hue-id-c'
 
   def __init__(self, data=None, json_data=None, document=None):
     self.document = document
@@ -1208,6 +1209,7 @@ class Coordinator():
           "name": "My Coordinator",
           "variables": [],
           "properties": {
+              "deployment_dir": "",
               "schema_version": "uri:oozie:coordinator:0.2",
               "frequency_number": 1,
               "frequency_unit": "days",
@@ -1230,6 +1232,10 @@ class Coordinator():
           }
       }
 
+  @property
+  def id(self):
+    return self.document.id
+
   @property
   def json(self):
     _data = self.data.copy()
@@ -1249,6 +1255,16 @@ class Coordinator():
 
     return self._data
   
+  @property      
+  def deployment_dir(self):
+    if not self.data['properties'].get('deployment_dir'):
+      self.data['properties']['deployment_dir'] = Hdfs.join(REMOTE_SAMPLE_DIR.get(), 'hue-oozie-%s' % time.time()) # Could be home of user too    
+    return self.data['properties']['deployment_dir']
+  
+  def find_all_parameters(self):
+    # TODO
+    return []
+  
   @property
   def datasets(self):
     return self.inputDatasets + self.outputDatasets

+ 6 - 1
apps/oozie/src/oozie/templates/editor/coordinator_editor.mako

@@ -243,7 +243,7 @@ ${ commonheader(_("Coordinator Editor"), "Oozie", user) | n,unicode }
 </div>
 
 
-<div id="submit-wf-modal" class="modal hide"></div>
+<div id="submit-coord-modal" class="modal hide"></div>
 
 <div id="exposeOverlay"></div>
 
@@ -287,6 +287,11 @@ ${ commonheader(_("Coordinator Editor"), "Oozie", user) | n,unicode }
   function addActionDemiModalFieldCancel() {
     viewModel.removeWidgetById(newAction.id());
   }
+  
+  $(document).on("showSubmitPopup", function(event, data){
+    $('#submit-coord-modal').html(data);
+    $('#submit-coord-modal').modal('show');
+  });  
 </script>
 
 ${ commonfooter(messages) | n,unicode }

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

@@ -85,6 +85,7 @@ urlpatterns += patterns(
   url(r'^editor/coordinator/edit/$', 'edit_coordinator', name='edit_coordinator'),
   url(r'^editor/coordinator/new/$', 'new_coordinator', name='new_coordinator'),
   url(r'^editor/coordinator/save/$', 'save_coordinator', name='save_coordinator'),
+  url(r'^editor/coordinator/submit/(?P<doc_id>\d+)$', 'submit_coordinator', name='editor_submit_coordinator'),
   url(r'^editor/coordinator/gen_xml/$', 'gen_xml_coordinator', name='gen_xml_coordinator'), # Temporary
 )
 

+ 8 - 9
apps/oozie/src/oozie/views/editor2.py

@@ -298,20 +298,18 @@ def save_coordinator(request):
 def gen_xml_coordinator(request):
   response = {'status': -1}
 
-#  try:
   coordinator_dict = json.loads(request.POST.get('coordinator', '{}')) # TODO perms
 
   coordinator = Coordinator(data=coordinator_dict)
 
   response['status'] = 0
   response['xml'] = coordinator.to_xml()
-#  except Exception, e:
-#    response['message'] = str(e)
     
   return HttpResponse(json.dumps(response), mimetype="application/json") 
 
 
-def submit_coordinator(request, coordinator):
+def submit_coordinator(request, doc_id):
+  coordinator = Coordinator(document=Document2.objects.get(id=doc_id)) # Todo perms  
   ParametersFormSet = formset_factory(ParameterForm, extra=0)
 
   if request.method == 'POST':
@@ -332,14 +330,15 @@ def submit_coordinator(request, coordinator):
 
   popup = render('editor/submit_job_popup.mako', request, {
                  'params_form': params_form,
-                 'action': reverse('oozie:submit_coordinator',  kwargs={'coordinator': coordinator.id})
+                 'action': reverse('oozie:editor_submit_coordinator',  kwargs={'doc_id': coordinator.id})
                 }, force_template=True).content
   return HttpResponse(json.dumps(popup), mimetype="application/json")
 
 
 def _submit_coordinator(request, coordinator, mapping):
   try:
-    wf_dir = Submission(request.user, coordinator.workflow, request.fs, request.jt, mapping).deploy()
+    wf_doc = Document2.objects.get(uuid=coordinator.data['properties']['workflow'])
+    wf_dir = Submission(request.user, Workflow(document=wf_doc), request.fs, request.jt, mapping).deploy()
 
     properties = {'wf_application_path': request.fs.get_hdfs_path(wf_dir)}
     properties.update(mapping)
@@ -347,9 +346,9 @@ def _submit_coordinator(request, coordinator, mapping):
     submission = Submission(request.user, coordinator, request.fs, request.jt, properties=properties)
     job_id = submission.run()
 
-    History.objects.create_from_submission(submission)
-
     return job_id
   except RestException, ex:
     raise PopupException(_("Error submitting coordinator %s") % (coordinator,),
-                         detail=ex._headers.get('oozie-error-message', ex))
+                         detail=ex._headers.get('oozie-error-message', ex))
+    
+    

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

@@ -76,7 +76,7 @@ var Coordinator = function (vm, coordinator) {
        'advanced_end_instance': '${coord:current(0)}',
        'end_instance': '0',
        'frequency_number': 1,
-       'frequency_unit': 'DAYS',
+       'frequency_unit': 'days',
        'start': new Date(),
 
        'shared_dataset_uuid': '' // If reusing a shared dataset