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)
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)
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)
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)
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)
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)
def get_app(key): query = db.Session().query(models.Application).filter_by(key=key) return db.get_one_or_abort(query)