mirror of
https://github.com/ansible/awx.git
synced 2026-01-21 06:28:01 -03:30
Altering prefered_instance_groups for ad_hoc_commands and inventory objects
This commit is contained in:
parent
e6518a1d1c
commit
2d756959d3
@ -228,15 +228,14 @@ class AdHocCommand(UnifiedJob, JobNotificationMixin):
|
||||
|
||||
@property
|
||||
def preferred_instance_groups(self):
|
||||
if self.inventory is not None and self.inventory.organization is not None:
|
||||
organization_groups = [x for x in self.inventory.organization.instance_groups.all()]
|
||||
else:
|
||||
organization_groups = []
|
||||
selected_groups = []
|
||||
if self.inventory is not None:
|
||||
inventory_groups = [x for x in self.inventory.instance_groups.all()]
|
||||
else:
|
||||
inventory_groups = []
|
||||
selected_groups = inventory_groups + organization_groups
|
||||
for instance_group in self.inventory.instance_groups.all():
|
||||
selected_groups.append(instance_group)
|
||||
if not getattr(self.inventory, 'prevent_instance_group_fallback', False) and self.inventory.organization is not None:
|
||||
for instance_group in self.inventory.organization.instance_groups.all():
|
||||
selected_groups.append(instance_group)
|
||||
|
||||
if not selected_groups:
|
||||
return self.global_instance_groups
|
||||
return selected_groups
|
||||
|
||||
@ -1278,15 +1278,19 @@ class InventoryUpdate(UnifiedJob, InventorySourceOptions, JobNotificationMixin,
|
||||
|
||||
@property
|
||||
def preferred_instance_groups(self):
|
||||
if self.inventory_source.inventory is not None and self.inventory_source.inventory.organization is not None:
|
||||
organization_groups = [x for x in self.inventory_source.inventory.organization.instance_groups.all()]
|
||||
else:
|
||||
organization_groups = []
|
||||
selected_groups = []
|
||||
if self.inventory_source.inventory is not None:
|
||||
inventory_groups = [x for x in self.inventory_source.inventory.instance_groups.all()]
|
||||
else:
|
||||
inventory_groups = []
|
||||
selected_groups = inventory_groups + organization_groups
|
||||
# Add the inventory sources IG to the selected IGs first
|
||||
for instance_group in self.inventory_source.inventory.instance_groups.all():
|
||||
selected_groups.append(instance_group)
|
||||
# If the inventory allows for fallback and we have an organization then also append the orgs IGs to the end of the list
|
||||
if (
|
||||
not getattr(self.inventory_source.inventory, 'prevent_instance_group_fallback', False)
|
||||
and self.inventory_source.inventory.organization is not None
|
||||
):
|
||||
for instance_group in self.inventory_source.inventory.organization.instance_groups.all():
|
||||
selected_groups.append(instance_group)
|
||||
|
||||
if not selected_groups:
|
||||
return self.global_instance_groups
|
||||
return selected_groups
|
||||
|
||||
@ -391,6 +391,8 @@ class TestInstanceGroupOrdering:
|
||||
assert ad_hoc.preferred_instance_groups == [ig_org]
|
||||
inventory.instance_groups.add(ig_inv)
|
||||
assert ad_hoc.preferred_instance_groups == [ig_inv, ig_org]
|
||||
inventory.prevent_instance_group_fallback = True
|
||||
assert ad_hoc.preferred_instance_groups == [ig_inv]
|
||||
|
||||
def test_inventory_update_instance_groups(self, instance_group_factory, inventory_source, default_instance_group):
|
||||
iu = InventoryUpdate.objects.create(inventory_source=inventory_source, source=inventory_source.source)
|
||||
@ -404,6 +406,8 @@ class TestInstanceGroupOrdering:
|
||||
inventory_source.instance_groups.add(ig_tmp)
|
||||
# API does not allow setting IGs on inventory source, so ignore those
|
||||
assert iu.preferred_instance_groups == [ig_inv, ig_org]
|
||||
inventory_source.inventory.prevent_instance_group_fallback = True
|
||||
assert iu.preferred_instance_groups == [ig_inv]
|
||||
|
||||
def test_job_instance_groups(self, instance_group_factory, inventory, project, default_instance_group):
|
||||
jt = JobTemplate.objects.create(inventory=inventory, project=project)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user