Skip to content

Commit 934d38d

Browse files
authored
Decouple CRD and APIResourceSchema in the example-backend (#271)
* Decouple CRD and APIResourceSchema in service export request reconciler Signed-off-by: Karol Szwaj <karol.szwaj@gmail.com> On-behalf-of: @SAP karol.szwaj@sap.com Exchange CRDInformers with APIResourceSchemaInformers Signed-off-by: Karol Szwaj <karol.szwaj@gmail.com> On-behalf-of: @SAP karol.szwaj@sap.com rebase controller-runtime migration Signed-off-by: Karol Szwaj <karol.szwaj@gmail.com> On-behalf-of: @SAP karol.szwaj@sap.com modify crd indexers Signed-off-by: Karol Szwaj <karol.szwaj@gmail.com> * add apiresourceschemas to e2e test Signed-off-by: Karol Szwaj <karol.szwaj@gmail.com> On-behalf-of: @SAP karol.szwaj@sap.com * add kubebind scheme Signed-off-by: Karol Szwaj <karol.szwaj@gmail.com> On-behalf-of: @SAP karol.szwaj@sap.com * rebase multicontroller runtime Signed-off-by: Karol Szwaj <karol.szwaj@gmail.com> On-behalf-of: @SAP karol.szwaj@sap.com add cache Signed-off-by: Karol Szwaj <karol.szwaj@gmail.com> On-behalf-of: @SAP karol.szwaj@sap.com --------- Signed-off-by: Karol Szwaj <karol.szwaj@gmail.com>
1 parent 83a5c40 commit 934d38d

14 files changed

Lines changed: 153 additions & 120 deletions

File tree

contrib/example-backend/controllers/clusterbinding/clusterbinding_controller.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,14 +242,14 @@ func (r *ClusterBindingReconciler) SetupWithManager(mgr mcmanager.Manager) error
242242
Owns(&rbacv1.RoleBinding{}).
243243
Watches(
244244
&kubebindv1alpha2.APIServiceExport{},
245-
mapCRD,
245+
mapAPIResourceSchema,
246246
).
247247
Named(controllerName).
248248
Complete(r)
249249
}
250250

251-
func mapCRD(clusterName string, cl cluster.Cluster) handler.TypedEventHandler[client.Object, mcreconcile.Request] {
252-
return handler.TypedEnqueueRequestsFromMapFunc[client.Object, mcreconcile.Request](func(ctx context.Context, obj client.Object) []mcreconcile.Request {
251+
func mapAPIResourceSchema(clusterName string, cl cluster.Cluster) handler.TypedEventHandler[client.Object, mcreconcile.Request] {
252+
return handler.TypedEnqueueRequestsFromMapFunc(func(ctx context.Context, obj client.Object) []mcreconcile.Request {
253253
serviceExport, ok := obj.(*kubebindv1alpha2.APIServiceExport)
254254
if !ok {
255255
return nil

contrib/example-backend/controllers/serviceexport/serviceexport_controller.go

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"context"
2121
"fmt"
2222

23-
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2423
"k8s.io/apimachinery/pkg/api/equality"
2524
"k8s.io/apimachinery/pkg/api/errors"
2625
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -67,25 +66,23 @@ func NewAPIServiceExportReconciler(
6766
if err != nil {
6867
return nil, err
6968
}
70-
if err := mgr.GetFieldIndexer().IndexField(ctx, &kubebindv1alpha2.APIServiceExport{}, indexers.ServiceExportByCustomResourceDefinition,
71-
indexers.IndexServiceExportByCustomResourceDefinitionControllerRuntime); err != nil {
72-
return nil, fmt.Errorf("failed to setup ServiceExportByCustomResourceDefinition indexer: %w", err)
69+
70+
if err := mgr.GetFieldIndexer().IndexField(ctx, &kubebindv1alpha2.APIServiceExport{}, indexers.ServiceExportByAPIResourceSchema,
71+
indexers.IndexServiceExportByAPIResourceSchema); err != nil {
72+
return nil, fmt.Errorf("failed to setup ServiceExportByAPIResourceSchema indexer: %w", err)
7373
}
7474

7575
r := &APIServiceExportReconciler{
7676
manager: mgr,
7777
bindClient: bindClient,
7878
reconciler: reconciler{
79-
getCRD: func(ctx context.Context, cache cache.Cache, name string) (*apiextensionsv1.CustomResourceDefinition, error) {
80-
var crd apiextensionsv1.CustomResourceDefinition
79+
getAPIResourceSchema: func(ctx context.Context, cache cache.Cache, name string) (*kubebindv1alpha2.APIResourceSchema, error) {
80+
var schema kubebindv1alpha2.APIResourceSchema
8181
key := types.NamespacedName{Name: name}
82-
if err := cache.Get(ctx, key, &crd); err != nil {
82+
if err := cache.Get(ctx, key, &schema); err != nil {
8383
return nil, err
8484
}
85-
return &crd, nil
86-
},
87-
getAPIResourceSchema: func(ctx context.Context, name string) (*kubebindv1alpha2.APIResourceSchema, error) {
88-
return bindClient.KubeBindV1alpha2().APIResourceSchemas().Get(ctx, name, metav1.GetOptions{})
85+
return &schema, nil
8986
},
9087
deleteServiceExport: func(ctx context.Context, ns, name string) error {
9188
return bindClient.KubeBindV1alpha2().APIServiceExports(ns).Delete(ctx, name, metav1.DeleteOptions{})
@@ -99,7 +96,6 @@ func NewAPIServiceExportReconciler(
9996
//+kubebuilder:rbac:groups=kubebind.k8s.io,resources=apiserviceexports,verbs=get;list;watch;create;update;patch;delete
10097
//+kubebuilder:rbac:groups=kubebind.k8s.io,resources=apiserviceexports/status,verbs=get;update;patch
10198
//+kubebuilder:rbac:groups=kubebind.k8s.io,resources=apiserviceexports/finalizers,verbs=update
102-
//+kubebuilder:rbac:groups=apiextensions.k8s.io,resources=customresourcedefinitions,verbs=get;list;watch
10399

104100
// Reconcile is part of the main kubernetes reconciliation loop which aims to
105101
// move the current state of the cluster closer to the desired state.
@@ -148,15 +144,15 @@ func (r *APIServiceExportReconciler) Reconcile(ctx context.Context, req mcreconc
148144
return ctrl.Result{}, nil
149145
}
150146

151-
// getCRDMapper returns a mapper function that uses the manager to find related APIServiceExports.
152-
func getCRDMapper(clusterName string, cl cluster.Cluster) handler.TypedEventHandler[client.Object, mcreconcile.Request] {
153-
return handler.TypedEnqueueRequestsFromMapFunc[client.Object, mcreconcile.Request](func(ctx context.Context, obj client.Object) []mcreconcile.Request {
154-
crd := obj.(*apiextensionsv1.CustomResourceDefinition)
155-
crdKey := crd.Name
147+
// getAPIResourceSchemaMapper returns a mapper function that uses the manager to find related APIServiceExports.
148+
func getAPIResourceSchemaMapper(clusterName string, cl cluster.Cluster) handler.TypedEventHandler[client.Object, mcreconcile.Request] {
149+
return handler.TypedEnqueueRequestsFromMapFunc(func(ctx context.Context, obj client.Object) []mcreconcile.Request {
150+
apiResourceSchema := obj.(*kubebindv1alpha2.APIResourceSchema)
151+
apiResourceSchemaKey := apiResourceSchema.Name
156152
c := cl.GetClient()
157153

158154
var exports kubebindv1alpha2.APIServiceExportList
159-
if err := c.List(ctx, &exports, client.MatchingFields{indexers.ServiceExportByCustomResourceDefinition: crdKey}); err != nil {
155+
if err := c.List(ctx, &exports, client.MatchingFields{indexers.ServiceExportByAPIResourceSchema: apiResourceSchemaKey}); err != nil {
160156
return []mcreconcile.Request{}
161157
}
162158

@@ -179,8 +175,8 @@ func (r *APIServiceExportReconciler) SetupWithManager(mgr mcmanager.Manager) err
179175
return mcbuilder.ControllerManagedBy(mgr).
180176
For(&kubebindv1alpha2.APIServiceExport{}).
181177
Watches(
182-
&apiextensionsv1.CustomResourceDefinition{},
183-
getCRDMapper,
178+
&kubebindv1alpha2.APIResourceSchema{},
179+
getAPIResourceSchemaMapper,
184180
).
185181
Named(controllerName).
186182
Complete(r)

contrib/example-backend/controllers/serviceexport/serviceexport_reconcile.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
"slices"
2424
"sort"
2525

26-
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2726
"k8s.io/apimachinery/pkg/api/errors"
2827
utilerrors "k8s.io/apimachinery/pkg/util/errors"
2928
"k8s.io/klog/v2"
@@ -35,15 +34,14 @@ import (
3534
)
3635

3736
type reconciler struct {
38-
getCRD func(ctx context.Context, cache cache.Cache, name string) (*apiextensionsv1.CustomResourceDefinition, error)
39-
getAPIResourceSchema func(ctx context.Context, name string) (*kubebindv1alpha2.APIResourceSchema, error)
37+
getAPIResourceSchema func(ctx context.Context, cache cache.Cache, name string) (*kubebindv1alpha2.APIResourceSchema, error)
4038
deleteServiceExport func(ctx context.Context, namespace, name string) error
4139
}
4240

4341
func (r *reconciler) reconcile(ctx context.Context, cache cache.Cache, export *kubebindv1alpha2.APIServiceExport) error {
4442
var errs []error
4543

46-
if specChanged, err := r.ensureSchema(ctx, export); err != nil {
44+
if specChanged, err := r.ensureSchema(ctx, cache, export); err != nil {
4745
errs = append(errs, err)
4846
} else if specChanged {
4947
// TODO: This should be separate controller for apiresourceschemas.
@@ -55,7 +53,7 @@ func (r *reconciler) reconcile(ctx context.Context, cache cache.Cache, export *k
5553
return utilerrors.NewAggregate(errs)
5654
}
5755

58-
func (r *reconciler) ensureSchema(ctx context.Context, export *kubebindv1alpha2.APIServiceExport) (specChanged bool, err error) {
56+
func (r *reconciler) ensureSchema(ctx context.Context, cache cache.Cache, export *kubebindv1alpha2.APIServiceExport) (specChanged bool, err error) {
5957
logger := klog.FromContext(ctx)
6058
leafHashes := make([]string, 0, len(export.Spec.Resources))
6159
for _, resourceRef := range export.Spec.Resources {
@@ -64,7 +62,7 @@ func (r *reconciler) ensureSchema(ctx context.Context, export *kubebindv1alpha2.
6462
continue
6563
}
6664

67-
schema, err := r.getAPIResourceSchema(ctx, resourceRef.Name)
65+
schema, err := r.getAPIResourceSchema(ctx, cache, resourceRef.Name)
6866
if err != nil {
6967
if errors.IsNotFound(err) {
7068
continue

contrib/example-backend/controllers/serviceexportrequest/serviceexportrequest_controller.go

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"fmt"
2222
"reflect"
2323

24-
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2524
"k8s.io/apimachinery/pkg/api/errors"
2625
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2726
"k8s.io/apimachinery/pkg/types"
@@ -80,12 +79,12 @@ func NewAPIServiceExportRequestReconciler(
8079

8180
// Set up field indexers for APIServiceExportRequests
8281
if err := mgr.GetFieldIndexer().IndexField(ctx, &kubebindv1alpha2.APIServiceExportRequest{}, indexers.ServiceExportRequestByServiceExport,
83-
indexers.IndexServiceExportRequestByServiceExportControllerRuntime); err != nil {
82+
indexers.IndexServiceExportRequestByServiceExport); err != nil {
8483
return nil, fmt.Errorf("failed to setup ServiceExportRequestByServiceExport indexer: %w", err)
8584
}
8685

8786
if err := mgr.GetFieldIndexer().IndexField(ctx, &kubebindv1alpha2.APIServiceExportRequest{}, indexers.ServiceExportRequestByGroupResource,
88-
indexers.IndexServiceExportRequestByGroupResourceControllerRuntime); err != nil {
87+
indexers.IndexServiceExportRequestByGroupResource); err != nil {
8988
return nil, fmt.Errorf("failed to setup ServiceExportRequestByGroupResource indexer: %w", err)
9089
}
9190

@@ -98,14 +97,6 @@ func NewAPIServiceExportRequestReconciler(
9897
reconciler: reconciler{
9998
informerScope: scope,
10099
clusterScopedIsolation: isolation,
101-
getCRD: func(ctx context.Context, cache cache.Cache, name string) (*apiextensionsv1.CustomResourceDefinition, error) {
102-
var crd apiextensionsv1.CustomResourceDefinition
103-
key := types.NamespacedName{Name: name}
104-
if err := cache.Get(ctx, key, &crd); err != nil {
105-
return nil, err
106-
}
107-
return &crd, nil
108-
},
109100
getAPIResourceSchema: func(ctx context.Context, cache cache.Cache, name string) (*kubebindv1alpha2.APIResourceSchema, error) {
110101
var schema kubebindv1alpha2.APIResourceSchema
111102
key := types.NamespacedName{Name: name}
@@ -138,9 +129,8 @@ func NewAPIServiceExportRequestReconciler(
138129
}
139130

140131
// getServiceExportRequestMapper creates a mapping function for ServiceExport changes.
141-
142132
func getServiceExportRequestMapper(clusterName string, cl cluster.Cluster) handler.TypedEventHandler[client.Object, mcreconcile.Request] {
143-
return handler.TypedEnqueueRequestsFromMapFunc[client.Object, mcreconcile.Request](func(ctx context.Context, obj client.Object) []mcreconcile.Request {
133+
return handler.TypedEnqueueRequestsFromMapFunc(func(ctx context.Context, obj client.Object) []mcreconcile.Request {
144134
serviceExport := obj.(*kubebindv1alpha2.APIServiceExport)
145135
seKey := serviceExport.Namespace + "/" + serviceExport.Name
146136

@@ -168,16 +158,15 @@ func getServiceExportRequestMapper(clusterName string, cl cluster.Cluster) handl
168158
})
169159
}
170160

171-
// getCRDMapper creates a mapping function for CRD changes.
172-
func getCRDMapper(clusterName string, cl cluster.Cluster) handler.TypedEventHandler[client.Object, mcreconcile.Request] {
173-
return handler.TypedEnqueueRequestsFromMapFunc[client.Object, mcreconcile.Request](func(ctx context.Context, obj client.Object) []mcreconcile.Request {
174-
crd := obj.(*apiextensionsv1.CustomResourceDefinition)
175-
crdKey := crd.Name // CRDs are cluster-scoped
176-
161+
// getAPIResourceSchemaMapper creates a mapping function for APIResourceSchema changes.
162+
func getAPIResourceSchemaMapper(clusterName string, cl cluster.Cluster) handler.TypedEventHandler[client.Object, mcreconcile.Request] {
163+
return handler.TypedEnqueueRequestsFromMapFunc(func(ctx context.Context, obj client.Object) []mcreconcile.Request {
164+
apiResourceSchema := obj.(*kubebindv1alpha2.APIResourceSchema)
165+
apiResourceSchemaKey := apiResourceSchema.Name
177166
c := cl.GetClient()
178167

179168
var requests kubebindv1alpha2.APIServiceExportRequestList
180-
if err := c.List(ctx, &requests, client.MatchingFields{indexers.ServiceExportRequestByGroupResource: crdKey}); err != nil {
169+
if err := c.List(ctx, &requests, client.MatchingFields{indexers.ServiceExportRequestByGroupResource: apiResourceSchemaKey}); err != nil {
181170
return []mcreconcile.Request{}
182171
}
183172

@@ -202,7 +191,6 @@ func getCRDMapper(clusterName string, cl cluster.Cluster) handler.TypedEventHand
202191
//+kubebuilder:rbac:groups=kubebind.k8s.io,resources=apiserviceexportrequests/finalizers,verbs=update
203192
//+kubebuilder:rbac:groups=kubebind.k8s.io,resources=apiserviceexports,verbs=get;list;watch;create;update;patch;delete
204193
//+kubebuilder:rbac:groups=kubebind.k8s.io,resources=apiresourceschemas,verbs=get;list;watch;create;update;patch;delete
205-
//+kubebuilder:rbac:groups=apiextensions.k8s.io,resources=customresourcedefinitions,verbs=get;list;watch
206194

207195
// Reconcile is part of the main kubernetes reconciliation loop which aims to
208196
// move the current state of the cluster closer to the desired state.
@@ -261,8 +249,8 @@ func (r *APIServiceExportRequestReconciler) SetupWithManager(mgr mcmanager.Manag
261249
getServiceExportRequestMapper,
262250
).
263251
Watches(
264-
&apiextensionsv1.CustomResourceDefinition{},
265-
getCRDMapper,
252+
&kubebindv1alpha2.APIResourceSchema{},
253+
getAPIResourceSchemaMapper,
266254
).
267255
Named(controllerName).
268256
Complete(r)

contrib/example-backend/controllers/serviceexportrequest/serviceexportrequest_reconcile.go

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ type reconciler struct {
3737
informerScope kubebindv1alpha2.InformerScope
3838
clusterScopedIsolation kubebindv1alpha2.Isolation
3939

40-
getCRD func(ctx context.Context, cache cache.Cache, name string) (*apiextensionsv1.CustomResourceDefinition, error)
4140
getAPIResourceSchema func(ctx context.Context, cache cache.Cache, name string) (*kubebindv1alpha2.APIResourceSchema, error)
4241
getServiceExport func(ctx context.Context, cache cache.Cache, ns, name string) (*kubebindv1alpha2.APIServiceExport, error)
4342
createServiceExport func(ctx context.Context, resource *kubebindv1alpha2.APIServiceExport) (*kubebindv1alpha2.APIServiceExport, error)
@@ -61,42 +60,21 @@ func (r *reconciler) ensureExports(ctx context.Context, cache cache.Cache, req *
6160
logger := klog.FromContext(ctx)
6261

6362
if req.Status.Phase == kubebindv1alpha2.APIServiceExportRequestPhasePending {
64-
failure := false
6563
for _, res := range req.Spec.Resources {
66-
// backend is created using CRD's as backup. But this is not required.
6764
name := res.Resource + "." + res.Group
68-
6965
apiResourceSchema, err := r.getAPIResourceSchema(ctx, cache, name)
70-
switch {
71-
case apierrors.IsNotFound(err):
72-
logger.V(1).Info("APIResourceSchema not found, continuing with fallback to CRD conversion to APIResourceSchema", "name", name)
73-
crd, err := r.getCRD(ctx, cache, name)
74-
if err != nil && !apierrors.IsNotFound(err) {
75-
return err
76-
}
66+
if err != nil {
7767
if apierrors.IsNotFound(err) {
7868
conditions.MarkFalse(
7969
req,
8070
kubebindv1alpha2.APIServiceExportRequestConditionExportsReady,
81-
"CRDNotFound",
71+
"APIResourceSchemaNotFound",
8272
conditionsapi.ConditionSeverityError,
83-
"CustomResourceDefinition %s in the service provider cluster not found",
73+
"APIResourceSchema %s in the service provider cluster not found",
8474
name,
8575
)
86-
failure = true
87-
break
88-
}
89-
schema, err := helpers.CRDToAPIResourceSchema(crd, "")
90-
if err != nil {
9176
return err
9277
}
93-
schema.Namespace = req.Namespace
94-
95-
logger.V(1).Info("Creating APIResourceSchema", "name", schema.Name, "namespace", schema.Namespace)
96-
if apiResourceSchema, err = r.createAPIResourceSchema(ctx, schema); err != nil {
97-
return err
98-
}
99-
case err != nil:
10078
return err
10179
}
10280

@@ -135,11 +113,8 @@ func (r *reconciler) ensureExports(ctx context.Context, cache cache.Cache, req *
135113
}
136114
}
137115

138-
if !failure {
139-
conditions.MarkTrue(req, kubebindv1alpha2.APIServiceExportRequestConditionExportsReady)
140-
req.Status.Phase = kubebindv1alpha2.APIServiceExportRequestPhaseSucceeded
141-
return nil
142-
}
116+
conditions.MarkTrue(req, kubebindv1alpha2.APIServiceExportRequestConditionExportsReady)
117+
req.Status.Phase = kubebindv1alpha2.APIServiceExportRequestPhaseSucceeded
143118

144119
if time.Since(req.CreationTimestamp.Time) > time.Minute {
145120
req.Status.Phase = kubebindv1alpha2.APIServiceExportRequestPhaseFailed

deploy/examples/crd-mangodb.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,3 @@ spec:
3838
- spec
3939
subresources:
4040
status: {}
41-

deploy/examples/servicenamespace-example.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ apiVersion: kube-bind.io/v1alpha1
22
kind: APIServiceNamespace
33
metadata:
44
name: example
5-
spec: {}
5+
spec: {}

pkg/indexers/serviceexport.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424

2525
const (
2626
ServiceExportByCustomResourceDefinition = "serviceExportByCustomResourceDefinition"
27+
ServiceExportByAPIResourceSchema = "ServiceExportByAPIResourceSchema"
2728
)
2829

2930
func IndexServiceExportByCustomResourceDefinition(obj any) ([]string, error) {
@@ -35,9 +36,8 @@ func IndexServiceExportByCustomResourceDefinition(obj any) ([]string, error) {
3536
return []string{export.Name}, nil
3637
}
3738

38-
// IndexServiceExportByCustomResourceDefinitionControllerRuntime is a controller-runtime compatible indexer function
39-
// that indexes APIServiceExports by their CustomResourceDefinition name.
40-
func IndexServiceExportByCustomResourceDefinitionControllerRuntime(obj client.Object) []string {
39+
// IndexServiceExportByAPIResourceSchema is a controller-runtime compatible indexer function.
40+
func IndexServiceExportByAPIResourceSchema(obj client.Object) []string {
4141
export, ok := obj.(*v1alpha2.APIServiceExport)
4242
if !ok {
4343
return nil

pkg/indexers/serviceexportrequest.go

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -27,21 +27,9 @@ const (
2727
ServiceExportRequestByServiceExport = "ServiceExportRequestByServiceExport"
2828
)
2929

30-
func IndexServiceExportRequestByGroupResource(obj any) ([]string, error) {
31-
apiServiceExportRequest, ok := obj.(*kubebindv1alpha2.APIServiceExportRequest)
32-
if !ok {
33-
return nil, nil
34-
}
35-
keys := []string{}
36-
for _, gr := range apiServiceExportRequest.Spec.Resources {
37-
keys = append(keys, gr.Resource+"."+gr.Group)
38-
}
39-
return keys, nil
40-
}
41-
42-
// IndexServiceExportRequestByGroupResourceControllerRuntime is a controller-runtime compatible indexer function
30+
// IndexServiceExportRequestByGroupResource is a controller-runtime compatible indexer function
4331
// that indexes APIServiceExportRequests by their Group.Resource name.
44-
func IndexServiceExportRequestByGroupResourceControllerRuntime(obj client.Object) []string {
32+
func IndexServiceExportRequestByGroupResource(obj client.Object) []string {
4533
apiServiceExportRequest, ok := obj.(*kubebindv1alpha2.APIServiceExportRequest)
4634
if !ok {
4735
return nil
@@ -53,21 +41,9 @@ func IndexServiceExportRequestByGroupResourceControllerRuntime(obj client.Object
5341
return keys
5442
}
5543

56-
func IndexServiceExportRequestByServiceExport(obj any) ([]string, error) {
57-
apiServiceExportRequest, ok := obj.(*kubebindv1alpha2.APIServiceExportRequest)
58-
if !ok {
59-
return nil, nil
60-
}
61-
keys := []string{}
62-
for _, gr := range apiServiceExportRequest.Spec.Resources {
63-
keys = append(keys, apiServiceExportRequest.Namespace+"/"+gr.Resource+"."+gr.Group)
64-
}
65-
return keys, nil
66-
}
67-
68-
// IndexServiceExportRequestByServiceExportControllerRuntime is a controller-runtime compatible indexer function
44+
// IndexServiceExportRequestByServiceExport is a controller-runtime compatible indexer function
6945
// that indexes APIServiceExportRequests by their related ServiceExport name.
70-
func IndexServiceExportRequestByServiceExportControllerRuntime(obj client.Object) []string {
46+
func IndexServiceExportRequestByServiceExport(obj client.Object) []string {
7147
apiServiceExportRequest, ok := obj.(*kubebindv1alpha2.APIServiceExportRequest)
7248
if !ok {
7349
return nil

0 commit comments

Comments
 (0)