1
|
#!/usr/bin/env python
|
2
|
|
3
|
import argparse
|
4
|
import os
|
5
|
import logging
|
6
|
import time
|
7
|
|
8
|
import arvados
|
9
|
|
10
|
TASK_MAP = {
|
11
|
'4xphq': '4xphq-ot0gb-93vp2wufnxl1ywd',
|
12
|
'qr1hi': 'qr1hi-ot0gb-3bkhfcunhlkvyt3',
|
13
|
}
|
14
|
|
15
|
logging.basicConfig(
|
16
|
level=logging.DEBUG,
|
17
|
format='%(asctime)s %(name)s %(levelname)s %(message)s')
|
18
|
|
19
|
parser = argparse.ArgumentParser()
|
20
|
parser.add_argument('--files', '-n', type=int, default=4)
|
21
|
parser.add_argument('--sleep', '-s', type=int, default=10)
|
22
|
parser.add_argument('--task', '-t')
|
23
|
args = parser.parse_args()
|
24
|
|
25
|
arv = arvados.api('v1')
|
26
|
if args.task is None:
|
27
|
user = arv.users().current().execute()
|
28
|
cluster_id = user['uuid'].split('-', 2)[0]
|
29
|
try:
|
30
|
args.task = TASK_MAP[cluster_id]
|
31
|
except KeyError:
|
32
|
parser.error("no task available for cluster {}".format(cluster_id))
|
33
|
|
34
|
os.environ.update(TASK_UUID=args.task, TASK_WORK='/tmp')
|
35
|
task = arvados.current_task()
|
36
|
logging.debug("got task %s", task['uuid'])
|
37
|
|
38
|
logging.debug("sleeping %d seconds", args.sleep)
|
39
|
time.sleep(args.sleep)
|
40
|
|
41
|
out_coll = arvados.collection.Collection()
|
42
|
for n in range(args.files):
|
43
|
logging.debug("writing output file %d", n)
|
44
|
with out_coll.open('{:016d}.txt'.format(n), 'w') as out_file:
|
45
|
out_file.write("hello, alice\n")
|
46
|
|
47
|
logging.debug("updating task with output %r", out_coll.manifest_text())
|
48
|
arv.job_tasks().update(uuid=arvados.current_task()['uuid'],
|
49
|
body={'output': out_coll.manifest_text(),
|
50
|
'progress': (args.files / 1000.)}).execute()
|