|
@@ -17,11 +17,14 @@
|
|
|
|
|
|
|
|
import logging
|
|
import logging
|
|
|
|
|
|
|
|
|
|
+from oozie.decorators import check_document_access_permission
|
|
|
|
|
+from oozie.forms import ParameterForm
|
|
|
|
|
+from oozie.views.editor2 import edit_coordinator, new_coordinator
|
|
|
|
|
+
|
|
|
from desktop.auth.backend import is_admin
|
|
from desktop.auth.backend import is_admin
|
|
|
from desktop.conf import TASK_SERVER
|
|
from desktop.conf import TASK_SERVER
|
|
|
from desktop.lib.django_util import JsonResponse
|
|
from desktop.lib.django_util import JsonResponse
|
|
|
-
|
|
|
|
|
-from oozie.views.editor2 import edit_coordinator, new_coordinator, submit_coordinator
|
|
|
|
|
|
|
+from desktop.lib.scheduler.lib.api import get_api
|
|
|
|
|
|
|
|
|
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
LOG = logging.getLogger(__name__)
|
|
@@ -35,8 +38,51 @@ def get_schedule(request):
|
|
|
return edit_coordinator(request)
|
|
return edit_coordinator(request)
|
|
|
|
|
|
|
|
|
|
|
|
|
-def submit_schedule(request):
|
|
|
|
|
- if TASK_SERVER.ENABLED.get():
|
|
|
|
|
- pass
|
|
|
|
|
|
|
+@check_document_access_permission()
|
|
|
|
|
+def submit_schedule(request, doc_id):
|
|
|
|
|
+ interface = request.GET.get('interface', request.POST.get('interface'), 'oozie')
|
|
|
|
|
+ if doc_id.isdigit():
|
|
|
|
|
+ coordinator = Coordinator(document=Document2.objects.get(id=doc_id))
|
|
|
|
|
+ else:
|
|
|
|
|
+ coordinator = Coordinator(document=Document2.objects.get_by_uuid(user=request.user, uuid=doc_id))
|
|
|
|
|
+
|
|
|
|
|
+ ParametersFormSet = formset_factory(ParameterForm, extra=0)
|
|
|
|
|
+
|
|
|
|
|
+ if request.method == 'POST':
|
|
|
|
|
+ params_form = ParametersFormSet(request.POST)
|
|
|
|
|
+
|
|
|
|
|
+ if params_form.is_valid():
|
|
|
|
|
+ mapping = dict([(param['name'], param['value']) for param in params_form.cleaned_data])
|
|
|
|
|
+ mapping['dryrun'] = request.POST.get('dryrun_checkbox') == 'on'
|
|
|
|
|
+ jsonify = request.POST.get('format') == 'json'
|
|
|
|
|
+ try:
|
|
|
|
|
+ job_id = get_api(request, interface).submit_schedule(request, coordinator, mapping)
|
|
|
|
|
+ except Exception, e:
|
|
|
|
|
+ message = force_unicode(str(e))
|
|
|
|
|
+ return JsonResponse({'status': -1, 'message': message}, safe=False)
|
|
|
|
|
+ if jsonify:
|
|
|
|
|
+ return JsonResponse({'status': 0, 'job_id': job_id, 'type': 'schedule'}, safe=False)
|
|
|
|
|
+ else:
|
|
|
|
|
+ request.info(_('Schedule submitted.'))
|
|
|
|
|
+ return redirect(reverse('oozie:list_oozie_coordinator', kwargs={'job_id': job_id}))
|
|
|
|
|
+ else:
|
|
|
|
|
+ request.error(_('Invalid submission form: %s') % params_form.errors)
|
|
|
else:
|
|
else:
|
|
|
- return submit_coordinator(request)
|
|
|
|
|
|
|
+ parameters = coordinator.find_all_parameters()
|
|
|
|
|
+ initial_params = ParameterForm.get_initial_params(dict([(param['name'], param['value']) for param in parameters]))
|
|
|
|
|
+ params_form = ParametersFormSet(initial=initial_params)
|
|
|
|
|
+
|
|
|
|
|
+ popup = render(
|
|
|
|
|
+ 'scheduler/submit_job_popup.mako',
|
|
|
|
|
+ request, {
|
|
|
|
|
+ 'params_form': params_form,
|
|
|
|
|
+ 'name': coordinator.name,
|
|
|
|
|
+ 'action': reverse('oozie:editor_submit_coordinator', kwargs={'doc_id': coordinator.id}),
|
|
|
|
|
+ 'show_dryrun': True,
|
|
|
|
|
+ 'return_json': request.GET.get('format') == 'json',
|
|
|
|
|
+ 'interface': interface
|
|
|
|
|
+ },
|
|
|
|
|
+ force_template=True
|
|
|
|
|
+ ).content
|
|
|
|
|
+
|
|
|
|
|
+ return JsonResponse(popup, safe=False)
|