aboutsummaryrefslogtreecommitdiff
path: root/pyenc/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyenc/__init__.py')
-rw-r--r--pyenc/__init__.py38
1 files changed, 35 insertions, 3 deletions
diff --git a/pyenc/__init__.py b/pyenc/__init__.py
index 6323fbe..851488c 100644
--- a/pyenc/__init__.py
+++ b/pyenc/__init__.py
@@ -48,7 +48,7 @@ def create_app():
return redirect(url_for('root_page'))
# API
- @app.route('/list-classes')
+ @app.route('/api/list-classes')
def list_classes():
q = request.args.get('q', '')
qq = '%{}%'.format('%'.join(q.split(' ')))
@@ -58,6 +58,40 @@ def create_app():
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():
+ return Response(flask.json.dumps([x.serialize() for x in model.Host.query.all()]),
+ mimetype='application/json')
+
@app.route('/enc')
def enc():
fqdn = request.args.get('fqdn', 'default')
@@ -75,6 +109,4 @@ def create_app():
mimetype='application/x-yaml')
-
-
return app