Skip to content

Commit 7a093a2

Browse files
committed
add get_available_ip_list
1 parent 93884df commit 7a093a2

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

netbox_scripthelper/utils.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from typing import List
2-
from netaddr import IPSet, IPNetwork
2+
from netaddr import IPSet, IPNetwork, IPAddress
3+
from django.core.exceptions import ValidationError
4+
from ipam.models import Prefix
35

46

57
class IPSplitter:
@@ -23,3 +25,16 @@ def split(self, prefix_len: int, limit: int) -> List[IPNetwork]:
2325
break
2426

2527
return subnets
28+
29+
30+
def get_available_ip_list(prefix: Prefix, base_addr: str, size: int) -> List[IPAddress]:
31+
available_addresses = prefix.get_available_ips()
32+
base_addr = base_addr.split('/')[0]
33+
addresses = []
34+
for i in range(0, size):
35+
next_addr = IPAddress(base_addr) + i
36+
if next_addr in available_addresses:
37+
addresses.append(next_addr)
38+
if len(addresses) != size:
39+
raise ValidationError("not enough free addresses")
40+
return addresses

0 commit comments

Comments
 (0)