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