Skip to content

Releases: crossplane/upjet

v1.9.0

09 May 14:59
55edf18
Compare
Choose a tag to compare

This release:

  • Adds support for change logs feature.
  • Bumps the crossplane-runtime version to the latest commit.

What's Changed

  • feat(changelogs): add support for change logs in controller templates by @jbw976 in #491
  • Bump crossplane-runtime dependency by @sergenyalcin in #493

Full Changelog: v1.8.0...v1.9.0

v1.8.1

09 May 15:02
108d2e0
Compare
Choose a tag to compare

This PR bumps the crossplane-runtime dependency.

What's Changed

  • [Backport release-1.8] Bump crossplane-runtime dependency by @github-actions in #494

Full Changelog: v1.8.0...v1.8.1

v1.5.1

08 May 07:34
dd35110
Compare
Choose a tag to compare

This release contains a bug fix for update reconciliations. Now, we will call runtime conversions before update calls.

What's Changed

  • [Backport release-1.5] call ApplyTFConversions in Update function from terraform plugin sdk external client by @github-actions in #492

Full Changelog: v1.5.0...v1.5.1

v1.8.0

28 Apr 09:55
aea6e7c
Compare
Choose a tag to compare

This release:

  • Bumps crossplane-runtime version to v1.19.0 and core crossplane to v1.19.1
  • Update some dependencies
  • Call runtime conversions before update calls.

With these releases, since the crossplane-runtime deprecates some functions that I related to reference resolvers, the users must be careful during the upjet bump in the providers. Because, if the upjet version is directly bumped, then the user can encounter some errors as following during generation:

zz_generated.resolvers.go:36:27: undefined: reference.FromPtrValue
zz_generated.resolvers.go:48:84: undefined: reference.ToPtrValue
zz_generated.resolvers.go:52:27: undefined: reference.FromPtrValue
zz_generated.resolvers.go:64:85: undefined: reference.ToPtrValue

Therefore, for a safe bump, you need to follow these steps:

  1. Generate the reference resolvers by bumping the crossplane-tools (angryjet). By this way, you will have the new reference resolvers that don’t use the deprecated functions. The version you need to update the crossplane-tools is: v0.0.0-20250424174524-de0e5107ea45. This version refers to this commit. Then, please observe the updated reference resolvers.
  2. After being sure that the reference resolvers are up-to-date, then bump upjet the version and run make generate. You will not get any error.

What's Changed

  • call ApplyTFConversions in Update function from terraform plugin sdk external client by @digna-ionos in #440
  • chore(deps): update dependencies by @Duologic in #488

New Contributors

Full Changelog: v1.7.0...v1.8.0

v1.7.0

22 Apr 10:59
ae37e28
Compare
Choose a tag to compare
  • Upgraded crossplane-runtime and core crossplane dependencies to v1.18.0, ensuring compatibility with the latest Crossplane ecosystem and taking advantage of recent improvements and bug fixes.
  • Because apimachinery version is bumped to v0.31.0, pass context to panic handlers, introduced by kubernetes/kubernetes#121970.
  • Because kubernetes client is bumped to v0.31.0, address deprecations introduced by kubernetes/kubernetes#124263.
  • Because controller-runtime is bumped to v0.19.0, address breaking changes introduced by kubernetes-sigs/controller-runtime#2799.

What's Changed

  • Bump crossplane-runtime version to v1.18.0 by @mergenci in #458

Full Changelog: v1.6.0...v1.7.0

v1.6.0

16 Apr 19:20
7a4c1dd
Compare
Choose a tag to compare

This release:

  • Bumps go version to 1.23.6 and some dependencies since they have some vulnerabilities.
  • Adds support for parsing the count using registry examples. The assumption in the registry parser, reference format, will be like: ... This PR expands it a bit for supporting these type of examples. If there is some number usage after resource_name, then this will be interpreted as a TF count usage.

What's Changed

  • Adding support for parsing the count used registry examples and bumping go version and dependencies by @sergenyalcin in #485

Full Changelog: v1.5.0...v1.6.0

v1.5.0

11 Feb 12:52
7267575
Compare
Choose a tag to compare

What's Changed

  • Replace gopkg.in/alecthomas/kingpin.v2 by github.com/alecthomas/kingpin/v2 by @gravufo in #389
  • Do not prefix JSON fieldpaths starting with status.atProvider in resource.GetSensitiveParameters by @ulucinar in #417
  • Fix singleton list example conversion if there's no annotation by @ulucinar in #410
  • Update reference usage example and fix broken links in configuring a resource doc by @turkenf in #403
  • Add config.Resource.RemoveSingletonListConversion by @ulucinar in #411
  • Add new guide about adding a new resource by @turkenf in #405
  • Check for nil before calling IsKnown() by @tchinmai7 in #425
  • Recover from panics in async external clients by @mergenci in #428
  • docs: add link in README to new adding-new-resource guide by @displague in #429
  • Rename referenced master branches to main by @mergenci in #432
  • Fix the issue of hiding errors by @turkenf in #435
  • Fix scraping Refs from attributes containing lists by @rickard-von-essen in #441
  • chore: improve references docs by @yordis in #413
  • Add technical documentation for migration framework by @sergenyalcin in #289
  • fix unintentional modification of slice in GetSensitiveParameters by @erhancagirici in #449
  • Fix empty TypeMeta while running API conversions by @ulucinar in #424
  • Fix TestNewKubernetesSource sporadic by @ulucinar in #454
  • fix: typo in example by @fernandezcuesta in #450
  • Update GH action dependencies and linter config by @erhancagirici in #451
  • Upgrade crossplane-runtime to v1.17.0 by @smcavallo in #437
  • Parametrize the registry name of the provider by @sergenyalcin in #462
  • Remove diff calculation in observe-only reconciliation by @mergenci in #461
  • Expose conversion option to inject key/values in the conversion to list by @turkenh in #465
  • Add a new configuration option for preventing the possible update loops by @sergenyalcin in #466

New Contributors

Full Changelog: v1.4.0...v1.5.0

v1.4.0

24 May 09:44
a444cc1
Compare
Choose a tag to compare

We are excited to announce the release of Upjet v1.4.0, which includes several enhancements and new features aimed at improving the flexibility, usability, and efficiency of the code generation pipeline and API management. Below are the key updates in this release.

Release Highlights

1. Generate singleton lists as embedded objects

  • Terraform configuration blocks with a MaxItems constraint of 1 are now generated as embedded objects in MR APIs instead of lists. This change simplifies updates and patches via SSA by eliminating the need for specific configuration for associative lists.
  • Introduced runtime conversion logic to convert embedded objects back to singleton lists for Terraform operations and vice versa for updates to spec.forProvider, status.atProvider, and connection details.
  • Added a schema traverser to decouple Terraform schema traversal from various actions, allowing providers to generate singleton lists as embedded objects using the ujconfig.SingletonListEmbedder configuration.
  • Supported the generation of new CRD API versions with embedded object schemas while maintaining existing versions.
  • For further details: #387

2. Support for specifying the controller reconciliation/watch version

  • Added config.Resource.ControllerReconcileVersion to specify the CRD API version that the associated controller will watch and reconcile, preventing unnecessary webhook conversions for multi-versioned CRDs.
  • For further details: #400

3. TerraformConversions interface for handling conversions between Crossplane and Terraform

  • Introduced config.Resource.TerraformConversions for handling data transformations between Crossplane and Terraform layers. The initial implementation, config.singletonListConversion, manages conversions between singleton lists and embedded objects.

4. Dynamic code generation pipeline for multi-version APIs

  • Addressed name conflicts in the code generation pipeline by making it aware of previous CRD versions. This allows dynamic resolution of conflicts when generating new API versions, such as v1beta2, while older versions like v1beta1 exist.
  • Deprecated the config.Resource.OverrideFieldNames API in favor of the new config.Resource.PreviousVersions mechanism, ensuring more efficient and dynamic prevention of type name conflicts.
  • For further details: #402

5. Support for Secret References in spec.initProvider

  • Enabled generation of secret references for sensitive parameters under the spec.initProvider API tree. This allows full specification of sensitive parameters, such as passwords, in the initProvider.
  • Adjusted code generation and runtime logic to support secret references from both spec.initProvider and spec.forProvider, with forProvider references taking precedence when conflicts arise.
  • For further details: #406

6. Late-Initialization configuration API

  • Introduced a new late-init API to skip fields in spec.initProvider that are already filled, preventing the late-init operation in forProvider from overriding these fields. This ensures the integrity and intended configuration of fields specified in initProvider.
  • For further details: #407

7. Documentation Improvements

  • Improvement on configuring a resource external name document: #392
  • Improvement on clarify documentation around reference type name: #393
  • Improvement on selector field name documentation: #399

What's Changed

  • chore: improve doc about configuring a resource external name by @yordis in #392
  • chore: clarify documentation around reference type name by @yordis in #393
  • Updates the MPL code used in NOTICE by @jeanduplessis in #394
  • chore: improve docs about selector field name by @yordis in #399
  • Generate singleton lists as embedded objects by @ulucinar in #387
  • Allow Specification of the CRD API Version a Controller Watches & Reconciles by @ulucinar in #400
  • Add example converter for conversion of singleton lists to embedded objects by @sergenyalcin in #397
  • Add config.Resource.PreviousVersions to specify the previous versions of an MR API by @ulucinar in #402
  • Generate Secret References for Sensitive Parameters under the spec.initProvider API tree by @ulucinar in #406
  • Add a new late-init configuration to skip already filled field in spec.initProvider by @sergenyalcin in #407

New Contributors

Full Changelog: v1.3.0...v1.4.0

v1.3.0

25 Apr 13:26
577bfa7
Compare
Choose a tag to compare

Release Highlights:

1. New Feature: Introduce MR Metrics

We are excited to introduce a new set of managed resource (MR) metrics in this release. These metrics are pivotal for monitoring the state and performance of resources managed through Crossplane. This enhancement follows the implementation guidelines from the provider-kubernetes and incorporates changes from crossplane-runtime. The newly available metrics include:

  • crossplane_managed_resource_exists{"gvk"}
  • crossplane_managed_resource_ready{"gvk"}
  • crossplane_managed_resource_synced{"gvk"}
  • crossplane_managed_resource_first_time_to_reconcile_seconds{"gvk"}
  • crossplane_managed_resource_first_time_to_readiness_seconds{"gvk"}
  • crossplane_managed_resource_deletion_seconds{"gvk"}
  • crossplane_managed_resource_drift_seconds{"gvk"}

For a detailed overview of the implementation, please refer to this PR in crossplane-runtime.

2. Bug Fix: Immediate Sync Status Update on Async Failures

This update addresses a critical bug related to asynchronous operation failures (Issue #1164). With this fix, the "Synced" status will immediately reflect as "False" upon any failure in asynchronous operations, ensuring compliance with the XRM contract and improving reliability in status reporting. Previously, the error handling only updated the LastAsyncOperation status without properly setting the Synced condition to False. For more information, please see the detailed PR description.

What's Changed

New Contributors

Full Changelog: v1.2.4...v1.3.0

v1.1.0

01 Feb 19:07
a8e5f39
Compare
Choose a tag to compare

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

Full Changelog: v1.0.0...v1.1.0