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)
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()
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'])
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'])
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'
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'])
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()
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()
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()
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'])
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))
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)
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'])
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)
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)
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'])