Skip to content

Commit 1c599c1

Browse files
committed
Drop NewClientWithFieldSelectorSupport function in favor of controller-runtime WithIndex function
kubernetes-sigs/controller-runtime#2025
1 parent 3e569e8 commit 1c599c1

File tree

10 files changed

+91
-150
lines changed

10 files changed

+91
-150
lines changed

pkg/api/indexer/core.go

+26-18
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,35 @@ import (
2525
"sigs.k8s.io/controller-runtime/pkg/client"
2626
)
2727

28-
// AddProjectNamespace adds an index for core.ProjectNamespace to the given indexer.
29-
func AddProjectNamespace(ctx context.Context, indexer client.FieldIndexer) error {
30-
if err := indexer.IndexField(ctx, &gardencorev1beta1.Project{}, core.ProjectNamespace, func(obj client.Object) []string {
28+
var (
29+
ProjectNamespaceIndexerFunc = func(obj client.Object) []string {
3130
project, ok := obj.(*gardencorev1beta1.Project)
3231
if !ok {
3332
return []string{""}
3433
}
3534
return []string{pointer.StringDeref(project.Spec.Namespace, "")}
36-
}); err != nil {
35+
}
36+
37+
BackupBucketSeedNameIndexerFunc = func(obj client.Object) []string {
38+
backupBucket, ok := obj.(*gardencorev1beta1.BackupBucket)
39+
if !ok {
40+
return []string{""}
41+
}
42+
return []string{pointer.StringDeref(backupBucket.Spec.SeedName, "")}
43+
}
44+
45+
ControllerInstallationSeedRefNameIndexerFunc = func(obj client.Object) []string {
46+
controllerInstallation, ok := obj.(*gardencorev1beta1.ControllerInstallation)
47+
if !ok {
48+
return []string{""}
49+
}
50+
return []string{controllerInstallation.Spec.SeedRef.Name}
51+
}
52+
)
53+
54+
// AddProjectNamespace adds an index for core.ProjectNamespace to the given indexer.
55+
func AddProjectNamespace(ctx context.Context, indexer client.FieldIndexer) error {
56+
if err := indexer.IndexField(ctx, &gardencorev1beta1.Project{}, core.ProjectNamespace, ProjectNamespaceIndexerFunc); err != nil {
3757
return fmt.Errorf("failed to add indexer for %s to Project Informer: %w", core.ProjectNamespace, err)
3858
}
3959
return nil
@@ -69,13 +89,7 @@ func AddShootStatusSeedName(ctx context.Context, indexer client.FieldIndexer) er
6989

7090
// AddBackupBucketSeedName adds an index for core.BackupBucketSeedName to the given indexer.
7191
func AddBackupBucketSeedName(ctx context.Context, indexer client.FieldIndexer) error {
72-
if err := indexer.IndexField(ctx, &gardencorev1beta1.BackupBucket{}, core.BackupBucketSeedName, func(obj client.Object) []string {
73-
backupBucket, ok := obj.(*gardencorev1beta1.BackupBucket)
74-
if !ok {
75-
return []string{""}
76-
}
77-
return []string{pointer.StringDeref(backupBucket.Spec.SeedName, "")}
78-
}); err != nil {
92+
if err := indexer.IndexField(ctx, &gardencorev1beta1.BackupBucket{}, core.BackupBucketSeedName, BackupBucketSeedNameIndexerFunc); err != nil {
7993
return fmt.Errorf("failed to add indexer for %s to BackupBucket Informer: %w", core.BackupBucketSeedName, err)
8094
}
8195
return nil
@@ -111,13 +125,7 @@ func AddBackupEntryBucketName(ctx context.Context, indexer client.FieldIndexer)
111125

112126
// AddControllerInstallationSeedRefName adds an index for core.ControllerInstallationSeedRefName to the given indexer.
113127
func AddControllerInstallationSeedRefName(ctx context.Context, indexer client.FieldIndexer) error {
114-
if err := indexer.IndexField(ctx, &gardencorev1beta1.ControllerInstallation{}, core.SeedRefName, func(obj client.Object) []string {
115-
controllerInstallation, ok := obj.(*gardencorev1beta1.ControllerInstallation)
116-
if !ok {
117-
return []string{""}
118-
}
119-
return []string{controllerInstallation.Spec.SeedRef.Name}
120-
}); err != nil {
128+
if err := indexer.IndexField(ctx, &gardencorev1beta1.ControllerInstallation{}, core.SeedRefName, ControllerInstallationSeedRefNameIndexerFunc); err != nil {
121129
return fmt.Errorf("failed to add indexer for %s to ControllerInstallation Informer: %w", core.SeedRefName, err)
122130
}
123131
return nil

pkg/api/indexer/operations.go

+9-7
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,17 @@ import (
2424
"sigs.k8s.io/controller-runtime/pkg/client"
2525
)
2626

27+
var BastionShootNameIndexerFunc = func(obj client.Object) []string {
28+
bastion, ok := obj.(*operationsv1alpha1.Bastion)
29+
if !ok {
30+
return []string{""}
31+
}
32+
return []string{bastion.Spec.ShootRef.Name}
33+
}
34+
2735
// AddBastionShootName adds an index for operations.BastionShootName to the given indexer.
2836
func AddBastionShootName(ctx context.Context, indexer client.FieldIndexer) error {
29-
if err := indexer.IndexField(ctx, &operationsv1alpha1.Bastion{}, operations.BastionShootName, func(obj client.Object) []string {
30-
bastion, ok := obj.(*operationsv1alpha1.Bastion)
31-
if !ok {
32-
return []string{""}
33-
}
34-
return []string{bastion.Spec.ShootRef.Name}
35-
}); err != nil {
37+
if err := indexer.IndexField(ctx, &operationsv1alpha1.Bastion{}, operations.BastionShootName, BastionShootNameIndexerFunc); err != nil {
3638
return fmt.Errorf("failed to add indexer for %s to Bastion Informer: %w", operations.BastionShootName, err)
3739
}
3840
return nil

pkg/api/indexer/seedmanagement.go

+12-10
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,20 @@ import (
2424
"sigs.k8s.io/controller-runtime/pkg/client"
2525
)
2626

27+
var ManagedSeedShootNameIndexerFunc = func(obj client.Object) []string {
28+
managedSeed, ok := obj.(*seedmanagementv1alpha1.ManagedSeed)
29+
if !ok {
30+
return []string{""}
31+
}
32+
if managedSeed.Spec.Shoot == nil {
33+
return []string{""}
34+
}
35+
return []string{managedSeed.Spec.Shoot.Name}
36+
}
37+
2738
// AddManagedSeedShootName adds an index for seedmanagement.ManagedSeedShootName to the given indexer.
2839
func AddManagedSeedShootName(ctx context.Context, indexer client.FieldIndexer) error {
29-
if err := indexer.IndexField(ctx, &seedmanagementv1alpha1.ManagedSeed{}, seedmanagement.ManagedSeedShootName, func(obj client.Object) []string {
30-
managedSeed, ok := obj.(*seedmanagementv1alpha1.ManagedSeed)
31-
if !ok {
32-
return []string{""}
33-
}
34-
if managedSeed.Spec.Shoot == nil {
35-
return []string{""}
36-
}
37-
return []string{managedSeed.Spec.Shoot.Name}
38-
}); err != nil {
40+
if err := indexer.IndexField(ctx, &seedmanagementv1alpha1.ManagedSeed{}, seedmanagement.ManagedSeedShootName, ManagedSeedShootNameIndexerFunc); err != nil {
3941
return fmt.Errorf("failed to add indexer for %s to ManagedSeed Informer: %w", seedmanagement.ManagedSeedShootName, err)
4042
}
4143
return nil

pkg/controllermanager/controller/bastion/add_test.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ package bastion_test
1717
import (
1818
"context"
1919

20+
"github.com/gardener/gardener/pkg/api/indexer"
2021
gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"
22+
"github.com/gardener/gardener/pkg/apis/operations"
2123
operationsv1alpha1 "github.com/gardener/gardener/pkg/apis/operations/v1alpha1"
2224
"github.com/gardener/gardener/pkg/client/kubernetes"
2325
. "github.com/gardener/gardener/pkg/controllermanager/controller/bastion"
24-
bastionstrategy "github.com/gardener/gardener/pkg/registry/operations/bastion"
25-
"github.com/gardener/gardener/pkg/utils/test"
2626

2727
"github.com/go-logr/logr"
2828
. "github.com/onsi/ginkgo/v2"
@@ -152,10 +152,10 @@ var _ = Describe("Add", func() {
152152

153153
BeforeEach(func() {
154154
log = logr.Discard()
155-
fakeClient = test.NewClientWithFieldSelectorSupport(
156-
fakeclient.NewClientBuilder().WithScheme(kubernetes.GardenScheme).Build(),
157-
bastionstrategy.ToSelectableFields,
158-
)
155+
fakeClient = fakeclient.NewClientBuilder().
156+
WithScheme(kubernetes.GardenScheme).
157+
WithIndex(&operationsv1alpha1.Bastion{}, operations.BastionShootName, indexer.BastionShootNameIndexerFunc).
158+
Build()
159159
})
160160

161161
It("should do nothing if the object is no shoot", func() {

pkg/controllermanager/controller/project/activity/add_test.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ import (
1818
"context"
1919
"time"
2020

21+
"github.com/gardener/gardener/pkg/api/indexer"
22+
"github.com/gardener/gardener/pkg/apis/core"
2123
gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"
2224
"github.com/gardener/gardener/pkg/client/kubernetes"
2325
. "github.com/gardener/gardener/pkg/controllermanager/controller/project/activity"
24-
projectstrategy "github.com/gardener/gardener/pkg/registry/core/project"
25-
"github.com/gardener/gardener/pkg/utils/test"
2626

2727
"github.com/go-logr/logr"
2828
. "github.com/onsi/ginkgo/v2"
@@ -172,10 +172,10 @@ var _ = Describe("Add", func() {
172172

173173
BeforeEach(func() {
174174
log = logr.Discard()
175-
fakeClient = test.NewClientWithFieldSelectorSupport(
176-
fakeclient.NewClientBuilder().WithScheme(kubernetes.GardenScheme).Build(),
177-
projectstrategy.ToSelectableFields,
178-
)
175+
fakeClient = fakeclient.NewClientBuilder().
176+
WithScheme(kubernetes.GardenScheme).
177+
WithIndex(&gardencorev1beta1.Project{}, core.ProjectNamespace, indexer.ProjectNamespaceIndexerFunc).
178+
Build()
179179

180180
project = &gardencorev1beta1.Project{
181181
ObjectMeta: metav1.ObjectMeta{

pkg/controllermanager/controller/seed/backupbucketscheck/reconciler_test.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ import (
1818
"context"
1919
"time"
2020

21+
"github.com/gardener/gardener/pkg/api/indexer"
22+
"github.com/gardener/gardener/pkg/apis/core"
2123
gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"
2224
"github.com/gardener/gardener/pkg/client/kubernetes"
2325
"github.com/gardener/gardener/pkg/controllermanager/apis/config"
2426
. "github.com/gardener/gardener/pkg/controllermanager/controller/seed/backupbucketscheck"
25-
backupbucketstrategy "github.com/gardener/gardener/pkg/registry/core/backupbucket"
26-
"github.com/gardener/gardener/pkg/utils/test"
2727

2828
. "github.com/onsi/ginkgo/v2"
2929
. "github.com/onsi/gomega"
@@ -73,10 +73,11 @@ var _ = Describe("Reconciler", func() {
7373

7474
fakeClock = testclock.NewFakeClock(time.Now().Round(time.Second))
7575

76-
c = test.NewClientWithFieldSelectorSupport(
77-
fakeclient.NewClientBuilder().WithScheme(kubernetes.GardenScheme).WithObjects(seed).Build(),
78-
backupbucketstrategy.ToSelectableFields,
79-
)
76+
c = fakeclient.NewClientBuilder().
77+
WithScheme(kubernetes.GardenScheme).
78+
WithObjects(seed).
79+
WithIndex(&gardencorev1beta1.BackupBucket{}, core.BackupBucketSeedName, indexer.BackupBucketSeedNameIndexerFunc).
80+
Build()
8081

8182
conf = config.SeedBackupBucketsCheckControllerConfiguration{
8283
SyncPeriod: &metav1.Duration{Duration: syncPeriod},

pkg/controllermanager/controller/seed/extensionscheck/reconciler_test.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import (
1818
"context"
1919
"time"
2020

21+
"github.com/gardener/gardener/pkg/api/indexer"
22+
"github.com/gardener/gardener/pkg/apis/core"
2123
gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"
2224
"github.com/gardener/gardener/pkg/client/kubernetes"
2325
"github.com/gardener/gardener/pkg/controllermanager/apis/config"
@@ -64,7 +66,11 @@ var _ = Describe("Reconciler", func() {
6466

6567
fakeClock = testclock.NewFakeClock(time.Now().Round(time.Second))
6668

67-
c = fakeclient.NewClientBuilder().WithScheme(kubernetes.GardenScheme).WithObjects(seed).Build()
69+
c = fakeclient.NewClientBuilder().
70+
WithScheme(kubernetes.GardenScheme).
71+
WithObjects(seed).
72+
WithIndex(&gardencorev1beta1.ControllerInstallation{}, core.SeedRefName, indexer.ControllerInstallationSeedRefNameIndexerFunc).
73+
Build()
6874
conf := config.SeedExtensionsCheckControllerConfiguration{
6975
SyncPeriod: &metav1.Duration{Duration: syncPeriodDuration},
7076
}

pkg/operation/botanist/component/kubeapiserverexposure/kube_apiserver_sni_test.go

+11-1
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,17 @@ var _ = Describe("#SNI", func() {
289289
// TODO(mvladev): can't directly import the istio apis due to dependency issues.
290290
s.AddKnownTypeWithName(schema.FromAPIVersionAndKind("networking.istio.io/v1beta1", "VirtualServiceList"), &unstructured.UnstructuredList{})
291291
s.AddKnownTypeWithName(schema.FromAPIVersionAndKind("networking.istio.io/v1beta1", "VirtualService"), &unstructured.Unstructured{})
292-
c = fake.NewClientBuilder().WithScheme(s).Build()
292+
virtualServiceObj := &unstructured.Unstructured{}
293+
virtualServiceObj.SetGroupVersionKind(schema.FromAPIVersionAndKind("networking.istio.io/v1beta1", "VirtualService"))
294+
295+
c = fake.NewClientBuilder().
296+
WithScheme(s).
297+
WithIndex(
298+
virtualServiceObj, "metadata.name", func(o client.Object) []string {
299+
return []string{o.GetName()}
300+
},
301+
).
302+
Build()
293303
})
294304

295305
It("returns true when exists", func() {

pkg/utils/kubernetes/managedseed_test.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import (
2727
"sigs.k8s.io/controller-runtime/pkg/client"
2828
fakeclient "sigs.k8s.io/controller-runtime/pkg/client/fake"
2929

30+
"github.com/gardener/gardener/pkg/api/indexer"
31+
"github.com/gardener/gardener/pkg/apis/seedmanagement"
3032
seedmanagementv1alpha1 "github.com/gardener/gardener/pkg/apis/seedmanagement/v1alpha1"
3133
"github.com/gardener/gardener/pkg/client/kubernetes"
3234
mockclient "github.com/gardener/gardener/pkg/mock/controller-runtime/client"
@@ -66,7 +68,11 @@ var _ = Describe("managedseed", func() {
6668
)
6769

6870
BeforeEach(func() {
69-
fakeClient = fakeclient.NewClientBuilder().WithScheme(kubernetes.GardenScheme).WithObjects(managedSeed).Build()
71+
fakeClient = fakeclient.NewClientBuilder().
72+
WithScheme(kubernetes.GardenScheme).
73+
WithObjects(managedSeed).
74+
WithIndex(&seedmanagementv1alpha1.ManagedSeed{}, seedmanagement.ManagedSeedShootName, indexer.ManagedSeedShootNameIndexerFunc).
75+
Build()
7076
})
7177

7278
It("should return the ManagedSeed for the given shoot namespace and name, if it exists", func() {

pkg/utils/test/client.go

-94
This file was deleted.

0 commit comments

Comments
 (0)