#!/usr/bin/python

import os, sys

if 'QBDIR' in os.environ:
        sys.path.append('%s/api/python' % os.environ['QBDIR']);
elif os.uname()[0] == 'Darwin':
	sys.path.append('/Applications/pfx/qube/api/python');
elif os.uname()[0] == 'Linux':
	sys.path.append('/usr/local/pfx/qube/api/python');
else:
	sys.path.append('c:/program files/pfx/qube/api/python');

import qb

def main():

    job = {}
    job['name'] = 'python parent job'
    job['cpus'] = 2
    job['prototype'] = 'cmdrange'
    
    package = {}
    job['package'] = package
    job['package']['cmdline'] = 'qbping -sleep QB_FRAME_NUMBER'

    agendaRange = '0-60x10'
    agenda = qb.genframes(agendaRange)
    job['agenda'] = agenda

    job['label'] = 'parentJob'
    
    listOfJobsToSubmit = []
    listOfJobsToSubmit.append(job)

    job = {}
    job['name'] = 'python child job'
    job['cpus'] = 2
    job['prototype'] = 'cmdrange'
    job['label'] = 'childJob'

    package = {}
    job['package'] = package
    job['package']['cmdline'] = 'qbping -sleep QB_FRAME_NUMBER'

    agenda = qb.genframes(agendaRange)

    listOfCallbacks = []

    for agendaItem in agenda:
        agendaItem['status'] = 'blocked'

    job['agenda'] = agenda

    for agendaItem in agenda:
        agendaItemName = agendaItem['name']
        agendaItemCallback = {}
        agendaItemCallback['triggers'] = 'complete-work-parentJob-%s' % agendaItemName
        agendaItemCallback['language'] = 'python'
        agendaItemCallback['code'] = 'import qb'
        agendaItemCallback['code'] += '%s%s%s' % ('\nqb.workunblock(\'%s:', agendaItemName, '\' % qb.jobid())')
        agendaItemCallback['code'] += '\nqb.unblock(qb.jobid())'
        listOfCallbacks.append(agendaItemCallback)
    
    job['callbacks'] = listOfCallbacks
    job['status'] = 'blocked'

    listOfJobsToSubmit.append(job)
    listOfSubmittedJobs = qb.submit(listOfJobsToSubmit)
    
    for job in listOfSubmittedJobs:
        if job['label'] == 'parent':
            print 'parent: %d' % job['id']
        elif job['label'] == 'child':
            print 'child:  %d' % job['id']
        else:
            print job['id']

if __name__ == "__main__":
    main()
    sys.exit(0)
