Make schedule teardown more reliable

This commit is contained in:
Alan Rominger 2022-08-19 15:25:23 -04:00
parent bf9f1b1d56
commit 4b8a56be39
No known key found for this signature in database
GPG Key ID: C2D7EAAA12B63559
2 changed files with 7 additions and 8 deletions

View File

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

View File

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