diff options
Diffstat (limited to '')
-rw-r--r-- | pyenc/api.py | 78 |
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) |