diff --git a/pkg/apiserver/domain/service/cluster.go b/pkg/apiserver/domain/service/cluster.go index 8962567d8..49361a13e 100644 --- a/pkg/apiserver/domain/service/cluster.go +++ b/pkg/apiserver/domain/service/cluster.go @@ -387,7 +387,10 @@ func (c *clusterServiceImpl) DeleteKubeCluster(ctx context.Context, clusterName cluster, err := c.getClusterFromDataStore(ctx, clusterName) if err != nil { if errors.Is(err, datastore.ErrRecordNotExist) { - return nil, bcode.ErrClusterNotFoundInDataStore + if err = multicluster.DetachCluster(ctx, c.K8sClient, clusterName); err != nil { + return nil, bcode.ErrClusterNotFoundInDataStore + } + return &apis.ClusterBase{Name: clusterName}, nil } return nil, errors.Wrapf(err, "failed to found cluster %s in data store", clusterName) } diff --git a/pkg/apiserver/domain/service/cluster_test.go b/pkg/apiserver/domain/service/cluster_test.go index 680d3a256..5cf645666 100644 --- a/pkg/apiserver/domain/service/cluster_test.go +++ b/pkg/apiserver/domain/service/cluster_test.go @@ -98,6 +98,27 @@ var _ = Describe("Test cluster service function", func() { Expect(err).Should(Equal(bcode.ErrClusterNotFoundInDataStore)) }) + It("Test delete kube cluster", func() { + service := clusterServiceImpl{ + Store: ds, + caches: cache, + K8sClient: k8sClient, + } + Expect(createClusterSecret("prism-cluster", "prism-alias")).Should(Succeed()) + Expect(ds.Add(ctx, &model.Cluster{Name: "prism-cluster", Alias: "prism-alias", Icon: "prism-icon"})).Should(Succeed()) + resp, err := service.DeleteKubeCluster(ctx, "prism-cluster") + Expect(err).Should(Succeed()) + Expect(resp.Name).Should(Equal("prism-cluster")) + Expect(resp.Alias).Should(Equal("prism-alias")) + Expect(resp.Icon).Should(Equal("prism-icon")) + _, err = service.DeleteKubeCluster(ctx, "non-exist-cluster") + Expect(err).Should(Equal(bcode.ErrClusterNotFoundInDataStore)) + Expect(createClusterSecret("secret-exist-cm-non-exist-cluster", "secret-exist-cm-non-exist-cluster")).Should(Succeed()) + resp, err = service.DeleteKubeCluster(ctx, "secret-exist-cm-non-exist-cluster") + Expect(err).Should(Succeed()) + Expect(resp.Name).Should(Equal("secret-exist-cm-non-exist-cluster")) + }) + It("Test list kube clusters", func() { service := clusterServiceImpl{ Store: ds,