|
#!/usr/bin/env python
|
|
|
|
import argparse
|
|
import os
|
|
import logging
|
|
import time
|
|
|
|
import arvados
|
|
|
|
TASK_MAP = {
|
|
'4xphq': '4xphq-ot0gb-93vp2wufnxl1ywd',
|
|
'qr1hi': 'qr1hi-ot0gb-3bkhfcunhlkvyt3',
|
|
}
|
|
|
|
logging.basicConfig(
|
|
level=logging.DEBUG,
|
|
format='%(asctime)s %(name)s %(levelname)s %(message)s')
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('--files', '-n', type=int, default=4)
|
|
parser.add_argument('--sleep', '-s', type=int, default=10)
|
|
parser.add_argument('--task', '-t')
|
|
args = parser.parse_args()
|
|
|
|
arv = arvados.api('v1')
|
|
if args.task is None:
|
|
user = arv.users().current().execute()
|
|
cluster_id = user['uuid'].split('-', 2)[0]
|
|
try:
|
|
args.task = TASK_MAP[cluster_id]
|
|
except KeyError:
|
|
parser.error("no task available for cluster {}".format(cluster_id))
|
|
|
|
os.environ.update(TASK_UUID=args.task, TASK_WORK='/tmp')
|
|
task = arvados.current_task()
|
|
logging.debug("got task %s", task['uuid'])
|
|
|
|
logging.debug("sleeping %d seconds", args.sleep)
|
|
time.sleep(args.sleep)
|
|
|
|
out_coll = arvados.collection.Collection()
|
|
for n in range(args.files):
|
|
logging.debug("writing output file %d", n)
|
|
with out_coll.open('{:016d}.txt'.format(n), 'w') as out_file:
|
|
out_file.write("hello, alice\n")
|
|
|
|
logging.debug("updating task with output %r", out_coll.manifest_text())
|
|
arv.job_tasks().update(uuid=arvados.current_task()['uuid'],
|
|
body={'output': out_coll.manifest_text(),
|
|
'progress': (args.files / 1000.)}).execute()
|