projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
9751: Fix unit tests. Rename dir6.cwl to keep-dir-test-input.cwl
[arvados.git]
/
sdk
/
cwl
/
arvados_cwl
/
fsaccess.py
diff --git
a/sdk/cwl/arvados_cwl/fsaccess.py
b/sdk/cwl/arvados_cwl/fsaccess.py
index 548b166c8b0dff5e902bd315c5e4fd4005c71c66..d2589374773e992a440746cc869c8d91eec497cb 100644
(file)
--- a/
sdk/cwl/arvados_cwl/fsaccess.py
+++ b/
sdk/cwl/arvados_cwl/fsaccess.py
@@
-1,18
+1,19
@@
import fnmatch
import os
import fnmatch
import os
-import cwltool.
pro
cess
+import cwltool.
stdfsac
cess
from cwltool.pathmapper import abspath
import arvados.util
import arvados.collection
import arvados.arvfile
from cwltool.pathmapper import abspath
import arvados.util
import arvados.collection
import arvados.arvfile
-class CollectionFsAccess(cwltool.
pro
cess.StdFsAccess):
+class CollectionFsAccess(cwltool.
stdfsac
cess.StdFsAccess):
"""Implement the cwltool FsAccess interface for Arvados Collections."""
"""Implement the cwltool FsAccess interface for Arvados Collections."""
- def __init__(self, basedir):
+ def __init__(self, basedir
, api_client=None
):
super(CollectionFsAccess, self).__init__(basedir)
super(CollectionFsAccess, self).__init__(basedir)
+ self.api_client = api_client
self.collections = {}
def get_collection(self, path):
self.collections = {}
def get_collection(self, path):
@@
-20,7
+21,7
@@
class CollectionFsAccess(cwltool.process.StdFsAccess):
if p[0].startswith("keep:") and arvados.util.keep_locator_pattern.match(p[0][5:]):
pdh = p[0][5:]
if pdh not in self.collections:
if p[0].startswith("keep:") and arvados.util.keep_locator_pattern.match(p[0][5:]):
pdh = p[0][5:]
if pdh not in self.collections:
- self.collections[pdh] = arvados.collection.CollectionReader(pdh)
+ self.collections[pdh] = arvados.collection.CollectionReader(pdh
, api_client=self.api_client
)
return (self.collections[pdh], "/".join(p[1:]))
else:
return (None, path)
return (self.collections[pdh], "/".join(p[1:]))
else:
return (None, path)
@@
-103,3
+104,12
@@
class CollectionFsAccess(cwltool.process.StdFsAccess):
if paths and paths[-1].startswith("keep:") and arvados.util.keep_locator_pattern.match(paths[-1][5:]):
return paths[-1]
return os.path.join(path, *paths)
if paths and paths[-1].startswith("keep:") and arvados.util.keep_locator_pattern.match(paths[-1][5:]):
return paths[-1]
return os.path.join(path, *paths)
+
+ def realpath(self, path):
+ if path.startswith("$(task.tmpdir)") or path.startswith("$(task.outdir)"):
+ return path
+ collection, rest = self.get_collection(path)
+ if collection:
+ return path
+ else:
+ return os.path.realpath(path)