コード例 #1
0
async def edit_task(request):
    args = dict(request.form)
    if not validate_dict(args,
                         required=['job_name', 'task_name'],
                         job_name=str,
                         task_name=str,
                         name=str,
                         command=str,
                         soft_timeout=int,
                         hard_timeout=int,
                         hostname=str):
        raise ValueError('not validate args')

    job = dagobah.get_job(args['job_name'])
    task = job.tasks.get(args['task_name'], None)
    if not task:
        raise ValueError('not validate task')

    # validate host
    if 'hostname' in args and args.get('hostname') not in dagobah.get_hosts():
        # Check for empty host, if so then task is no longer remote
        if not args.get('hostname'):
            args['hostname'] = None
        else:
            raise ValueError('not validate host')

    del args['job_name']
    del args['task_name']
    job.edit_task(task.name, **args)
コード例 #2
0
async def kill_all_tasks(request):
    args = dict(request.form)
    if not validate_dict(args, required=['job_name'], job_name=str):
        raise ValueError('not validate args')

    job = dagobah.get_job(args['job_name'])
    job.kill_all()
コード例 #3
0
async def update_job_notes(request):
    args = dict(request.form)
    if not validate_dict(
            args, required=['job_name', 'notes'], job_name=str, notes=str):
        raise ValueError('not validate args')

    job = dagobah.get_job(args['job_name'])
    job.update_job_notes(args['notes'])
コード例 #4
0
async def add_job(request):
    args = dict(request.form)

    if not validate_dict(args, required=['job_name'], job_name=str):
        raise ValueError('not validate args')

    app = request.app.config['dagobah']
    app.add_job(args['job_name'])
コード例 #5
0
async def edit_job(request):
    args = dict(request.form)
    if not validate_dict(args, required=['job_name'], job_name=str, name=str):
        raise ValueError('not validate args')

    job = dagobah.get_job(args['job_name'])
    del args['job_name']
    job.edit(**args)
    return 'success'
コード例 #6
0
async def delete_task(request):
    args = dict(request.form)
    if not validate_dict(
            args, required=['job_name', 'task_name'
                            ], job_name=str, task_name=str):
        raise ValueError('not validate args')

    job = dagobah.get_job(args['job_name'])
    job.delete_task(args['task_name'])
コード例 #7
0
async def get_job(request):
    args = dict(request.args)
    if not validate_dict(args, required=['job_name'], job_name=str):
        raise ValueError('not validate info')

    job = dagobah.get_job(args['job_name'])
    if not job:
        raise ValueError('not find any job')

    return job._serialize()
コード例 #8
0
async def get_run_log_history(request):
    args = dict(request.args)
    if not validate_dict(
            args, required=['job_name', 'task_name'
                            ], job_name=str, task_name=str):
        raise ValueError('not validate json object')

    job = dagobah.get_job(args['job_name'])
    task = job.tasks.get(args['task_name'], None)
    if not task:
        raise ValueError('not validate task')
    return task.get_run_log_history()
コード例 #9
0
def kill_task(request):
    args = dict(request.form)
    if not validate_dict(
            args, required=['job_name', 'task_name'
                            ], job_name=str, task_name=str):
        raise ValueError('not validate args')

    job = dagobah.get_job(args['job_name'])
    task = job.tasks.get(args['task_name'], None)
    if not task:
        raise ValueError('not validate tasks')
    task.kill()
コード例 #10
0
async def add_dependency(request):
    args = dict(request.form)
    if not validate_dict(
            args,
            required=['job_name', 'from_task_name', 'to_task_name'],
            job_name=str,
            from_task_name=str,
            to_task_name=str):
        raise ValueError('not validate args')

    job = dagobah.get_job(args['job_name'])
    job.add_dependency(args['from_task_name'], args['to_task_name'])
コード例 #11
0
async def add_task_to_job(request):
    args = dict(request.form)
    if not validate_dict(args,
                         required=['job_name', 'task_command', 'task_name'],
                         job_name=str,
                         task_command=str,
                         task_name=str,
                         task_target=str):
        raise ValueError('not validate args')

    dagobah.add_task_to_job(args['job_name'],
                            args['task_command'],
                            args['task_name'],
                            hostname=args.get("task_target", None))
コード例 #12
0
async def export_job(request):
    args = dict(request.args)
    if not validate_dict(args, required=['job_name'], job_name=str):
        raise ValueError('not validate args')

    job = dagobah.get_job(args['job_name'])

    to_send = StringIO()
    to_send.write(json.dumps(job._serialize(strict_json=True)))
    to_send.write('\n')
    to_send.seek(0)

    return response.file(to_send,
                         attachment_filename='%s.json' % job.name,
                         as_attachment=True)
コード例 #13
0
async def set_hard_timeout(request):
    args = dict(request.form)
    if not validate_dict(args,
                         required=['job_name', 'task_name', 'hard_timeout'],
                         job_name=str,
                         task_name=str,
                         hard_timeout=int):
        raise ValueError('not validate args')

    job = dagobah.get_job(args['job_name'])
    task = job.tasks.get(args['task_name'], None)
    if not task:
        raise ValueError('not validate task')

    task.set_hard_timeout(args['hard_timeout'])
コード例 #14
0
async def schedule_job(request):
    args = dict(request.form)
    if not validate_dict(args, required=['job_name'], job_name=str):
        raise ValueError('not validate args')

    if not args.get('cron_schedule', None):
        args['cron_schedule'] = None

    job = dagobah.get_job(args['job_name'])
    cron_schedule = args.get('cron_schedule', None)
    if not cron_schedule:
        cron_schedule = None
    if isinstance(cron_schedule, list) and len(cron_schedule) > 0:
        cron_schedule = cron_schedule[0]

    job.schedule(cron_schedule)
コード例 #15
0
async def tail_task(request):
    args = dict(request.args)
    if not validate_dict(args,
                         required=['job_name', 'task_name'],
                         job_name=str,
                         task_name=str,
                         stream=str,
                         num_lines=int):
        raise ValueError('not validate args')

    job = dagobah.get_job(args['job_name'])
    task = job.tasks.get(args['task_name'], None)
    if not task:
        raise ValueError('not validate task')

    call_args = {}
    for key in ['stream', 'num_lines']:
        if key in args:
            call_args[key] = args[key]
    return task.tail(**call_args)
コード例 #16
0
async def delete_job(request):
    args = dict(request.form)
    if not validate_dict(args, required=['job_name'], job_name=str):
        raise ValueError('not validate args')

    dagobah.delete_job(args['job_name'])