diff --git a/awxkit/awxkit/api/pages/schedules.py b/awxkit/awxkit/api/pages/schedules.py index 68a4a812fb..af58d59548 100644 --- a/awxkit/awxkit/api/pages/schedules.py +++ b/awxkit/awxkit/api/pages/schedules.py @@ -15,13 +15,15 @@ class Schedule(HasCreate, base.Base): NATURAL_KEY = ('unified_job_template', 'name') def silent_delete(self): - """If we are told to prevent_teardown of schedules, then keep them - but do not leave them activated, or system will be swamped quickly""" + """ + In every case, we start by disabling the schedule + to avoid cascading errors from a cleanup failure. + Then, if we are told to prevent_teardown of schedules, we keep them + """ try: + self.patch(enabled=False) if not config.prevent_teardown: return self.delete() - else: - self.patch(enabled=False) except (exc.NoContent, exc.NotFound, exc.Forbidden): pass diff --git a/awxkit/awxkit/api/pages/unified_job_templates.py b/awxkit/awxkit/api/pages/unified_job_templates.py index 06b99abfdc..52e2b82c93 100644 --- a/awxkit/awxkit/api/pages/unified_job_templates.py +++ b/awxkit/awxkit/api/pages/unified_job_templates.py @@ -1,7 +1,6 @@ from awxkit.api.resources import resources from awxkit.utils import random_title, update_payload from awxkit.api.mixins import HasStatus -from awxkit.config import config from . import base from . import page @@ -53,9 +52,7 @@ class UnifiedJobTemplate(HasStatus, base.Base): return schedule def silent_delete(self): - if hasattr(self, '_schedules_store') and config.prevent_teardown: - # when prevent_teardown is off, we rely on cascade deletes - # in this case, looping is needed to turn them off + if hasattr(self, '_schedules_store'): for schedule in self._schedules_store: schedule.silent_delete() return super(UnifiedJobTemplate, self).silent_delete()