Skip to content

Commit

Permalink
Fixes #6812: Limit reported prefix utilization to 100%
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremystretch committed Jul 28, 2021
1 parent a1eb4dc commit 0c21493
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
1 change: 1 addition & 0 deletions docs/release-notes/version-2.11.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
* [#6778](https://github.com/netbox-community/netbox/issues/6778) - Rack reservation should display rack's location
* [#6780](https://github.com/netbox-community/netbox/issues/6780) - Include rack location in navigation breadcrumbs
* [#6794](https://github.com/netbox-community/netbox/issues/6794) - Fix device name display on device status view
* [#6812](https://github.com/netbox-community/netbox/issues/6812) - Limit reported prefix utilization to 100%
* [#6822](https://github.com/netbox-community/netbox/issues/6822) - Use consistent maximum value for interface MTU

### Other Changes
Expand Down
10 changes: 7 additions & 3 deletions netbox/ipam/models/ip.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,9 @@ def get_utilization(self):
"""
queryset = Prefix.objects.filter(prefix__net_contained_or_equal=str(self.prefix))
child_prefixes = netaddr.IPSet([p.prefix for p in queryset])
return int(float(child_prefixes.size) / self.prefix.size * 100)
utilization = int(float(child_prefixes.size) / self.prefix.size * 100)

return min(utilization, 100)


@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks')
Expand Down Expand Up @@ -502,14 +504,16 @@ def get_utilization(self):
vrf=self.vrf
)
child_prefixes = netaddr.IPSet([p.prefix for p in queryset])
return int(float(child_prefixes.size) / self.prefix.size * 100)
utilization = int(float(child_prefixes.size) / self.prefix.size * 100)
else:
# Compile an IPSet to avoid counting duplicate IPs
child_count = netaddr.IPSet([ip.address.ip for ip in self.get_child_ips()]).size
prefix_size = self.prefix.size
if self.prefix.version == 4 and self.prefix.prefixlen < 31 and not self.is_pool:
prefix_size -= 2
return int(float(child_count) / prefix_size * 100)
utilization = int(float(child_count) / prefix_size * 100)

return min(utilization, 100)


@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
Expand Down

0 comments on commit 0c21493

Please sign in to comment.