Skip to content

Commit e3450e4

Browse files
committed
Merge pull request #627 from helgi/release_scheduler
fix(release): attempt to delete stray RCs when Release DB model does a delete
2 parents 70a4c93 + 68ebdf0 commit e3450e4

1 file changed

Lines changed: 22 additions & 2 deletions

File tree

rootfs/api/models/release.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
from registry import publish_release, RegistryException
88
from api.utils import dict_diff
9-
109
from api.models import UuidAuditedModel, log_event
10+
from scheduler import KubeHTTPException
1111

1212
logger = logging.getLogger(__name__)
1313

@@ -95,7 +95,7 @@ def publish(self, source_version='latest'):
9595
source_image.startswith(settings.REGISTRY_HOST) or
9696
source_image.startswith(settings.REGISTRY_URL)
9797
):
98-
logger.debug('{} already exists in the target registry. Using this image for release {} of app {}'.format(source_image, self.version, self.app)) # noqa
98+
log_event(self.app, '{} already exists in the target registry. Using this image for release {} of app {}'.format(source_image, self.version, self.app)) # noqa
9999
return
100100

101101
# add tag if it was not provided
@@ -148,6 +148,26 @@ def rollback(self, user, version):
148148
new_release.delete()
149149
raise
150150

151+
def delete(self, *args, **kwargs):
152+
"""Delete release DB record and any RCs from the affect release"""
153+
try:
154+
labels = {
155+
'app': self.app.id,
156+
'version': self.version
157+
}
158+
controllers = self._scheduler.get_rcs(self.app.id, labels=labels)
159+
for controller in controllers.json()['items']:
160+
self._scheduler._delete_rc(self.app.id, controller['metadata']['name'])
161+
except KubeHTTPException as e:
162+
# 404 means they were already cleaned up
163+
if e.status_code is not 404:
164+
# Another problem came up
165+
message = 'Could not to cleanup RCs for release {}'.format(self.version)
166+
log_event(self.app, message)
167+
logger.warning(message + ' - ' + str(e))
168+
finally:
169+
super(Release, self).delete(*args, **kwargs)
170+
151171
def save(self, *args, **kwargs): # noqa
152172
if not self.summary:
153173
self.summary = ''

0 commit comments

Comments
 (0)