Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump github.com/hashicorp/terraform-plugin-framework from 0.16.0 to 0.17.0 #338

Conversation

dependabot[bot]
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Dec 1, 2022

Bumps github.com/hashicorp/terraform-plugin-framework from 0.16.0 to 0.17.0.

Release notes

Sourced from github.com/hashicorp/terraform-plugin-framework's releases.

v0.17.0

NOTES:

  • datasource: The DataSource type GetSchema method has been deprecated. Use the Schema method instead. (#546)
  • provider: The Provider type GetSchema method has been deprecated. Use the Schema method instead. (#553)
  • resource: The RequiresReplace() plan modifier has been deprecated. Use a type-specific plan modifier instead, such as resource/schema/stringplanmodifier.RequiresReplace() or resource/schema/stringplanmodifier.RequiresReplaceIfConfigured() (#565)
  • resource: The RequiresReplaceIf() plan modifier has been deprecated. Use a type-specific plan modifier instead, such as resource/schema/stringplanmodifier.RequiresReplaceIf() (#565)
  • resource: The Resource type GetSchema method has been deprecated. Use the Schema method instead. (#558)
  • resource: The UseStateForUnknown() plan modifier has been deprecated. Use a type-specific plan modifier instead, such as resource/schema/stringplanmodifier.UseStateForUnknown() (#565)
  • tfsdk: The Attribute, Block, and Schema types have been deprecated. Use the similarly named types in the datasource/schema, provider/schema, and resource/schema packages instead. (#563)
  • tfsdk: The ListNestedAttributes, MapNestedAttributes, SetNestedAttributes, and SingleNestedAttributes functions have been deprecated. Use the similarly named types in the datasource/schema, provider/schema, and resource/schema packages instead. (#563)

BREAKING CHANGES:

  • provider: The ProviderWithMetaSchema type GetMetaSchema method has been replaced with the MetaSchema method (#562)
  • tfsdk: The Attribute type FrameworkType() method has been removed. Use the GetType() method instead which returns the same information. (#543)
  • tfsdk: The Attribute type GetType() method now returns type information whether the attribute implements the Type field or Attributes field. (#543)
  • tfsdk: The Config, Plan, and State type Schema field type has been updated from tfsdk.Schema to the generic fwschema.Schema interface to enable additional schema implementations (#544)

FEATURES:

  • datasource/schema: New package which contains schema interfaces and types relevant to data sources (#546)
  • provider/schema: New package which contains schema interfaces and types relevant to providers (#553)
  • resource/schema/planmodifier: New package which contains type-specific schema plan modifier interfaces (#557)
  • resource/schema: New package which contains schema interfaces and types relevant to resources (#558)
  • resource/schema: New packages, such as stringplanmodifier which contain type-specific schema plan modifier implementations (#565)
  • schema/validator: New package which contains type-specific schema validator interfaces (#542)

BUG FIXES:

  • diag: Allow diagnostic messages with incorrect UTF-8 encoding to pass through with the invalid sequences replaced with the Unicode Replacement Character. This avoids returning the unhelpful message "string field contains invalid UTF-8" in that case. (#549)
  • internal/fwserver: Ensured blocks are ignored when marking computed nils as unknown during resource change planning (#552)
Changelog

Sourced from github.com/hashicorp/terraform-plugin-framework's changelog.

0.17.0 (November 30, 2022)

NOTES:

  • datasource: The DataSource type GetSchema method has been deprecated. Use the Schema method instead. (#546)
  • provider: The Provider type GetSchema method has been deprecated. Use the Schema method instead. (#553)
  • resource: The RequiresReplace() plan modifier has been deprecated. Use a type-specific plan modifier instead, such as resource/schema/stringplanmodifier.RequiresReplace() or resource/schema/stringplanmodifier.RequiresReplaceIfConfigured() (#565)
  • resource: The RequiresReplaceIf() plan modifier has been deprecated. Use a type-specific plan modifier instead, such as resource/schema/stringplanmodifier.RequiresReplaceIf() (#565)
  • resource: The Resource type GetSchema method has been deprecated. Use the Schema method instead. (#558)
  • resource: The UseStateForUnknown() plan modifier has been deprecated. Use a type-specific plan modifier instead, such as resource/schema/stringplanmodifier.UseStateForUnknown() (#565)
  • tfsdk: The Attribute, Block, and Schema types have been deprecated. Use the similarly named types in the datasource/schema, provider/schema, and resource/schema packages instead. (#563)
  • tfsdk: The ListNestedAttributes, MapNestedAttributes, SetNestedAttributes, and SingleNestedAttributes functions have been deprecated. Use the similarly named types in the datasource/schema, provider/schema, and resource/schema packages instead. (#563)

BREAKING CHANGES:

  • provider: The ProviderWithMetaSchema type GetMetaSchema method has been replaced with the MetaSchema method (#562)
  • tfsdk: The Attribute type FrameworkType() method has been removed. Use the GetType() method instead which returns the same information. (#543)
  • tfsdk: The Attribute type GetType() method now returns type information whether the attribute implements the Type field or Attributes field. (#543)
  • tfsdk: The Config, Plan, and State type Schema field type has been updated from tfsdk.Schema to the generic fwschema.Schema interface to enable additional schema implementations (#544)

FEATURES:

  • datasource/schema: New package which contains schema interfaces and types relevant to data sources (#546)
  • provider/schema: New package which contains schema interfaces and types relevant to providers (#553)
  • resource/schema/planmodifier: New package which contains type-specific schema plan modifier interfaces (#557)
  • resource/schema: New package which contains schema interfaces and types relevant to resources (#558)
  • resource/schema: New packages, such as stringplanmodifier which contain type-specific schema plan modifier implementations (#565)
  • schema/validator: New package which contains type-specific schema validator interfaces (#542)

BUG FIXES:

  • diag: Allow diagnostic messages with incorrect UTF-8 encoding to pass through with the invalid sequences replaced with the Unicode Replacement Character. This avoids returning the unhelpful message "string field contains invalid UTF-8" in that case. (#549)
  • internal/fwserver: Ensured blocks are ignored when marking computed nils as unknown during resource change planning (#552)
Commits
  • 54ed5dc Update CHANGELOG for 0.17.0
  • d51781c website: Updates for tfsdk Attribute, Block, and Schema deprecations (#564)
  • 4db7ec6 resource/schema: New packages which contain type-specific schema plan modifie...
  • 8cde922 tfsdk: Deprecate Attribute, Block, and Schema types (#563)
  • 9353b7c provider/metaschema: Initial package (#562)
  • abe43b2 Fix nesting mode for map, set and single nested attribute within data source,...
  • 55244fe provider/schema: Fix Go documentation for Schema type (#559)
  • 30b78ab resource/schema: Initial package (#558)
  • 28f4804 resource/schema/planmodifier: New type-specific plan modifiers package (#557)
  • 1dfcd30 test: block attributes with MarkComputedNilsAsUnknown (#555)
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [github.com/hashicorp/terraform-plugin-framework](https://github.com/hashicorp/terraform-plugin-framework) from 0.16.0 to 0.17.0.
- [Release notes](https://github.com/hashicorp/terraform-plugin-framework/releases)
- [Changelog](https://github.com/hashicorp/terraform-plugin-framework/blob/main/CHANGELOG.md)
- [Commits](hashicorp/terraform-plugin-framework@v0.16.0...v0.17.0)

---
updated-dependencies:
- dependency-name: github.com/hashicorp/terraform-plugin-framework
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot requested a review from a team as a code owner December 1, 2022 19:01
@dependabot dependabot bot added dependencies go Pull requests that update Go code labels Dec 1, 2022
@github-actions github-actions bot added size/XL and removed size/XS labels Dec 2, 2022
… values are null in the bool, int64, map and string plan modifiers
Copy link
Member

@bflad bflad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall this is looking really good, just some potential considerations. 👍

},
Optional: true,
PlanModifiers: []tfsdk.AttributePlanModifier{
planmodifiers.RequiresReplaceIfValuesNotNull(),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we remove the old planmodifiers package? 😄

Comment on lines 41 to 44
// RequiresReplace returns an attribute plan modifier that is identical to resource.RequiresReplace() with
// the exception that there is no check for `configRaw.IsNull && attrSchema.Computed` as a replacement
// needs to be triggered when the attribute has been removed from the config.
func RequiresReplace() planmodifier.String {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe this now can be removed with the resource/schema/stringplanmodifier.RequiresReplace() variant since the underlying implementation no longer checks for configuration (that's done with the RequiresReplaceIfConfigured() variant). 👍

}

func (d *defaultValueAttributePlanModifier) Description(ctx context.Context) string {
return "If the config does not contain a value, a default will be set using val."
Copy link
Member

@bflad bflad Dec 11, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While we are adjusting these, it'd be great to fix them up so they would output the default value correctly, e.g.

	return fmt.Sprintf("If not configured, defaults to %t", d.val.ValueBool())

Rinse and repeat for the others as appropriate.

We can also discuss whether we think we are ready to include something like this in the framework itself. 😄

Comment on lines +729 to +730
// TODO: passwordSchemaV2 needs to be updated to use schema.Schema once resource.StateUpgrader has been
// updated to use schema.Schema for PriorSchema.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aye, my bad for missing this -- cross reference: hashicorp/terraform-plugin-framework#572

We can certainly handle this TODO after framework v1.0.0 is out.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good to me 👍

path.MatchRoot("min_special"),
),
},
// TODO: Reinstate once passwordSchemaV2 has been updated to use schema.Schema.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since the resource state upgrade prior schemas aren't "live" schemas that would participate in ValidateResourceConfig or PlanResourceChange RPCs, we could also just drop PlanModifiers and Validators from them rather than worrying about converting this code. 👍

int64planmodifiers.DefaultValue(
types.Int64Value(2),
),
int64planmodifiers.RequiresReplace(),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can this be replaced with the framework resource/schema/int64planmodifier.RequiresReplace()?

boolplanmodifiers.DefaultValue(
types.BoolValue(true),
),
boolplanmodifiers.RequiresReplace(),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similarly here and below regarding the usage of the framework-based plan modifiers

boolplanmodifiers.DefaultValue(
types.BoolValue(true),
),
boolplanmodifiers.RequiresReplace(),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similarly here

Copy link
Member

@bflad bflad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me 🚀

// RequiresReplace returns an attribute plan modifier that is identical to resource.RequiresReplace() with
// the exception that there is no check for `configRaw.IsNull && attrSchema.Computed` as a replacement
// needs to be triggered when the attribute has been removed from the config.
func RequiresReplace() planmodifier.Bool {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is ready for the 🪓 now 😄

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤦

@bendbennett bendbennett merged commit 6c1912d into main Dec 14, 2022
@bendbennett bendbennett deleted the dependabot/go_modules/github.com/hashicorp/terraform-plugin-framework-0.17.0 branch December 14, 2022 16:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies go Pull requests that update Go code size/XL
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants