mirror of
https://github.com/ansible/awx.git
synced 2026-03-10 14:09:28 -02:30
Fix edge case in inventory import that would cause a group to become its own parent.
This commit is contained in:
@@ -649,7 +649,7 @@ class Command(NoArgsCommand):
|
|||||||
self.logger.info('Group "%s" variables updated', k)
|
self.logger.info('Group "%s" variables updated', k)
|
||||||
else:
|
else:
|
||||||
self.logger.info('Group "%s" variables unmodified', k)
|
self.logger.info('Group "%s" variables unmodified', k)
|
||||||
if self.inventory_source.group:
|
if self.inventory_source.group and self.inventory_source.group != group:
|
||||||
self.inventory_source.group.children.add(group)
|
self.inventory_source.group.children.add(group)
|
||||||
group.inventory_sources.add(self.inventory_source)
|
group.inventory_sources.add(self.inventory_source)
|
||||||
|
|
||||||
|
|||||||
@@ -1270,6 +1270,11 @@ class InventoryUpdatesTest(BaseTransactionTest):
|
|||||||
user=self.super_django_user,
|
user=self.super_django_user,
|
||||||
username=source_username,
|
username=source_username,
|
||||||
password=source_password)
|
password=source_password)
|
||||||
|
# Set parent group name to one that might be created by the sync.
|
||||||
|
group = self.group
|
||||||
|
group.name = 'ec2'
|
||||||
|
group.save()
|
||||||
|
self.group = group
|
||||||
inventory_source = self.update_inventory_source(self.group,
|
inventory_source = self.update_inventory_source(self.group,
|
||||||
source='ec2', credential=credential, source_regions=source_regions,
|
source='ec2', credential=credential, source_regions=source_regions,
|
||||||
source_vars='---')
|
source_vars='---')
|
||||||
@@ -1279,7 +1284,10 @@ class InventoryUpdatesTest(BaseTransactionTest):
|
|||||||
host.enabled = False
|
host.enabled = False
|
||||||
host.save()
|
host.save()
|
||||||
self.check_inventory_source(inventory_source, initial=False)
|
self.check_inventory_source(inventory_source, initial=False)
|
||||||
|
# Verify that main group is in top level groups (hasn't been added as
|
||||||
|
# its own child).
|
||||||
|
self.assertTrue(self.group in self.inventory.root_groups)
|
||||||
|
|
||||||
def test_update_from_rax(self):
|
def test_update_from_rax(self):
|
||||||
source_username = getattr(settings, 'TEST_RACKSPACE_USERNAME', '')
|
source_username = getattr(settings, 'TEST_RACKSPACE_USERNAME', '')
|
||||||
source_password = getattr(settings, 'TEST_RACKSPACE_API_KEY', '')
|
source_password = getattr(settings, 'TEST_RACKSPACE_API_KEY', '')
|
||||||
@@ -1290,6 +1298,11 @@ class InventoryUpdatesTest(BaseTransactionTest):
|
|||||||
user=self.super_django_user,
|
user=self.super_django_user,
|
||||||
username=source_username,
|
username=source_username,
|
||||||
password=source_password)
|
password=source_password)
|
||||||
|
# Set parent group name to one that might be created by the sync.
|
||||||
|
group = self.group
|
||||||
|
group.name = 'DFW'
|
||||||
|
group.save()
|
||||||
|
self.group = group
|
||||||
inventory_source = self.update_inventory_source(self.group,
|
inventory_source = self.update_inventory_source(self.group,
|
||||||
source='rax', credential=credential, source_regions=source_regions)
|
source='rax', credential=credential, source_regions=source_regions)
|
||||||
self.check_inventory_source(inventory_source)
|
self.check_inventory_source(inventory_source)
|
||||||
@@ -1303,3 +1316,6 @@ class InventoryUpdatesTest(BaseTransactionTest):
|
|||||||
inventory_source2 = self.update_inventory_source(self.group2,
|
inventory_source2 = self.update_inventory_source(self.group2,
|
||||||
source='rax', credential=credential, source_regions='')
|
source='rax', credential=credential, source_regions='')
|
||||||
self.check_inventory_source(inventory_source2)
|
self.check_inventory_source(inventory_source2)
|
||||||
|
# Verify that main group is in top level groups (hasn't been added as
|
||||||
|
# its own child).
|
||||||
|
self.assertTrue(self.group in self.inventory.root_groups)
|
||||||
|
|||||||
Reference in New Issue
Block a user