Skip to content
This repository has been archived by the owner on Aug 28, 2024. It is now read-only.

Release v0.2.0

Compare
Choose a tag to compare
@scothis scothis released this 07 Dec 18:05
· 281 commits to main since this release
c3f7a25

Changelog:

  • Compatibility for k8s 1.18 and 1.19 apis and controller-runtime 0.6 (#14)
  • Cast parent resource type (#51)
  • Define reconciler Sequence as a SubReconciler (#50)
  • Status only child reconciliation (#49)
  • Add NewConfig helper to streamline manager mains (#43)
  • Validate sub reconcilers on setup (#42)
  • Gracefully handle child resources mutated by admission controllers
  • Adopt Contributor Covenant version 2.0 (#46)

Breaking changes:

While these changes look like a lot, they are each relatively straight forward to adopt. In many cases, the go compiler will provide meaningful error messages. In other cases, the new runtime type validation will provide a meaningful error message. Many of these breakages were necessitated by upstream breaking changes in Kubernetes 1.18 and controller-runtime 0.6.

  • reconcilers.ParentReconciler#SetupWithManager(mgr ctrl.Manager) error -> reconcilers.ParentReconciler#SetupWithManager(ctx context.Context, mgr ctrl.Manager) error (#14)
  • reconcilers.SubReconciler#SetupWithManager(mgr ctrl.Manager, bldr *builder.Builder) error -> reconcilers.SubReconciler#SetupWithManager(ctx context.Context, mgr ctrl.Manager, bldr *builder.Builder) error (#14)
  • reconcilers.SyncReconciler#Setup: func(mgr ctrl.Manager, bldr *builder.Builder) error -> func(ctx context.Context, mgr ctrl.Manager, bldr *builder.Builder) error (#14)
  • reconcilers.ChildReconciler#Setup: func(mgr ctrl.Manager, bldr *builder.Builder) error -> func(ctx context.Context, mgr ctrl.Manager, bldr *builder.Builder) error (#14)
  • ParentReconciler#SubReconcilers []SubReconciler is now ParentReconciler#Reconciler SubReconciler. Use reconcilers.Sequence for a slice of SubReconcilers. (#50)
  • reconcilers.ChildReconciler#ParentType is removed, the value is now passed from the the ParentReconciler. ChildReconciler and SyncReconcilers may use a struct or compatible interface to represent the parent resource. (#42)
  • reconcilers.ChildReconciler#DesiredChild must accept a context as it's first argument. The context is used to pass state between sub reconcilers, always including will make it easier to retrieve stashed state. (#42)
  • reconcilers.IndexControllersOfType(mgr ctrl.Manager, field string, owner, ownee runtime.Object, scheme *runtime.Scheme) error -> reconcilers.IndexControllersOfType(ctx context.Context, mgr ctrl.Manager, field string, owner, ownee runtime.Object, scheme *runtime.Scheme) error (#14)