From 03bd99f01da423a7f3de790efc432c02f70be269 Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Fri, 28 Mar 2025 11:27:54 +0200 Subject: [PATCH 1/2] feat: add support for Deployments --- crates/stackable-operator/CHANGELOG.md | 6 +++++ .../src/cluster_resources.rs | 27 ++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/crates/stackable-operator/CHANGELOG.md b/crates/stackable-operator/CHANGELOG.md index bfc1d698d..509982c37 100644 --- a/crates/stackable-operator/CHANGELOG.md +++ b/crates/stackable-operator/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Added + +- Make Deployments to ClusterResources ([#992]). + +[#992]: https://github.com/stackabletech/operator-rs/pull/992 + ## [0.87.5] - 2025-03-19 ### Fixed diff --git a/crates/stackable-operator/src/cluster_resources.rs b/crates/stackable-operator/src/cluster_resources.rs index dd4fad75c..03dc2d9da 100644 --- a/crates/stackable-operator/src/cluster_resources.rs +++ b/crates/stackable-operator/src/cluster_resources.rs @@ -7,7 +7,9 @@ use std::{ use k8s_openapi::{ api::{ - apps::v1::{DaemonSet, DaemonSetSpec, StatefulSet, StatefulSetSpec}, + apps::v1::{ + DaemonSet, DaemonSetSpec, Deployment, DeploymentSpec, StatefulSet, StatefulSetSpec, + }, batch::v1::Job, core::v1::{ ConfigMap, ObjectReference, PodSpec, PodTemplateSpec, Secret, Service, ServiceAccount, @@ -279,6 +281,29 @@ impl ClusterResource for DaemonSet { } } +impl ClusterResource for Deployment { + fn maybe_mutate(self, strategy: &ClusterResourceApplyStrategy) -> Self { + match strategy { + ClusterResourceApplyStrategy::ClusterStopped => Deployment { + spec: Some(DeploymentSpec { + replicas: Some(0), + ..self.spec.unwrap_or_default() + }), + ..self + }, + ClusterResourceApplyStrategy::Default + | ClusterResourceApplyStrategy::ReconciliationPaused + | ClusterResourceApplyStrategy::NoApply => self, + } + } + + fn pod_spec(&self) -> Option<&PodSpec> { + self.spec + .as_ref() + .and_then(|spec| spec.template.spec.as_ref()) + } +} + /// A structure containing the cluster resources. /// /// Cluster resources can be added and orphaned resources are deleted. A cluster resource becomes From 768e21b8535f10f16532e1e5b2e4ba8996d8bd7e Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Fri, 28 Mar 2025 11:28:17 +0100 Subject: [PATCH 2/2] Update crates/stackable-operator/CHANGELOG.md Co-authored-by: Sebastian Bernauer --- crates/stackable-operator/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/stackable-operator/CHANGELOG.md b/crates/stackable-operator/CHANGELOG.md index 509982c37..d674fc2a7 100644 --- a/crates/stackable-operator/CHANGELOG.md +++ b/crates/stackable-operator/CHANGELOG.md @@ -6,7 +6,7 @@ All notable changes to this project will be documented in this file. ### Added -- Make Deployments to ClusterResources ([#992]). +- Add Deployments to `ClusterResource`s ([#992]). [#992]: https://github.com/stackabletech/operator-rs/pull/992