Merge pull request #10114 from netbox-community/10109-available-prefixes

Fixes #10109: Fix available prefixes calculation for container prefixes in the global table
This commit is contained in:
Jeremy Stretch 2022-08-23 10:51:12 -04:00 committed by GitHub
commit bf92e3a9dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 5 deletions

View File

@ -17,6 +17,7 @@
* [#10059](https://github.com/netbox-community/netbox/issues/10059) - Add identifier column to L2VPN table * [#10059](https://github.com/netbox-community/netbox/issues/10059) - Add identifier column to L2VPN table
* [#10089](https://github.com/netbox-community/netbox/issues/10089) - `linkify` template filter should escape object representation * [#10089](https://github.com/netbox-community/netbox/issues/10089) - `linkify` template filter should escape object representation
* [#10108](https://github.com/netbox-community/netbox/issues/10108) - Linkify inside NAT IPs for primary device IPs in UI * [#10108](https://github.com/netbox-community/netbox/issues/10108) - Linkify inside NAT IPs for primary device IPs in UI
* [#10109](https://github.com/netbox-community/netbox/issues/10109) - Fix available prefixes calculation for container prefixes in the global table
* [#10111](https://github.com/netbox-community/netbox/issues/10111) - Wrap search QS to catch ValueError on identifier field * [#10111](https://github.com/netbox-community/netbox/issues/10111) - Wrap search QS to catch ValueError on identifier field
--- ---

View File

@ -35,13 +35,16 @@ class GetAvailablePrefixesMixin:
def get_available_prefixes(self): def get_available_prefixes(self):
""" """
Return all available Prefixes within this aggregate as an IPSet. Return all available prefixes within this Aggregate or Prefix as an IPSet.
""" """
prefix = netaddr.IPSet(self.prefix) params = {
child_prefixes = netaddr.IPSet([child.prefix for child in self.get_child_prefixes()]) 'prefix__net_contained': str(self.prefix)
available_prefixes = prefix - child_prefixes }
if hasattr(self, 'vrf'):
params['vrf'] = self.vrf
return available_prefixes child_prefixes = Prefix.objects.filter(**params).values_list('prefix', flat=True)
return netaddr.IPSet(self.prefix) - netaddr.IPSet(child_prefixes)
def get_first_available_prefix(self): def get_first_available_prefix(self):
""" """