From aff4fd6a7dc6c41eead7fd6f93dfea41a1fc62d1 Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Wed, 9 Jan 2019 15:52:21 +0100 Subject: [PATCH] added '/classifier/juniper-server-addresses' resource --- inventory_provider/routes/classifier.py | 30 +++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/inventory_provider/routes/classifier.py b/inventory_provider/routes/classifier.py index 794046af..66cc126a 100644 --- a/inventory_provider/routes/classifier.py +++ b/inventory_provider/routes/classifier.py @@ -1,6 +1,10 @@ import functools from flask import Blueprint, request, Response, current_app, jsonify +import json +import jsonschema + +from inventory_provider import db routes = Blueprint("inventory-data-classifier-support-routes", __name__) @@ -31,3 +35,29 @@ def infinera_addresses(): "INVENTORY_PROVIDER_CONFIG"]["infinera-dna"] return jsonify([dna['address'] for dna in infinera_config]) + +@routes.route("/juniper-server-addresses", methods=['GET', 'POST']) +@require_accepts_json +def juniper_addresses(): + backend_data_schema = { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": {"type": "string"} + }, + "required": ["ip_address"] + } + } + + servers = db.get_redis().get('alarmsdb:juniper_servers') + if not servers: + return Response( + response="no juniper server data found", + status=404, + mimetype="text/html") + + servers = json.loads(servers.decode('utf-8')) + jsonschema.validate(servers, backend_data_schema) + return jsonify([s['ip_address'] for s in servers]) -- GitLab