X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/7850378a1ffb342fba2ba197370e17d1b777326f..22fcbed20b2691bcdfa5854004dcb95aa1f2e40d:/sdk/cwl/arvados_cwl/arvcontainer.py diff --git a/sdk/cwl/arvados_cwl/arvcontainer.py b/sdk/cwl/arvados_cwl/arvcontainer.py index 99d82f3398..c9170c51b7 100644 --- a/sdk/cwl/arvados_cwl/arvcontainer.py +++ b/sdk/cwl/arvados_cwl/arvcontainer.py @@ -21,8 +21,7 @@ import ruamel.yaml as yaml from cwltool.errors import WorkflowException from cwltool.process import UnsupportedRequirement, shortname -from cwltool.pathmapper import adjustFileObjs, adjustDirObjs, visit_class -from cwltool.utils import aslist +from cwltool.utils import aslist, adjustFileObjs, adjustDirObjs, visit_class from cwltool.job import JobBase import arvados.collection @@ -235,7 +234,9 @@ class ArvadosContainer(JobBase): container_request["container_image"] = arv_docker_get_image(self.arvrunner.api, docker_req, runtimeContext.pull_image, - runtimeContext.project_uuid) + runtimeContext.project_uuid, + runtimeContext.force_docker_pull, + runtimeContext.tmp_outdir_prefix) network_req, _ = self.get_requirement("NetworkAccess") if network_req: @@ -272,6 +273,12 @@ class ArvadosContainer(JobBase): if self.output_ttl < 0: raise WorkflowException("Invalid value %d for output_ttl, cannot be less than zero" % container_request["output_ttl"]) + storage_class_req, _ = self.get_requirement("http://arvados.org/cwl#OutputStorageClass") + if storage_class_req and storage_class_req.get("intermediateStorageClass"): + container_request["output_storage_classes"] = aslist(storage_class_req["intermediateStorageClass"]) + else: + container_request["output_storage_classes"] = runtimeContext.intermediate_storage_classes.strip().split(",") + if self.timelimit is not None and self.timelimit > 0: scheduling_parameters["max_run_time"] = self.timelimit @@ -494,6 +501,9 @@ class RunnerContainer(Runner): if runtimeContext.storage_classes != "default": command.append("--storage-classes=" + runtimeContext.storage_classes) + if runtimeContext.intermediate_storage_classes != "default": + command.append("--intermediate-storage-classes=" + runtimeContext.intermediate_storage_classes) + if self.on_error: command.append("--on-error=" + self.on_error) @@ -546,6 +556,17 @@ class RunnerContainer(Runner): logger.info("%s submitted container_request %s", self.arvrunner.label(self), response["uuid"]) + workbench1 = self.arvrunner.api.config()["Services"]["Workbench1"]["ExternalURL"] + workbench2 = self.arvrunner.api.config()["Services"]["Workbench2"]["ExternalURL"] + url = "" + if workbench2: + url = "{}processes/{}".format(workbench2, response["uuid"]) + elif workbench1: + url = "{}container_requests/{}".format(workbench1, response["uuid"]) + if url: + logger.info("Monitor workflow progress at %s", url) + + def done(self, record): try: container = self.arvrunner.api.containers().get(