Skip to content

Commit

Permalink
feat: add plugin to fix controller typo alias and improve its logs (o…
Browse files Browse the repository at this point in the history
…nly V3)
  • Loading branch information
Camila Macedo committed Jun 19, 2020
1 parent 36aa113 commit 7ae3d94
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 28 deletions.
14 changes: 4 additions & 10 deletions pkg/plugin/v3/scaffolds/internal/templates/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,7 @@ const (
`
controllerImportCodeFragment = `"%s/controllers"
`
// TODO(v3): `&%scontrollers` should be used instead of `&%scontroller` as there may be multiple
// controller for different Kinds in the same group. However, this is a backwards incompatible
// change, and thus should be done for next project version.
multiGroupControllerImportCodeFragment = `%scontroller "%s/controllers/%s"
multiGroupControllerImportCodeFragment = `%scontrollers "%s/controllers/%s"
`
addschemeCodeFragment = `utilruntime.Must(%s.AddToScheme(scheme))
`
Expand All @@ -124,12 +121,9 @@ const (
os.Exit(1)
}
`
// TODO(v3): loggers for the same Kind controllers from different groups use the same logger.
// `.WithName("controllers").WithName(GROUP).WithName(KIND)` should be used instead. However,
// this is a backwards incompatible change, and thus should be done for next project version.
multiGroupReconcilerSetupCodeFragment = `if err = (&%scontroller.%sReconciler{
multiGroupReconcilerSetupCodeFragment = `if err = (&%scontrollers.%sReconciler{
Client: mgr.GetClient(),
Log: ctrl.Log.WithName("controllers").WithName("%s"),
Log: ctrl.Log.WithName("controllers").WithName("%s").WithName("%s"),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "%s")
Expand Down Expand Up @@ -176,7 +170,7 @@ func (f *MainUpdater) GetCodeFragments() file.CodeFragmentsMap {
f.Resource.Kind, f.Resource.Kind, f.Resource.Kind))
} else {
setup = append(setup, fmt.Sprintf(multiGroupReconcilerSetupCodeFragment,
f.Resource.GroupPackageName, f.Resource.Kind, f.Resource.Kind, f.Resource.Kind))
f.Resource.GroupPackageName, f.Resource.Kind, f.Resource.Group, f.Resource.Kind, f.Resource.Kind))
}
}
if f.WireWebhook {
Expand Down
36 changes: 18 additions & 18 deletions testdata/project-v3-multigroup/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ import (
shipv1 "sigs.k8s.io/kubebuilder/testdata/project-v3-multigroup/apis/ship/v1"
shipv1beta1 "sigs.k8s.io/kubebuilder/testdata/project-v3-multigroup/apis/ship/v1beta1"
shipv2alpha1 "sigs.k8s.io/kubebuilder/testdata/project-v3-multigroup/apis/ship/v2alpha1"
crewcontroller "sigs.k8s.io/kubebuilder/testdata/project-v3-multigroup/controllers/crew"
foopolicycontroller "sigs.k8s.io/kubebuilder/testdata/project-v3-multigroup/controllers/foo.policy"
seacreaturescontroller "sigs.k8s.io/kubebuilder/testdata/project-v3-multigroup/controllers/sea-creatures"
shipcontroller "sigs.k8s.io/kubebuilder/testdata/project-v3-multigroup/controllers/ship"
crewcontrollers "sigs.k8s.io/kubebuilder/testdata/project-v3-multigroup/controllers/crew"
foopolicycontrollers "sigs.k8s.io/kubebuilder/testdata/project-v3-multigroup/controllers/foo.policy"
seacreaturescontrollers "sigs.k8s.io/kubebuilder/testdata/project-v3-multigroup/controllers/sea-creatures"
shipcontrollers "sigs.k8s.io/kubebuilder/testdata/project-v3-multigroup/controllers/ship"
// +kubebuilder:scaffold:imports
)

Expand Down Expand Up @@ -82,9 +82,9 @@ func main() {
os.Exit(1)
}

if err = (&crewcontroller.CaptainReconciler{
if err = (&crewcontrollers.CaptainReconciler{
Client: mgr.GetClient(),
Log: ctrl.Log.WithName("controllers").WithName("Captain"),
Log: ctrl.Log.WithName("controllers").WithName("crew").WithName("Captain"),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "Captain")
Expand All @@ -94,9 +94,9 @@ func main() {
setupLog.Error(err, "unable to create webhook", "webhook", "Captain")
os.Exit(1)
}
if err = (&shipcontroller.FrigateReconciler{
if err = (&shipcontrollers.FrigateReconciler{
Client: mgr.GetClient(),
Log: ctrl.Log.WithName("controllers").WithName("Frigate"),
Log: ctrl.Log.WithName("controllers").WithName("ship").WithName("Frigate"),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "Frigate")
Expand All @@ -106,41 +106,41 @@ func main() {
setupLog.Error(err, "unable to create webhook", "webhook", "Frigate")
os.Exit(1)
}
if err = (&shipcontroller.DestroyerReconciler{
if err = (&shipcontrollers.DestroyerReconciler{
Client: mgr.GetClient(),
Log: ctrl.Log.WithName("controllers").WithName("Destroyer"),
Log: ctrl.Log.WithName("controllers").WithName("ship").WithName("Destroyer"),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "Destroyer")
os.Exit(1)
}
if err = (&shipcontroller.CruiserReconciler{
if err = (&shipcontrollers.CruiserReconciler{
Client: mgr.GetClient(),
Log: ctrl.Log.WithName("controllers").WithName("Cruiser"),
Log: ctrl.Log.WithName("controllers").WithName("ship").WithName("Cruiser"),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "Cruiser")
os.Exit(1)
}
if err = (&seacreaturescontroller.KrakenReconciler{
if err = (&seacreaturescontrollers.KrakenReconciler{
Client: mgr.GetClient(),
Log: ctrl.Log.WithName("controllers").WithName("Kraken"),
Log: ctrl.Log.WithName("controllers").WithName("sea-creatures").WithName("Kraken"),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "Kraken")
os.Exit(1)
}
if err = (&seacreaturescontroller.LeviathanReconciler{
if err = (&seacreaturescontrollers.LeviathanReconciler{
Client: mgr.GetClient(),
Log: ctrl.Log.WithName("controllers").WithName("Leviathan"),
Log: ctrl.Log.WithName("controllers").WithName("sea-creatures").WithName("Leviathan"),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "Leviathan")
os.Exit(1)
}
if err = (&foopolicycontroller.HealthCheckPolicyReconciler{
if err = (&foopolicycontrollers.HealthCheckPolicyReconciler{
Client: mgr.GetClient(),
Log: ctrl.Log.WithName("controllers").WithName("HealthCheckPolicy"),
Log: ctrl.Log.WithName("controllers").WithName("foo.policy").WithName("HealthCheckPolicy"),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "HealthCheckPolicy")
Expand Down

0 comments on commit 7ae3d94

Please sign in to comment.