aboutsummaryrefslogtreecommitdiff
path: root/pyenc/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyenc/__init__.py')
-rw-r--r--pyenc/__init__.py104
1 files changed, 30 insertions, 74 deletions
diff --git a/pyenc/__init__.py b/pyenc/__init__.py
index d5ec4f4..cd0d57d 100644
--- a/pyenc/__init__.py
+++ b/pyenc/__init__.py
@@ -1,5 +1,9 @@
"""App object setup for application."""
+import random
+import json
+import yaml
+
import flask
from flask import (
Flask,
@@ -10,12 +14,10 @@ from flask import (
url_for
)
-import random
-import json
-
from . import model
-
-import yaml
+from . import db
+from . import enc
+from . import api
def create_app():
@@ -23,16 +25,20 @@ def create_app():
Create new flask app.
Should bind everything needed to it.
+
+ This method is also used by `flask run`
+ https://flask.palletsprojects.com/en/2.1.x/cli/
"""
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)
+ for module in [
+ db,
+ enc,
+ api,
+ ]:
+ module.init_app(app)
# not API
@app.route('/')
@@ -52,70 +58,20 @@ def create_app():
flash('Classes removed')
return redirect(url_for('root_page'))
- # API
- @app.route('/api/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('/api/classes-for')
- def classes_for():
- fqdn = request.args.get('fqdn')
- classes = [cls.class_name
- for cls in model.Host.query.where(model.Host.fqdn == fqdn)
- .first().classes]
- return Response(json.dumps(classes),
- mimetype='application/json')
-
- @app.route('/api/change-classes', methods=['POST'])
- def change_classes():
- j = request.json
- host = model.Host.query.where(model.Host.fqdn == j['fqdn']).first()
- remove_set = set(j['removed'])
-
- new_cls = []
- for cls in host.classes:
- if cls.class_name in remove_set:
- continue
- new_cls.append(cls)
- host.classes = new_cls
-
- cls = model.PuppetClass.query \
- .where(model.PuppetClass.class_name.in_(j['added'])) \
- .all()
- host.classes.extend(cls)
- print(remove_set, db.db.session.dirty)
- return flask.redirect(url_for('classes_for', fqdn=j['fqdn']))
-
- @app.route('/api/hosts')
- def list_hosts():
- data = [x.serialize() for x in model.Host.query.all()]
- return Response(flask.json.dumps(data),
- 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')
+ # @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