The v1.1.0 introduces several new features and enhancements
Multi-version Custom Resource Definitions (CRDs) generation and CRD conversion webhooks
The generation pipeline and the resource configuration framework now allow the generation of CRDs with multiple versions and conversion webhooks by conversion.Hub and conversion.Convertible implementations for the resource.Terraformed resources. The generated webhooks will invoke a chain of Conversions while converting from/to Hub versions to/from the spoke versions. There are currently two conversion types, conversion.PavedConversion and conversion.ManagedConversion.
We are also providing some high-level Conversions to implement some common API conversion tasks. conversion.NewFieldRenameConversion returns a new PavedConversion that implements a field renaming conversion from a specified source version to a specified target version of an API. conversion.NewCustomConverter can be used to initialize a new ManagedConversion that invokes a specified conversion function on a source and destination resource.Managed pair.
Terraform Plugin Framework resources support
This release introduces two new managed.Connecters and two new managed.ExternalClients (controller.terraformPluginFrameworkExternalClient and the controller.terraformPluginFrameworkAsyncExternalClient) which bring support for reconciling Terraform Plugin Framework resources in the new architecture without forking any Terraform CLI or Terraform provider processes. Consumers can specify resources in provider.TerraformPluginFrameworkIncludeList to generate them with Terraform Plugin Framework external clients. The nofork architecture now has the native implementations for both the Terraform plugin SDK v2 resources and the Terraform plugin framework resources. In this release, the NoFork
terminology was replaced by TerraformPluginSDK
.
What's Changed
- Add server-side apply merge strategy markers by @negz in #301
- Put default and configured timeouts to InstanceState for using the timeouts while Observe calls by @sergenyalcin in #309
- Call the registered schema.CustomizeDiffFunc functions in the Terraform SDK-based external client by @ulucinar in #311
- Make main-tf contents exported by @therealmitchconnors in #223
- Ignore specific error that returned by expandWildcard function by @sergenyalcin in #312
- Cache the Terraform instance state returned from schema.Resource.Apply even if the returned diagnostics contain errors by @ulucinar in #313
- Add config.Resource. ServerSideApplyMergeStrategies to configure the SSA Merge Strategies by @ulucinar in #308
- Pass full state to GetExternalNameFn function to access field other than ID by @sergenyalcin in #316
- Set the RawPlan for a new terraform.InstanceState returned from an observation by @ulucinar in #317
- Set diff state's Attributes to nil if the resource does not exist by @ulucinar in #318
- Add reference fields to the InitProvider by @sergenyalcin in #315
- Set RawConfig on the diff state by @ulucinar in #319
- fix image links in configuring-a-resource by @smcavallo in #322
- Add a nil check for the calculated instanceDiff while Observe by @sergenyalcin in #324
- Bump hashicorp/terraform-plugin-sdk to v2.30.0 by @ulucinar in #320
- fix broken link in docs by @mbbush in #328
- Fix the return type so it uses Upjet by @jake-ciolek in #330
- Generate a standalone "zz_generated.terraformed.go" file for each resource by @ulucinar in #326
- Add a transformer to remove API group imports for cross-resource references by @ulucinar in #331
- fix(environment): add missing environment specific patches TO/FROM by @haarchri in #332
- Multiversion CRDs & Conversion Webhooks by @ulucinar in #321
- Add configuration API parameter for overriding the field names by @sergenyalcin in #335
- terraform plugin framework external client & connectors by @erhancagirici in #329
- fix diff state not being set to freshly observed state for non-existing resources by @erhancagirici in #334
- Set the ID string to empty string on Terraform state for calculating the diffs by @ulucinar in #337
- Replace NoFork Terminology with TerraformPluginSDK by @ulucinar in #338
- Set CRD storage version to the latest generated version by @ulucinar in #339
New Contributors
- @negz made their first contribution in #301
- @therealmitchconnors made their first contribution in #223
- @smcavallo made their first contribution in #322
- @mbbush made their first contribution in #328
- @jake-ciolek made their first contribution in #330
Full Changelog: v1.0.0...v1.1.0