def add_task(): if request.method == 'GET': return render_template('lambdas/add_task.html', runtimes=NAME_CONTAINER_MAPPING.keys()) if request.method == 'POST': if 'file' not in request.files: flash('No file part') return '' file = request.files['file'] if file.filename == '': flash('No selected file') return '' if file and allowed_file(file.filename): filename = str(uuid4()) filename = secure_filename(filename) file.save( os.path.join(current_app.config['UPLOAD_FOLDER'], filename)) app = run.connect_to_celery(1) celery_task = app.signature('tasks.volume', kwargs={ 'task_id': filename, 'file_path': current_app.config['UPLOAD_FOLDER'] }) celery_task.apply_async() task = Task(task_id=filename, zippath=filename, task_name=request.form['funcname'], task_handler=request.form['invoke_func'], runtime=request.form['runtime'], env_vars=request.form['env_vars']) task.insert() return f"{filename}"
def run_task(project_id, event, task_id=None): secrets = get_project_secrets(project_id) if "control_tower_id" not in secrets: secrets = get_project_hidden_secrets(project_id) task_id = task_id if task_id else secrets["control_tower_id"] task = Task.query.filter(and_(Task.task_id == task_id)).first().to_json() app = run.connect_to_celery(1) celery_task = app.signature("tasks.execute", kwargs={ "task": unsecret(task, project_id=project_id), "event": unsecret(event, project_id=project_id) }) celery_task.apply_async() return {"message": "Accepted", "code": 200, "task_id": task_id}
def call_lambda(task_name): if request.method == "GET": return render_template("lambdas/task.html", task=Task.query.filter_by(task_id=task_name).first(), runtimes=NAME_CONTAINER_MAPPING.keys()) else: if request.content_type == "application/json": task = Task.query.filter_by(task_id=task_name).first().to_json() event = request.get_json() app = run.connect_to_celery(1) celery_task = app.signature('tasks.execute', kwargs={'task': task, 'event': event}) celery_task.apply_async() return "Accepted", 201 elif request.content_type == "application/x-www-form-urlencoded": return f"Calling {task_name} with {request.form}"
def call_lambda(task_id: str): if request.method == "POST": if request.content_type == "application/json": task = Task.query.filter( and_(Task.task_id == task_id)).first().to_json() event = request.get_json() app = run.connect_to_celery(1) celery_task = app.signature("tasks.execute", kwargs={ "task": task, "event": event }) celery_task.apply_async() return "Accepted", 201 elif request.content_type == "application/x-www-form-urlencoded": return f"Calling {task_id} with {request.form}" task = Task.query.filter(and_(Task.task_id == task_id)).first() return render_template("lambdas/task.html", task=task, runtimes=NAME_CONTAINER_MAPPING.keys())
def create_task(project, file, args): filename = str(uuid4()) filename = secure_filename(filename) file.save(os.path.join(current_app.config["UPLOAD_FOLDER"], filename)) app = run.connect_to_celery(1) celery_task = app.signature("tasks.volume", kwargs={ "task_id": filename, "file_path": current_app.config["UPLOAD_FOLDER"] }) celery_task.apply_async() task = Task(task_id=filename, project_id=project.id, zippath=filename, task_name=args.get("funcname"), task_handler=args.get("invoke_func"), runtime=args.get("runtime"), env_vars=args.get("env_vars")) task.insert() return task