diff --git a/awx/main/models/inventory.py b/awx/main/models/inventory.py index fd4deb6c75..fbf69ce2a2 100644 --- a/awx/main/models/inventory.py +++ b/awx/main/models/inventory.py @@ -294,6 +294,8 @@ class Inventory(CommonModelNameNotUnique, ResourceMixin, RelatedJobsMixin): # Remove any empty groups for group_name in list(data.keys()): + if group_name == 'all': + continue if not (data.get(group_name, {}).get('hosts', []) or data.get(group_name, {}).get('children', [])): data.pop(group_name) diff --git a/awx/main/tests/functional/api/test_script_endpoint.py b/awx/main/tests/functional/api/test_script_endpoint.py index 4423d2347f..dd73e6d28f 100644 --- a/awx/main/tests/functional/api/test_script_endpoint.py +++ b/awx/main/tests/functional/api/test_script_endpoint.py @@ -13,6 +13,7 @@ def test_empty_inventory(post, get, admin_user, organization, group_factory): inventory.save() resp = get(reverse('api:inventory_script_view', kwargs={'version': 'v2', 'pk': inventory.pk}), admin_user) jdata = json.loads(resp.content) + jdata.pop('all') assert inventory.hosts.count() == 0 assert jdata == {} diff --git a/awx/main/tests/functional/models/test_inventory.py b/awx/main/tests/functional/models/test_inventory.py index 3129027a02..537d6d0751 100644 --- a/awx/main/tests/functional/models/test_inventory.py +++ b/awx/main/tests/functional/models/test_inventory.py @@ -38,6 +38,19 @@ class TestInventoryScript: 'remote_tower_id': host.id } + def test_all_group(self, inventory): + inventory.groups.create(name='all', variables={'a1': 'a1'}) + # make sure we return a1 details in output + data = inventory.get_script_data() + assert 'all' in data + assert data['all'] == { + 'hosts': [], + 'children': [], + 'vars': { + 'a1': 'a1' + } + } + def test_grandparent_group(self, inventory): g1 = inventory.groups.create(name='g1', variables={'v1': 'v1'}) g2 = inventory.groups.create(name='g2', variables={'v2': 'v2'}) @@ -85,7 +98,9 @@ class TestInventoryScript: } if i < 2: expected_data['contains_two_hosts'] = {'hosts': ['host{}'.format(i)], 'children': [], 'vars': {}} - assert inventory.get_script_data(slice_number=i + 1, slice_count=3) == expected_data + data = inventory.get_script_data(slice_number=i + 1, slice_count=3) + data.pop('all') + assert data == expected_data @pytest.mark.django_db