From 9205d367bd14e3aab2f4ae7abafc944ffdc876ba Mon Sep 17 00:00:00 2001 From: Jan Safranek Date: Mon, 29 Jul 2024 14:39:32 +0200 Subject: [PATCH] WIP: remove protection finalizer correctly Bump sig-storage-lib-external-provisioner to remove PV protection finalizer correctly. --- go.mod | 2 ++ go.sum | 4 ++-- vendor/modules.txt | 3 ++- .../v10/controller/controller.go | 23 ++++++++----------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/go.mod b/go.mod index 9ca5b9231c..569dad36f6 100644 --- a/go.mod +++ b/go.mod @@ -191,3 +191,5 @@ replace k8s.io/mount-utils => k8s.io/mount-utils v0.30.0 replace k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.30.0 replace k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.30.0 + +replace sigs.k8s.io/sig-storage-lib-external-provisioner/v10 => github.com/jsafrane/sig-storage-lib-external-provisioner/v10 v10.0.0-20240729124546-527f63708d4d diff --git a/go.sum b/go.sum index 7ec2897390..5dd3da5b53 100644 --- a/go.sum +++ b/go.sum @@ -101,6 +101,8 @@ github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9q github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/jsafrane/sig-storage-lib-external-provisioner/v10 v10.0.0-20240729124546-527f63708d4d h1:+wVBX0EMKljd61qe+CyMq/dzJIMoygUt4ZfiNtL5Fuc= +github.com/jsafrane/sig-storage-lib-external-provisioner/v10 v10.0.0-20240729124546-527f63708d4d/go.mod h1:mfQ2enu5yAHUhpNWsce9NmkqkRQsk70zQT+7KjZ+JMo= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -346,8 +348,6 @@ sigs.k8s.io/gateway-api v1.1.0 h1:DsLDXCi6jR+Xz8/xd0Z1PYl2Pn0TyaFMOPPZIj4inDM= sigs.k8s.io/gateway-api v1.1.0/go.mod h1:ZH4lHrL2sDi0FHZ9jjneb8kKnGzFWyrTya35sWUTrRs= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/sig-storage-lib-external-provisioner/v10 v10.0.0 h1:+OhFU21hL9Gq/sHKHfYxbc7M6RWV3UqTpnk5/wF9cP4= -sigs.k8s.io/sig-storage-lib-external-provisioner/v10 v10.0.0/go.mod h1:mfQ2enu5yAHUhpNWsce9NmkqkRQsk70zQT+7KjZ+JMo= sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= diff --git a/vendor/modules.txt b/vendor/modules.txt index bda12546c5..3d191abb87 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1495,7 +1495,7 @@ sigs.k8s.io/gateway-api/pkg/client/listers/apis/v1beta1 ## explicit; go 1.18 sigs.k8s.io/json sigs.k8s.io/json/internal/golang/encoding/json -# sigs.k8s.io/sig-storage-lib-external-provisioner/v10 v10.0.0 +# sigs.k8s.io/sig-storage-lib-external-provisioner/v10 v10.0.0 => github.com/jsafrane/sig-storage-lib-external-provisioner/v10 v10.0.0-20240729124546-527f63708d4d ## explicit; go 1.22.0 sigs.k8s.io/sig-storage-lib-external-provisioner/v10/controller sigs.k8s.io/sig-storage-lib-external-provisioner/v10/controller/metrics @@ -1539,3 +1539,4 @@ sigs.k8s.io/yaml/goyaml.v2 # k8s.io/mount-utils => k8s.io/mount-utils v0.30.0 # k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.30.0 # k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.30.0 +# sigs.k8s.io/sig-storage-lib-external-provisioner/v10 => github.com/jsafrane/sig-storage-lib-external-provisioner/v10 v10.0.0-20240729124546-527f63708d4d diff --git a/vendor/sigs.k8s.io/sig-storage-lib-external-provisioner/v10/controller/controller.go b/vendor/sigs.k8s.io/sig-storage-lib-external-provisioner/v10/controller/controller.go index 194f6dae74..0b33f66181 100644 --- a/vendor/sigs.k8s.io/sig-storage-lib-external-provisioner/v10/controller/controller.go +++ b/vendor/sigs.k8s.io/sig-storage-lib-external-provisioner/v10/controller/controller.go @@ -54,7 +54,7 @@ import ( "k8s.io/client-go/tools/record" ref "k8s.io/client-go/tools/reference" "k8s.io/client-go/util/workqueue" - "k8s.io/klog/v2" + klog "k8s.io/klog/v2" "sigs.k8s.io/sig-storage-lib-external-provisioner/v10/controller/metrics" "sigs.k8s.io/sig-storage-lib-external-provisioner/v10/util" ) @@ -1589,7 +1589,6 @@ func (ctrl *ProvisionController) deleteVolumeOperation(ctx context.Context, volu return fmt.Errorf("expected volume but got %+v", volumeObj) } finalizers, modified := removeFinalizer(newVolume.ObjectMeta.Finalizers, finalizerPV) - // Only update the finalizers if we actually removed something if modified { if _, err = ctrl.patchPersistentVolumeWithFinalizers(ctx, newVolume, finalizers); err != nil { @@ -1608,23 +1607,21 @@ func (ctrl *ProvisionController) deleteVolumeOperation(ctx context.Context, volu return nil } -// removeFinalizer removes finalizer from slice, returns slice and whether modified. +// removeFinalizer removes finalizer from slice, returns the new slice and whether modified. +// It does not modify the original slice. func removeFinalizer(finalizers []string, finalizerToRemove string) ([]string, bool) { - for i, finalizer := range finalizers { - if finalizer == finalizerToRemove { - finalizers = append(finalizers[:i], finalizers[i+1:]...) - if len(finalizers) == 0 { - finalizers = nil - } - return finalizers, true + ret := make([]string, 0, len(finalizers)) + for _, finalizer := range finalizers { + if finalizer != finalizerToRemove { + ret = append(ret, finalizer) } } - if len(finalizers) == 0 { - finalizers = nil + if len(ret) == 0 { + ret = nil } - return finalizers, false + return ret, len(ret) != len(finalizers) } // addFinalizer adds finalizer to slice, returns slice and whether modified.