55 "fmt"
66
77 redisv1beta2 "github.com/OT-CONTAINER-KIT/redis-operator/api/v1beta2"
8+ corev1 "k8s.io/api/core/v1"
89 "k8s.io/apimachinery/pkg/api/errors"
910 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
10- "k8s.io/client-go/kubernetes"
1111 "k8s.io/utils/env"
1212 "sigs.k8s.io/controller-runtime/pkg/client"
1313 "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -22,16 +22,16 @@ const (
2222)
2323
2424// HandleRedisFinalizer finalize resource if instance is marked to be deleted
25- func HandleRedisFinalizer (ctx context.Context , ctrlclient client.Client , k8sClient kubernetes. Interface , cr * redisv1beta2.Redis ) error {
25+ func HandleRedisFinalizer (ctx context.Context , ctrlclient client.Client , cr * redisv1beta2.Redis ) error {
2626 if cr .GetDeletionTimestamp () != nil {
2727 if controllerutil .ContainsFinalizer (cr , RedisFinalizer ) {
2828 if cr .Spec .Storage != nil && ! cr .Spec .Storage .KeepAfterDelete {
29- if err := finalizeRedisPVC (ctx , k8sClient , cr ); err != nil {
29+ if err := finalizeRedisPVC (ctx , ctrlclient , cr ); err != nil {
3030 return err
3131 }
3232 }
3333 controllerutil .RemoveFinalizer (cr , RedisFinalizer )
34- if err := ctrlclient .Update (context . TODO () , cr ); err != nil {
34+ if err := ctrlclient .Update (ctx , cr ); err != nil {
3535 log .FromContext (ctx ).Error (err , "Could not remove finalizer" , "finalizer" , RedisFinalizer )
3636 return err
3737 }
@@ -41,16 +41,16 @@ func HandleRedisFinalizer(ctx context.Context, ctrlclient client.Client, k8sClie
4141}
4242
4343// HandleRedisClusterFinalizer finalize resource if instance is marked to be deleted
44- func HandleRedisClusterFinalizer (ctx context.Context , ctrlclient client.Client , k8sClient kubernetes. Interface , cr * redisv1beta2.RedisCluster ) error {
44+ func HandleRedisClusterFinalizer (ctx context.Context , ctrlclient client.Client , cr * redisv1beta2.RedisCluster ) error {
4545 if cr .GetDeletionTimestamp () != nil {
4646 if controllerutil .ContainsFinalizer (cr , RedisClusterFinalizer ) {
4747 if cr .Spec .Storage != nil && ! cr .Spec .Storage .KeepAfterDelete {
48- if err := finalizeRedisClusterPVC (ctx , k8sClient , cr ); err != nil {
48+ if err := finalizeRedisClusterPVC (ctx , ctrlclient , cr ); err != nil {
4949 return err
5050 }
5151 }
5252 controllerutil .RemoveFinalizer (cr , RedisClusterFinalizer )
53- if err := ctrlclient .Update (context . TODO () , cr ); err != nil {
53+ if err := ctrlclient .Update (ctx , cr ); err != nil {
5454 log .FromContext (ctx ).Error (err , "Could not remove finalizer " + RedisClusterFinalizer )
5555 return err
5656 }
@@ -60,16 +60,16 @@ func HandleRedisClusterFinalizer(ctx context.Context, ctrlclient client.Client,
6060}
6161
6262// Handle RedisReplicationFinalizer finalize resource if instance is marked to be deleted
63- func HandleRedisReplicationFinalizer (ctx context.Context , ctrlclient client.Client , k8sClient kubernetes. Interface , cr * redisv1beta2.RedisReplication ) error {
63+ func HandleRedisReplicationFinalizer (ctx context.Context , ctrlclient client.Client , cr * redisv1beta2.RedisReplication ) error {
6464 if cr .GetDeletionTimestamp () != nil {
6565 if controllerutil .ContainsFinalizer (cr , RedisReplicationFinalizer ) {
6666 if cr .Spec .Storage != nil && ! cr .Spec .Storage .KeepAfterDelete {
67- if err := finalizeRedisReplicationPVC (ctx , k8sClient , cr ); err != nil {
67+ if err := finalizeRedisReplicationPVC (ctx , ctrlclient , cr ); err != nil {
6868 return err
6969 }
7070 }
7171 controllerutil .RemoveFinalizer (cr , RedisReplicationFinalizer )
72- if err := ctrlclient .Update (context . TODO () , cr ); err != nil {
72+ if err := ctrlclient .Update (ctx , cr ); err != nil {
7373 log .FromContext (ctx ).Error (err , "Could not remove finalizer " + RedisReplicationFinalizer )
7474 return err
7575 }
@@ -83,7 +83,7 @@ func HandleRedisSentinelFinalizer(ctx context.Context, ctrlclient client.Client,
8383 if cr .GetDeletionTimestamp () != nil {
8484 if controllerutil .ContainsFinalizer (cr , RedisSentinelFinalizer ) {
8585 controllerutil .RemoveFinalizer (cr , RedisSentinelFinalizer )
86- if err := ctrlclient .Update (context . TODO () , cr ); err != nil {
86+ if err := ctrlclient .Update (ctx , cr ); err != nil {
8787 log .FromContext (ctx ).Error (err , "Could not remove finalizer " + RedisSentinelFinalizer )
8888 return err
8989 }
@@ -96,16 +96,22 @@ func HandleRedisSentinelFinalizer(ctx context.Context, ctrlclient client.Client,
9696func AddFinalizer (ctx context.Context , cr client.Object , finalizer string , cl client.Client ) error {
9797 if ! controllerutil .ContainsFinalizer (cr , finalizer ) {
9898 controllerutil .AddFinalizer (cr , finalizer )
99- return cl .Update (context . TODO () , cr )
99+ return cl .Update (ctx , cr )
100100 }
101101 return nil
102102}
103103
104104// finalizeRedisPVC delete PVC
105- func finalizeRedisPVC (ctx context.Context , client kubernetes. Interface , cr * redisv1beta2.Redis ) error {
105+ func finalizeRedisPVC (ctx context.Context , client client. Client , cr * redisv1beta2.Redis ) error {
106106 pvcTemplateName := env .GetString (EnvOperatorSTSPVCTemplateName , cr .Name )
107107 PVCName := fmt .Sprintf ("%s-%s-0" , pvcTemplateName , cr .Name )
108- err := client .CoreV1 ().PersistentVolumeClaims (cr .Namespace ).Delete (context .TODO (), PVCName , metav1.DeleteOptions {})
108+ pvc := & corev1.PersistentVolumeClaim {
109+ ObjectMeta : metav1.ObjectMeta {
110+ Namespace : cr .Namespace ,
111+ Name : PVCName ,
112+ },
113+ }
114+ err := client .Delete (ctx , pvc )
109115 if err != nil && ! errors .IsNotFound (err ) {
110116 log .FromContext (ctx ).Error (err , "Could not delete Persistent Volume Claim" , "PVCName" , PVCName )
111117 return err
@@ -114,12 +120,18 @@ func finalizeRedisPVC(ctx context.Context, client kubernetes.Interface, cr *redi
114120}
115121
116122// finalizeRedisClusterPVC delete PVCs
117- func finalizeRedisClusterPVC (ctx context.Context , client kubernetes. Interface , cr * redisv1beta2.RedisCluster ) error {
123+ func finalizeRedisClusterPVC (ctx context.Context , client client. Client , cr * redisv1beta2.RedisCluster ) error {
118124 for _ , role := range []string {"leader" , "follower" } {
119125 for i := 0 ; i < int (cr .Spec .GetReplicaCounts (role )); i ++ {
120126 pvcTemplateName := env .GetString (EnvOperatorSTSPVCTemplateName , cr .Name + "-" + role )
121127 PVCName := fmt .Sprintf ("%s-%s-%s-%d" , pvcTemplateName , cr .Name , role , i )
122- err := client .CoreV1 ().PersistentVolumeClaims (cr .Namespace ).Delete (context .TODO (), PVCName , metav1.DeleteOptions {})
128+ pvc := & corev1.PersistentVolumeClaim {
129+ ObjectMeta : metav1.ObjectMeta {
130+ Namespace : cr .Namespace ,
131+ Name : PVCName ,
132+ },
133+ }
134+ err := client .Delete (ctx , pvc )
123135 if err != nil && ! errors .IsNotFound (err ) {
124136 log .FromContext (ctx ).Error (err , "Could not delete Persistent Volume Claim " + PVCName )
125137 return err
@@ -128,7 +140,13 @@ func finalizeRedisClusterPVC(ctx context.Context, client kubernetes.Interface, c
128140 if cr .Spec .Storage .NodeConfVolume {
129141 for i := 0 ; i < int (cr .Spec .GetReplicaCounts (role )); i ++ {
130142 PVCName := fmt .Sprintf ("%s-%s-%s-%d" , "node-conf" , cr .Name , role , i )
131- err := client .CoreV1 ().PersistentVolumeClaims (cr .Namespace ).Delete (context .TODO (), PVCName , metav1.DeleteOptions {})
143+ pvc := & corev1.PersistentVolumeClaim {
144+ ObjectMeta : metav1.ObjectMeta {
145+ Namespace : cr .Namespace ,
146+ Name : PVCName ,
147+ },
148+ }
149+ err := client .Delete (ctx , pvc )
132150 if err != nil && ! errors .IsNotFound (err ) {
133151 log .FromContext (ctx ).Error (err , "Could not delete Persistent Volume Claim " + PVCName )
134152 return err
@@ -140,11 +158,17 @@ func finalizeRedisClusterPVC(ctx context.Context, client kubernetes.Interface, c
140158}
141159
142160// finalizeRedisReplicationPVC delete PVCs
143- func finalizeRedisReplicationPVC (ctx context.Context , client kubernetes. Interface , cr * redisv1beta2.RedisReplication ) error {
161+ func finalizeRedisReplicationPVC (ctx context.Context , client client. Client , cr * redisv1beta2.RedisReplication ) error {
144162 for i := 0 ; i < int (cr .Spec .GetReplicationCounts ("replication" )); i ++ {
145163 pvcTemplateName := env .GetString (EnvOperatorSTSPVCTemplateName , cr .Name )
146164 PVCName := fmt .Sprintf ("%s-%s-%d" , pvcTemplateName , cr .Name , i )
147- err := client .CoreV1 ().PersistentVolumeClaims (cr .Namespace ).Delete (context .TODO (), PVCName , metav1.DeleteOptions {})
165+ pvc := & corev1.PersistentVolumeClaim {
166+ ObjectMeta : metav1.ObjectMeta {
167+ Namespace : cr .Namespace ,
168+ Name : PVCName ,
169+ },
170+ }
171+ err := client .Delete (ctx , pvc )
148172 if err != nil && ! errors .IsNotFound (err ) {
149173 log .FromContext (ctx ).Error (err , "Could not delete Persistent Volume Claim " + PVCName )
150174 return err
0 commit comments