Skip to content

Commit 3c32e28

Browse files
authored
Merge pull request #334 from makkes/remove-kubernetes-dep
chore: get rid of k8s.io/kubernetes dep
2 parents d2906ab + 04848c7 commit 3c32e28

File tree

11 files changed

+98
-798
lines changed

11 files changed

+98
-798
lines changed

go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ require (
2020
k8s.io/code-generator v0.18.0
2121
k8s.io/component-base v0.18.0
2222
k8s.io/klog v1.0.0
23-
k8s.io/kubernetes v1.18.0
2423
)
2524

2625
replace k8s.io/api => k8s.io/api v0.18.0

go.sum

Lines changed: 0 additions & 464 deletions
Large diffs are not rendered by default.

pkg/common-controller/framework_test.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ import (
5353
"k8s.io/client-go/tools/cache"
5454
"k8s.io/client-go/tools/record"
5555
"k8s.io/klog"
56-
"k8s.io/kubernetes/pkg/util/slice"
5756
)
5857

5958
// This is a unit test framework for snapshot controller.
@@ -1365,7 +1364,7 @@ func evaluateFinalizerTests(ctrl *csiSnapshotCommonController, reactor *snapshot
13651364
if funcName == "testAddPVCFinalizer" {
13661365
for _, pvc := range reactor.claims {
13671366
if test.initialClaims[0].Name == pvc.Name {
1368-
if !slice.ContainsString(test.initialClaims[0].ObjectMeta.Finalizers, utils.PVCFinalizer, nil) && slice.ContainsString(pvc.ObjectMeta.Finalizers, utils.PVCFinalizer, nil) {
1367+
if !utils.ContainsString(test.initialClaims[0].ObjectMeta.Finalizers, utils.PVCFinalizer) && utils.ContainsString(pvc.ObjectMeta.Finalizers, utils.PVCFinalizer) {
13691368
klog.V(4).Infof("test %q succeeded. PVCFinalizer is added to PVC %s", test.name, pvc.Name)
13701369
bHasPVCFinalizer = true
13711370
}
@@ -1380,7 +1379,7 @@ func evaluateFinalizerTests(ctrl *csiSnapshotCommonController, reactor *snapshot
13801379
if funcName == "testRemovePVCFinalizer" {
13811380
for _, pvc := range reactor.claims {
13821381
if test.initialClaims[0].Name == pvc.Name {
1383-
if slice.ContainsString(test.initialClaims[0].ObjectMeta.Finalizers, utils.PVCFinalizer, nil) && !slice.ContainsString(pvc.ObjectMeta.Finalizers, utils.PVCFinalizer, nil) {
1382+
if utils.ContainsString(test.initialClaims[0].ObjectMeta.Finalizers, utils.PVCFinalizer) && !utils.ContainsString(pvc.ObjectMeta.Finalizers, utils.PVCFinalizer) {
13841383
klog.V(4).Infof("test %q succeeded. PVCFinalizer is removed from PVC %s", test.name, pvc.Name)
13851384
bHasPVCFinalizer = false
13861385
}
@@ -1395,8 +1394,8 @@ func evaluateFinalizerTests(ctrl *csiSnapshotCommonController, reactor *snapshot
13951394
if funcName == "testAddSnapshotFinalizer" {
13961395
for _, snapshot := range reactor.snapshots {
13971396
if test.initialSnapshots[0].Name == snapshot.Name {
1398-
if !slice.ContainsString(test.initialSnapshots[0].ObjectMeta.Finalizers, utils.VolumeSnapshotBoundFinalizer, nil) && slice.ContainsString(snapshot.ObjectMeta.Finalizers, utils.VolumeSnapshotBoundFinalizer, nil) &&
1399-
!slice.ContainsString(test.initialSnapshots[0].ObjectMeta.Finalizers, utils.VolumeSnapshotAsSourceFinalizer, nil) && slice.ContainsString(snapshot.ObjectMeta.Finalizers, utils.VolumeSnapshotAsSourceFinalizer, nil) {
1397+
if !utils.ContainsString(test.initialSnapshots[0].ObjectMeta.Finalizers, utils.VolumeSnapshotBoundFinalizer) && utils.ContainsString(snapshot.ObjectMeta.Finalizers, utils.VolumeSnapshotBoundFinalizer) &&
1398+
!utils.ContainsString(test.initialSnapshots[0].ObjectMeta.Finalizers, utils.VolumeSnapshotAsSourceFinalizer) && utils.ContainsString(snapshot.ObjectMeta.Finalizers, utils.VolumeSnapshotAsSourceFinalizer) {
14001399
klog.V(4).Infof("test %q succeeded. Finalizers are added to snapshot %s", test.name, snapshot.Name)
14011400
bHasSnapshotFinalizer = true
14021401
}
@@ -1411,8 +1410,8 @@ func evaluateFinalizerTests(ctrl *csiSnapshotCommonController, reactor *snapshot
14111410
if funcName == "testRemoveSnapshotFinalizer" {
14121411
for _, snapshot := range reactor.snapshots {
14131412
if test.initialSnapshots[0].Name == snapshot.Name {
1414-
if slice.ContainsString(test.initialSnapshots[0].ObjectMeta.Finalizers, utils.VolumeSnapshotBoundFinalizer, nil) && !slice.ContainsString(snapshot.ObjectMeta.Finalizers, utils.VolumeSnapshotBoundFinalizer, nil) &&
1415-
slice.ContainsString(test.initialSnapshots[0].ObjectMeta.Finalizers, utils.VolumeSnapshotAsSourceFinalizer, nil) && !slice.ContainsString(snapshot.ObjectMeta.Finalizers, utils.VolumeSnapshotAsSourceFinalizer, nil) {
1413+
if utils.ContainsString(test.initialSnapshots[0].ObjectMeta.Finalizers, utils.VolumeSnapshotBoundFinalizer) && !utils.ContainsString(snapshot.ObjectMeta.Finalizers, utils.VolumeSnapshotBoundFinalizer) &&
1414+
utils.ContainsString(test.initialSnapshots[0].ObjectMeta.Finalizers, utils.VolumeSnapshotAsSourceFinalizer) && !utils.ContainsString(snapshot.ObjectMeta.Finalizers, utils.VolumeSnapshotAsSourceFinalizer) {
14161415
klog.V(4).Infof("test %q succeeded. SnapshotFinalizer is removed from Snapshot %s", test.name, snapshot.Name)
14171416
bHasSnapshotFinalizer = false
14181417
}

pkg/common-controller/snapshot_controller.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import (
3131
"k8s.io/client-go/kubernetes/scheme"
3232
ref "k8s.io/client-go/tools/reference"
3333
"k8s.io/klog"
34-
"k8s.io/kubernetes/pkg/util/slice"
3534

3635
crdv1 "github.com/kubernetes-csi/external-snapshotter/v2/pkg/apis/volumesnapshot/v1beta1"
3736
"github.com/kubernetes-csi/external-snapshotter/v2/pkg/utils"
@@ -223,7 +222,7 @@ func (ctrl *csiSnapshotCommonController) isPVCwithFinalizerInUseByCurrentSnapsho
223222
}
224223

225224
// Check if there is a Finalizer on PVC. If not, return false
226-
if !slice.ContainsString(pvc.ObjectMeta.Finalizers, utils.PVCFinalizer, nil) {
225+
if !utils.ContainsString(pvc.ObjectMeta.Finalizers, utils.PVCFinalizer) {
227226
return false
228227
}
229228

@@ -821,7 +820,7 @@ func (ctrl *csiSnapshotCommonController) ensurePVCFinalizer(snapshot *crdv1.Volu
821820
}
822821

823822
// If PVC is not being deleted and PVCFinalizer is not added yet, the PVCFinalizer should be added.
824-
if pvc.ObjectMeta.DeletionTimestamp == nil && !slice.ContainsString(pvc.ObjectMeta.Finalizers, utils.PVCFinalizer, nil) {
823+
if pvc.ObjectMeta.DeletionTimestamp == nil && !utils.ContainsString(pvc.ObjectMeta.Finalizers, utils.PVCFinalizer) {
825824
// Add the finalizer
826825
pvcClone := pvc.DeepCopy()
827826
pvcClone.ObjectMeta.Finalizers = append(pvcClone.ObjectMeta.Finalizers, utils.PVCFinalizer)
@@ -842,7 +841,7 @@ func (ctrl *csiSnapshotCommonController) removePVCFinalizer(pvc *v1.PersistentVo
842841
// TODO(xyang): We get PVC from informer but it may be outdated
843842
// Should get it from API server directly before removing finalizer
844843
pvcClone := pvc.DeepCopy()
845-
pvcClone.ObjectMeta.Finalizers = slice.RemoveString(pvcClone.ObjectMeta.Finalizers, utils.PVCFinalizer, nil)
844+
pvcClone.ObjectMeta.Finalizers = utils.RemoveString(pvcClone.ObjectMeta.Finalizers, utils.PVCFinalizer)
846845

847846
_, err := ctrl.client.CoreV1().PersistentVolumeClaims(pvcClone.Namespace).Update(context.TODO(), pvcClone, metav1.UpdateOptions{})
848847
if err != nil {
@@ -898,7 +897,7 @@ func (ctrl *csiSnapshotCommonController) checkandRemovePVCFinalizer(snapshot *cr
898897
klog.V(5).Infof("checkandRemovePVCFinalizer for snapshot [%s]: snapshot status [%#v]", snapshot.Name, snapshot.Status)
899898

900899
// Check if there is a Finalizer on PVC to be removed
901-
if slice.ContainsString(pvc.ObjectMeta.Finalizers, utils.PVCFinalizer, nil) {
900+
if utils.ContainsString(pvc.ObjectMeta.Finalizers, utils.PVCFinalizer) {
902901
// There is a Finalizer on PVC. Check if PVC is used
903902
// and remove finalizer if it's not used.
904903
inUse := ctrl.isPVCBeingUsed(pvc, snapshot)
@@ -1306,10 +1305,10 @@ func (ctrl *csiSnapshotCommonController) removeSnapshotFinalizer(snapshot *crdv1
13061305

13071306
snapshotClone := snapshot.DeepCopy()
13081307
if removeSourceFinalizer {
1309-
snapshotClone.ObjectMeta.Finalizers = slice.RemoveString(snapshotClone.ObjectMeta.Finalizers, utils.VolumeSnapshotAsSourceFinalizer, nil)
1308+
snapshotClone.ObjectMeta.Finalizers = utils.RemoveString(snapshotClone.ObjectMeta.Finalizers, utils.VolumeSnapshotAsSourceFinalizer)
13101309
}
13111310
if removeBoundFinalizer {
1312-
snapshotClone.ObjectMeta.Finalizers = slice.RemoveString(snapshotClone.ObjectMeta.Finalizers, utils.VolumeSnapshotBoundFinalizer, nil)
1311+
snapshotClone.ObjectMeta.Finalizers = utils.RemoveString(snapshotClone.ObjectMeta.Finalizers, utils.VolumeSnapshotBoundFinalizer)
13131312
}
13141313
_, err := ctrl.clientset.SnapshotV1beta1().VolumeSnapshots(snapshotClone.Namespace).Update(context.TODO(), snapshotClone, metav1.UpdateOptions{})
13151314
if err != nil {

pkg/sidecar-controller/snapshot_controller.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import (
3030
"k8s.io/apimachinery/pkg/api/errors"
3131
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3232
"k8s.io/klog"
33-
"k8s.io/kubernetes/pkg/util/slice"
3433
)
3534

3635
// Design:
@@ -506,12 +505,12 @@ func (ctrl *csiSnapshotSideCarController) GetCredentialsFromAnnotation(content *
506505
// removeContentFinalizer removes the VolumeSnapshotContentFinalizer from a
507506
// content if there exists one.
508507
func (ctrl csiSnapshotSideCarController) removeContentFinalizer(content *crdv1.VolumeSnapshotContent) error {
509-
if !slice.ContainsString(content.ObjectMeta.Finalizers, utils.VolumeSnapshotContentFinalizer, nil) {
508+
if !utils.ContainsString(content.ObjectMeta.Finalizers, utils.VolumeSnapshotContentFinalizer) {
510509
// the finalizer does not exit, return directly
511510
return nil
512511
}
513512
contentClone := content.DeepCopy()
514-
contentClone.ObjectMeta.Finalizers = slice.RemoveString(contentClone.ObjectMeta.Finalizers, utils.VolumeSnapshotContentFinalizer, nil)
513+
contentClone.ObjectMeta.Finalizers = utils.RemoveString(contentClone.ObjectMeta.Finalizers, utils.VolumeSnapshotContentFinalizer)
515514

516515
_, err := ctrl.clientset.SnapshotV1beta1().VolumeSnapshotContents().Update(context.TODO(), contentClone, metav1.UpdateOptions{})
517516
if err != nil {

pkg/utils/util.go

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import (
3333
"k8s.io/client-go/kubernetes"
3434
"k8s.io/client-go/tools/cache"
3535
"k8s.io/klog"
36-
"k8s.io/kubernetes/pkg/util/slice"
3736
)
3837

3938
var (
@@ -109,6 +108,34 @@ var SnapshotterListSecretParams = secretParamsMap{
109108
secretNamespaceKey: PrefixedSnapshotterListSecretNamespaceKey,
110109
}
111110

111+
// ContainsString checks if a given slice of strings contains the provided string.
112+
func ContainsString(slice []string, s string) bool {
113+
for _, item := range slice {
114+
if item == s {
115+
return true
116+
}
117+
}
118+
return false
119+
}
120+
121+
// RemoveString returns a newly created []string that contains all items from slice that
122+
// are not equal to s.
123+
func RemoveString(slice []string, s string) []string {
124+
newSlice := make([]string, 0)
125+
for _, item := range slice {
126+
if item == s {
127+
continue
128+
}
129+
newSlice = append(newSlice, item)
130+
}
131+
if len(newSlice) == 0 {
132+
// Sanitize for unit tests so we don't need to distinguish empty array
133+
// and nil.
134+
newSlice = nil
135+
}
136+
return newSlice
137+
}
138+
112139
func SnapshotKey(vs *crdv1.VolumeSnapshot) string {
113140
return fmt.Sprintf("%s/%s", vs.Namespace, vs.Name)
114141
}
@@ -337,23 +364,23 @@ func NoResyncPeriodFunc() time.Duration {
337364

338365
// NeedToAddContentFinalizer checks if a Finalizer needs to be added for the volume snapshot content.
339366
func NeedToAddContentFinalizer(content *crdv1.VolumeSnapshotContent) bool {
340-
return content.ObjectMeta.DeletionTimestamp == nil && !slice.ContainsString(content.ObjectMeta.Finalizers, VolumeSnapshotContentFinalizer, nil)
367+
return content.ObjectMeta.DeletionTimestamp == nil && !ContainsString(content.ObjectMeta.Finalizers, VolumeSnapshotContentFinalizer)
341368
}
342369

343370
// IsSnapshotDeletionCandidate checks if a volume snapshot deletionTimestamp
344371
// is set and any finalizer is on the snapshot.
345372
func IsSnapshotDeletionCandidate(snapshot *crdv1.VolumeSnapshot) bool {
346-
return snapshot.ObjectMeta.DeletionTimestamp != nil && (slice.ContainsString(snapshot.ObjectMeta.Finalizers, VolumeSnapshotAsSourceFinalizer, nil) || slice.ContainsString(snapshot.ObjectMeta.Finalizers, VolumeSnapshotBoundFinalizer, nil))
373+
return snapshot.ObjectMeta.DeletionTimestamp != nil && (ContainsString(snapshot.ObjectMeta.Finalizers, VolumeSnapshotAsSourceFinalizer) || ContainsString(snapshot.ObjectMeta.Finalizers, VolumeSnapshotBoundFinalizer))
347374
}
348375

349376
// NeedToAddSnapshotAsSourceFinalizer checks if a Finalizer needs to be added for the volume snapshot as a source for PVC.
350377
func NeedToAddSnapshotAsSourceFinalizer(snapshot *crdv1.VolumeSnapshot) bool {
351-
return snapshot.ObjectMeta.DeletionTimestamp == nil && !slice.ContainsString(snapshot.ObjectMeta.Finalizers, VolumeSnapshotAsSourceFinalizer, nil)
378+
return snapshot.ObjectMeta.DeletionTimestamp == nil && !ContainsString(snapshot.ObjectMeta.Finalizers, VolumeSnapshotAsSourceFinalizer)
352379
}
353380

354381
// NeedToAddSnapshotBoundFinalizer checks if a Finalizer needs to be added for the bound volume snapshot.
355382
func NeedToAddSnapshotBoundFinalizer(snapshot *crdv1.VolumeSnapshot) bool {
356-
return snapshot.ObjectMeta.DeletionTimestamp == nil && !slice.ContainsString(snapshot.ObjectMeta.Finalizers, VolumeSnapshotBoundFinalizer, nil) && IsBoundVolumeSnapshotContentNameSet(snapshot)
383+
return snapshot.ObjectMeta.DeletionTimestamp == nil && !ContainsString(snapshot.ObjectMeta.Finalizers, VolumeSnapshotBoundFinalizer) && IsBoundVolumeSnapshotContentNameSet(snapshot)
357384
}
358385

359386
func deprecationWarning(deprecatedParam, newParam, removalVersion string) string {

pkg/utils/util_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,58 @@ import (
2525
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2626
)
2727

28+
func TestContainsString(t *testing.T) {
29+
src := []string{"aa", "bb", "cc"}
30+
if !ContainsString(src, "bb") {
31+
t.Errorf("ContainsString didn't find the string as expected")
32+
}
33+
}
34+
35+
func TestRemoveString(t *testing.T) {
36+
tests := []struct {
37+
testName string
38+
input []string
39+
remove string
40+
want []string
41+
}{
42+
{
43+
testName: "Nil input slice",
44+
input: nil,
45+
remove: "",
46+
want: nil,
47+
},
48+
{
49+
testName: "Slice doesn't contain the string",
50+
input: []string{"a", "ab", "cdef"},
51+
remove: "NotPresentInSlice",
52+
want: []string{"a", "ab", "cdef"},
53+
},
54+
{
55+
testName: "All strings removed, result is nil",
56+
input: []string{"a"},
57+
remove: "a",
58+
want: nil,
59+
},
60+
{
61+
testName: "One string removed",
62+
input: []string{"a", "ab", "cdef"},
63+
remove: "ab",
64+
want: []string{"a", "cdef"},
65+
},
66+
{
67+
testName: "All(three) strings removed",
68+
input: []string{"ab", "a", "ab", "cdef", "ab"},
69+
remove: "ab",
70+
want: []string{"a", "cdef"},
71+
},
72+
}
73+
for _, tt := range tests {
74+
if got := RemoveString(tt.input, tt.remove); !reflect.DeepEqual(got, tt.want) {
75+
t.Errorf("%v: RemoveString(%v, %q) = %v WANT %v", tt.testName, tt.input, tt.remove, got, tt.want)
76+
}
77+
}
78+
}
79+
2880
func TestGetSecretReference(t *testing.T) {
2981
testcases := map[string]struct {
3082
secretParams secretParamsMap

0 commit comments

Comments
 (0)