Skip to content

Commit 56bcf9f

Browse files
author
Peter Amstutz
committed
wes-client passes most conformance tests with shared filesystem/cwltool backend.
1 parent 6451581 commit 56bcf9f

File tree

5 files changed

+32
-13
lines changed

5 files changed

+32
-13
lines changed

setup.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
SETUP_DIR = os.path.dirname(__file__)
1111
README = os.path.join(SETUP_DIR, 'README.md')
1212

13-
setup(name='cwltool_service',
13+
setup(name='wes_service',
1414
version='2.0',
15-
description='Common workflow language runner service',
15+
description='GA4GH Workflow Execution Service reference implementation',
1616
long_description=open(README).read(),
17-
author='Common workflow language working group',
17+
author='GA4GH Containers and Workflows task team',
1818
author_email='[email protected]',
1919
url="https://github.com/common-workflow-language/cwltool-service",
2020
download_url="https://github.com/common-workflow-language/cwltool-service",
@@ -24,7 +24,8 @@
2424
include_package_data=True,
2525
install_requires=[
2626
'connexion',
27-
'bravado'
27+
'bravado',
28+
'ruamel.yaml >= 0.12.4, < 0.15',
2829
],
2930
entry_points={
3031
'console_scripts': [ "wes-server=wes_service:main",

wes_client.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
import argparse
1111
import logging
1212
import urlparse
13+
import pkg_resources # part of setuptools
14+
from wes_service.util import visit
15+
import urllib
16+
import ruamel.yaml as yaml
1317

1418
def main(argv=sys.argv[1:]):
1519

@@ -18,17 +22,24 @@ def main(argv=sys.argv[1:]):
1822
parser.add_argument("--auth", type=str, default=os.environ.get("WES_API_TOKEN"))
1923
parser.add_argument("--proto", type=str, default=os.environ.get("WES_API_PROTO", "https"))
2024
parser.add_argument("--quiet", action="store_true", default=False)
25+
parser.add_argument("--outdir", type=str)
2126

2227
exgroup = parser.add_mutually_exclusive_group()
2328
exgroup.add_argument("--run", action="store_true", default=False)
2429
exgroup.add_argument("--get", type=str, default=None)
2530
exgroup.add_argument("--log", type=str, default=None)
2631
exgroup.add_argument("--list", action="store_true", default=False)
32+
exgroup.add_argument("--version", action="store_true", default=False)
2733

2834
parser.add_argument("workflow_url", type=str, nargs="?", default=None)
2935
parser.add_argument("job_order", type=str, nargs="?", default=None)
3036
args = parser.parse_args(argv)
3137

38+
if args.version:
39+
pkg = pkg_resources.require("cwltool_service")
40+
print u"%s %s" % (sys.argv[0], pkg[0].version)
41+
exit(0)
42+
3243
http_client = RequestsClient()
3344
split = urlparse.urlsplit("%s://%s/" % (args.proto, args.host))
3445

@@ -54,7 +65,13 @@ def main(argv=sys.argv[1:]):
5465
return 0
5566

5667
with open(args.job_order) as f:
57-
input = json.load(f)
68+
input = yaml.safe_load(f)
69+
basedir = os.path.dirname(args.job_order)
70+
def fixpaths(d):
71+
if isinstance(d, dict) and "location" in d:
72+
if not ":" in d["location"]:
73+
d["location"] = urllib.pathname2url(os.path.normpath(os.path.join(os.getcwd(), basedir, d["location"])))
74+
visit(input, fixpaths)
5875

5976
workflow_url = args.workflow_url
6077
if not workflow_url.startswith("/") and ":" not in workflow_url:

wes_service/arvados_wes.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,6 @@ def RunWorkflow(body):
7474
body.get("workflow_url"), inputtemp.name], env=env).strip()
7575
return {"workflow_id": workflow_id}
7676

77-
def visit(d, op):
78-
op(d)
79-
if isinstance(d, list):
80-
for i in d:
81-
visit(i, op)
82-
elif isinstance(d, dict):
83-
for i in d.itervalues():
84-
visit(i, op)
8577

8678
def GetWorkflowLog(workflow_id):
8779
api = get_api()

wes_service/cwl_runner.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import json
77
import urllib
88
import sys
9+
from wes_service.util import visit
910

1011
class Workflow(object):
1112
def __init__(self, workflow_id):

wes_service/util.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
def visit(d, op):
2+
op(d)
3+
if isinstance(d, list):
4+
for i in d:
5+
visit(i, op)
6+
elif isinstance(d, dict):
7+
for i in d.itervalues():
8+
visit(i, op)

0 commit comments

Comments
 (0)