示例#1
0
def deploy(app_key, build):
    app = get_app(app_key)
    build = db.get_one_or_abort(app.builds.filter_by(tag=build))

    form = forms.DeploymentSetupForm(app)

    if form.validate_on_submit():
        instance = build.deploy(form.data['host'],
                                form.data['template'].template)
        session = db.Session()
        session.add(instance)

        route = Route(instance=instance, routing_key=form.data['hostname'])
        session.add(route)

        client = instance.host.get_client()
        child_ip = get_container_ip(client, instance.container)
        parent_ip = get_container_ip(
            client,
            current_app.config['FRONTEND_NAME']
        )
        allow_traffic(parent_ip, child_ip, 5510)

        session.commit()

        route.update(current_app.config['FRONTEND_NAME'])

        return redirect(url_for('.instance', app_key=app.key,
                                container_id=instance.container[:10]))

    return render_template('deploy-setup.html', form=form, app=app,
                           build=build)
示例#2
0
def delete_template(app_key, template_id):
    app = get_app(app_key)
    template = db.get_one_or_abort(app.templates.filter_by(id=template_id))

    form = forms.ConfirmationForm()

    if form.validate_on_submit():
        session = db.Session()
        session.delete(template)
        session.commit()
        return redirect(url_for('.app', app_key=app.key))

    return render_template('confirm-delete-template.html', form=form,
                           tpl=template)
示例#3
0
def stop(app_key, container_id):
    app = get_app(app_key)
    instance = db.get_one_or_abort(app.instances.filter(
        models.Instance.container.startswith(container_id)))

    form = forms.ConfirmationForm()

    if form.validate_on_submit():
        session = db.Session()
        instance.stop()
        for route in instance.routes:
            route.update(current_app.config['FRONTEND_NAME'])
        session.commit()
        return redirect(url_for('.app', app_key=app.key))

    return render_template('confirm-stop-instance.html', form=form,
                           instance=instance)
示例#4
0
def edit_template(app_key, template_id=None):
    create = template_id is None
    app = get_app(app_key)

    if create:
        template = None
    else:
        template = db.get_one_or_abort(app.templates.filter_by(id=template_id))

    form = forms.TemplateForm(obj=template)

    if form.validate_on_submit():
        session = db.Session()
        if create:
            template = models.DeploymentTemplate(application=app)
        form.populate_obj(template)
        session.add(template)
        session.commit()
        return redirect(url_for('.app', app_key=app.key))

    return render_template('edit-deployment-template.html',
                           form=form, create=create, app=app, tpl=template)
示例#5
0
def build(app_key, build):
    app = get_app(app_key)
    build = db.get_one_or_abort(app.builds.filter_by(tag=build))
    return render_template('build.html', app=app, build=build)
示例#6
0
def instance(app_key, container_id):
    app = get_app(app_key)
    instance = db.get_one_or_abort(app.instances.filter(
        models.Instance.container.startswith(container_id)))

    return render_template('instance.html', app=app, instance=instance)
示例#7
0
def get_app(key):
    query = db.Session().query(models.Application).filter_by(key=key)
    return db.get_one_or_abort(query)