From d9219da46941b16d8259b3fc6d40445e7c9c33ee Mon Sep 17 00:00:00 2001 From: nightcityblade Date: Thu, 23 Jul 2026 02:58:52 +0800 Subject: [PATCH] Fix cluster delete for missing clusters (#1051) * Fix cluster delete for missing clusters Signed-off-by: nightcityblade * Adjust missing cluster error message --------- Signed-off-by: nightcityblade Co-authored-by: nightcityblade --- cli/cmds/cluster_delete.go | 13 +++++++++++-- cli/cmds/cluster_delete_test.go | 22 ++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 cli/cmds/cluster_delete_test.go diff --git a/cli/cmds/cluster_delete.go b/cli/cmds/cluster_delete.go index 89c63b39..273890bc 100644 --- a/cli/cmds/cluster_delete.go +++ b/cli/cmds/cluster_delete.go @@ -3,6 +3,7 @@ package cmds import ( "context" "errors" + "fmt" "github.com/sirupsen/logrus" "github.com/spf13/cobra" @@ -48,14 +49,22 @@ func delete(appCtx *AppContext) func(cmd *cobra.Command, args []string) error { namespace := appCtx.Namespace(name) - logrus.Infof("Deleting '%s' cluster in namespace '%s'", name, namespace) - cluster := v1beta1.Cluster{ ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: namespace, }, } + if err := client.Get(ctx, ctrlclient.ObjectKeyFromObject(&cluster), &cluster); err != nil { + if apierrors.IsNotFound(err) { + return fmt.Errorf("cluster %q not found in namespace %q", name, namespace) + } + + return err + } + + logrus.Infof("Deleting '%s' cluster in namespace '%s'", name, namespace) + // keep bootstrap secrets and tokens if --keep-data flag is passed if keepData { // skip removing tokenSecret diff --git a/cli/cmds/cluster_delete_test.go b/cli/cmds/cluster_delete_test.go new file mode 100644 index 00000000..298d14bb --- /dev/null +++ b/cli/cmds/cluster_delete_test.go @@ -0,0 +1,22 @@ +package cmds + +import ( + "testing" + + "github.com/spf13/cobra" + "github.com/stretchr/testify/require" + "k8s.io/apimachinery/pkg/runtime" + "sigs.k8s.io/controller-runtime/pkg/client/fake" + + "github.com/rancher/k3k/pkg/apis/k3k.io/v1beta1" +) + +func TestDeleteMissingCluster(t *testing.T) { + scheme := runtime.NewScheme() + require.NoError(t, v1beta1.AddToScheme(scheme)) + + appCtx := &AppContext{Client: fake.NewClientBuilder().WithScheme(scheme).Build()} + err := delete(appCtx)(&cobra.Command{}, []string{"missing"}) + + require.EqualError(t, err, `cluster "missing" not found in namespace "k3k-missing"`) +}