Merge pull request #6218 from AlanCoding/scm_inv_cancel

SCM inventory cancel propagation
This commit is contained in:
Alan Rominger
2017-05-10 15:52:31 -04:00
committed by GitHub
4 changed files with 52 additions and 6 deletions

View File

@@ -3,7 +3,7 @@ import mock
import os
from awx.main.tasks import RunProjectUpdate, RunInventoryUpdate
from awx.main.models import ProjectUpdate, InventoryUpdate
from awx.main.models import ProjectUpdate, InventoryUpdate, InventorySource
@pytest.fixture
@@ -43,3 +43,32 @@ class TestDependentInventoryUpdate:
inv_update = InventoryUpdate.objects.first()
iu_run_mock.assert_called_once_with(inv_update.id)
assert inv_update.source_project_update_id == proj_update.pk
def test_dependent_inventory_project_cancel(self, project, inventory):
'''
Test that dependent inventory updates exhibit good behavior on cancel
of the source project update
'''
task = RunProjectUpdate()
proj_update = ProjectUpdate.objects.create(project=project)
kwargs = dict(
source_project=project,
source='scm',
source_path='inventory_file',
update_on_project_update=True,
inventory=inventory
)
is1 = InventorySource.objects.create(name="test-scm-inv", **kwargs)
is2 = InventorySource.objects.create(name="test-scm-inv2", **kwargs)
def user_cancels_project(pk):
ProjectUpdate.objects.all().update(cancel_flag=True)
with mock.patch.object(RunInventoryUpdate, 'run') as iu_run_mock:
iu_run_mock.side_effect = user_cancels_project
task._update_dependent_inventories(proj_update, [is1, is2])
# Verify that it bails after 1st update, detecting a cancel
assert is2.inventory_updates.count() == 0
iu_run_mock.assert_called_once()