Skip to content
Snippets Groups Projects
Commit 4f3eab3e authored by Kevin S. Hahn's avatar Kevin S. Hahn
Browse files

add bootstrap target for creating jobs

parent 2db1010e
No related branches found
No related tags found
No related merge requests found
...@@ -3,12 +3,14 @@ ...@@ -3,12 +3,14 @@
# @author: Gunnar Schaefer # @author: Gunnar Schaefer
import os import os
import bson
import json import json
import time import time
import pymongo import pymongo
import hashlib import hashlib
import logging import logging
import argparse import argparse
import datetime
def connect_db(db_uri, **kwargs): def connect_db(db_uri, **kwargs):
...@@ -94,6 +96,55 @@ example: ...@@ -94,6 +96,55 @@ example:
""" """
def jobsinit(args):
"""Create a job entry for every acquisition's orig dataset."""
db_client = connect_db(args.db_uri)
db = db_client.get_default_database()
counter = db.jobs.count() + 1 # where to start creating jobs
for a in db.acquisitions.find({'files.state': ['orig']}, {'files.$': 1, 'session': 1}):
aid = a.get('_id')
session = db.session.find_one({'_id': bson.ObjectId(a.get('session'))})
project = db.projects.find_one({'_id': bson.ObjectId(session.get('project'))})
db.jobs.insert({
'_id': counter,
'group': project.get('group_id'),
'project': project.get('_id'),
'app_id': 'scitran/dmc2nii:latest',
'inputs': [
{
'url': '%s/%s/%s' % ('acquisitions', aid, 'file'),
'payload': {
'type': a['files'][0]['type'],
'state': a['files'][0]['state'],
'kinds': a['files'][0]['kinds'],
},
}
],
'outputs': [
{
'url': '%s/%s/%s' % ('acquisitions', aid, 'file'),
'payload': {
'type': 'nifti',
'state': ['derived', ],
'kinds': a['files'][0]['kinds'],
},
},
],
'status': 'pending', # queued
'activity': None,
'added': datetime.datetime.now(),
'timestamp': datetime.datetime.now(),
})
counter += 1
print 'created job %d, group: %s, project %s' % (counter, project.get('group_id'), project.get('_id'))
jobinit_desc = """
example:
./scripts/bootstrap.py jobsinit mongodb://cnifs.stanford.edu/nims?replicaSet=cni
"""
def sort(args): def sort(args):
logging.basicConfig(level=logging.WARNING) logging.basicConfig(level=logging.WARNING)
import util import util
...@@ -216,6 +267,15 @@ dbinit_parser.add_argument('-j', '--json', help='JSON file containing users and ...@@ -216,6 +267,15 @@ dbinit_parser.add_argument('-j', '--json', help='JSON file containing users and
dbinit_parser.add_argument('db_uri', help='DB URI') dbinit_parser.add_argument('db_uri', help='DB URI')
dbinit_parser.set_defaults(func=dbinit) dbinit_parser.set_defaults(func=dbinit)
jobsinit_parser = subparsers.add_parser(
name='jobsinit',
help='initalize jobs collection from existing acquisitions',
description=dbinit_desc,
formatter_class=argparse.RawDescriptionHelpFormatter,
)
jobsinit_parser.add_argument('db_uri', help='DB URI')
jobsinit_parser.set_defaults(func=jobsinit)
sort_parser = subparsers.add_parser( sort_parser = subparsers.add_parser(
name='sort', name='sort',
help='sort all files in a dicrectory tree', help='sort all files in a dicrectory tree',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment