소스 검색

HUE-929 [oozie] Support change of deployment directory

Changing the logic of the default generated workspace names in order to avoid any conflicts later
Still conflict on fileChooser (job_xml and deployment_dire), to be solved in HUE-899
Romain Rigaux 13 년 전
부모
커밋
f3caa3f

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

@@ -52,9 +52,9 @@ class WorkflowForm(forms.ModelForm):
     exclude = ('owner', 'start', 'end')
     widgets = {
       'description': forms.TextInput(attrs={'class': 'span5'}),
-      'deployment_dir': forms.TextInput(attrs={'class': 'pathChooser', 'style': "width:535px"}),
+      'deployment_dir': forms.TextInput(attrs={'class': 'pathChooser span7'}),
       'parameters': forms.widgets.HiddenInput(),
-      'job_xml': forms.widgets.TextInput(attrs={'class': 'span5'}),
+      'job_xml': forms.widgets.TextInput(attrs={'class': 'pathChooser span7'}),
       'job_properties': forms.widgets.HiddenInput(),
       'schema_version': forms.widgets.HiddenInput(),
     }
@@ -64,6 +64,7 @@ class WorkflowForm(forms.ModelForm):
 
 
 SCHEMA_VERSION_CHOICES = ['0.4']
+
 class ImportWorkflowForm(WorkflowForm):
   definition = forms.CharField(widget=forms.Textarea())
   schema_version = forms.ChoiceField(choices=[(version, version) for version in SCHEMA_VERSION_CHOICES])

+ 2 - 1
apps/oozie/src/oozie/models.py

@@ -16,6 +16,7 @@
 # limitations under the License.
 
 import logging
+import time
 
 try:
   import json
@@ -117,7 +118,7 @@ class Job(models.Model):
     super(Job, self).save()
 
     if not self.deployment_dir:
-      default_dir = Hdfs.join(REMOTE_SAMPLE_DIR.get(), '_%s_-oozie-%s' % (self.owner.username, self.id))
+      default_dir = Hdfs.join(REMOTE_SAMPLE_DIR.get(), '_%s_-oozie-%s-%s' % (self.owner.username, self.id, time.time()))
       self.deployment_dir = default_dir
       super(Job, self).save()
 

+ 1 - 1
apps/oozie/src/oozie/templates/editor/action_utils.mako

@@ -174,7 +174,7 @@
           % endif
 
           % if 'job_xml' in action_form.fields:
-            ${ utils.render_field(action_form['job_xml'], extra_attrs={'data-bind': 'value: %s' % field.name}) }
+            ${ utils.render_field(action_form['job_xml'], extra_attrs={'data-bind': 'value: %s' % action_form['job_xml'].name}) }
           % endif
 
         </fieldset>

+ 1 - 1
apps/oozie/src/oozie/templates/editor/edit_workflow.mako

@@ -609,7 +609,7 @@ var ModalModule = function($, ko) {
   module.prototype.addDecorations = function () {
     $(".popover").remove();
 
-    $("input[name='job_xml']:not(.pathChooser)").addClass("pathChooser").after(getFileBrowseButton($("input[name='job_xml']")));
+    $("input[name='job_xml']:not(.pathChooser)").addClass("pathChooser").after(getFileBrowseButton($("input[name='job_xml']:not(.pathChooser)")));
     $("input[name='jar_path']").addClass("pathChooser").after(getFileBrowseButton($("input[name='jar_path']")));
     $("input[name='script_path']").addClass("pathChooser").after(getFileBrowseButton($("input[name='script_path']")));
     $("input[name='command']").addClass("pathChooser").after(getFileBrowseButton($("input[name='command']")));

+ 10 - 7
apps/oozie/src/oozie/urls.py

@@ -20,14 +20,8 @@ from django.conf.urls.defaults import patterns, url
 
 IS_URL_NAMESPACED = True
 
-urlpatterns = patterns(
-  'oozie.views.api',
 
-  url(r'^workflows/(?P<workflow>\d+)$', 'workflow', name='workflow'),
-  url(r'^workflows/(?P<workflow>\d+)/save$', 'workflow_save', name='workflow_save'),
-)
-
-urlpatterns += patterns(
+urlpatterns = patterns(
   'oozie.views.editor',
 
   url(r'^list_workflows/$', 'list_workflows', name='list_workflows'),
@@ -57,6 +51,15 @@ urlpatterns += patterns(
   url(r'^setup_app/$', 'setup_app', name='setup_app'),
 )
 
+
+urlpatterns += patterns(
+  'oozie.views.api',
+
+  url(r'^workflows/(?P<workflow>\d+)$', 'workflow', name='workflow'),
+  url(r'^workflows/(?P<workflow>\d+)/save$', 'workflow_save', name='workflow_save'),
+)
+
+
 urlpatterns += patterns(
   'oozie.views.dashboard',
 

+ 0 - 1
apps/oozie/src/oozie/views/api.py

@@ -119,7 +119,6 @@ def update_workflow(json_workflow):
 
 def update_workflow_nodes(workflow, json_nodes, id_map):
   validate_json_nodes(json_nodes)
-
   nodes = []
 
   for json_node in json_nodes: