From 5374ec9cfac082e544572f6769ce336e950d9c29 Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Fri, 19 Jul 2019 12:25:07 +0200
Subject: [PATCH] use 'subnets:*' to lookup peer addresses

---
 inventory_provider/routes/classifier.py | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/inventory_provider/routes/classifier.py b/inventory_provider/routes/classifier.py
index 01e9edb0..2e84b964 100644
--- a/inventory_provider/routes/classifier.py
+++ b/inventory_provider/routes/classifier.py
@@ -193,12 +193,16 @@ def find_interfaces(address):
     :return:
     """
     r = common.get_current_redis()
-    for k in r.keys('reverse_interface_addresses:*'):
-        info = r.get(k.decode('utf-8')).decode('utf-8')
-        info = json.loads(info)
-        interface = ipaddress.ip_interface(info['interface address'])
+    for k in r.keys('subnets:*'):
+        k = k.decode('utf-8')
+        m = re.match(r'^subnets:(.*)$', k)
+        assert m, 'sanity failure: redis returned an invalid key name'
+        interface = ipaddress.ip_interface(m.group(1))
         if address in interface.network:
-            yield info
+            info = r.get(k).decode('utf-8')
+            info = json.loads(info)
+            for ifc in info:
+                yield ifc
 
 
 def find_interfaces_and_services(address_str):
-- 
GitLab