aboutsummaryrefslogtreecommitdiff
path: root/pyenc/api.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyenc/api.py')
-rw-r--r--pyenc/api.py78
1 files changed, 0 insertions, 78 deletions
diff --git a/pyenc/api.py b/pyenc/api.py
deleted file mode 100644
index 8fea554..0000000
--- a/pyenc/api.py
+++ /dev/null
@@ -1,78 +0,0 @@
-import json
-
-import flask
-from flask import (
- Blueprint,
- Response,
- request,
- url_for
- )
-from . import model
-# from . import db
-
-api = Blueprint('api', __name__)
-# API
-@api.route('/list-classes')
-def list_classes():
- """Return all classes fuzzy matching q."""
- query = request.args.get('q', '')
- wildcarded_query = '%{}%'.format('%'.join(query.split(' ')))
-
- results = \
- model \
- .PuppetClass \
- .query \
- .where(model.PuppetClass.class_name.like(wildcarded_query)) \
- .all()
- print(wildcarded_query)
- return Response(json.dumps([x.class_name for x in results]),
- mimetype='application/json')
-
-@api.route('/classes-for')
-def classes_for():
- """Return classes mapped to host `fqdn'."""
- 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')
-
-@api.route('/change-classes', methods=['POST'])
-def change_classes():
- """
- Update set of active classes for node.
-
- Takes a json object as the POST body, which should have the keys
- - fqdn :: which host to operate on
- - removed :: classes which should be removed
- - added :: classes which should be added
- """
- 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']))
-
-@api.route('/hosts')
-def list_hosts():
- """Return all hosts."""
- data = [x.serialize() for x in model.Host.query.all()]
- return Response(json.dumps(data),
- mimetype='application/json')
-
-def init_app(app):
- """Register blueprint to app."""
- app.register_blueprint(api)