diff --git a/netbox_agent/network.py b/netbox_agent/network.py index a303a83..e24a229 100644 --- a/netbox_agent/network.py +++ b/netbox_agent/network.py @@ -1,7 +1,7 @@ import logging import os import re -from itertools import chain +from itertools import chain, islice import netifaces from netaddr import IPAddress @@ -413,11 +413,16 @@ class Network(object): # delete IP on netbox that are not known on this server if len(nb_nics): - netbox_ips = nb.ipam.ip_addresses.filter( - **{self.intf_type: [x.id for x in nb_nics]} - ) + def batched(it, n): + while batch := tuple(islice(it, n)): + yield batch + + netbox_ips = [] + for ids in batched((x.id for x in nb_nics), 25): + netbox_ips += list( + nb.ipam.ip_addresses.filter(**{self.intf_type: ids}) + ) - netbox_ips = list(netbox_ips) all_local_ips = list(chain.from_iterable([ x['ip'] for x in self.nics if x['ip'] is not None ]))