aboutsummaryrefslogtreecommitdiff
path: root/pyenc/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyenc/__init__.py')
-rw-r--r--pyenc/__init__.py80
1 files changed, 80 insertions, 0 deletions
diff --git a/pyenc/__init__.py b/pyenc/__init__.py
new file mode 100644
index 0000000..6323fbe
--- /dev/null
+++ b/pyenc/__init__.py
@@ -0,0 +1,80 @@
+"""
+app object setup for application
+"""
+
+import flask
+from flask import (
+ Flask,
+ request,
+ Response,
+ flash,
+ redirect,
+ url_for
+ )
+
+import random
+import json
+
+from . import model
+
+import yaml
+
+def create_app():
+ app = Flask(__name__, instance_relative_config=True)
+
+ app.config.from_pyfile('settings.py')
+
+ from . import db
+ db.init_app(app)
+
+ from . import enc
+ enc.init_app(app)
+
+ # not API
+ @app.route('/')
+ def root_page():
+ return flask.render_template('start_page.html',
+ hosts=model.Host.query.order_by(model.Host.fqdn),
+ random=random,
+ str=str,
+ )
+
+ # API?
+ @app.route('/remove', methods=['POST'])
+ def remove_classes():
+ print(request.form['fqdn'])
+ print(request.form.getlist('cls'))
+ flash('Classes removed')
+ return redirect(url_for('root_page'))
+
+ # API
+ @app.route('/list-classes')
+ def list_classes():
+ q = request.args.get('q', '')
+ qq = '%{}%'.format('%'.join(q.split(' ')))
+
+ results = model.PuppetClass.query.where(model.PuppetClass.class_name.like(qq)).all()
+ print(qq)
+ return Response(json.dumps([x.class_name for x in results]),
+ mimetype='application/json')
+
+ @app.route('/enc')
+ def enc():
+ fqdn = request.args.get('fqdn', 'default')
+ host = model.Host.query.where(model.Host.fqdn==fqdn).first()
+ if not host:
+ return Response(f"No host with name {fqdn}",
+ status=404,
+ )
+
+ out = {
+ 'environment': host.environment,
+ 'classes': [cls.class_name for cls in host.classes],
+ }
+ return Response(yaml.dump(out),
+ mimetype='application/x-yaml')
+
+
+
+
+ return app