@@ -26,11 +26,11 @@ import (
2626 "k8s.io/apimachinery/pkg/api/errors"
2727 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2828 "k8s.io/apimachinery/pkg/types"
29- "k8s.io/client-go/rest"
3029 ctrl "sigs.k8s.io/controller-runtime"
3130 "sigs.k8s.io/controller-runtime/pkg/cache"
3231 "sigs.k8s.io/controller-runtime/pkg/client"
3332 "sigs.k8s.io/controller-runtime/pkg/cluster"
33+ "sigs.k8s.io/controller-runtime/pkg/controller"
3434 "sigs.k8s.io/controller-runtime/pkg/handler"
3535 "sigs.k8s.io/controller-runtime/pkg/log"
3636 "sigs.k8s.io/controller-runtime/pkg/reconcile"
@@ -39,40 +39,31 @@ import (
3939 mcreconcile "sigs.k8s.io/multicluster-runtime/pkg/reconcile"
4040
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
4544const (
46- controllerName = "kube-bind-example- backend-clusterbinding"
45+ controllerName = "kube-bind-backend-clusterbinding"
4746)
4847
4948// ClusterBindingReconciler reconciles a ClusterBinding object.
5049type ClusterBindingReconciler struct {
51- manager mcmanager.Manager
52-
50+ manager mcmanager.Manager
51+ opts controller. TypedOptions [mcreconcile. Request ]
5352 scope kubebindv1alpha2.InformerScope
54- bindClient bindclient.Interface
5553 reconciler reconciler
5654}
5755
5856// NewClusterBindingReconciler returns a new ClusterBindingReconciler to reconcile ClusterBindings.
5957func NewClusterBindingReconciler (
58+ _ context.Context ,
6059 mgr mcmanager.Manager ,
61- config * rest. Config ,
60+ opts controller. TypedOptions [mcreconcile. Request ] ,
6261 scope kubebindv1alpha2.InformerScope ,
6362) (* ClusterBindingReconciler , error ) {
64- config = rest .CopyConfig (config )
65- config = rest .AddUserAgent (config , controllerName )
66-
67- bindClient , err := bindclient .NewForConfig (config )
68- if err != nil {
69- return nil , err
70- }
71-
7263 r := & ClusterBindingReconciler {
73- manager : mgr ,
74- scope : scope ,
75- bindClient : bindClient ,
64+ manager : mgr ,
65+ opts : opts ,
66+ scope : scope ,
7667 reconciler : reconciler {
7768 scope : scope ,
7869 listServiceExports : func (ctx context.Context , cache cache.Cache , ns string ) ([]* kubebindv1alpha2.APIServiceExport , error ) {
@@ -88,7 +79,7 @@ func NewClusterBindingReconciler(
8879 },
8980 getAPIResourceSchema : func (ctx context.Context , cache cache.Cache , name string ) (* kubebindv1alpha2.APIResourceSchema , error ) {
9081 result := & kubebindv1alpha2.APIResourceSchema {}
91- err = cache .Get (ctx , types.NamespacedName {Name : name }, result )
82+ err : = cache .Get (ctx , types.NamespacedName {Name : name }, result )
9283 if err != nil {
9384 return nil , fmt .Errorf ("failed to get APIResourceSchema %q: %w" , name , err )
9485 }
@@ -102,17 +93,11 @@ func NewClusterBindingReconciler(
10293 }
10394 return & role , nil
10495 },
105- createClusterRole : func (ctx context.Context , client client.Client , binding * rbacv1.ClusterRole ) (* rbacv1.ClusterRole , error ) {
106- if err := client .Create (ctx , binding ); err != nil {
107- return nil , err
108- }
109- return binding , nil
96+ createClusterRole : func (ctx context.Context , client client.Client , binding * rbacv1.ClusterRole ) error {
97+ return client .Create (ctx , binding )
11098 },
111- updateClusterRole : func (ctx context.Context , client client.Client , binding * rbacv1.ClusterRole ) (* rbacv1.ClusterRole , error ) {
112- if err := client .Update (ctx , binding ); err != nil {
113- return nil , err
114- }
115- return binding , nil
99+ updateClusterRole : func (ctx context.Context , client client.Client , binding * rbacv1.ClusterRole ) error {
100+ return client .Update (ctx , binding )
116101 },
117102 getClusterRoleBinding : func (ctx context.Context , cache cache.Cache , name string ) (* rbacv1.ClusterRoleBinding , error ) {
118103 var binding rbacv1.ClusterRoleBinding
@@ -122,17 +107,11 @@ func NewClusterBindingReconciler(
122107 }
123108 return & binding , nil
124109 },
125- createClusterRoleBinding : func (ctx context.Context , client client.Client , binding * rbacv1.ClusterRoleBinding ) (* rbacv1.ClusterRoleBinding , error ) {
126- if err := client .Create (ctx , binding ); err != nil {
127- return nil , err
128- }
129- return binding , nil
110+ createClusterRoleBinding : func (ctx context.Context , client client.Client , binding * rbacv1.ClusterRoleBinding ) error {
111+ return client .Create (ctx , binding )
130112 },
131- updateClusterRoleBinding : func (ctx context.Context , client client.Client , binding * rbacv1.ClusterRoleBinding ) (* rbacv1.ClusterRoleBinding , error ) {
132- if err := client .Update (ctx , binding ); err != nil {
133- return nil , err
134- }
135- return binding , nil
113+ updateClusterRoleBinding : func (ctx context.Context , client client.Client , binding * rbacv1.ClusterRoleBinding ) error {
114+ return client .Update (ctx , binding )
136115 },
137116 deleteClusterRoleBinding : func (ctx context.Context , client client.Client , name string ) error {
138117 binding := & rbacv1.ClusterRoleBinding {
@@ -144,29 +123,21 @@ func NewClusterBindingReconciler(
144123 var ns v1.Namespace
145124 key := types.NamespacedName {Name : name }
146125 if err := cache .Get (ctx , key , & ns ); err != nil {
147- return nil , fmt . Errorf ( "failed to get Namespace %q: %w" , name , err )
126+ return nil , err
148127 }
149128 return & ns , nil
150129 },
151- createRoleBinding : func (ctx context.Context , client client.Client , ns string , binding * rbacv1.RoleBinding ) (* rbacv1.RoleBinding , error ) {
152- binding .Namespace = ns
153- if err := client .Create (ctx , binding ); err != nil {
154- return nil , err
155- }
156- return binding , nil
130+ createRoleBinding : func (ctx context.Context , client client.Client , binding * rbacv1.RoleBinding ) error {
131+ return client .Create (ctx , binding )
157132 },
158- updateRoleBinding : func (ctx context.Context , client client.Client , ns string , binding * rbacv1.RoleBinding ) (* rbacv1.RoleBinding , error ) {
159- binding .Namespace = ns
160- if err := client .Update (ctx , binding ); err != nil {
161- return nil , err
162- }
163- return binding , nil
133+ updateRoleBinding : func (ctx context.Context , client client.Client , binding * rbacv1.RoleBinding ) error {
134+ return client .Update (ctx , binding )
164135 },
165136 getRoleBinding : func (ctx context.Context , cache cache.Cache , ns , name string ) (* rbacv1.RoleBinding , error ) {
166137 var binding rbacv1.RoleBinding
167138 key := types.NamespacedName {Namespace : ns , Name : name }
168139 if err := cache .Get (ctx , key , & binding ); err != nil {
169- return nil , fmt . Errorf ( "failed to get RoleBinding %q in namespace %q: %w" , name , ns , err )
140+ return nil , err
170141 }
171142 return & binding , nil
172143 },
@@ -244,6 +215,7 @@ func (r *ClusterBindingReconciler) SetupWithManager(mgr mcmanager.Manager) error
244215 & kubebindv1alpha2.APIServiceExport {},
245216 mapAPIResourceSchema ,
246217 ).
218+ WithOptions (r .opts ).
247219 Named (controllerName ).
248220 Complete (r )
249221}
0 commit comments