Project

General

Profile

Bug #7587 ยป 7587-idle-api.py

Brett Smith, 10/16/2015 02:19 PM

 
#!/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()
    (1-1/1)