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 {