فهرست منبع

HUE-4006 [oozie] Create new deployment directory when coordinator or bundle is copied

krish 9 سال پیش
والد
کامیت
fa0550bbbc
2فایلهای تغییر یافته به همراه32 افزوده شده و 23 حذف شده
  1. 19 16
      apps/oozie/src/oozie/models2.py
  2. 13 7
      apps/oozie/src/oozie/views/editor2.py

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

@@ -85,6 +85,25 @@ class Job(object):
   def __str__(self):
     return '%s' % force_unicode(self.name)
 
+  def deployment_dir(self):
+    return None
+
+  def check_workspace(self, fs, user):
+    # Create optional default root workspace for the first submission
+    if REMOTE_SAMPLE_DIR.get() == REMOTE_SAMPLE_DIR.config.default_value:
+      create_directories(fs, [REMOTE_SAMPLE_DIR.get()])
+
+    Submission(user, self, fs, None, {})._create_dir(self.deployment_dir)
+    Submission(user, self, fs, None, {})._create_dir(Hdfs.join(self.deployment_dir, 'lib'))
+
+  def import_workspace(self, fs, source_deployment_dir, owner):
+    try:
+      fs.copy_remote_dir(source_deployment_dir, self.deployment_dir, owner=owner)
+    except WebHdfsException, e:
+      msg = _('The copy of the deployment directory failed: %s.') % e
+      LOG.error(msg)
+      raise PopupException(msg)
+
 
 class WorkflowConfiguration(object):
 
@@ -447,22 +466,6 @@ class Workflow(Job):
 
     self.data = json.dumps(_data)
 
-  def check_workspace(self, fs, user):
-    # Create optional default root workspace for the first submission
-    if REMOTE_SAMPLE_DIR.get() == REMOTE_SAMPLE_DIR.config.default_value:
-      create_directories(fs, [REMOTE_SAMPLE_DIR.get()])
-
-    Submission(user, self, fs, None, {})._create_dir(self.deployment_dir)
-    Submission(user, self, fs, None, {})._create_dir(Hdfs.join(self.deployment_dir, 'lib'))
-
-  def import_workspace(self, fs, source_deployment_dir, owner):
-    try:
-      fs.copy_remote_dir(source_deployment_dir, self.deployment_dir, owner=owner)
-    except WebHdfsException, e:
-      msg = _('The copy of the deployment directory failed: %s.') % e
-      LOG.error(msg)
-      raise PopupException(msg)
-
   def create_single_action_workflow_data(self, node_id):
     _data = json.loads(self.data)
 

+ 13 - 7
apps/oozie/src/oozie/views/editor2.py

@@ -196,12 +196,12 @@ def copy_workflow(request):
   return JsonResponse(response)
 
 
-def _import_workspace(fs, user, workflow):
-  source_workspace_dir = workflow.deployment_dir
+def _import_workspace(fs, user, job):
+  source_workspace_dir = job.deployment_dir
 
-  workflow.set_workspace(user)
-  workflow.check_workspace(fs, user)
-  workflow.import_workspace(fs, source_workspace_dir, user)
+  job.set_workspace(user)
+  job.check_workspace(fs, user)
+  job.import_workspace(fs, source_workspace_dir, user)
 
 
 @check_editor_access_permission
@@ -550,8 +550,11 @@ def copy_coordinator(request):
 
     doc.copy(content_object=doc2, name=name, owner=request.user)
 
-    coordinator_data = Coordinator(document=doc2).get_data_for_json()
+    coord = Coordinator(document=doc2)
+    coordinator_data = coord.get_data_for_json()
     coordinator_data['name'] = name
+
+    _import_workspace(request.fs, request.user, coord)
     doc2.update_data(coordinator_data)
     doc2.save()
 
@@ -781,8 +784,11 @@ def copy_bundle(request):
 
     doc.copy(content_object=doc2, name=name, owner=request.user)
 
-    bundle_data = Bundle(document=doc2).get_data_for_json()
+    bundle = Bundle(document=doc2)
+    bundle_data = bundle.get_data_for_json()
     bundle_data['name'] = name
+
+    _import_workspace(request.fs, request.user, bundle)
     doc2.update_data(bundle_data)
     doc2.save()