Skip to content

Commit f3b5d6d

Browse files
committed
Add travis yml
Flake fixes
1 parent 9a69e16 commit f3b5d6d

File tree

5 files changed

+51
-40
lines changed

5 files changed

+51
-40
lines changed

.travis.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
language: python
2+
python:
3+
- '2.7'
4+
before_install:
5+
- sudo apt-get update -qq
6+
- pip install . --process-dependency-links
7+
- pip install -r python/dev-requirements.txt
8+
script:
9+
- flake8 wes_service wes_client
10+
deploy:
11+
provider: pypi
12+
on:
13+
tags: true
14+
user: david4096
15+
password:
16+
secure: LlQn8ZBAb5ekujHnoDrmzrmXaM6TpyzByNHPH4FTbbdnJ8lkDPb/ZhYvdmqrOvXPQg81/IoYKlIvP7fY9kc3oGUJ2IXhcPFqiw8njsRE5Qaebp+YppQO7C3IWGlHoZtXNtC608ZSA4x0oneNeNy+Y8KYnqKbmOlbuvrYRlNYfe9/8z7yLPH8wdmp0GyvbViedr3p7PXhtQVUKAgPpgjffZnSA7P/Y6AdkvjHHv2xMAzWP/QmOFWZNxUXjg0miR0K7eGFeGBNMM/+QsVXrGOu/TCtPtJ4JXyD86nzrZUbsOluyAblxwGlrv05se5ImVhR210OC5zvSW2902y/lxCw5uek+xg4/tcSA1ckshxLeu02GfDygCktMUtqtKVIZ+qvU7H4dEQ6Jnz9yBvZW5M6V94Ew3wBFy0RB5I9k3MMQY21FdynIUEZzBgJbOChCbmlIDT1varBHvWBiwg8EwPOVuJt1CsOoptJxUsoJND4tAOPIvXMNI17qGJ+VWAVMVNn7cVUuhEeGXwQF4urrkFBA7WIYOp6O9R8Ipg6WnQdxVdnqb3NsEc19SRdFXQ82SYibKfIZxjpdmYVgKzTYsJGMhfG6fTw9D4JABhggfgShsnByrFtbbkn/9g64jXDOjwPLeRXwXYZe6ZV6M69PDWdo0o326Qq/OHBG5eU7z2plNI=

wes_service/__init__.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,10 @@
1-
import connexion
2-
from connexion.resolver import Resolver
3-
import connexion.utils as utils
4-
5-
import threading
6-
import tempfile
7-
import subprocess
8-
import uuid
9-
import os
10-
import json
11-
import urllib
121
import argparse
132
import sys
143

15-
from pkg_resources import resource_stream
4+
import connexion
5+
import connexion.utils as utils
6+
from connexion.resolver import Resolver
7+
168

179
def main(argv=sys.argv[1:]):
1810
parser = argparse.ArgumentParser(description='Workflow Execution Service')
@@ -24,12 +16,14 @@ def main(argv=sys.argv[1:]):
2416

2517
app = connexion.App(__name__)
2618
backend = utils.get_function_from_name(args.backend + ".create_backend")(args.opt)
19+
2720
def rs(x):
2821
return getattr(backend, x)
2922

3023
app.add_api('openapi/workflow_execution_service.swagger.yaml', resolver=Resolver(rs))
3124

3225
app.run(port=args.port, debug=args.debug)
3326

27+
3428
if __name__ == "__main__":
3529
main(sys.argv[1:])

wes_service/arvados_wes.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import tempfile
88
from wes_service.util import visit, WESBackend
99

10+
1011
def get_api():
1112
return arvados.api_from_config(version="v1", apiconfig={
1213
"ARVADOS_API_HOST": os.environ["ARVADOS_API_HOST"],
@@ -23,6 +24,7 @@ def get_api():
2324
"Cancelled": "Canceled"
2425
}
2526

27+
2628
class ArvadosBackend(WESBackend):
2729
def GetServiceInfo(self):
2830
return {
@@ -36,11 +38,7 @@ def GetServiceInfo(self):
3638
"key_values": {}
3739
}
3840

39-
def ListWorkflows(self, body=None):
40-
# body["page_size"]
41-
# body["page_token"]
42-
# body["key_value_search"]
43-
41+
def ListWorkflows(self):
4442
api = get_api()
4543

4644
requests = api.container_requests().list(filters=[["requesting_container_uuid", "=", None]],
@@ -75,7 +73,6 @@ def RunWorkflow(self, body):
7573
body.get("workflow_url"), inputtemp.name], env=env).strip()
7674
return {"workflow_id": workflow_id}
7775

78-
7976
def GetWorkflowLog(self, workflow_id):
8077
api = get_api()
8178

@@ -87,9 +84,11 @@ def GetWorkflowLog(self, workflow_id):
8784
c = arvados.collection.CollectionReader(request["output_uuid"])
8885
with c.open("cwl.output.json") as f:
8986
outputobj = json.load(f)
87+
9088
def keepref(d):
9189
if isinstance(d, dict) and "location" in d:
9290
d["location"] = "keep:%s/%s" % (c.portable_data_hash(), d["location"])
91+
9392
visit(outputobj, keepref)
9493

9594
stderr = ""
@@ -117,8 +116,7 @@ def keepref(d):
117116
r["workflow_log"]["exitCode"] = container["exit_code"]
118117
return r
119118

120-
121-
def CancelJob(self, workflow_id):
119+
def CancelJob(self, workflow_id): # NOQA
122120
api = get_api()
123121
request = api.container_requests().update(body={"priority": 0}).execute()
124122
return {"workflow_id": request["uuid"]}
@@ -130,5 +128,6 @@ def GetWorkflowStatus(self, workflow_id):
130128
return {"workflow_id": request["uuid"],
131129
"state": statemap[container["state"]]}
132130

131+
133132
def create_backend(opts):
134-
return ArvadosBackend(optdict)
133+
return ArvadosBackend(opts)

wes_service/cwl_runner.py

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
import threading
2-
import tempfile
3-
import subprocess
4-
import uuid
5-
import os
61
import json
2+
import os
3+
import subprocess
74
import urllib
8-
import sys
9-
from wes_service.util import visit, WESBackend
5+
import uuid
6+
7+
from wes_service.util import WESBackend
8+
109

1110
class Workflow(object):
1211
def __init__(self, workflow_id):
@@ -22,13 +21,17 @@ def run(self, request, opts):
2221
with open(os.path.join(self.workdir, "request.json"), "w") as f:
2322
json.dump(request, f)
2423

25-
with open(os.path.join(self.workdir, "cwl.input.json"), "w") as inputtemp:
24+
with open(os.path.join(
25+
self.workdir, "cwl.input.json"), "w") as inputtemp:
2626
json.dump(request["workflow_params"], inputtemp)
2727

2828
if request.get("workflow_descriptor"):
29-
with open(os.path.join(self.workdir, "workflow.cwl"), "w") as f:
29+
with open(os.path.join(
30+
self.workdir, "workflow.cwl"), "w") as f:
31+
# FIXME #14 workflow_descriptor isn't defined
3032
f.write(workflow_descriptor)
31-
workflow_url = urllib.pathname2url(os.path.join(self.workdir, "workflow.cwl"))
33+
workflow_url = urllib.pathname2url(
34+
os.path.join(self.workdir, "workflow.cwl"))
3235
else:
3336
workflow_url = request.get("workflow_url")
3437

@@ -38,7 +41,7 @@ def run(self, request, opts):
3841
runner = opts.getopt("runner", "cwl-runner")
3942
extra = opts.getoptlist("extra")
4043

41-
proc = subprocess.Popen([runner]+extra+[workflow_url, inputtemp.name],
44+
proc = subprocess.Popen([runner] + extra + [workflow_url, inputtemp.name],
4245
stdout=output,
4346
stderr=stderr,
4447
close_fds=True,
@@ -68,7 +71,7 @@ def getstate(self):
6871
with open(exc, "w") as f:
6972
f.write(str(exit_code))
7073
os.unlink(os.path.join(self.workdir, "pid"))
71-
except OSError as e:
74+
except OSError:
7275
os.unlink(os.path.join(self.workdir, "pid"))
7376
exit_code = 255
7477

@@ -77,7 +80,7 @@ def getstate(self):
7780
elif exit_code != -1:
7881
state = "EXECUTOR_ERROR"
7982

80-
return (state, exit_code)
83+
return state, exit_code
8184

8285
def getstatus(self):
8386
state, exit_code = self.getstate()
@@ -134,11 +137,8 @@ def GetServiceInfo(self):
134137
"key_values": {}
135138
}
136139

137-
def ListWorkflows(self ,body=None):
138-
# body["page_size"]
139-
# body["page_token"]
140-
# body["key_value_search"]
141-
140+
def ListWorkflows(self):
141+
# FIXME #15 results don't page
142142
wf = []
143143
for l in os.listdir(os.path.join(os.getcwd(), "workflows")):
144144
if os.path.isdir(os.path.join(os.getcwd(), "workflows", l)):
@@ -169,5 +169,6 @@ def GetWorkflowStatus(self, workflow_id):
169169
job = Workflow(workflow_id)
170170
return job.getstatus()
171171

172+
172173
def create_backend(opts):
173174
return CWLRunnerBackend(opts)

wes_service/util.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ def visit(d, op):
77
for i in d.itervalues():
88
visit(i, op)
99

10+
1011
class WESBackend(object):
1112
def __init__(self, opts):
1213
self.pairs = []
@@ -15,7 +16,7 @@ def __init__(self, opts):
1516
self.pairs.append((k, v))
1617

1718
def getopt(self, p, default=None):
18-
for k,v in self.pairs:
19+
for k, v in self.pairs:
1920
if k == p:
2021
return v
2122
return default

0 commit comments

Comments
 (0)