mirror of
https://github.com/ansible/awx.git
synced 2026-03-15 16:07:30 -02:30
Make sure we recognize when a model changes state from active to inactive and back
Conflicts: awx/main/signals.py
This commit is contained in:
@@ -88,7 +88,9 @@ def emit_update_inventory_on_created_or_deleted(sender, **kwargs):
|
|||||||
if getattr(_inventory_updates, 'is_updating', False):
|
if getattr(_inventory_updates, 'is_updating', False):
|
||||||
return
|
return
|
||||||
instance = kwargs['instance']
|
instance = kwargs['instance']
|
||||||
if kwargs['created'] or not instance.active or kwargs['signal'] == post_delete:
|
if ('created' in kwargs and kwargs['created']) or \
|
||||||
|
(hasattr(instance, '_saved_active_state') and instance._saved_active_state != instance.active) or \
|
||||||
|
kwargs['signal'] == post_delete:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
@@ -102,20 +104,37 @@ def emit_update_inventory_on_created_or_deleted(sender, **kwargs):
|
|||||||
else:
|
else:
|
||||||
update_inventory_computed_fields.delay(inventory.id, True)
|
update_inventory_computed_fields.delay(inventory.id, True)
|
||||||
|
|
||||||
|
def store_initial_active_state(sender, **kwargs):
|
||||||
|
instance = kwargs['instance']
|
||||||
|
if instance.id is not None:
|
||||||
|
instance._saved_active_state = sender.objects.get(id=instance.id).active
|
||||||
|
else:
|
||||||
|
instance._saved_active_state = True
|
||||||
|
|
||||||
|
pre_save.connect(store_initial_active_state, sender=Host)
|
||||||
post_save.connect(emit_update_inventory_on_created_or_deleted, sender=Host)
|
post_save.connect(emit_update_inventory_on_created_or_deleted, sender=Host)
|
||||||
post_delete.connect(emit_update_inventory_on_created_or_deleted, sender=Host)
|
post_delete.connect(emit_update_inventory_on_created_or_deleted, sender=Host)
|
||||||
|
pre_save.connect(store_initial_active_state, sender=Group)
|
||||||
post_save.connect(emit_update_inventory_on_created_or_deleted, sender=Group)
|
post_save.connect(emit_update_inventory_on_created_or_deleted, sender=Group)
|
||||||
post_delete.connect(emit_update_inventory_on_created_or_deleted, sender=Group)
|
post_delete.connect(emit_update_inventory_on_created_or_deleted, sender=Group)
|
||||||
m2m_changed.connect(emit_update_inventory_computed_fields, sender=Group.hosts.through)
|
m2m_changed.connect(emit_update_inventory_computed_fields, sender=Group.hosts.through)
|
||||||
m2m_changed.connect(emit_update_inventory_computed_fields, sender=Group.parents.through)
|
m2m_changed.connect(emit_update_inventory_computed_fields, sender=Group.parents.through)
|
||||||
m2m_changed.connect(emit_update_inventory_computed_fields, sender=Host.inventory_sources.through)
|
m2m_changed.connect(emit_update_inventory_computed_fields, sender=Host.inventory_sources.through)
|
||||||
m2m_changed.connect(emit_update_inventory_computed_fields, sender=Group.inventory_sources.through)
|
m2m_changed.connect(emit_update_inventory_computed_fields, sender=Group.inventory_sources.through)
|
||||||
|
<<<<<<< HEAD
|
||||||
post_save.connect(emit_update_inventory_computed_fields, sender=Job)
|
post_save.connect(emit_update_inventory_computed_fields, sender=Job)
|
||||||
post_delete.connect(emit_update_inventory_computed_fields, sender=Job)
|
post_delete.connect(emit_update_inventory_computed_fields, sender=Job)
|
||||||
post_save.connect(emit_update_inventory_computed_fields, sender=InventorySource)
|
post_save.connect(emit_update_inventory_computed_fields, sender=InventorySource)
|
||||||
post_delete.connect(emit_update_inventory_computed_fields, sender=InventorySource)
|
post_delete.connect(emit_update_inventory_computed_fields, sender=InventorySource)
|
||||||
post_save.connect(emit_job_event_detail, sender=JobEvent)
|
post_save.connect(emit_job_event_detail, sender=JobEvent)
|
||||||
|
=======
|
||||||
|
pre_save.connect(store_initial_active_state, sender=InventorySource)
|
||||||
|
post_save.connect(emit_update_inventory_on_created_or_deleted, sender=InventorySource)
|
||||||
|
post_delete.connect(emit_update_inventory_on_created_or_deleted, sender=InventorySource)
|
||||||
|
pre_save.connect(store_initial_active_state, sender=Job)
|
||||||
|
post_save.connect(emit_update_inventory_on_created_or_deleted, sender=Job)
|
||||||
|
post_delete.connect(emit_update_inventory_on_created_or_deleted, sender=Job)
|
||||||
|
>>>>>>> b307008... Make sure we recognize when a model changes state from active to inactive and back
|
||||||
|
|
||||||
# Migrate hosts, groups to parent group(s) whenever a group is deleted or
|
# Migrate hosts, groups to parent group(s) whenever a group is deleted or
|
||||||
# marked as inactive.
|
# marked as inactive.
|
||||||
|
|||||||
@@ -638,7 +638,7 @@ class RunJobTest(BaseCeleryTest):
|
|||||||
host.last_job = job
|
host.last_job = job
|
||||||
host.last_job_host_summary = JobHostSummary.objects.get(job=job, host=host)
|
host.last_job_host_summary = JobHostSummary.objects.get(job=job, host=host)
|
||||||
host.save()
|
host.save()
|
||||||
job.inventory.update_computed_fields()
|
self.inventory.update_computed_fields()
|
||||||
self.host = Host.objects.get(pk=self.host.pk)
|
self.host = Host.objects.get(pk=self.host.pk)
|
||||||
self.assertTrue(self.host.has_active_failures)
|
self.assertTrue(self.host.has_active_failures)
|
||||||
self.group = Group.objects.get(pk=self.group.pk)
|
self.group = Group.objects.get(pk=self.group.pk)
|
||||||
|
|||||||
Reference in New Issue
Block a user