diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index 8836e15aad1d7debd9a8bb70190cd1dc85cfe371..79bd9cff38d17a82a3505d14836a108bd741a384 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()