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

Releases: vmware-labs/reconciler-runtime

Release v0.6.0

27 May 16:25
50a19b4
Compare
Choose a tag to compare

Breaking Changes

No breaking changes in this release.

Type renames (the previous names are deprecated, but still functional):

  • reconcilers.ParentReconciler -> reconcilers.ResourceReconciler
  • reconcilers.CastParent -> reconcilers.CastResource
  • reconcilers.RetrieveCastParentType -> reconcilers.RetrieveResourceType
  • reconcilers.RetrieveParentConfig -> reconcilers.RetrieveOriginalConfig
  • reconcilers.RetrieveParentType -> reconcilers.RetrieveOriginalResourceType
  • reconcilers.StashCastParentType -> reconcilers.StashResourceType
  • reconcilers.StashParentConfig -> reconcilers.StashOriginalConfig
  • reconcilers.StashParentType -> reconcilers.StashOriginalResourceType

Highlights

  • AggregateReconciler defines a specific resource (#241)
  • Define ResourceManager to create/update/delete resources (#244)
  • Support testing with Unstructured (#240)
  • Allow custom Setup method on root reconcilers (#243)

What's Changed

  • Avoid "parent" unless in the context of a child by @scothis in #238
  • Bump sigs.k8s.io/controller-runtime from 0.12.0 to 0.12.1 by @dependabot in #239
  • Support testing with Unstructured by @scothis in #240
  • AggregateReconciler by @scothis in #241
  • Allow custom Setup method on root reconcilers by @scothis in #243
  • Define ResourceManager to create/update/delete resources by @scothis in #244
  • Use favor kind for typeName when available by @scothis in #245
  • Bump k8s.io/client-go from 0.24.0 to 0.24.1 by @dependabot in #247
  • Bump sigs.k8s.io/controller-tools from 0.8.0 to 0.9.0 in /hack by @dependabot in #242

Full Changelog: v0.5.0...v0.6.0

Release v0.5.0

16 May 15:50
01ff7be
Compare
Choose a tag to compare

Breaking Changes

Highlights

What's Changed

Read more

Release v0.4.0

23 Dec 01:52
45da275
Compare
Choose a tag to compare

Breaking Changes

There are a number of small breaking changes in this release. Many of them are caused by upstream changes that cascade into this release. Please review the controller-runtime and Kubernetes release notes in addition to the below.

The github.com/vmware-labs/reconciler-runtime/testing/factories package is deprecated and will be removed in a future release. Spiritually equivalent and much more complete options are available via libraries like dies.dev.

rtesting.Factory is deprecated and will be removed in the future. Existing usage has changed to client.Object, each of these uses will call .DeepCopyObject() before using the content. This method can be used to create a factory equivalent. dies.dev and the now deprecated factories use this pattern allowing them to be dropped into test suites along with vanilla k8s objects without needing a wrapper.

apis.Condition and related objects were removed in favor of metav1.Condition. While this is nearly a drop in replacement there are differences. The reason field is now required, the severity field does not exist. The ConditionSets and ConditionManger remain, and are updated to use metav1.Condition.

What's Changed

  • [BREAKING] Bump k8s.io/* to 0.23.1
  • [BREAKING] Bump sigs.k8s.io/controller-runtime to 0.11.0
  • [BREAKING] Bump github.com/go-logr/logr from 0.4.0 to 1.2.0
  • [BREAKING] Bump minimum Golang version to 1.17
  • [BREAKING] Replace custom conditions with metav1.Condition by @scothis in #172
  • [BREAKING] Deprecate resource factories by @scothis in #162
  • [FEATURE] Add ClusterRole and ClusterRoleBinding factories by @jhvhs in #118
  • [FEATURE] Add image pull secrets method to factory by @edwardecook in #137
  • [FEATURE] Expose more of the testing types by @scothis in #133
  • [BUG] Ignore ResourceVersion in tests with stashed resources by @scothis in #119

New Contributors

Full Changelog: v0.3.0...v0.4.0

Release v0.3.0

10 May 20:14
7880d90
Compare
Choose a tag to compare

Thanks to @Samze, @gmrodgers and @shashwathi for contributing to this release

Change log:

  • Update to controller-runtime 0.8 (#94)
  • Update Kubernetes APIs to 0.20 (#97)
  • Allow multiple child resource of the same kind for a parent resource (#77)
  • Reflect mutations from cast parent back to parent (#59)
  • Fix SyncReconciler passing reflect.Type as key to logger (#80)
  • Miscellaneous enhancement to object factories (#80, #81, #82)
  • Deprecate Test method for table tests (#105)

Breaking changes:

  • Drop ChildReconciler#IndexField (#68)
    There is no required action other than to remove the field from child reconcilers

Release v0.2.0

07 Dec 18:05
c3f7a25
Compare
Choose a tag to compare

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)

v0.1.0

26 Jun 18:57
0a94a2f
Compare
Choose a tag to compare

First release