Skip to content

Commit d3348f1

Browse files
committed
fix(controller): domains update error
1 parent 0294637 commit d3348f1

2 files changed

Lines changed: 13 additions & 4 deletions

File tree

rootfs/api/models/app.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ def _refresh_ingress(self, hosts, tls_map, ssl_redirect, appsettings):
207207
except KubeException as e:
208208
raise ServiceUnavailable('Could not create Ingress in Kubernetes') from e
209209

210-
def refresh(self, app_settings=None, tls=None):
210+
def refresh(self, app_settings=None, tls=None, domains=None):
211211
if not getattr(self, 'refresh_enabled', True):
212212
return
213213
app_settings = app_settings if app_settings else self.appsettings_set.latest()
@@ -217,7 +217,8 @@ def refresh(self, app_settings=None, tls=None):
217217
ssl_redirect = bool(tls.https_enforced)
218218
certs_auto_enabled = bool(tls.certs_auto_enabled)
219219
hosts, tls_map = [], defaultdict(list)
220-
for domain in Domain.objects.filter(app=self):
220+
domains = domains if domains else Domain.objects.filter(app=self)
221+
for domain in domains:
221222
host = str(domain.domain)
222223
hosts.append(host)
223224
if domain.certificate:

rootfs/api/models/domain.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,30 @@ class Meta:
2727

2828
@transaction.atomic
2929
def save(self, *args, **kwargs):
30+
domains = list(self.app.domain_set.all())
31+
# certificate attach update domains
32+
if self in domains:
33+
domains.remove(self)
34+
domains.append(self)
3035
try:
3136
# Save to DB
3237
return super(Domain, self).save(*args, **kwargs)
3338
finally:
34-
self.app.refresh()
39+
self.app.refresh(domains=domains)
3540

3641
@transaction.atomic
3742
def delete(self, *args, **kwargs):
3843
# Deatch cert, updates k8s
3944
if self.certificate:
4045
self.certificate.detach(domain=str(self.domain))
46+
domains = list(self.app.domain_set.all())
47+
if self in domains:
48+
domains.remove(self)
4149
try:
4250
# Delete from DB
4351
return super(Domain, self).delete(*args, **kwargs)
4452
finally:
45-
self.app.refresh()
53+
self.app.refresh(domains=domains)
4654

4755
def __str__(self):
4856
return self.domain

0 commit comments

Comments
 (0)