diff --git a/awx_collection/plugins/modules/tower_group.py b/awx_collection/plugins/modules/tower_group.py index c6a1492c99..997a606b4f 100644 --- a/awx_collection/plugins/modules/tower_group.py +++ b/awx_collection/plugins/modules/tower_group.py @@ -47,12 +47,14 @@ options: required: False type: list elements: str - groups: + children: description: - List of groups that should be nested inside in this group. required: False type: list elements: str + aliases: + - groups state: description: - Desired state of the resource. @@ -98,7 +100,7 @@ def main(): inventory=dict(required=True), variables=dict(type='dict', required=False), hosts=dict(type='list', elements='str'), - groups=dict(type='list', elements='str'), + children=dict(type='list', elements='str', aliases=['groups']), state=dict(choices=['present', 'absent'], default='present'), ) @@ -136,7 +138,7 @@ def main(): association_fields = {} for resource, relationship in (('hosts', 'hosts'), ('groups', 'children')): - name_list = module.params.get(resource) + name_list = module.params.get(relationship) if name_list is None: continue id_list = [] diff --git a/awx_collection/test/awx/test_group.py b/awx_collection/test/awx/test_group.py index c00bb1b9e5..3e5bcc6bdd 100644 --- a/awx_collection/test/awx/test_group.py +++ b/awx_collection/test/awx/test_group.py @@ -33,7 +33,7 @@ def test_create_group(run_module, admin_user): @pytest.mark.django_db -def test_associate_hosts_and_groups(run_module, admin_user, organization): +def test_associate_hosts_and_children(run_module, admin_user, organization): inv = Inventory.objects.create(name='test-inv', organization=organization) group = Group.objects.create(name='Test Group', inventory=inv) @@ -46,7 +46,7 @@ def test_associate_hosts_and_groups(run_module, admin_user, organization): name='Test Group', inventory='test-inv', hosts=[inv_hosts[1].name, inv_hosts[2].name], - groups=[child.name], + children=[child.name], state='present' ), admin_user) assert not result.get('failed', False), result.get('msg', result) @@ -77,6 +77,23 @@ def test_associate_on_create(run_module, admin_user, organization): assert set(group.children.all()) == set([child]) +@pytest.mark.django_db +def test_children_alias_of_groups(run_module, admin_user, organization): + inv = Inventory.objects.create(name='test-inv', organization=organization) + group = Group.objects.create(name='Test Group', inventory=inv) + child = Group.objects.create(inventory=inv, name='child_group') + result = run_module('tower_group', dict( + name='Test Group', + inventory='test-inv', + groups=[child.name], + state='present' + ), admin_user) + assert not result.get('failed', False), result.get('msg', result) + assert result['changed'] is True + + assert set(group.children.all()) == set([child]) + + @pytest.mark.django_db def test_tower_group_idempotent(run_module, admin_user): # https://github.com/ansible/ansible/issues/46803