14510: Setting collection cache wip
[arvados.git] / sdk / cwl / arvados_cwl / arvjob.py
index 2d112c87a7c5affa2b6d490e526ae1e2d2aea28b..9a03372d32de9375e9401fe4fc4099dce61f1181 100644 (file)
@@ -6,7 +6,6 @@ import logging
 import re
 import copy
 import json
-import datetime
 import time
 
 from cwltool.process import shortname, UnsupportedRequirement
@@ -19,6 +18,7 @@ from cwltool.job import JobBase
 
 from schema_salad.sourceline import SourceLine
 
+import arvados_cwl.util
 import ruamel.yaml as yaml
 
 import arvados.collection
@@ -30,6 +30,7 @@ from .pathmapper import VwdPathMapper, trim_listing
 from .perf import Perf
 from . import done
 from ._version import __version__
+from .util import get_intermediate_collection_info
 
 logger = logging.getLogger('arvados.cwl-runner')
 metrics = logging.getLogger('arvados.cwl-runner.metrics')
@@ -77,8 +78,9 @@ class ArvadosJob(JobBase):
 
                 if vwd:
                     with Perf(metrics, "generatefiles.save_new %s" % self.name):
-                        info = self._get_intermediate_collection_info()
+                        info = get_intermediate_collection_info(self.name, None, runtimeContext.intermediate_output_ttl)
                         vwd.save_new(name=info["name"],
+                                     owner_uuid=self.arvrunner.project_uuid,
                                      ensure_unique_name=True,
                                      trash_at=info["trash_at"],
                                      properties=info["properties"])
@@ -282,26 +284,6 @@ class ArvadosJob(JobBase):
         finally:
             self.output_callback(outputs, processStatus)
 
-    def _get_intermediate_collection_info(self):
-            trash_time = None
-            if self.arvrunner.intermediate_output_ttl > 0:
-                trash_time = datetime.datetime.now() + datetime.timedelta(seconds=self.arvrunner.intermediate_output_ttl)
-
-            current_container_uuid = None
-            try:
-                current_container = self.arvrunner.api.containers().current().execute(num_retries=self.arvrunner.num_retries)
-                current_container_uuid = current_container['uuid']
-            except ApiError as e:
-                # Status code 404 just means we're not running in a container.
-                if e.resp.status != 404:
-                    logger.info("Getting current container: %s", e)
-            props = {"type": "Intermediate",
-                          "container": current_container_uuid}
-
-            return {"name" : "Intermediate collection",
-                    "trash_at" : trash_time,
-                    "properties" : props}
-
 
 class RunnerJob(Runner):
     """Submit and manage a Crunch job that runs crunch_scripts/cwl-runner."""