From 6b1a4b6389dda4d479af2944e1660c19f50fce25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCller?= Date: Mon, 1 Jun 2026 14:58:53 +0200 Subject: [PATCH 1/3] feat(stackablectl): check for namespace before attempting uninstall --- rust/stackablectl/src/cmds/demo.rs | 12 ++++++++++++ rust/stackablectl/src/cmds/stack.rs | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/rust/stackablectl/src/cmds/demo.rs b/rust/stackablectl/src/cmds/demo.rs index d01cf01b..2a7b5488 100644 --- a/rust/stackablectl/src/cmds/demo.rs +++ b/rust/stackablectl/src/cmds/demo.rs @@ -183,6 +183,11 @@ pub enum CmdError { demo_name: String, }, + #[snafu(display( + "demo {demo_name:?} cannot be uninstalled from the {DEFAULT_NAMESPACE:?} namespace, because Kubernetes does not allow deleting it. Pass --namespace if the demo was installed in a different namespace, or delete the demo's resources manually" + ))] + UninstallFromDefaultNamespace { demo_name: String }, + #[snafu(display("failed to build labels for demo resources"))] BuildLabels { source: LabelError }, @@ -525,6 +530,13 @@ async fn uninstall_cmd( // Init result output and progress output let mut output = Cli::result(); + ensure!( + args.namespaces.namespace != DEFAULT_NAMESPACE, + UninstallFromDefaultNamespaceSnafu { + demo_name: args.demo_name.clone(), + } + ); + let proceed_with_uninstall = args.prompt_args.assume_yes || { tracing_indicatif::suspend_tracing_indicatif(|| -> Result { diff --git a/rust/stackablectl/src/cmds/stack.rs b/rust/stackablectl/src/cmds/stack.rs index 11b7452a..d57f60a4 100644 --- a/rust/stackablectl/src/cmds/stack.rs +++ b/rust/stackablectl/src/cmds/stack.rs @@ -178,6 +178,11 @@ pub enum CmdError { stack_name: String, }, + #[snafu(display( + "stack {stack_name:?} cannot be uninstalled from the {DEFAULT_NAMESPACE:?} namespace, because Kubernetes does not allow deleting it. Pass --namespace if the stack was installed in a different namespace, or delete the stack's resources manually" + ))] + UninstallFromDefaultNamespace { stack_name: String }, + #[snafu(display("failed to build labels for stack resources"))] BuildLabels { source: LabelError }, @@ -496,6 +501,13 @@ async fn uninstall_cmd( ) -> Result { let mut output = Cli::result(); + ensure!( + args.namespaces.namespace != DEFAULT_NAMESPACE, + UninstallFromDefaultNamespaceSnafu { + stack_name: args.stack_name.clone(), + } + ); + let proceed_with_uninstall = args.prompt_args.assume_yes || tracing_indicatif::suspend_tracing_indicatif(|| -> Result { Confirm::new() From cd1c493a178bafb85eb21b8f0e108c2fc63ff3ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCller?= Date: Mon, 1 Jun 2026 17:04:17 +0200 Subject: [PATCH 2/3] chore: extend changelog --- rust/stackablectl/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 91507e68..e4adaa67 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -11,10 +11,12 @@ All notable changes to this project will be documented in this file. - Add confirmation prompt to `install` subcommand for namespace selection ([#429]). - Add `--assume-yes` option for running commands non-interactively ([#429]). - Support Helm charts sourced from OCI registries in demo/stack manifests ([#440]). +- Abort early if `uninstall` is issued for `default` namespace ([#442]). [#429]: https://github.com/stackabletech/stackable-cockpit/pull/429 [#438]: https://github.com/stackabletech/stackable-cockpit/pull/438 [#440]: https://github.com/stackabletech/stackable-cockpit/pull/440 +[#442]: https://github.com/stackabletech/stackable-cockpit/pull/442 ## [1.4.0] - 2026-03-18 From f686ef12b43d273cdf2ec660566b868b197e8057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCller?= Date: Mon, 1 Jun 2026 17:33:01 +0200 Subject: [PATCH 3/3] Update rust/stackablectl/CHANGELOG.md Co-authored-by: Xenia --- rust/stackablectl/CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index e4adaa67..25c586f9 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -11,6 +11,9 @@ All notable changes to this project will be documented in this file. - Add confirmation prompt to `install` subcommand for namespace selection ([#429]). - Add `--assume-yes` option for running commands non-interactively ([#429]). - Support Helm charts sourced from OCI registries in demo/stack manifests ([#440]). + +### Changed + - Abort early if `uninstall` is issued for `default` namespace ([#442]). [#429]: https://github.com/stackabletech/stackable-cockpit/pull/429