11557: Copy reused job's output to a collection on specified project (or Home project...
authorLucas Di Pentima <lucas@curoverse.com>
Fri, 2 Jun 2017 02:15:37 +0000 (23:15 -0300)
committerLucas Di Pentima <lucas@curoverse.com>
Fri, 2 Jun 2017 02:15:37 +0000 (23:15 -0300)
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <lucas@curoverse.com>

sdk/cwl/arvados_cwl/arvjob.py

index 0bf91f24a0a9804ebc93683ca9b004cafd530e32..cf5a2cea5510ed3c88689e6f3378816914c0813b 100644 (file)
@@ -291,6 +291,18 @@ class RunnerJob(Runner):
             find_or_create=self.enable_reuse
         ).execute(num_retries=self.arvrunner.num_retries)
 
+        if self.enable_reuse and job['output']:
+            # When reusing jobs, copy its output collection to the desired project
+            c = arvados.collection.Collection(job['output'],
+                                              api_client=self.arvrunner.api,
+                                              keep_client=self.arvrunner.keep_client,
+                                              num_retries=self.arvrunner.num_retries)
+            c.save_new(name="Output of {}".format(self.name),
+                       owner_uuid=self.arvrunner.project_uuid,
+                       ensure_unique_name=True,
+                       num_retries=self.arvrunner.num_retries)
+            logger.info("Copied reused job's output to collection %s", c.manifest_locator())
+
         for k,v in job_spec["script_parameters"].items():
             if v is False or v is None or isinstance(v, dict):
                 job_spec["script_parameters"][k] = {"value": v}