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

tfsdk: Migrate schema handling to internal interfaces #438

Merged
merged 2 commits into from
Aug 5, 2022

Commits on Aug 5, 2022

  1. tfsdk: Migrate schema handling to internal interfaces

    Reference: #31
    Reference: #132
    Reference: #223
    Reference: #326
    Reference: #365
    Reference: #389
    
    The main goals of this change are:
    
    - Prepare the Go module to support multiple packages that implement concept-specific schema declarations, in particular the `datasource`, `provider`, and `resource` packages
    - Continue supporting the existing `tfsdk` package schema implementation with minimal provider developer breaking changes, allowing a deprecation period when the concept-specific schemas are introduced
    - Migrate unexported or unintentially exported `tfsdk` schema functionality to internal packages
    
    These goals are accomplished by creating new `internal/fwschema` and `internal/fwxschema` packages, which contain interface types that the provider developer facing packages implement. Currently, the `tfsdk` package is the only implementation, until the design of those concept-specific schema declarations is fully determined. Those designs may include changes to schema implementation details, which cannot be accomplished in the existing `tfsdk` implementation without breaking it and provider developers migrating code to the new packages is a great time to make those types of changes.
    
    The internal interface method design here is purposefully similar to the existing `tfsdk` implementations as we cannot name the methods the same as existing fields and to reduce review burden. After the `tfsdk` implementations are removed, we can consider tidying up the interface methods to drop the `Get` and `Is` method name prefixes.
    
    There are some minor followup changes that will happen either between or during concept-specific schema implementation work, namely:
    
    - Swapping calls `tfsdk` package type `TerraformType()` methods for `AttributeType().TerraformType()` to reduce implementation work for new schema implementations
    - Updating unit testing that relies on `tfsdk.Schema` to set up sub-tests via `(*testing.T).Run()` to against multiple implementations
    
    These were not included here to reduce the review burden as they are separate details which can be handled later.
    bflad committed Aug 5, 2022
    Configuration menu
    Copy the full SHA
    35ad1e5 View commit details
    Browse the repository at this point in the history
  2. Update CHANGELOG for #438

    bflad committed Aug 5, 2022
    Configuration menu
    Copy the full SHA
    93b0000 View commit details
    Browse the repository at this point in the history