diff --git a/api/azimuth/cluster_api/base.py b/api/azimuth/cluster_api/base.py index 2b9cb509..b83f896f 100644 --- a/api/azimuth/cluster_api/base.py +++ b/api/azimuth/cluster_api/base.py @@ -273,6 +273,7 @@ def _from_api_cluster(self, cluster, sizes): for ng in cluster.spec.get("nodeGroups", []) ], cluster.spec["autohealing"], + cluster_addons.get("dashboard", False), cluster_addons.get("ingress", False), cluster_addons.get("ingressControllerLoadBalancerIp"), cluster_addons.get("monitoring", False), @@ -382,6 +383,8 @@ def _build_cluster_spec(self, **options): if "autohealing_enabled" in options: spec["autohealing"] = options["autohealing_enabled"] addons = spec.setdefault("addons", {}) + if "dashboard_enabled" in options: + addons["dashboard"] = options["dashboard_enabled"] if "ingress_enabled" in options: addons["ingress"] = options["ingress_enabled"] if "ingress_controller_load_balancer_ip" in options: @@ -407,6 +410,7 @@ def create_cluster( node_groups: list[NodeGroupSpec], resources: scheduling_dto.PlatformResources, autohealing_enabled: bool = True, + dashboard_enabled: bool = False, ingress_enabled: bool = False, ingress_controller_load_balancer_ip: str | None = None, monitoring_enabled: bool = False, @@ -455,6 +459,7 @@ def create_cluster( control_plane_size=control_plane_size, node_groups=node_groups, autohealing_enabled=autohealing_enabled, + dashboard_enabled=dashboard_enabled, ingress_enabled=ingress_enabled, ingress_controller_load_balancer_ip=ingress_controller_load_balancer_ip, monitoring_enabled=monitoring_enabled, diff --git a/api/azimuth/cluster_api/dto.py b/api/azimuth/cluster_api/dto.py index 83f1d5eb..ee34897e 100644 --- a/api/azimuth/cluster_api/dto.py +++ b/api/azimuth/cluster_api/dto.py @@ -124,6 +124,8 @@ class Cluster: node_groups: list[NodeGroup] #: Indicates if autohealing is enabled autohealing_enabled: bool + #: Indicates if the Headlamp dashboard is enabled + dashboard_enabled: bool #: Indicates if ingress is enabled ingress_enabled: bool #: The IP address of the ingress controller load balancer diff --git a/api/azimuth/serializers.py b/api/azimuth/serializers.py index 023bab99..46e7e611 100644 --- a/api/azimuth/serializers.py +++ b/api/azimuth/serializers.py @@ -962,6 +962,7 @@ class CreateKubernetesClusterSerializer( control_plane_size = serializers.RegexField(ID_REGEX) node_groups = NodeGroupSpecSerializer(many=True) autohealing_enabled = serializers.BooleanField(default=True) + dashboard_enabled = serializers.BooleanField(default=False) ingress_enabled = serializers.BooleanField(default=False) ingress_controller_load_balancer_ip = serializers.IPAddressField( protocol="IPv4", allow_null=True, default=None @@ -987,6 +988,7 @@ class UpdateKubernetesClusterSerializer( control_plane_size = serializers.RegexField(ID_REGEX, required=False) node_groups = NodeGroupSpecSerializer(many=True, required=False) autohealing_enabled = serializers.BooleanField(required=False) + dashboard_enabled = serializers.BooleanField(required=False) ingress_enabled = serializers.BooleanField(required=False) ingress_controller_load_balancer_ip = serializers.IPAddressField( protocol="IPv4", allow_null=True, required=False diff --git a/ui/src/components/pages/tenancy/platforms/kubernetes/form.js b/ui/src/components/pages/tenancy/platforms/kubernetes/form.js index 36e25866..42db4e66 100644 --- a/ui/src/components/pages/tenancy/platforms/kubernetes/form.js +++ b/ui/src/components/pages/tenancy/platforms/kubernetes/form.js @@ -238,6 +238,7 @@ const initialState = kubernetesCluster => { max_count: ng.max_count })), autohealing_enabled: kubernetesCluster.autohealing_enabled, + dashboard_enabled: kubernetesCluster.dashboard_enabled, ingress_enabled: kubernetesCluster.ingress_enabled, ingress_controller_load_balancer_ip: kubernetesCluster.ingress_controller_load_balancer_ip, monitoring_enabled: kubernetesCluster.monitoring_enabled, @@ -253,6 +254,7 @@ const initialState = kubernetesCluster => { control_plane_size: '', node_groups: [], autohealing_enabled: true, + dashboard_enabled: true, ingress_enabled: false, ingress_controller_load_balancer_ip: null, monitoring_enabled: true, @@ -599,6 +601,16 @@ export const KubernetesClusterForm = ({ className="mb-3" > + + +