New Features
- New External Name Configuration: Added config.FrameworkResourceWithComputedIdentifier for more flexible external name handling in Terraform provider configurations
- Enhanced Struct Tag Support: Introduced comprehensive struct tag manipulation capabilities through the new pkg/types/structtag package
- Introduce pkg/types/structtag with a typed struct tag model (Value, parsing, override, no-omit)
- Add per-field InitProvider overrides:
- config.InitProviderOverrides with kubebuilder.Options and config.TagOverrides
- Tag overrides for json and tf via structtag.Value
- Kubebuilder marker overrides via pkg/types/markers/kubebuilder.Options
- config.InitProviderOverrides with kubebuilder.Options and config.TagOverrides
- Strengthen validation of JSON tag names and tag combinations, previously there was no validation for these.
- json struct tag values are validated using the regex ^[a-zA-Z_][a-zA-Z0-9_]*$ to prevent upjet from generating invalid CRD field names.
- tf tag values are currently not validated. This is future work (we need to investigate their syntax first)
- Treat nil values in initProvider as absent when computing ignore list; avoids spurious plan diffs
Developer Experience Improvements
- Improved Error Diagnostics: Enhanced error handling and diagnostics for Terraform plugin framework integration
- Stricter Configuration Validation: Unknown struct tag options now properly trigger errors instead of being silently ignored
Technical Improvements
- Enhanced conversion path management to prevent concurrent access issues
- Strengthened validation for external name configuration options
- Improved handling of edge cases in code generation for Crossplane providers
- Better error reporting for configuration validation failures
What's Changed
- [Backport release-1.11] PR#533 PR#534 PR#538 PR#549 PR#551 by @ulucinar in #553
- [Backport release-1.11] Backport 544 to release 1.11 by @sergenyalcin in #554
Full Changelog: v1.10.0...v1.11.0