Files
gpo_lookup/templates/app.py
T

48 lines
1.7 KiB
Python

import yaml
from flask import Flask, request, jsonify
app = Flask(__name__)
# Load GPO data
with open('{{ gpo_yaml_path }}', 'r') as file:
data = yaml.safe_load(file)
@app.route('/gpo', methods=['GET'])
def get_groups():
group_name = request.args.get('group')
print("Group specified:", group_name)
if not group_name:
return jsonify({"error": "Group parameter is required"}), 400
gpos = []
for entry in data:
configured_gpos = entry.get('configured_gpos', {})
for gpo, details in configured_gpos.items():
if details is None:
continue
for detail in details:
# Check if 'ad_group' exists and is not None before accessing it
ad_group = detail.get('ad_group')
if isinstance(ad_group, str) and ad_group.lower() == group_name.lower():
gpos.append({
"gpo": gpo,
"local_group": detail['local_group'],
"ad_group": detail['ad_group']
})
return jsonify(gpos)
# test route
@app.route('/test', methods=['GET'])
def test():
try:
root_ou = data[0]['root_ou']
except KeyError:
# Handle the case where 'root_ou' does not exist in the dictionary
return jsonify({"error": "KeyError: 'root_ou' not found in provided data"}), 400
except TypeError:
# Handle cases where data might be of a different type than expected
return jsonify({"error": "TypeError: Data is not a dictionary"}), 400
return jsonify({"result": "test", "OU_Root": root_ou})
if __name__ == '__main__':
app.run(debug=True, host='{{ api_service_bind_ip }}', port={{ api_service_port }})