diff --git a/cluster/cluster_api.py b/cluster/cluster_api.py index 1362c0b..4349a07 100644 --- a/cluster/cluster_api.py +++ b/cluster/cluster_api.py @@ -101,6 +101,10 @@ def get_worker(request): success = False cluster_settings, created = ClusterSettings.objects.get_or_create(name='cluster_settings') + if not settings.WIREGUARD_STATUS_CACHE_ENABLED and cluster_settings.enabled: + cluster_settings.enabled = False + cluster_settings.save() + if cluster_settings.enabled: if worker.error_status == 'cluster_disabled': worker.error_status = '' diff --git a/cluster/forms.py b/cluster/forms.py index 3afc4b1..bcd193e 100644 --- a/cluster/forms.py +++ b/cluster/forms.py @@ -1,6 +1,7 @@ from crispy_forms.helper import FormHelper from crispy_forms.layout import Column, HTML, Layout, Row, Submit from django import forms +from django.conf import settings from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ @@ -130,6 +131,10 @@ class ClusterSettingsForm(forms.ModelForm): def clean(self): cleaned_data = super().clean() primary_enable_wireguard = cleaned_data.get('primary_enable_wireguard') + cluster_enabled = cleaned_data.get('enabled') + + if cluster_enabled and not settings.WIREGUARD_STATUS_CACHE_ENABLED: + raise ValidationError(_("Cluster mode requires WireGuard status cache to be enabled.")) if not primary_enable_wireguard: raise ValidationError(_("Disabling WireGuard on the master server is currently not supported."))