Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
all: Add support for write-only attributes (#1375)
* Update `terraform-plugin-go` dependency * Add `WriteOnly` attribute to schema and internal schema validation. * Add `WriteOnly` validation for data source, provider, and provider meta schemas. * Add WriteOnly capabilities validation to `ValidateResourceTypeConfig` RPC * Skip value validation for `Required` + `WriteOnly` attributes. * Fix intermittent test failures for `hasWriteOnly()` * Validate non-null values for `Required` and `WriteOnly` attributes in `PlanResourceChange()` * Add initial implementation for `PreferWriteOnlyAttribute()` validator * Finish `PreferWriteOnlyAttribute()` validator implementation. * Move `schema.ValidateResourceConfigFuncs` to `schema.Resource` and implement validation in `ValidateResourceTypeConfig()` RPC * Add automatic state handling for writeOnly attributes * Apply suggestions from code review Co-authored-by: Austin Valle <[email protected]> * Wrap `setWriteOnlyNullValues` call in client capabilities check * Refactor tests to match diag summary changes * Move write-only helper functions and tests to their own files. * Refactor test attribute names for clarity * Refactor `validateWriteOnlyNullValues()` to build an attribute path.` * Refactor `validateWriteOnlyRequiredValues()` to build an attribute path.` * Refactor field and function names based on PR feedback. * Add clarifying comments. * Add internal validation preventing data sources from defining `ValidateRawResourceConfigFuncs` * Change `writeOnlyAttributeName` parameter to use `cty.Path` * Simplify validation condition logic * run `go mod tidy` * update `terraform-plugin-go` dependency * Add write-only support to `ProtoToConfigSchema()` * Nullify write-only attributes during Plan and Apply regardless of client capability * Introduce `(*ResourceData).GetRawWriteOnly()` and `(*ResourceData).GetWriteOnly()` for retrieving write-only values during apply * Revert "Introduce `(*ResourceData).GetRawWriteOnly()` and `(*ResourceData).GetWriteOnly()` for retrieving write-only values during apply" This reverts commit 1479d62. * Introduce `(*ResourceData).GetRawConfigAt()` helper method for retrieving write-only attributes during apply. * null out write-only values * Return `diag.Diagnostics` instead of error for `(*ResourceData).GetRawConfigAt()` * Update `terraform-plugin-go` dependency * Add additional tests for automatic write-only value nullification * Resolve linting errors and add copyright headers * Remove "incorrect" test case * Use `cty.DynamicVal` as default value for `GetRawConfigAt()` * Throw validation error for computed blocks with write-only attributes * add `GetRawConfigAt` to `ResourceDiff` for usage in `CustomizeDiff` functions * unit tests for `ResourceDiff` * Add validation error for `WriteOnly` and `ForceNew` * Add write-only value nullification to `ImportResourceState` and `UpgradeResourceState` RPCs * Move `Required` + `WriteOnly` attribute validation to `ValidateResourceTypeConfig` RPC * Add website documentation * Add changelog entries * Update `terraform-plugin-go` dependency to `v0.24.0` * Replace fully qualified links with relative links in website documentation * Add more test cases for `GetRawConfigAt()` * Add link to ephemeral resource documentation * Apply suggestions from code review Co-authored-by: Austin Valle <[email protected]> * Apply suggestions from code review Co-authored-by: Austin Valle <[email protected]> * Fix write-only attribute error assertions * Prevent `WriteOnly` from being used with `Default` and `DefaultFunc`. * Update error messaging * Add null value test case * Rename "write-only attributes" to "write-only arguments" in website documentation * Add configuration examples to `cty.Path` documentation * Add changelog entry for `ValidateRawResourceConfigFuncs` --------- Co-authored-by: Austin Valle <[email protected]>
- Loading branch information