@@ -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 }
@@ -104,13 +95,13 @@ func NewClusterBindingReconciler(
10495 },
10596 createClusterRole : func (ctx context.Context , client client.Client , binding * rbacv1.ClusterRole ) (* rbacv1.ClusterRole , error ) {
10697 if err := client .Create (ctx , binding ); err != nil {
107- return nil , err
98+ return nil , fmt . Errorf ( "failed to create ClusterRole %q: %w" , binding . Name , err )
10899 }
109100 return binding , nil
110101 },
111102 updateClusterRole : func (ctx context.Context , client client.Client , binding * rbacv1.ClusterRole ) (* rbacv1.ClusterRole , error ) {
112103 if err := client .Update (ctx , binding ); err != nil {
113- return nil , err
104+ return nil , fmt . Errorf ( "failed to update ClusterRole %q: %w" , binding . Name , err )
114105 }
115106 return binding , nil
116107 },
@@ -124,13 +115,13 @@ func NewClusterBindingReconciler(
124115 },
125116 createClusterRoleBinding : func (ctx context.Context , client client.Client , binding * rbacv1.ClusterRoleBinding ) (* rbacv1.ClusterRoleBinding , error ) {
126117 if err := client .Create (ctx , binding ); err != nil {
127- return nil , err
118+ return nil , fmt . Errorf ( "failed to create ClusterRoleBinding %q: %w" , binding . Name , err )
128119 }
129120 return binding , nil
130121 },
131122 updateClusterRoleBinding : func (ctx context.Context , client client.Client , binding * rbacv1.ClusterRoleBinding ) (* rbacv1.ClusterRoleBinding , error ) {
132123 if err := client .Update (ctx , binding ); err != nil {
133- return nil , err
124+ return nil , fmt . Errorf ( "failed to update ClusterRoleBinding %q: %w" , binding . Name , err )
134125 }
135126 return binding , nil
136127 },
@@ -148,17 +139,15 @@ func NewClusterBindingReconciler(
148139 }
149140 return & ns , nil
150141 },
151- createRoleBinding : func (ctx context.Context , client client.Client , ns string , binding * rbacv1.RoleBinding ) (* rbacv1.RoleBinding , error ) {
152- binding .Namespace = ns
142+ createRoleBinding : func (ctx context.Context , client client.Client , binding * rbacv1.RoleBinding ) (* rbacv1.RoleBinding , error ) {
153143 if err := client .Create (ctx , binding ); err != nil {
154- return nil , err
144+ return nil , fmt . Errorf ( "failed to create RoleBinding %q in namespace %q: %w" , binding . Name , binding . Namespace , err )
155145 }
156146 return binding , nil
157147 },
158- updateRoleBinding : func (ctx context.Context , client client.Client , ns string , binding * rbacv1.RoleBinding ) (* rbacv1.RoleBinding , error ) {
159- binding .Namespace = ns
148+ updateRoleBinding : func (ctx context.Context , client client.Client , binding * rbacv1.RoleBinding ) (* rbacv1.RoleBinding , error ) {
160149 if err := client .Update (ctx , binding ); err != nil {
161- return nil , err
150+ return nil , fmt . Errorf ( "failed to update RoleBinding %q in namespace %q: %w" , binding . Name , binding . Namespace , err )
162151 }
163152 return binding , nil
164153 },
@@ -244,6 +233,7 @@ func (r *ClusterBindingReconciler) SetupWithManager(mgr mcmanager.Manager) error
244233 & kubebindv1alpha2.APIServiceExport {},
245234 mapCRD ,
246235 ).
236+ WithOptions (r .opts ).
247237 Named (controllerName ).
248238 Complete (r )
249239}
0 commit comments