18
18
19
19
import shellescape
20
20
from prov .model import PROV
21
- from schema_salad .sourceline import SourceLine
22
21
from six import PY2 , with_metaclass
23
22
from typing_extensions import (TYPE_CHECKING , # pylint: disable=unused-import
24
23
Text )
25
- # move to a regular typing import when Python 3.3-3.6 is no longer supported
24
+ from schema_salad . sourceline import SourceLine
26
25
27
26
from .builder import Builder , HasReqsHints # pylint: disable=unused-import
28
27
from .context import RuntimeContext # pylint: disable=unused-import
29
28
from .context import getdefault
30
29
from .errors import WorkflowException
31
30
from .loghandler import _logger
32
- from .pathmapper import (MapperEnt , PathMapper , ensure_writable ,
33
- ensure_non_writable )
34
- from .process import UnsupportedRequirement , stageFiles
31
+ from .pathmapper import (MapperEnt , PathMapper , # pylint: disable=unused-import
32
+ ensure_writable , ensure_non_writable )
33
+ from .process import UnsupportedRequirement , stage_files
35
34
from .secrets import SecretStore # pylint: disable=unused-import
36
- from .utils import \
37
- bytes2str_in_dicts # pylint: disable=unused-import; pylint: disable=unused-import
38
- from .utils import (DEFAULT_TMP_PREFIX , Directory , copytree_with_merge ,
39
- json_dump , json_dumps , onWindows , processes_to_kill ,
40
- subprocess )
35
+ from .utils import (DEFAULT_TMP_PREFIX , Directory , bytes2str_in_dicts ,
36
+ copytree_with_merge , json_dump , json_dumps , onWindows ,
37
+ processes_to_kill , subprocess )
41
38
42
39
if TYPE_CHECKING :
43
40
from .provenance import ProvenanceProfile # pylint: disable=unused-import
@@ -265,7 +262,6 @@ def _execute(self,
265
262
else :
266
263
stdin_path = rmap [1 ]
267
264
268
-
269
265
stderr_path = None
270
266
if self .stderr is not None :
271
267
abserr = os .path .join (self .outdir , self .stderr )
@@ -378,7 +374,7 @@ def _execute(self,
378
374
_logger .debug (u"[job %s] Removing input staging directory %s" , self .name , self .stagedir )
379
375
shutil .rmtree (self .stagedir , True )
380
376
381
- if runtimeContext .rm_tmpdir is not None :
377
+ if runtimeContext .rm_tmpdir :
382
378
_logger .debug (u"[job %s] Removing temporary directory %s" , self .name , self .tmpdir )
383
379
shutil .rmtree (self .tmpdir , True )
384
380
@@ -407,14 +403,17 @@ def run(self,
407
403
if "PATH" not in env :
408
404
env ["PATH" ] = str (os .environ ["PATH" ]) if onWindows () else os .environ ["PATH" ]
409
405
if "SYSTEMROOT" not in env and "SYSTEMROOT" in os .environ :
410
- env ["SYSTEMROOT" ] = str (os .environ ["SYSTEMROOT" ]) if onWindows () else os .environ ["SYSTEMROOT" ]
406
+ env ["SYSTEMROOT" ] = str (os .environ ["SYSTEMROOT" ]) if onWindows () \
407
+ else os .environ ["SYSTEMROOT" ]
411
408
412
- stageFiles (self .pathmapper , ignoreWritable = True , symLink = True , secret_store = runtimeContext .secret_store )
409
+ stage_files (self .pathmapper , ignore_writable = True , symlink = True ,
410
+ secret_store = runtimeContext .secret_store )
413
411
if self .generatemapper is not None :
414
- stageFiles (self .generatemapper , ignoreWritable = self .inplace_update ,
415
- symLink = True , secret_store = runtimeContext .secret_store )
416
- relink_initialworkdir (self .generatemapper , self .outdir ,
417
- self .builder .outdir , inplace_update = self .inplace_update )
412
+ stage_files (self .generatemapper , ignore_writable = self .inplace_update ,
413
+ symlink = True , secret_store = runtimeContext .secret_store )
414
+ relink_initialworkdir (
415
+ self .generatemapper , self .outdir , self .builder .outdir ,
416
+ inplace_update = self .inplace_update )
418
417
419
418
self ._execute ([], env , runtimeContext )
420
419
@@ -478,12 +477,12 @@ def create_file_and_add_volume(self,
478
477
volume , # type: MapperEnt
479
478
host_outdir_tgt , # type: Optional[Text]
480
479
secret_store # type: Optional[SecretStore]
481
- ): # type: (...) -> None
480
+ ): # type: (...) -> Text
482
481
"""Create the file and add a mapping."""
483
482
if not host_outdir_tgt :
484
483
new_file = os .path .join (
485
484
tempfile .mkdtemp (dir = self .tmpdir ),
486
- os .path .basename (volume .resolved ))
485
+ os .path .basename (volume .target ))
487
486
writable = True if volume .type == "CreateWritableFile" else False
488
487
if secret_store :
489
488
contents = secret_store .retrieve (volume .resolved )
@@ -501,7 +500,7 @@ def create_file_and_add_volume(self,
501
500
ensure_writable (host_outdir_tgt or new_file )
502
501
else :
503
502
ensure_non_writable (host_outdir_tgt or new_file )
504
-
503
+ return host_outdir_tgt or new_file
505
504
506
505
507
506
def add_volumes (self ,
@@ -513,7 +512,7 @@ def add_volumes(self,
513
512
"""Append volume mappings to the runtime option list."""
514
513
515
514
container_outdir = self .builder .outdir
516
- for vol in (itm [ 1 ] for itm in pathmapper .items () if itm [1 ].staged ):
515
+ for key , vol in (itm for itm in pathmapper .items () if itm [1 ].staged ):
517
516
host_outdir_tgt = None # type: Optional[Text]
518
517
if vol .target .startswith (container_outdir + "/" ):
519
518
host_outdir_tgt = os .path .join (
@@ -532,11 +531,12 @@ def add_volumes(self,
532
531
self .add_writable_directory_volume (
533
532
runtime , vol , host_outdir_tgt )
534
533
elif vol .type in ["CreateFile" , "CreateWritableFile" ]:
535
- self .create_file_and_add_volume (
534
+ new_path = self .create_file_and_add_volume (
536
535
runtime , vol , host_outdir_tgt , secret_store )
536
+ pathmapper .update (
537
+ key , new_path , vol .target , vol .type , vol .staged )
537
538
538
- def run (self , runtimeContext ):
539
- # type: (RuntimeContext) -> None
539
+ def run (self , runtimeContext ): # type: (RuntimeContext) -> None
540
540
if not os .path .exists (self .tmpdir ):
541
541
os .makedirs (self .tmpdir )
542
542
(docker_req , docker_is_req ) = self .get_requirement ("DockerRequirement" )
0 commit comments