From f52ef6e9677b01c111b012a8725da43a2580d8f1 Mon Sep 17 00:00:00 2001 From: Alex Corey Date: Mon, 7 Feb 2022 13:47:29 -0500 Subject: [PATCH] Fixes case sensitive host count --- awx/main/managers.py | 4 ++-- awx/main/tests/functional/models/test_inventory.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/awx/main/managers.py b/awx/main/managers.py index 2614193fe1..404745b995 100644 --- a/awx/main/managers.py +++ b/awx/main/managers.py @@ -6,7 +6,7 @@ import logging import os from django.db import models from django.conf import settings - +from django.db.models.functions import Lower from awx.main.utils.filters import SmartFilter from awx.main.utils.pglock import advisory_lock from awx.main.utils.common import get_capacity_type @@ -35,7 +35,7 @@ class HostManager(models.Manager): - Only consider results that are unique - Return the count of this query """ - return self.order_by().exclude(inventory_sources__source='controller').values('name').distinct().count() + return self.order_by().exclude(inventory_sources__source='controller').values(name_lower=Lower('name')).distinct().count() def org_active_count(self, org_id): """Return count of active, unique hosts used by an organization. diff --git a/awx/main/tests/functional/models/test_inventory.py b/awx/main/tests/functional/models/test_inventory.py index 40620fd0a3..6c418e5b16 100644 --- a/awx/main/tests/functional/models/test_inventory.py +++ b/awx/main/tests/functional/models/test_inventory.py @@ -110,6 +110,16 @@ class TestActiveCount: source.hosts.create(name='remotely-managed-host', inventory=inventory) assert Host.objects.active_count() == 1 + def test_host_case_insensitivity(self, organization): + inv1 = Inventory.objects.create(name='inv1', organization=organization) + inv2 = Inventory.objects.create(name='inv2', organization=organization) + assert Host.objects.active_count() == 0 + inv1.hosts.create(name='host1') + inv2.hosts.create(name='Host1') + assert Host.objects.active_count() == 1 + inv1.hosts.create(name='host2') + assert Host.objects.active_count() == 2 + @pytest.mark.django_db class TestSCMUpdateFeatures: