Skip to content

Commit 72dab7f

Browse files
committed
adjust client usage
1 parent e4d44e5 commit 72dab7f

5 files changed

Lines changed: 58 additions & 48 deletions

File tree

apiserviceexport.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: kube-bind.io/v1alpha2
2+
kind: APIServiceExportRequest
3+
metadata:
4+
name: mangodbs.mangodb.com
5+
spec:
6+
resources:
7+
- group: mangodb.com
8+
resource: mangodbs
9+
status: {}

backend/controllers/serviceexport/serviceexport_controller.go

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ import (
3939

4040
"github.com/kube-bind/kube-bind/pkg/indexers"
4141
kubebindv1alpha2 "github.com/kube-bind/kube-bind/sdk/apis/kubebind/v1alpha2"
42-
bindclient "github.com/kube-bind/kube-bind/sdk/client/clientset/versioned"
4342
)
4443

4544
const (
@@ -50,7 +49,6 @@ const (
5049
type APIServiceExportReconciler struct {
5150
manager mcmanager.Manager
5251

53-
bindClient bindclient.Interface
5452
reconciler reconciler
5553
}
5654

@@ -63,18 +61,13 @@ func NewAPIServiceExportReconciler(
6361
config = rest.CopyConfig(config)
6462
config = rest.AddUserAgent(config, controllerName)
6563

66-
bindClient, err := bindclient.NewForConfig(config)
67-
if err != nil {
68-
return nil, err
69-
}
7064
if err := mgr.GetFieldIndexer().IndexField(ctx, &kubebindv1alpha2.APIServiceExport{}, indexers.ServiceExportByCustomResourceDefinition,
7165
indexers.IndexServiceExportByCustomResourceDefinitionControllerRuntime); err != nil {
7266
return nil, fmt.Errorf("failed to setup ServiceExportByCustomResourceDefinition indexer: %w", err)
7367
}
7468

7569
r := &APIServiceExportReconciler{
76-
manager: mgr,
77-
bindClient: bindClient,
70+
manager: mgr,
7871
reconciler: reconciler{
7972
getCRD: func(ctx context.Context, cache cache.Cache, name string) (*apiextensionsv1.CustomResourceDefinition, error) {
8073
var crd apiextensionsv1.CustomResourceDefinition
@@ -84,11 +77,21 @@ func NewAPIServiceExportReconciler(
8477
}
8578
return &crd, nil
8679
},
87-
getAPIResourceSchema: func(ctx context.Context, name string) (*kubebindv1alpha2.APIResourceSchema, error) {
88-
return bindClient.KubeBindV1alpha2().APIResourceSchemas().Get(ctx, name, metav1.GetOptions{})
80+
getAPIResourceSchema: func(ctx context.Context, cache cache.Cache, name string) (*kubebindv1alpha2.APIResourceSchema, error) {
81+
var schema kubebindv1alpha2.APIResourceSchema
82+
key := types.NamespacedName{Name: name}
83+
if err := cache.Get(ctx, key, &schema); err != nil {
84+
return nil, err
85+
}
86+
return &schema, nil
8987
},
90-
deleteServiceExport: func(ctx context.Context, ns, name string) error {
91-
return bindClient.KubeBindV1alpha2().APIServiceExports(ns).Delete(ctx, name, metav1.DeleteOptions{})
88+
deleteServiceExport: func(ctx context.Context, cl client.Client, ns, name string) error {
89+
return cl.Delete(ctx, &kubebindv1alpha2.APIServiceExport{
90+
ObjectMeta: metav1.ObjectMeta{
91+
Namespace: ns,
92+
Name: name,
93+
},
94+
})
9295
},
9396
},
9497
}

backend/controllers/serviceexport/serviceexport_reconcile.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
utilerrors "k8s.io/apimachinery/pkg/util/errors"
2929
"k8s.io/klog/v2"
3030
"sigs.k8s.io/controller-runtime/pkg/cache"
31+
"sigs.k8s.io/controller-runtime/pkg/client"
3132

3233
kubebindv1alpha2 "github.com/kube-bind/kube-bind/sdk/apis/kubebind/v1alpha2"
3334
kubebindhelpers "github.com/kube-bind/kube-bind/sdk/apis/kubebind/v1alpha2/helpers"
@@ -36,14 +37,14 @@ import (
3637

3738
type reconciler struct {
3839
getCRD func(ctx context.Context, cache cache.Cache, name string) (*apiextensionsv1.CustomResourceDefinition, error)
39-
getAPIResourceSchema func(ctx context.Context, name string) (*kubebindv1alpha2.APIResourceSchema, error)
40-
deleteServiceExport func(ctx context.Context, namespace, name string) error
40+
getAPIResourceSchema func(ctx context.Context, cache cache.Cache, name string) (*kubebindv1alpha2.APIResourceSchema, error)
41+
deleteServiceExport func(ctx context.Context, cl client.Client, namespace, name string) error
4142
}
4243

4344
func (r *reconciler) reconcile(ctx context.Context, cache cache.Cache, export *kubebindv1alpha2.APIServiceExport) error {
4445
var errs []error
4546

46-
if specChanged, err := r.ensureSchema(ctx, export); err != nil {
47+
if specChanged, err := r.ensureSchema(ctx, cache, export); err != nil {
4748
errs = append(errs, err)
4849
} else if specChanged {
4950
// TODO: This should be separate controller for apiresourceschemas.
@@ -55,7 +56,7 @@ func (r *reconciler) reconcile(ctx context.Context, cache cache.Cache, export *k
5556
return utilerrors.NewAggregate(errs)
5657
}
5758

58-
func (r *reconciler) ensureSchema(ctx context.Context, export *kubebindv1alpha2.APIServiceExport) (specChanged bool, err error) {
59+
func (r *reconciler) ensureSchema(ctx context.Context, cache cache.Cache, export *kubebindv1alpha2.APIServiceExport) (specChanged bool, err error) {
5960
logger := klog.FromContext(ctx)
6061
leafHashes := make([]string, 0, len(export.Spec.Resources))
6162
for _, resourceRef := range export.Spec.Resources {
@@ -64,7 +65,7 @@ func (r *reconciler) ensureSchema(ctx context.Context, export *kubebindv1alpha2.
6465
continue
6566
}
6667

67-
schema, err := r.getAPIResourceSchema(ctx, resourceRef.Name)
68+
schema, err := r.getAPIResourceSchema(ctx, cache, resourceRef.Name)
6869
if err != nil {
6970
if errors.IsNotFound(err) {
7071
continue

backend/controllers/serviceexportrequest/serviceexportrequest_controller.go

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"k8s.io/apimachinery/pkg/api/errors"
2626
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2727
"k8s.io/apimachinery/pkg/types"
28-
kubernetesclient "k8s.io/client-go/kubernetes"
2928
"k8s.io/client-go/rest"
3029
ctrl "sigs.k8s.io/controller-runtime"
3130
"sigs.k8s.io/controller-runtime/pkg/cache"
@@ -40,7 +39,6 @@ import (
4039

4140
"github.com/kube-bind/kube-bind/pkg/indexers"
4241
kubebindv1alpha2 "github.com/kube-bind/kube-bind/sdk/apis/kubebind/v1alpha2"
43-
bindclient "github.com/kube-bind/kube-bind/sdk/client/clientset/versioned"
4442
)
4543

4644
const (
@@ -51,8 +49,6 @@ const (
5149
type APIServiceExportRequestReconciler struct {
5250
manager mcmanager.Manager
5351

54-
bindClient bindclient.Interface
55-
kubeClient kubernetesclient.Interface
5652
informerScope kubebindv1alpha2.InformerScope
5753
clusterScopedIsolation kubebindv1alpha2.Isolation
5854
reconciler reconciler
@@ -69,15 +65,6 @@ func NewAPIServiceExportRequestReconciler(
6965
config = rest.CopyConfig(config)
7066
config = rest.AddUserAgent(config, controllerName)
7167

72-
bindClient, err := bindclient.NewForConfig(config)
73-
if err != nil {
74-
return nil, err
75-
}
76-
kubeClient, err := kubernetesclient.NewForConfig(config)
77-
if err != nil {
78-
return nil, err
79-
}
80-
8168
// Set up field indexers for APIServiceExportRequests
8269
if err := mgr.GetFieldIndexer().IndexField(ctx, &kubebindv1alpha2.APIServiceExportRequest{}, indexers.ServiceExportRequestByServiceExport,
8370
indexers.IndexServiceExportRequestByServiceExportControllerRuntime); err != nil {
@@ -91,8 +78,6 @@ func NewAPIServiceExportRequestReconciler(
9178

9279
r := &APIServiceExportRequestReconciler{
9380
manager: mgr,
94-
bindClient: bindClient,
95-
kubeClient: kubeClient,
9681
informerScope: scope,
9782
clusterScopedIsolation: isolation,
9883
reconciler: reconciler{
@@ -122,14 +107,25 @@ func NewAPIServiceExportRequestReconciler(
122107
}
123108
return &export, nil
124109
},
125-
createServiceExport: func(ctx context.Context, resource *kubebindv1alpha2.APIServiceExport) (*kubebindv1alpha2.APIServiceExport, error) {
126-
return bindClient.KubeBindV1alpha2().APIServiceExports(resource.Namespace).Create(ctx, resource, metav1.CreateOptions{})
110+
createServiceExport: func(ctx context.Context, cl client.Client, resource *kubebindv1alpha2.APIServiceExport) (*kubebindv1alpha2.APIServiceExport, error) {
111+
if err := cl.Create(ctx, resource); err != nil {
112+
return nil, err
113+
}
114+
return resource, nil
127115
},
128-
createAPIResourceSchema: func(ctx context.Context, schema *kubebindv1alpha2.APIResourceSchema) (*kubebindv1alpha2.APIResourceSchema, error) {
129-
return bindClient.KubeBindV1alpha2().APIResourceSchemas().Create(ctx, schema, metav1.CreateOptions{})
116+
createAPIResourceSchema: func(ctx context.Context, cl client.Client, schema *kubebindv1alpha2.APIResourceSchema) (*kubebindv1alpha2.APIResourceSchema, error) {
117+
if err := cl.Create(ctx, schema); err != nil {
118+
return nil, err
119+
}
120+
return schema, nil
130121
},
131-
deleteServiceExportRequest: func(ctx context.Context, ns, name string) error {
132-
return bindClient.KubeBindV1alpha2().APIServiceExportRequests(ns).Delete(ctx, name, metav1.DeleteOptions{})
122+
deleteServiceExportRequest: func(ctx context.Context, cl client.Client, ns, name string) error {
123+
return cl.Delete(ctx, &kubebindv1alpha2.APIServiceExportRequest{
124+
ObjectMeta: metav1.ObjectMeta{
125+
Namespace: ns,
126+
Name: name,
127+
},
128+
})
133129
},
134130
},
135131
}
@@ -234,7 +230,7 @@ func (r *APIServiceExportRequestReconciler) Reconcile(ctx context.Context, req m
234230
original := apiServiceExportRequest.DeepCopy()
235231

236232
// Run the reconciliation logic
237-
if err := r.reconciler.reconcile(ctx, cache, apiServiceExportRequest); err != nil {
233+
if err := r.reconciler.reconcile(ctx, client, cache, apiServiceExportRequest); err != nil {
238234
logger.Error(err, "Failed to reconcile APIServiceExportRequest")
239235
return ctrl.Result{}, err
240236
}

backend/controllers/serviceexportrequest/serviceexportrequest_reconcile.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
utilerrors "k8s.io/apimachinery/pkg/util/errors"
2727
"k8s.io/klog/v2"
2828
"sigs.k8s.io/controller-runtime/pkg/cache"
29+
"sigs.k8s.io/controller-runtime/pkg/client"
2930

3031
kubebindv1alpha2 "github.com/kube-bind/kube-bind/sdk/apis/kubebind/v1alpha2"
3132
"github.com/kube-bind/kube-bind/sdk/apis/kubebind/v1alpha2/helpers"
@@ -40,15 +41,15 @@ type reconciler struct {
4041
getCRD func(ctx context.Context, cache cache.Cache, name string) (*apiextensionsv1.CustomResourceDefinition, error)
4142
getAPIResourceSchema func(ctx context.Context, cache cache.Cache, name string) (*kubebindv1alpha2.APIResourceSchema, error)
4243
getServiceExport func(ctx context.Context, cache cache.Cache, ns, name string) (*kubebindv1alpha2.APIServiceExport, error)
43-
createServiceExport func(ctx context.Context, resource *kubebindv1alpha2.APIServiceExport) (*kubebindv1alpha2.APIServiceExport, error)
44-
createAPIResourceSchema func(ctx context.Context, schema *kubebindv1alpha2.APIResourceSchema) (*kubebindv1alpha2.APIResourceSchema, error)
45-
deleteServiceExportRequest func(ctx context.Context, namespace, name string) error
44+
createServiceExport func(ctx context.Context, cl client.Client, resource *kubebindv1alpha2.APIServiceExport) (*kubebindv1alpha2.APIServiceExport, error)
45+
createAPIResourceSchema func(ctx context.Context, cl client.Client, schema *kubebindv1alpha2.APIResourceSchema) (*kubebindv1alpha2.APIResourceSchema, error)
46+
deleteServiceExportRequest func(ctx context.Context, cl client.Client, namespace, name string) error
4647
}
4748

48-
func (r *reconciler) reconcile(ctx context.Context, cache cache.Cache, req *kubebindv1alpha2.APIServiceExportRequest) error {
49+
func (r *reconciler) reconcile(ctx context.Context, cl client.Client, cache cache.Cache, req *kubebindv1alpha2.APIServiceExportRequest) error {
4950
var errs []error
5051

51-
if err := r.ensureExports(ctx, cache, req); err != nil {
52+
if err := r.ensureExports(ctx, cl, cache, req); err != nil {
5253
errs = append(errs, err)
5354
}
5455

@@ -57,7 +58,7 @@ func (r *reconciler) reconcile(ctx context.Context, cache cache.Cache, req *kube
5758
return utilerrors.NewAggregate(errs)
5859
}
5960

60-
func (r *reconciler) ensureExports(ctx context.Context, cache cache.Cache, req *kubebindv1alpha2.APIServiceExportRequest) error {
61+
func (r *reconciler) ensureExports(ctx context.Context, cl client.Client, cache cache.Cache, req *kubebindv1alpha2.APIServiceExportRequest) error {
6162
logger := klog.FromContext(ctx)
6263

6364
if req.Status.Phase == kubebindv1alpha2.APIServiceExportRequestPhasePending {
@@ -93,7 +94,7 @@ func (r *reconciler) ensureExports(ctx context.Context, cache cache.Cache, req *
9394
schema.Namespace = req.Namespace
9495

9596
logger.V(1).Info("Creating APIResourceSchema", "name", schema.Name, "namespace", schema.Namespace)
96-
if apiResourceSchema, err = r.createAPIResourceSchema(ctx, schema); err != nil {
97+
if apiResourceSchema, err = r.createAPIResourceSchema(ctx, cl, schema); err != nil {
9798
return err
9899
}
99100
case err != nil:
@@ -130,7 +131,7 @@ func (r *reconciler) ensureExports(ctx context.Context, cache cache.Cache, req *
130131
}
131132

132133
logger.V(1).Info("Creating APIServiceExport", "name", export.Name, "namespace", export.Namespace)
133-
if _, err = r.createServiceExport(ctx, export); err != nil {
134+
if _, err = r.createServiceExport(ctx, cl, export); err != nil {
134135
return err
135136
}
136137
}
@@ -151,7 +152,7 @@ func (r *reconciler) ensureExports(ctx context.Context, cache cache.Cache, req *
151152

152153
if time.Since(req.CreationTimestamp.Time) > 10*time.Minute {
153154
logger.Info("Deleting service binding request %s/%s", req.Namespace, req.Name, "reason", "timeout", "age", time.Since(req.CreationTimestamp.Time))
154-
return r.deleteServiceExportRequest(ctx, req.Namespace, req.Name)
155+
return r.deleteServiceExportRequest(ctx, cl, req.Namespace, req.Name)
155156
}
156157

157158
return nil

0 commit comments

Comments
 (0)