github crossplane/upjet v1.11.0

20 hours ago

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
    • 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

Don't miss a new upjet release

NewReleases is sending notifications on new releases.