7
7
import shutil
8
8
import subprocess # nosec
9
9
import sys
10
- import tempfile
11
10
import threading
12
11
from distutils import spawn
13
12
from io import StringIO , open # pylint: disable=redefined-builtin
23
22
from .loghandler import _logger
24
23
from .pathmapper import MapperEnt , PathMapper
25
24
from .utils import (
26
- DEFAULT_TMP_PREFIX ,
27
25
CWLObjectType ,
26
+ create_tmp_dir ,
28
27
docker_windows_path_adjust ,
29
- ensure_non_writable ,
30
28
ensure_writable ,
31
29
onWindows ,
32
30
)
@@ -109,8 +107,8 @@ def __init__(
109
107
def get_image (
110
108
docker_requirement : Dict [str , str ],
111
109
pull_image : bool ,
112
- force_pull : bool = False ,
113
- tmp_outdir_prefix : str = DEFAULT_TMP_PREFIX ,
110
+ force_pull : bool ,
111
+ tmp_outdir_prefix : str ,
114
112
) -> bool :
115
113
"""
116
114
Retrieve the relevant Docker container image.
@@ -170,7 +168,7 @@ def get_image(
170
168
subprocess .check_call (cmd , stdout = sys .stderr ) # nosec
171
169
found = True
172
170
elif "dockerFile" in docker_requirement :
173
- dockerfile_dir = str ( tempfile . mkdtemp ( prefix = tmp_outdir_prefix ) )
171
+ dockerfile_dir = create_tmp_dir ( tmp_outdir_prefix )
174
172
with open (os .path .join (dockerfile_dir , "Dockerfile" ), "wb" ) as dfile :
175
173
dfile .write (docker_requirement ["dockerFile" ].encode ("utf-8" ))
176
174
cmd = [
@@ -236,8 +234,8 @@ def get_from_requirements(
236
234
self ,
237
235
r : CWLObjectType ,
238
236
pull_image : bool ,
239
- force_pull : bool = False ,
240
- tmp_outdir_prefix : str = DEFAULT_TMP_PREFIX ,
237
+ force_pull : bool ,
238
+ tmp_outdir_prefix : str ,
241
239
) -> Optional [str ]:
242
240
if not spawn .find_executable ("docker" ):
243
241
raise WorkflowException ("docker executable is not available" )
@@ -294,8 +292,7 @@ def add_writable_file_volume(
294
292
os .makedirs (os .path .dirname (host_outdir_tgt ))
295
293
shutil .copy (volume .resolved , host_outdir_tgt )
296
294
else :
297
- tmp_dir , tmp_prefix = os .path .split (tmpdir_prefix )
298
- tmpdir = tempfile .mkdtemp (prefix = tmp_prefix , dir = tmp_dir )
295
+ tmpdir = create_tmp_dir (tmpdir_prefix )
299
296
file_copy = os .path .join (tmpdir , os .path .basename (volume .resolved ))
300
297
shutil .copy (volume .resolved , file_copy )
301
298
self .append_volume (runtime , file_copy , volume .target , writable = True )
@@ -312,9 +309,8 @@ def add_writable_directory_volume(
312
309
if volume .resolved .startswith ("_:" ):
313
310
# Synthetic directory that needs creating first
314
311
if not host_outdir_tgt :
315
- tmp_dir , tmp_prefix = os .path .split (tmpdir_prefix )
316
312
new_dir = os .path .join (
317
- tempfile . mkdtemp ( prefix = tmp_prefix , dir = tmp_dir ),
313
+ create_tmp_dir ( tmpdir_prefix ),
318
314
os .path .basename (volume .target ),
319
315
)
320
316
self .append_volume (runtime , new_dir , volume .target , writable = True )
@@ -327,8 +323,7 @@ def add_writable_directory_volume(
327
323
)
328
324
else :
329
325
if not host_outdir_tgt :
330
- tmp_dir , tmp_prefix = os .path .split (tmpdir_prefix )
331
- tmpdir = tempfile .mkdtemp (prefix = tmp_prefix , dir = tmp_dir )
326
+ tmpdir = create_tmp_dir (tmpdir_prefix )
332
327
new_dir = os .path .join (tmpdir , os .path .basename (volume .resolved ))
333
328
shutil .copytree (volume .resolved , new_dir )
334
329
self .append_volume (runtime , new_dir , volume .target , writable = True )
@@ -434,8 +429,7 @@ def create_runtime(
434
429
)
435
430
exit (2 )
436
431
else :
437
- tmp_dir , tmp_prefix = os .path .split (runtimeContext .tmpdir_prefix )
438
- cidfile_dir = tempfile .mkdtemp (prefix = tmp_prefix , dir = tmp_dir )
432
+ cidfile_dir = runtimeContext .create_tmpdir ()
439
433
440
434
cidfile_name = datetime .datetime .now ().strftime ("%Y%m%d%H%M%S-%f" ) + ".cid"
441
435
if runtimeContext .cidfile_prefix is not None :
0 commit comments