Skip to content

Commit 6816508

Browse files
committed
Add random outdir support
1 parent 1a83925 commit 6816508

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

cwltool/command_line_tool.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
from .stdfsaccess import StdFsAccess # pylint: disable=unused-import
4343
from .utils import (aslist, convert_pathsep_to_unix,
4444
docker_windows_path_adjust, json_dumps, onWindows,
45-
windows_default_container_id)
45+
windows_default_container_id, random_outdir)
4646
from .context import (LoadingContext, # pylint: disable=unused-import
4747
RuntimeContext, getdefault)
4848
if TYPE_CHECKING:
@@ -354,7 +354,7 @@ def job(self,
354354

355355
if os.path.isdir(jobcache) and not os.path.isfile(jobcachepending):
356356
if docker_req and runtimeContext.use_container:
357-
cachebuilder.outdir = runtimeContext.docker_outdir or "/var/spool/cwl"
357+
cachebuilder.outdir = runtimeContext.docker_outdir or random_outdir()
358358
else:
359359
cachebuilder.outdir = jobcache
360360

cwltool/process.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
DependenciesConfiguration)
4545
from .stdfsaccess import StdFsAccess
4646
from .utils import (DEFAULT_TMP_PREFIX, aslist, cmp_like_py2,
47-
copytree_with_merge, onWindows)
47+
copytree_with_merge, onWindows, random_outdir)
4848
from .validate_js import validate_js_expressions
4949
from .context import (LoadingContext, # pylint: disable=unused-import
5050
RuntimeContext, getdefault)
@@ -629,9 +629,9 @@ def _init_job(self, joborder, runtimeContext):
629629
outdir = dockerReq.get("dockerOutputDirectory")
630630
else:
631631
outdir = dockerReq.get("dockerOutputDirectory") or \
632-
runtimeContext.docker_outdir or "/var/spool/cwl"
632+
runtimeContext.docker_outdir or random_outdir()
633633
elif defaultDocker:
634-
outdir = runtimeContext.docker_outdir or "/var/spool/cwl"
634+
outdir = runtimeContext.docker_outdir or random_outdir()
635635
tmpdir = runtimeContext.docker_tmpdir or "/tmp"
636636
stagedir = runtimeContext.docker_stagedir or "/var/lib/cwl"
637637
else:

cwltool/utils.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import os
66
import sys
77
import platform
8+
import random
89
import shutil
10+
import string
911
import stat
1012
from functools import partial # pylint: disable=unused-import
1113
from typing import (IO, Any, AnyStr, # pylint: disable=unused-import
@@ -245,3 +247,10 @@ def json_dumps(obj, # type: Any
245247
if six.PY2:
246248
kwargs['encoding'] = 'utf-8'
247249
return json.dumps(obj, **kwargs)
250+
251+
def random_outdir():
252+
""" Return the random directory name chosen to use for tool / workflow output """
253+
# compute this once and store it as a function attribute - each subsequent call will return the same value
254+
if not hasattr(random_outdir, 'outdir'):
255+
random_outdir.outdir = '/' + ''.join([random.choice(string.ascii_letters) for _ in range(6)])
256+
return random_outdir.outdir

0 commit comments

Comments
 (0)