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:
Matthew Jones
2014-05-14 16:02:56 -04:00
parent 93c2a5e31c
commit f49805db0b
2 changed files with 22 additions and 3 deletions

View File

@@ -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.

View File

@@ -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)