From 84b2e55b93e0a3964a8bca9eeb81c1fbee0d7980 Mon Sep 17 00:00:00 2001 From: Zack Cerza Date: Wed, 9 Oct 2013 15:13:01 -0500 Subject: [PATCH] Move schedule() to new schedule module --- scripts/schedule.py | 20 ++++++------- teuthology/run.py | 63 ---------------------------------------- teuthology/schedule.py | 65 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 73 deletions(-) create mode 100644 teuthology/schedule.py diff --git a/scripts/schedule.py b/scripts/schedule.py index ab7d3e23104e1..6668794958b59 100644 --- a/scripts/schedule.py +++ b/scripts/schedule.py @@ -1,8 +1,11 @@ import argparse -from teuthology.run import config_file -from teuthology.run import MergeConfig -from teuthology.run import schedule +import teuthology.run +import teuthology.schedule + + +def main(): + teuthology.schedule.main(parse_args()) def parse_args(): @@ -12,8 +15,8 @@ def parse_args(): 'config', metavar='CONFFILE', nargs='*', - type=config_file, - action=MergeConfig, + type=teuthology.run.config_file, + action=teuthology.run.MergeConfig, default={}, help='config file to read', ) @@ -85,15 +88,12 @@ def parse_args(): help='output the contents of specified jobs in the queue', ) - return parser.parse_args() + args = parser.parse_args() - -def main(): - args = parse_args() if not args.last_in_suite: msg = '--email is only applicable to the last job in a suite' assert not args.email, msg msg = '--timeout is only applicable to the last job in a suite' assert not args.timeout, msg - schedule(args) + return args diff --git a/teuthology/run.py b/teuthology/run.py index 4c5a71827d056..5832788295c21 100644 --- a/teuthology/run.py +++ b/teuthology/run.py @@ -282,66 +282,3 @@ def main(): log.info('FAIL') import sys sys.exit(1) - - -def schedule(ctx): - from teuthology.misc import read_config, get_user - if ctx.owner is None: - ctx.owner = 'scheduled_{user}'.format(user=get_user()) - read_config(ctx) - - import teuthology.queue - beanstalk = teuthology.queue.connect(ctx) - - tube = ctx.worker - beanstalk.use(tube) - - if ctx.show: - for job_id in ctx.show: - job = beanstalk.peek(job_id) - if job is None and ctx.verbose: - print 'job {jid} is not in the queue'.format(jid=job_id) - else: - print '--- job {jid} priority {prio} ---\n'.format( - jid=job_id, - prio=job.stats()['pri']), job.body - return - - if ctx.delete: - for job_id in ctx.delete: - job = beanstalk.peek(job_id) - if job is None: - print 'job {jid} is not in the queue'.format(jid=job_id) - else: - job.delete() - return - - # strip out targets; the worker will allocate new ones when we run - # the job with --lock. - if ctx.config.get('targets'): - del ctx.config['targets'] - - job_config = dict( - name=ctx.name, - last_in_suite=ctx.last_in_suite, - email=ctx.email, - description=ctx.description, - owner=ctx.owner, - verbose=ctx.verbose, - ) - # Merge job_config and ctx.config - job_config.update(ctx.config) - if ctx.timeout is not None: - job_config['results_timeout'] = ctx.timeout - - job = yaml.safe_dump(job_config) - num = ctx.num - while num > 0: - jid = beanstalk.put( - job, - ttr=60 * 60 * 24, - priority=ctx.priority, - ) - print 'Job scheduled with name {name} and ID {jid}'.format( - name=ctx.name, jid=jid) - num -= 1 diff --git a/teuthology/schedule.py b/teuthology/schedule.py new file mode 100644 index 0000000000000..509ef090867c5 --- /dev/null +++ b/teuthology/schedule.py @@ -0,0 +1,65 @@ +import yaml + +from teuthology.misc import read_config, get_user +import teuthology.queue + + +def main(ctx): + if ctx.owner is None: + ctx.owner = 'scheduled_{user}'.format(user=get_user()) + read_config(ctx) + + beanstalk = teuthology.queue.connect(ctx) + + tube = ctx.worker + beanstalk.use(tube) + + if ctx.show: + for job_id in ctx.show: + job = beanstalk.peek(job_id) + if job is None and ctx.verbose: + print 'job {jid} is not in the queue'.format(jid=job_id) + else: + print '--- job {jid} priority {prio} ---\n'.format( + jid=job_id, + prio=job.stats()['pri']), job.body + return + + if ctx.delete: + for job_id in ctx.delete: + job = beanstalk.peek(job_id) + if job is None: + print 'job {jid} is not in the queue'.format(jid=job_id) + else: + job.delete() + return + + # strip out targets; the worker will allocate new ones when we run + # the job with --lock. + if ctx.config.get('targets'): + del ctx.config['targets'] + + job_config = dict( + name=ctx.name, + last_in_suite=ctx.last_in_suite, + email=ctx.email, + description=ctx.description, + owner=ctx.owner, + verbose=ctx.verbose, + ) + # Merge job_config and ctx.config + job_config.update(ctx.config) + if ctx.timeout is not None: + job_config['results_timeout'] = ctx.timeout + + job = yaml.safe_dump(job_config) + num = ctx.num + while num > 0: + jid = beanstalk.put( + job, + ttr=60 * 60 * 24, + priority=ctx.priority, + ) + print 'Job scheduled with name {name} and ID {jid}'.format( + name=ctx.name, jid=jid) + num -= 1 -- 2.39.5