aboutsummaryrefslogtreecommitdiff
path: root/pyenc/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyenc/__init__.py')
-rw-r--r--pyenc/__init__.py97
1 files changed, 85 insertions, 12 deletions
diff --git a/pyenc/__init__.py b/pyenc/__init__.py
index c5f5ada..90aa4fa 100644
--- a/pyenc/__init__.py
+++ b/pyenc/__init__.py
@@ -8,15 +8,18 @@ functionallity is pulled in from other modules.
import logging
import random
+import os.path
+from domonic.html import a
import flask
from flask import (
- Flask,
- request,
- flash,
- redirect,
- url_for
- )
+ Flask,
+ request,
+ flash,
+ redirect,
+ url_for
+)
+from sqlalchemy.orm import joinedload
from .app import model
from .app import cmdline
@@ -46,15 +49,85 @@ def create_app():
]:
module.init_app(app)
- # not API
@app.route('/')
def root_page():
+ # flash('Test')
+ return flask.render_template('index.html')
+
+ @app.route('/host')
+ def hosts():
+ result = model.Host.query.all()
+ return flask.render_template(
+ 'list.html',
+ title='Hosts',
+ items=[a(x.fqdn, _href=f'/host/{x.fqdn}')
+ for x in result])
+
+ @app.route('/host/<host>')
+ def host(host):
+ host = model.Host.query.where(model.Host.fqdn == host).one()
+ return flask.render_template(
+ 'host.html',
+ title=host.fqdn,
+ env=host.environment.name,
+ classes=[a(x.name, _href=f'/class/{x.name}')
+ for x in host.classes])
+
+
+ @app.route('/environment')
+ def environments():
+ envs = model.Environment.query.all()
+ return flask.render_template(
+ 'list.html',
+ title='Environments',
+ items=[a(env.name, _href=f'/environment/{env.name}')
+ for env in envs])
+
+ @app.route('/environment/<name>')
+ def environment(name):
+ env = model.Environment \
+ .query \
+ .where(model.Environment.name == name) \
+ .one()
+ return flask.render_template(
+ 'environment.html',
+ title=name,
+ env=env)
+
+ @app.route('/class')
+ def classes():
+ clss = model.PuppetClass \
+ .query \
+ .all()
+
return flask.render_template(
- 'start_page.html',
- hosts=model.Host.query.order_by(model.Host.fqdn),
- random=random,
- str=str,
- )
+ 'list.html',
+ title='Classes',
+ items=[a(cls.name, _href=f'/class/{cls.name}')
+ for cls in clss])
+
+ @app.route('/class/<name>')
+ def class_(name):
+ cls = model.PuppetClass \
+ .query \
+ .where(model.PuppetClass.name == name) \
+ .options(joinedload('files').joinedload('environment')) \
+ .one()
+ return flask.render_template('class.html',
+ title=name,
+ cls=cls)
+
+
+ @app.route('/file')
+ def file():
+ environment = request.args.get('environment')
+ path = request.args.get('path')
+ path_base = '/var/lib/machines/busting/etc/puppetlabs/code/environments/'
+ with open(os.path.join(path_base, environment, path)) as f:
+ content = f.read()
+ return flask.render_template('file.html',
+ title=f'{environment}/{path}',
+ content=content)
# API?
@app.route('/remove', methods=['POST'])