mirror of
https://github.com/ansible/awx.git
synced 2026-05-15 13:27:40 -02:30
Altering prefered_instance_groups for ad_hoc_commands and inventory objects
This commit is contained in:
@@ -228,15 +228,14 @@ class AdHocCommand(UnifiedJob, JobNotificationMixin):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def preferred_instance_groups(self):
|
def preferred_instance_groups(self):
|
||||||
if self.inventory is not None and self.inventory.organization is not None:
|
selected_groups = []
|
||||||
organization_groups = [x for x in self.inventory.organization.instance_groups.all()]
|
|
||||||
else:
|
|
||||||
organization_groups = []
|
|
||||||
if self.inventory is not None:
|
if self.inventory is not None:
|
||||||
inventory_groups = [x for x in self.inventory.instance_groups.all()]
|
for instance_group in self.inventory.instance_groups.all():
|
||||||
else:
|
selected_groups.append(instance_group)
|
||||||
inventory_groups = []
|
if not getattr(self.inventory, 'prevent_instance_group_fallback', False) and self.inventory.organization is not None:
|
||||||
selected_groups = inventory_groups + organization_groups
|
for instance_group in self.inventory.organization.instance_groups.all():
|
||||||
|
selected_groups.append(instance_group)
|
||||||
|
|
||||||
if not selected_groups:
|
if not selected_groups:
|
||||||
return self.global_instance_groups
|
return self.global_instance_groups
|
||||||
return selected_groups
|
return selected_groups
|
||||||
|
|||||||
@@ -1278,15 +1278,19 @@ class InventoryUpdate(UnifiedJob, InventorySourceOptions, JobNotificationMixin,
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def preferred_instance_groups(self):
|
def preferred_instance_groups(self):
|
||||||
if self.inventory_source.inventory is not None and self.inventory_source.inventory.organization is not None:
|
selected_groups = []
|
||||||
organization_groups = [x for x in self.inventory_source.inventory.organization.instance_groups.all()]
|
|
||||||
else:
|
|
||||||
organization_groups = []
|
|
||||||
if self.inventory_source.inventory is not None:
|
if self.inventory_source.inventory is not None:
|
||||||
inventory_groups = [x for x in self.inventory_source.inventory.instance_groups.all()]
|
# Add the inventory sources IG to the selected IGs first
|
||||||
else:
|
for instance_group in self.inventory_source.inventory.instance_groups.all():
|
||||||
inventory_groups = []
|
selected_groups.append(instance_group)
|
||||||
selected_groups = inventory_groups + organization_groups
|
# 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:
|
if not selected_groups:
|
||||||
return self.global_instance_groups
|
return self.global_instance_groups
|
||||||
return selected_groups
|
return selected_groups
|
||||||
|
|||||||
@@ -391,6 +391,8 @@ class TestInstanceGroupOrdering:
|
|||||||
assert ad_hoc.preferred_instance_groups == [ig_org]
|
assert ad_hoc.preferred_instance_groups == [ig_org]
|
||||||
inventory.instance_groups.add(ig_inv)
|
inventory.instance_groups.add(ig_inv)
|
||||||
assert ad_hoc.preferred_instance_groups == [ig_inv, ig_org]
|
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):
|
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)
|
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)
|
inventory_source.instance_groups.add(ig_tmp)
|
||||||
# API does not allow setting IGs on inventory source, so ignore those
|
# API does not allow setting IGs on inventory source, so ignore those
|
||||||
assert iu.preferred_instance_groups == [ig_inv, ig_org]
|
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):
|
def test_job_instance_groups(self, instance_group_factory, inventory, project, default_instance_group):
|
||||||
jt = JobTemplate.objects.create(inventory=inventory, project=project)
|
jt = JobTemplate.objects.create(inventory=inventory, project=project)
|
||||||
|
|||||||
Reference in New Issue
Block a user