Project

General

Profile

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

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

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