forked from DGNum/infrastructure
36 lines
1.1 KiB
Diff
36 lines
1.1 KiB
Diff
|
diff --git a/netbox_agent/network.py b/netbox_agent/network.py
|
||
|
index 673dfc1..8ef60aa 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,17 @@ 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
|
||
|
]))
|