From e19d48c8285dbacaf9903c8f9a768b5cade28a76 Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Sun, 3 Mar 2019 17:02:49 +0100
Subject: [PATCH] added peer-cache cleanup

---
 inventory_provider/tasks/worker.py | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index 59eb170d..4e1351c6 100644
--- a/inventory_provider/tasks/worker.py
+++ b/inventory_provider/tasks/worker.py
@@ -260,7 +260,17 @@ def clear_cached_classifier_responses(hostname):
     r = get_redis(InventoryTask.config)
     for k in r.keys('classifier:cache:%s:*' % hostname):
         r.delete(k)
-    # TODO: remove peer-cache (after adding hostname to query)
+
+    # TODO: very inefficient ... but logically simplest at this point
+    for k in r.keys('classifier:peer-cache:*'):
+        value = r.get(k.decode('utf-8'))
+        if not value:
+            # deleted in another thread
+            continue
+        value = json.loads(value.decode('utf-8'))
+        interfaces = value.get('interfaces', [])
+        if hostname in [i['interface']['router'] for i in interfaces]:
+            r.delete(k)
 
 
 def _refresh_peers(hostname, key_base, peers):
-- 
GitLab