mirror of
https://github.com/ansible/awx.git
synced 2026-03-09 13:39:27 -02:30
fully link up source_project_update to inventory update
This commit is contained in:
@@ -1629,7 +1629,7 @@ class InventoryUpdateSerializer(UnifiedJobSerializer, InventorySourceOptionsSeri
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = InventoryUpdate
|
model = InventoryUpdate
|
||||||
fields = ('*', 'inventory_source', 'license_error')
|
fields = ('*', 'inventory_source', 'license_error', 'source_project_update')
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
res = super(InventoryUpdateSerializer, self).get_related(obj)
|
res = super(InventoryUpdateSerializer, self).get_related(obj)
|
||||||
@@ -1638,6 +1638,9 @@ class InventoryUpdateSerializer(UnifiedJobSerializer, InventorySourceOptionsSeri
|
|||||||
cancel = self.reverse('api:inventory_update_cancel', kwargs={'pk': obj.pk}),
|
cancel = self.reverse('api:inventory_update_cancel', kwargs={'pk': obj.pk}),
|
||||||
notifications = self.reverse('api:inventory_update_notifications_list', kwargs={'pk': obj.pk}),
|
notifications = self.reverse('api:inventory_update_notifications_list', kwargs={'pk': obj.pk}),
|
||||||
))
|
))
|
||||||
|
if obj.source_project_update_id:
|
||||||
|
res['source_project_update'] = self.reverse('api:project_update_detail',
|
||||||
|
kwargs={'pk': obj.source_project_update.pk})
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1128,7 +1128,7 @@ class RunJob(BaseTask):
|
|||||||
job_request_id = '' if self.request.id is None else self.request.id
|
job_request_id = '' if self.request.id is None else self.request.id
|
||||||
local_project_sync = job.project.create_project_update(
|
local_project_sync = job.project.create_project_update(
|
||||||
launch_type="sync",
|
launch_type="sync",
|
||||||
_eager_params=dict(
|
_eager_fields=dict(
|
||||||
job_type='run',
|
job_type='run',
|
||||||
status='running',
|
status='running',
|
||||||
celery_task_id=job_request_id))
|
celery_task_id=job_request_id))
|
||||||
@@ -1367,11 +1367,11 @@ class RunProjectUpdate(BaseTask):
|
|||||||
'another update is already active.'.format(inv.name))
|
'another update is already active.'.format(inv.name))
|
||||||
continue
|
continue
|
||||||
local_inv_update = inv_src.create_inventory_update(
|
local_inv_update = inv_src.create_inventory_update(
|
||||||
source_project_update_id=project_update.id,
|
|
||||||
launch_type='scm',
|
launch_type='scm',
|
||||||
_eager_fields=dict(
|
_eager_fields=dict(
|
||||||
status='running',
|
status='running',
|
||||||
celery_task_id=str(project_request_id)))
|
celery_task_id=str(project_request_id),
|
||||||
|
source_project_update=project_update))
|
||||||
inv_update_task = local_inv_update._get_task_class()
|
inv_update_task = local_inv_update._get_task_class()
|
||||||
try:
|
try:
|
||||||
task_instance = inv_update_task()
|
task_instance = inv_update_task()
|
||||||
@@ -1443,7 +1443,7 @@ class RunProjectUpdate(BaseTask):
|
|||||||
# Update any inventories that depend on this project
|
# Update any inventories that depend on this project
|
||||||
if len(dependent_inventory_sources) > 0:
|
if len(dependent_inventory_sources) > 0:
|
||||||
if status == 'successful' and instance.launch_type != 'sync':
|
if status == 'successful' and instance.launch_type != 'sync':
|
||||||
self._update_dependent_inventories(p, dependent_inventory_sources)
|
self._update_dependent_inventories(instance, dependent_inventory_sources)
|
||||||
|
|
||||||
|
|
||||||
class RunInventoryUpdate(BaseTask):
|
class RunInventoryUpdate(BaseTask):
|
||||||
@@ -1810,7 +1810,7 @@ class RunInventoryUpdate(BaseTask):
|
|||||||
request_id = '' if self.request.id is None else self.request.id
|
request_id = '' if self.request.id is None else self.request.id
|
||||||
local_project_sync = source_project.create_project_update(
|
local_project_sync = source_project.create_project_update(
|
||||||
launch_type="sync",
|
launch_type="sync",
|
||||||
_eager_params=dict(
|
_eager_fields=dict(
|
||||||
job_type='run',
|
job_type='run',
|
||||||
status='running',
|
status='running',
|
||||||
celery_task_id=request_id))
|
celery_task_id=request_id))
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ class TestDependentInventoryUpdate:
|
|||||||
proj_update = ProjectUpdate.objects.create(project=scm_inventory_source.source_project)
|
proj_update = ProjectUpdate.objects.create(project=scm_inventory_source.source_project)
|
||||||
with mock.patch.object(RunProjectUpdate, '_update_dependent_inventories') as inv_update_mck:
|
with mock.patch.object(RunProjectUpdate, '_update_dependent_inventories') as inv_update_mck:
|
||||||
task.post_run_hook(proj_update, 'successful')
|
task.post_run_hook(proj_update, 'successful')
|
||||||
inv_update_mck.assert_called_once_with(scm_inventory_source.source_project, mock.ANY)
|
inv_update_mck.assert_called_once_with(proj_update, mock.ANY)
|
||||||
|
|
||||||
def test_no_unwanted_dependent_inventory_updates(self, project, scm_revision_file):
|
def test_no_unwanted_dependent_inventory_updates(self, project, scm_revision_file):
|
||||||
task = RunProjectUpdate()
|
task = RunProjectUpdate()
|
||||||
@@ -36,8 +36,10 @@ class TestDependentInventoryUpdate:
|
|||||||
|
|
||||||
def test_dependent_inventory_updates(self, scm_inventory_source):
|
def test_dependent_inventory_updates(self, scm_inventory_source):
|
||||||
task = RunProjectUpdate()
|
task = RunProjectUpdate()
|
||||||
|
proj_update = ProjectUpdate.objects.create(project=scm_inventory_source.source_project)
|
||||||
with mock.patch.object(RunInventoryUpdate, 'run') as iu_run_mock:
|
with mock.patch.object(RunInventoryUpdate, 'run') as iu_run_mock:
|
||||||
task._update_dependent_inventories(scm_inventory_source.source_project, [scm_inventory_source])
|
task._update_dependent_inventories(proj_update, [scm_inventory_source])
|
||||||
assert InventoryUpdate.objects.count() == 1
|
assert InventoryUpdate.objects.count() == 1
|
||||||
inv_update = InventoryUpdate.objects.first()
|
inv_update = InventoryUpdate.objects.first()
|
||||||
iu_run_mock.assert_called_once_with(inv_update.id)
|
iu_run_mock.assert_called_once_with(inv_update.id)
|
||||||
|
assert inv_update.source_project_update_id == proj_update.pk
|
||||||
|
|||||||
Reference in New Issue
Block a user