#!/usr/bin/env python3 from flask import Flask, abort, jsonify import pypuppetdb import pypuppetdb.QueryBuilder as pqb app = Flask(__name__) # facts that are non-sensitive and safe to process WHITELIST = [ "serial_number", ] @app.route('/v1/fact/') def fact(fact_name): if fact_name not in WHITELIST: abort(403) db = pypuppetdb.connect() fact_list = db.facts(query=pqb.EqualsOperator("name", fact_name)) result = {f.node: f.value for f in fact_list} return jsonify(result)