Skip to content

Commit 0294637

Browse files
committed
fix(controller): allowlist cannot remove
1 parent 39e392a commit 0294637

3 files changed

Lines changed: 10 additions & 12 deletions

File tree

rootfs/api/models/app.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -181,17 +181,15 @@ def _refresh_certificate(self, certs_auto_enabled, hosts):
181181
elif data:
182182
self._scheduler.certificate.delete(namespace, name)
183183

184-
def _refresh_ingress(self, hosts, tls_map, ssl_redirect):
184+
def _refresh_ingress(self, hosts, tls_map, ssl_redirect, appsettings):
185185
ingress = namespace = self.id
186186
# Put Ingress
187187
kwargs = {
188188
"hosts": hosts,
189189
"tls": [{"secretName": k, "hosts": v} for k, v in tls_map.items()],
190-
"ssl_redirect": ssl_redirect
190+
"ssl_redirect": ssl_redirect,
191+
"allowlist": appsettings.allowlist
191192
}
192-
allowlist = self.appsettings_set.latest().allowlist
193-
if allowlist:
194-
kwargs.update({"allowlist": allowlist})
195193
try:
196194
# In order to create an ingress, we must first have a namespace.
197195
if ingress == "":
@@ -209,13 +207,13 @@ def _refresh_ingress(self, hosts, tls_map, ssl_redirect):
209207
except KubeException as e:
210208
raise ServiceUnavailable('Could not create Ingress in Kubernetes') from e
211209

212-
def refresh(self, app_settings=None):
210+
def refresh(self, app_settings=None, tls=None):
213211
if not getattr(self, 'refresh_enabled', True):
214212
return
215-
app_settings = app_settings if not app_settings else self.appsettings_set.latest()
213+
app_settings = app_settings if app_settings else self.appsettings_set.latest()
216214
if not app_settings.routable:
217215
return
218-
tls = self.tls_set.latest()
216+
tls = tls if tls else self.tls_set.latest()
219217
ssl_redirect = bool(tls.https_enforced)
220218
certs_auto_enabled = bool(tls.certs_auto_enabled)
221219
hosts, tls_map = [], defaultdict(list)
@@ -228,7 +226,7 @@ def refresh(self, app_settings=None):
228226
if certs_auto_enabled and not domain.domain.startswith("*."):
229227
secret_name = '%s-certificate-auto' % self.id
230228
tls_map[secret_name].append(host)
231-
self._refresh_ingress(hosts, dict(tls_map), ssl_redirect)
229+
self._refresh_ingress(hosts, dict(tls_map), ssl_redirect, app_settings)
232230
self._refresh_certificate(certs_auto_enabled, hosts)
233231

234232
def log(self, message, level=logging.INFO):

rootfs/api/models/tls.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def save(self, *args, **kwargs):
4949
# Save to DB
5050
return super(TLS, self).save(*args, **kwargs)
5151
finally:
52-
self.app.refresh()
52+
self.app.refresh(tls=self)
5353

5454
def sync(self):
55-
self.app.refresh()
55+
self.app.refresh(tls=self)

rootfs/scheduler/resources/ingress/traefik.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ def create(self, namespace, ingress, **kwargs):
152152

153153
def put(self, namespace, ingress, version, **kwargs):
154154
response = super().put(ingress, namespace, version, **kwargs)
155-
if "allowlist" in kwargs and kwargs["allowlist"]:
155+
if "allowlist" in kwargs:
156156
self.ip_white_list.put(
157157
namespace, self.ip_white_list.fullname(ingress), allowlist=kwargs["allowlist"])
158158
return response

0 commit comments

Comments
 (0)