Skip to content

Commit

Permalink
chore: add options type for both controllers
Browse files Browse the repository at this point in the history
This is in alignment with other controllers such as the
helm-controller.

Signed-off-by: Max Jonas Werner <mail@makk.es>
  • Loading branch information
Max Jonas Werner committed Jun 24, 2021
1 parent f78b993 commit 03043e5
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 25 deletions.
17 changes: 10 additions & 7 deletions controllers/imagepolicy_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,14 @@ const imageRepoKey = ".spec.imageRepository.name"
// ImagePolicyReconciler reconciles a ImagePolicy object
type ImagePolicyReconciler struct {
client.Client
Scheme *runtime.Scheme
EventRecorder kuberecorder.EventRecorder
ExternalEventRecorder *events.Recorder
MetricsRecorder *metrics.Recorder
Database DatabaseReader
Scheme *runtime.Scheme
EventRecorder kuberecorder.EventRecorder
ExternalEventRecorder *events.Recorder
MetricsRecorder *metrics.Recorder
Database DatabaseReader
}

type ImagePolicyReconcilerOptions struct {
MaxConcurrentReconciles int
}

Expand Down Expand Up @@ -193,7 +196,7 @@ func (r *ImagePolicyReconciler) Reconcile(ctx context.Context, req ctrl.Request)
return ctrl.Result{}, err
}

func (r *ImagePolicyReconciler) SetupWithManager(mgr ctrl.Manager) error {
func (r *ImagePolicyReconciler) SetupWithManager(mgr ctrl.Manager, opts ImagePolicyReconcilerOptions) error {
// index the policies by which image repo they point at, so that
// it's easy to list those out when an image repo changes.
if err := mgr.GetFieldIndexer().IndexField(context.Background(), &imagev1.ImagePolicy{}, imageRepoKey, func(obj client.Object) []string {
Expand All @@ -210,7 +213,7 @@ func (r *ImagePolicyReconciler) SetupWithManager(mgr ctrl.Manager) error {
handler.EnqueueRequestsFromMapFunc(r.imagePoliciesForRepository),
).
WithOptions(controller.Options{
MaxConcurrentReconciles: r.MaxConcurrentReconciles,
MaxConcurrentReconciles: opts.MaxConcurrentReconciles,
}).
Complete(r)
}
Expand Down
19 changes: 11 additions & 8 deletions controllers/imagerepository_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,17 +66,20 @@ const (
// ImageRepositoryReconciler reconciles a ImageRepository object
type ImageRepositoryReconciler struct {
client.Client
Scheme *runtime.Scheme
EventRecorder kuberecorder.EventRecorder
ExternalEventRecorder *events.Recorder
MetricsRecorder *metrics.Recorder
MaxConcurrentReconciles int
Database interface {
Scheme *runtime.Scheme
EventRecorder kuberecorder.EventRecorder
ExternalEventRecorder *events.Recorder
MetricsRecorder *metrics.Recorder
Database interface {
DatabaseWriter
DatabaseReader
}
}

type ImageRepositoryReconcilerOptions struct {
MaxConcurrentReconciles int
}

type dockerConfig struct {
Auths map[string]authn.AuthConfig
}
Expand Down Expand Up @@ -354,12 +357,12 @@ func (r *ImageRepositoryReconciler) shouldScan(repo imagev1.ImageRepository, now
return false, when, nil
}

func (r *ImageRepositoryReconciler) SetupWithManager(mgr ctrl.Manager) error {
func (r *ImageRepositoryReconciler) SetupWithManager(mgr ctrl.Manager, opts ImageRepositoryReconcilerOptions) error {
return ctrl.NewControllerManagedBy(mgr).
For(&imagev1.ImageRepository{}).
WithEventFilter(predicate.Or(predicate.GenerationChangedPredicate{}, predicates.ReconcileRequestedPredicate{})).
WithOptions(controller.Options{
MaxConcurrentReconciles: r.MaxConcurrentReconciles,
MaxConcurrentReconciles: opts.MaxConcurrentReconciles,
}).
Complete(r)
}
Expand Down
4 changes: 2 additions & 2 deletions controllers/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,14 +105,14 @@ var _ = BeforeSuite(func(done Done) {
Scheme: scheme.Scheme,
Database: database.NewBadgerDatabase(badgerDB),
}
Expect(imageRepoReconciler.SetupWithManager(k8sMgr)).To(Succeed())
Expect(imageRepoReconciler.SetupWithManager(k8sMgr, ImageRepositoryReconcilerOptions{})).To(Succeed())

imagePolicyReconciler = &ImagePolicyReconciler{
Client: k8sMgr.GetClient(),
Scheme: scheme.Scheme,
Database: database.NewBadgerDatabase(badgerDB),
}
Expect(imagePolicyReconciler.SetupWithManager(k8sMgr)).To(Succeed())
Expect(imagePolicyReconciler.SetupWithManager(k8sMgr, ImagePolicyReconcilerOptions{})).To(Succeed())

// this must be started for the caches to be running, and thereby
// for the client to be usable.
Expand Down
18 changes: 10 additions & 8 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,14 +138,15 @@ func main() {
pprof.SetupHandlers(mgr, setupLog)

if err = (&controllers.ImageRepositoryReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
EventRecorder: mgr.GetEventRecorderFor(controllerName),
ExternalEventRecorder: eventRecorder,
MetricsRecorder: metricsRecorder,
Database: db,
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
EventRecorder: mgr.GetEventRecorderFor(controllerName),
ExternalEventRecorder: eventRecorder,
MetricsRecorder: metricsRecorder,
Database: db,
}).SetupWithManager(mgr, controllers.ImageRepositoryReconcilerOptions{
MaxConcurrentReconciles: concurrent,
}).SetupWithManager(mgr); err != nil {
}); err != nil {
setupLog.Error(err, "unable to create controller", "controller", imagev1.ImageRepositoryKind)
os.Exit(1)
}
Expand All @@ -156,8 +157,9 @@ func main() {
ExternalEventRecorder: eventRecorder,
MetricsRecorder: metricsRecorder,
Database: db,
}).SetupWithManager(mgr, controllers.ImagePolicyReconcilerOptions{
MaxConcurrentReconciles: concurrent,
}).SetupWithManager(mgr); err != nil {
}); err != nil {
setupLog.Error(err, "unable to create controller", "controller", imagev1.ImagePolicyKind)
os.Exit(1)
}
Expand Down

0 comments on commit 03043e5

Please sign in to comment.