diff --git a/netbox/ipam/models.py b/netbox/ipam/models.py index a69d235be..bd350ef12 100644 --- a/netbox/ipam/models.py +++ b/netbox/ipam/models.py @@ -559,14 +559,14 @@ class Prefix(ChangeLoggedModel, CustomFieldModel): vrf=self.vrf ) child_prefixes = netaddr.IPSet([p.prefix for p in queryset]) - return int(float(child_prefixes.size) / self.prefix.size * 100) + return (int(float(child_prefixes.size) / self.prefix.size * 100), child_prefixes.size, self.prefix.size) 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) + return (int(float(child_count) / prefix_size * 100), child_count, prefix_size) @extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') diff --git a/netbox/ipam/tests/test_models.py b/netbox/ipam/tests/test_models.py index 6091aa70e..01f416435 100644 --- a/netbox/ipam/tests/test_models.py +++ b/netbox/ipam/tests/test_models.py @@ -179,7 +179,8 @@ class TestPrefix(TestCase): Prefix(prefix=netaddr.IPNetwork('10.0.0.0/26')), Prefix(prefix=netaddr.IPNetwork('10.0.0.128/26')), )) - self.assertEqual(prefix.get_utilization(), 50) + self.assertEqual(prefix.get_utilization()[0], 50) + self.assertEqual(prefix.get_utilization(), (50, 128, 256)) # Non-container Prefix prefix.status = PrefixStatusChoices.STATUS_ACTIVE @@ -188,7 +189,8 @@ class TestPrefix(TestCase): # Create 32 IPAddresses within the Prefix [IPAddress(address=netaddr.IPNetwork('10.0.0.{}/24'.format(i))) for i in range(1, 33)] ) - self.assertEqual(prefix.get_utilization(), 12) # ~= 12% + self.assertEqual(prefix.get_utilization()[0], 12) # ~= 12% + self.assertEqual(prefix.get_utilization(), (12, 30, 256)) # # Uniqueness enforcement tests diff --git a/netbox/templates/utilities/templatetags/utilization_graph.html b/netbox/templates/utilities/templatetags/utilization_graph.html index b9b074f20..c54868635 100644 --- a/netbox/templates/utilities/templatetags/utilization_graph.html +++ b/netbox/templates/utilities/templatetags/utilization_graph.html @@ -1,4 +1,4 @@ -