Ejemplo n.º 1
0
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}"
Ejemplo n.º 2
0
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}
Ejemplo n.º 3
0
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}"
Ejemplo n.º 4
0
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())
Ejemplo n.º 5
0
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