You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2023/06/08 08:28:06 UTC

[shardingsphere-on-cloud] branch main updated: feat: add CloudNative PG finalize

This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/shardingsphere-on-cloud.git


The following commit(s) were added to refs/heads/main by this push:
     new 161fb97  feat: add CloudNative PG finalize
     new 857be0e  Merge pull request #406 from mlycore/finalize-cnpg
161fb97 is described below

commit 161fb9771bc9df7eb02d4fad86d3184e34be187b
Author: mlycore <ma...@126.com>
AuthorDate: Thu Jun 8 16:15:37 2023 +0800

    feat: add CloudNative PG finalize
    
    Signed-off-by: mlycore <ma...@126.com>
---
 .../pkg/controllers/storage_node_controller.go     | 30 ++++++++++++++++++++++
 .../kubernetes/cloudnative-pg/cloudnative-pg.go    |  1 +
 2 files changed, 31 insertions(+)

diff --git a/shardingsphere-operator/pkg/controllers/storage_node_controller.go b/shardingsphere-operator/pkg/controllers/storage_node_controller.go
index 178042c..9713ce0 100644
--- a/shardingsphere-operator/pkg/controllers/storage_node_controller.go
+++ b/shardingsphere-operator/pkg/controllers/storage_node_controller.go
@@ -41,6 +41,7 @@ import (
 	"k8s.io/utils/strings/slices"
 	ctrl "sigs.k8s.io/controller-runtime"
 	"sigs.k8s.io/controller-runtime/pkg/client"
+	"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
 )
 
 const (
@@ -108,10 +109,39 @@ func (r *StorageNodeReconciler) Reconcile(ctx context.Context, req ctrl.Request)
 	return r.reconcile(ctx, storageProvider, node)
 }
 
+func (r *StorageNodeReconciler) finalizeCloudNativePG(ctx context.Context, node *v1alpha1.StorageNode, storageProvider *v1alpha1.StorageProvider) (ctrl.Result, error) {
+	namespacedName := types.NamespacedName{
+		Name:      node.Name,
+		Namespace: node.Namespace,
+	}
+
+	cluster, err := r.CNPG.GetClusterByNamespacedName(ctx, namespacedName)
+	if err != nil {
+		return ctrl.Result{Requeue: true}, err
+	}
+
+	if cluster != nil {
+		if err := r.CNPG.Delete(ctx, cluster); err != nil {
+			return ctrl.Result{Requeue: true}, err
+		}
+	}
+
+	controllerutil.RemoveFinalizer(node, ChaosFinalizerName)
+	if err := r.Update(ctx, node); err != nil {
+		return ctrl.Result{}, err
+	}
+
+	return ctrl.Result{RequeueAfter: defaultRequeueTime}, nil
+}
+
 func (r *StorageNodeReconciler) finalize(ctx context.Context, node *v1alpha1.StorageNode, storageProvider *v1alpha1.StorageProvider) (ctrl.Result, error) {
 	var err error
 	var oldStatus = node.Status.DeepCopy()
 
+	if storageProvider.Spec.Provisioner == v1alpha1.ProvisionerCloudNativePG {
+		return r.finalizeCloudNativePG(ctx, node, storageProvider)
+	}
+
 	switch node.Status.Phase {
 	case v1alpha1.StorageNodePhaseReady, v1alpha1.StorageNodePhaseNotReady:
 		// set storage node status to deleting
diff --git a/shardingsphere-operator/pkg/kubernetes/cloudnative-pg/cloudnative-pg.go b/shardingsphere-operator/pkg/kubernetes/cloudnative-pg/cloudnative-pg.go
index 45a9b55..8036526 100644
--- a/shardingsphere-operator/pkg/kubernetes/cloudnative-pg/cloudnative-pg.go
+++ b/shardingsphere-operator/pkg/kubernetes/cloudnative-pg/cloudnative-pg.go
@@ -68,6 +68,7 @@ type Getter interface {
 type Setter interface {
 	Create(context.Context, *cnpgv1.Cluster) error
 	Update(context.Context, *cnpgv1.Cluster) error
+	Delete(context.Context, *cnpgv1.Cluster) error
 }
 
 type getter struct {