This is a patch release on the release-1.11 branch that ships one new configuration capability and a set of stability and correctness fixes for upjet-based providers.
New Features
- Customizable controller setup aggregator & terraformed templates (#697): In order to be able to address categorical issues in maps of
status.atProviderin upjet-based providers, added theconfig.WithSetupAggregatorTemplateandconfig.WithTerraformedTemplateProviderOptions, allowing upjet-based providers to override the controller setup aggregator and theresource.Terraformedtemplates used during code generation. The change is backward-compatible — providers that do not set these options continue to use the templates shipped with upjet. This mirrors the existingconfig.WithMainTemplateoption and gives provider maintainers full control over the generated files (with the corresponding responsibility to keep customized templates up to date). A newTerraform.ResourceSchematemplate variable is also introduced, supersedingTerraform.SchemaVersionfor terraformed template rendering.
Bug Fixes
-
Fix data race on MR status between async callbacks and the managed reconciler (#674): The async Terraform plugin SDKv2 and framework external clients could race with crossplane-runtime's managed reconciler when calling
SetObservationon the managed resource status. TheCreate/Updateoperations now operate on deep copies of the managed resource to eliminate the race. Also adds atest.racemake target and a dedicated parallel CI job so races are caught earlier. Fixes #472. -
Prevent Terraform provider panics when the external resource is not found (#687):
InstanceState'sRawConfigandRawPlanare now populated when a Terraform state was previously cached with zero-valuedRawConfig/RawPlanbut the external resource is (no longer) found. This prevents the underlying Terraform provider from panicking when it reads attributes fromRawConfig/RawPlan(for example, the Terraform AWS provider's tagging interceptor), which could occur right after a successfulCreate. -
Correctly nest dotted map keys populated from secret references (#646): When a
SecretReferencepopulates amap[string]stringmanaged-resource attribute and a secret data key contained dots,fieldpathsplit the key at every dot and produced a wrongly-nested object instead of a flat string-to-string entry. Field paths now use bracket notation (attribute[key.with.dots]) so the full key is preserved as a single path segment. Addresses crossplane-contrib/provider-upjet-aws#1946. -
Omit XValidation for required fields that have references (#691): When a field is marked required but also has a reference configured, it is satisfiable via its
*Ref/*Selectorfields, so no CELXValidationrequired-parameter rule is emitted for it anymore. This avoids spurious validation errors for fields resolved through references.
What's Changed
- [Backport release-1.11] fix: set dotted map keys with correct nesting by @erhancagirici in #646
- [Backport release-1.11] Fix Race on MR Status Between Async Callbacks & Managed Reconciler by @ulucinar in #674
- [Backport release-1.11] Set InstanceState's RawConfig & RawPlan if Resource is not found by @ulucinar in #687
- [Backport release-1.11] fix(types): omit XValidation for required fields with references by @jonasz-lasut in #691
- [Backport release-1.11] Allow Custom Controller Setup Aggregator & Terraformed Templates via config.Provider by @ulucinar in #697
Full Changelog: v1.11.0...v1.11.1