From 1f9d9e9226b4dad48dcddc47e89205d3650f1b5b Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Sun, 14 Feb 2021 11:00:27 +0100
Subject: [PATCH] save pivoted logical-system & group peering lists

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

diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index 8836e15a..79bd9cff 100644
--- a/inventory_provider/tasks/worker.py
+++ b/inventory_provider/tasks/worker.py
@@ -742,6 +742,8 @@ def _build_juniper_peering_db(update_callback=lambda s: None):
     peerings_per_address = {}
     ix_peerings = []
     peerings_per_asn = {}
+    peerings_per_logical_system = {}
+    peerings_per_group = {}
 
     # scan with bigger batches, to mitigate network latency effects
     key_prefix = 'juniper-peerings:hosts:'
@@ -758,6 +760,13 @@ def _build_juniper_peering_db(update_callback=lambda s: None):
             asn = p.get('remote-asn', None)
             if asn:
                 peerings_per_asn.setdefault(asn, []).append(p)
+            logical_system = p.get('logical-system', None)
+            if logical_system:
+                peerings_per_logical_system.setdefault(
+                    logical_system, []).append(p)
+            group = p.get('group', None)
+            if group:
+                peerings_per_group.setdefault(group, []).append(p)
 
     # sort ix peerings by group
     ix_groups = {}
@@ -784,6 +793,19 @@ def _build_juniper_peering_db(update_callback=lambda s: None):
     for k, v in peerings_per_asn.items():
         rp.set(f'juniper-peerings:peer-asn:{k}', json.dumps(v))
 
+    # create pivoted logical-systems peering lists
+    update_callback(
+        f'saving {len(peerings_per_logical_system)}'
+        ' logical-system peering lists')
+    for k, v in peerings_per_logical_system.items():
+        rp.set(f'juniper-peerings:logical-system:{k}', json.dumps(v))
+
+    # create pivoted group peering lists
+    update_callback(
+        f'saving {len(peerings_per_group)} group peering lists')
+    for k, v in peerings_per_group.items():
+        rp.set(f'juniper-peerings:group:{k}', json.dumps(v))
+
     rp.execute()
 
 
-- 
GitLab