From b0e992d6abacda5339a198ecc4344c076a847789 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Mon, 13 Feb 2017 12:34:21 -0500 Subject: [PATCH] disable computed field signals in cleanup_jobs --- awx/main/management/commands/cleanup_jobs.py | 26 +++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/awx/main/management/commands/cleanup_jobs.py b/awx/main/management/commands/cleanup_jobs.py index 3b26767bc0..84927c755a 100644 --- a/awx/main/management/commands/cleanup_jobs.py +++ b/awx/main/management/commands/cleanup_jobs.py @@ -12,7 +12,15 @@ from django.db import transaction from django.utils.timezone import now # AWX -from awx.main.models import Job, AdHocCommand, ProjectUpdate, InventoryUpdate, SystemJob, WorkflowJob, Notification +from awx.main.models import ( + Job, AdHocCommand, ProjectUpdate, InventorySource, InventoryUpdate, + SystemJob, WorkflowJob, Notification, Group, Host +) +from awx.main.signals import ( # noqa + emit_update_inventory_on_created_or_deleted, + emit_update_inventory_computed_fields +) +from django.db.models.signals import post_save, post_delete, m2m_changed # noqa class Command(NoArgsCommand): @@ -219,12 +227,28 @@ class Command(NoArgsCommand): deleted += 1 return skipped, deleted + def disable_job_signals(self): + sigstat = [] + sigstat.append(post_save.disconnect(emit_update_inventory_on_created_or_deleted, sender=Host)) + sigstat.append(post_delete.disconnect(emit_update_inventory_on_created_or_deleted, sender=Host)) + sigstat.append(post_save.disconnect(emit_update_inventory_on_created_or_deleted, sender=Group)) + sigstat.append(post_delete.disconnect(emit_update_inventory_on_created_or_deleted, sender=Group)) + sigstat.append(m2m_changed.disconnect(emit_update_inventory_computed_fields, sender=Group.hosts.through)) + sigstat.append(m2m_changed.disconnect(emit_update_inventory_computed_fields, sender=Group.parents.through)) + sigstat.append(m2m_changed.disconnect(emit_update_inventory_computed_fields, sender=Host.inventory_sources.through)) + sigstat.append(m2m_changed.disconnect(emit_update_inventory_computed_fields, sender=Group.inventory_sources.through)) + sigstat.append(post_save.disconnect(emit_update_inventory_on_created_or_deleted, sender=InventorySource)) + sigstat.append(post_delete.disconnect(emit_update_inventory_on_created_or_deleted, sender=InventorySource)) + sigstat.append(post_save.disconnect(emit_update_inventory_on_created_or_deleted, sender=Job)) + sigstat.append(post_delete.disconnect(emit_update_inventory_on_created_or_deleted, sender=Job)) + @transaction.atomic def handle_noargs(self, **options): self.verbosity = int(options.get('verbosity', 1)) self.init_logging() self.days = int(options.get('days', 90)) self.dry_run = bool(options.get('dry_run', False)) + self.disable_job_signals() try: self.cutoff = now() - datetime.timedelta(days=self.days) except OverflowError: