From fcc5fd6e3152a249c62a999957a6c8d128c3bec9 Mon Sep 17 00:00:00 2001 From: Josh VanDeraa Date: Sun, 8 Nov 2020 03:32:10 +0000 Subject: [PATCH] Adds title to Prefix utilization --- netbox/ipam/models.py | 4 ++-- netbox/ipam/tests/test_models.py | 6 ++++-- .../templates/utilities/templatetags/utilization_graph.html | 2 +- netbox/utilities/templatetags/helpers.py | 4 +++- 4 files changed, 10 insertions(+), 6 deletions(-) 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 @@ -
+
{% if utilization < 30 %}{{ utilization }}%{% endif %}
diff --git a/netbox/utilities/templatetags/helpers.py b/netbox/utilities/templatetags/helpers.py index 151ca99cb..fe4703345 100644 --- a/netbox/utilities/templatetags/helpers.py +++ b/netbox/utilities/templatetags/helpers.py @@ -235,9 +235,11 @@ def utilization_graph(utilization, warning_threshold=75, danger_threshold=90): Display a horizontal bar graph indicating a percentage of utilization. """ return { - 'utilization': utilization, + 'utilization': utilization[0], 'warning_threshold': warning_threshold, 'danger_threshold': danger_threshold, + 'util_count': utilization[1], + 'num_available': utilization[2], }